@odx/angular 5.7.4 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/animations/lib/expand.d.ts +44 -0
- package/animations/lib/fade.d.ts +70 -0
- package/animations/lib/slide.d.ts +21 -0
- package/animations/lib/wait-for-child-animations.d.ts +38 -0
- package/breakpoints/lib/breakpoints.config.d.ts +38 -0
- package/breakpoints/lib/breakpoints.service.d.ts +43 -0
- package/breakpoints/lib/directives/match-breakpoints.directive.d.ts +36 -0
- package/breakpoints/lib/helpers/configure-breakpoint.d.ts +19 -0
- package/cdk/a11y/lib/directives/interactive.directive.d.ts +32 -0
- package/cdk/a11y/lib/directives/list-focus-manager-option.directive.d.ts +22 -0
- package/cdk/a11y/lib/directives/list-focus-manager.directive.d.ts +17 -0
- package/cdk/active-indicator/lib/active-indicator.directive.d.ts +63 -0
- package/cdk/autocomplete-control/lib/autocomplete-control.d.ts +53 -0
- package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +3 -0
- package/cdk/connected-overlay/lib/connected-overlay.service.d.ts +44 -0
- package/cdk/connected-overlay/lib/helpers/compute-overlay-position.d.ts +10 -0
- package/cdk/connected-overlay/lib/models/connected-overlay-ref.d.ts +49 -0
- package/cdk/custom-form-control/lib/custom-form-control.d.ts +108 -0
- package/cdk/custom-form-control/lib/input-control.directive.d.ts +75 -0
- package/cdk/dynamic-view/lib/dynamic-view.directive.d.ts +25 -0
- package/cdk/dynamic-view/lib/dynamic-view.service.d.ts +30 -0
- package/cdk/dynamic-view/lib/helpers/create-projectable-nodes.d.ts +22 -0
- package/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.d.ts +22 -0
- package/cdk/dynamic-view/lib/helpers/is-dynamic-view.d.ts +22 -0
- package/cdk/dynamic-view/lib/models/dynamic-component-ref.d.ts +39 -0
- package/cdk/dynamic-view/lib/models/dynamic-template-ref.d.ts +36 -0
- package/cdk/event-plugins/lib/event-plugins.config.d.ts +35 -0
- package/cdk/event-plugins/lib/models/event-plugin.d.ts +57 -0
- package/cdk/event-plugins/lib/plugins/debounce-event-plugin.d.ts +32 -0
- package/cdk/event-plugins/lib/plugins/defer-event-plugin.d.ts +24 -0
- package/cdk/expandable/lib/directives/expandable-container.directive.d.ts +41 -0
- package/cdk/expandable/lib/directives/expandable-item.directive.d.ts +47 -0
- package/cdk/option-control/lib/option-control.d.ts +47 -0
- package/cdk/radio-group-control/lib/radio-control.directive.d.ts +8 -0
- package/cdk/radio-group-control/lib/radio-group-control.directive.d.ts +11 -0
- package/components/accordion/lib/accordion.component.d.ts +8 -0
- package/components/accordion/lib/components/accordion-item/accordion-item.component.d.ts +37 -1
- package/components/accordion/lib/directives/accordion-item-title.d.ts +3 -0
- package/components/action-group/action-group.component.d.ts +6 -0
- package/components/area-header/area-header.component.d.ts +8 -0
- package/components/area-header/directives/area-header-content.directive.d.ts +3 -0
- package/components/area-header/directives/area-header-subtitle.directive.d.ts +3 -0
- package/components/autocomplete/lib/autocomplete.component.d.ts +17 -0
- package/components/avatar/lib/avatar.component.d.ts +8 -0
- package/components/badge/lib/badge.component.d.ts +10 -0
- package/components/badge/lib/badge.directive.d.ts +15 -0
- package/components/bar/lib/bar.component.d.ts +7 -0
- package/components/bar/lib/directives/bar-button.directive.d.ts +3 -0
- package/components/bar/lib/directives/bar-label.directive.d.ts +3 -0
- package/components/breadcrumbs/lib/breadcrumbs.component.d.ts +3 -0
- package/components/button/lib/button.component.d.ts +10 -0
- package/components/button-group/lib/button-group.component.d.ts +15 -0
- package/components/calendar/lib/calendar.component.d.ts +48 -0
- package/components/calendar/lib/calendar.config.d.ts +41 -93
- package/components/calendar/lib/calendar.service.d.ts +48 -0
- package/components/calendar/lib/components/calendar-header/calendar-header.component.d.ts +24 -0
- package/components/calendar/lib/components/calendar-month/calendar-month.component.d.ts +6 -0
- package/components/calendar/lib/components/calendar-year/calendar-year.component.d.ts +6 -0
- package/components/calendar/lib/components/calendar-years/calendar-years.component.d.ts +6 -0
- package/components/calendar/lib/daterange.service.d.ts +16 -0
- package/components/calendar/lib/directives/calendar-cell.directive.d.ts +37 -9
- package/components/calendar/lib/directives/calendar-view.directive.d.ts +41 -9
- package/components/calendar/lib/pipes/date-label.pipe.d.ts +12 -21
- package/components/calendar/lib/services/calendar-month.service.d.ts +1 -0
- package/components/calendar/lib/services/calendar-year.service.d.ts +1 -0
- package/components/calendar/lib/services/calendar-years.service.d.ts +1 -0
- package/components/calendar/lib/utils/check-cell-in-range.d.ts +1 -0
- package/components/calendar/lib/utils/check-identical-date.d.ts +1 -0
- package/components/calendar/lib/utils/get-A11y-label.d.ts +2 -2
- package/components/calendar/lib/utils/is-date-disabled.d.ts +1 -0
- package/components/calendar/lib/utils/parse-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-daterange.d.ts +1 -0
- package/components/calendar/lib/utils/validate-max-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-min-date.d.ts +1 -0
- package/components/calendar/lib/utils/validate-next-date-set.d.ts +1 -0
- package/components/calendar/lib/utils/validate-previous-date-set.d.ts +1 -0
- package/components/checkbox/lib/checkbox.component.d.ts +32 -0
- package/components/checkbox/lib/checkbox.validator.d.ts +23 -0
- package/components/chip/lib/components/chip/chip.component.d.ts +14 -0
- package/components/chip/lib/components/chip-list/chip-list.component.d.ts +3 -0
- package/components/chip/lib/components/chip-list-row/chip-list-row.component.d.ts +3 -0
- package/components/circular-progress/lib/circular-progress.component.d.ts +20 -0
- package/components/content-box/lib/content-box.component.d.ts +3 -0
- package/components/content-box/lib/directives/content-box-footer.directive.d.ts +3 -0
- package/components/content-box/lib/directives/content-box-header.directive.d.ts +3 -0
- package/components/datepicker/lib/datepicker.component.d.ts +47 -0
- package/components/datepicker/lib/datepicker.config.d.ts +19 -0
- package/components/datepicker/lib/directives/datepicker-input-control.directive.d.ts +30 -0
- package/components/datepicker/lib/utils/get-datepicker-input-pattern.d.ts +2 -0
- package/components/datepicker/lib/utils/get-datepicker-input-value-as-date.d.ts +1 -0
- package/components/daterangepicker/lib/daterangepicker.component.d.ts +89 -0
- package/components/daterangepicker/lib/daterangepicker.config.d.ts +19 -0
- package/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.d.ts +30 -0
- package/components/daterangepicker/lib/range.validator.d.ts +15 -0
- package/components/daterangepicker/lib/required.validator.d.ts +6 -0
- package/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.d.ts +2 -0
- package/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.d.ts +1 -0
- package/components/dropdown/lib/dropdown.component.d.ts +16 -0
- package/components/dropdown/lib/dropdown.directive.d.ts +67 -0
- package/components/dropdown/lib/helpers/close-current-dropdown.d.ts +5 -0
- package/components/error-page/lib/error-page.component.d.ts +7 -0
- package/components/error-page/lib/error-page.config.d.ts +18 -0
- package/components/footer/lib/footer.component.d.ts +9 -6
- package/components/footer/lib/footer.config.d.ts +2 -0
- package/components/form-field/lib/components/form-field-info/form-field-info.component.d.ts +13 -0
- package/components/form-field/lib/components/form-group/form-group.component.d.ts +16 -0
- package/components/form-field/lib/directives/form-field-control.directive.d.ts +5 -0
- package/components/form-field/lib/directives/form-field-error.directive.d.ts +6 -0
- package/components/form-field/lib/directives/form-field-hint.directive.d.ts +3 -0
- package/components/form-field/lib/directives/form-field-label.directive.d.ts +3 -0
- package/components/form-field/lib/directives/form.directive.d.ts +13 -0
- package/components/form-field/lib/form-field.component.d.ts +20 -0
- package/components/form-field/lib/form-field.service.d.ts +42 -0
- package/components/form-field/lib/services/form-field-error.service.d.ts +24 -0
- package/components/header/lib/directives/header-avatar.directive.d.ts +4 -0
- package/components/header/lib/directives/header-title.directive.d.ts +3 -0
- package/components/header/lib/header.component.d.ts +3 -0
- package/components/header-navigation/lib/directives/header-navigation-link.directive.d.ts +3 -0
- package/components/header-navigation/lib/header-navigation.component.d.ts +6 -0
- package/components/icon/lib/helpers/unpack-icon-identifier.d.ts +14 -0
- package/components/icon/lib/icon.component.d.ts +24 -0
- package/components/icon/lib/icon.config.d.ts +26 -0
- package/components/inline-message/lib/inline-message.component.d.ts +13 -0
- package/components/link/link.directive.d.ts +3 -0
- package/components/list/lib/components/expandable-list-item/expandable-list-item.component.d.ts +6 -0
- package/components/list/lib/components/list-item/list-item.component.d.ts +17 -1
- package/components/list/lib/list.component.d.ts +5 -0
- package/components/loading-spinner/lib/loading-spinner.component.d.ts +8 -0
- package/components/loading-spinner/lib/loading-spinner.directive.d.ts +22 -0
- package/components/logo/logo.directive.d.ts +15 -0
- package/components/main-menu/lib/directives/main-menu-button.directive.d.ts +5 -1
- package/components/main-menu/lib/directives/main-menu-close.directive.d.ts +3 -0
- package/components/main-menu/lib/directives/main-menu-item.directive.d.ts +16 -0
- package/components/main-menu/lib/helpers/create-main-menu-links.d.ts +1 -0
- package/components/main-menu/lib/main-menu.component.d.ts +42 -0
- package/components/main-menu/lib/main-menu.config.d.ts +31 -0
- package/components/main-menu/lib/main-menu.service.d.ts +28 -0
- package/components/mainfilter-group/lib/mainfilter-group.component.d.ts +4 -0
- package/components/menu/lib/directives/menu-item.directive.d.ts +6 -0
- package/components/menu/lib/menu.component.d.ts +13 -1
- package/components/menu/lib/menu.directive.d.ts +31 -0
- package/components/modal/lib/components/basic-modal/basic-modal.component.d.ts +14 -0
- package/components/modal/lib/components/modal-footer/modal-footer.component.d.ts +3 -0
- package/components/modal/lib/components/modal-header/modal-header.component.d.ts +9 -0
- package/components/modal/lib/components/modal-hero/modal-hero.component.d.ts +21 -0
- package/components/modal/lib/directives/modal-close.directive.d.ts +25 -1
- package/components/modal/lib/directives/modal-content.directive.d.ts +3 -0
- package/components/modal/lib/directives/modal-dismiss.directive.d.ts +18 -1
- package/components/modal/lib/helpers/inject-modal-ref.d.ts +21 -0
- package/components/modal/lib/helpers/provide-modal-ref.d.ts +9 -0
- package/components/modal/lib/modal.component.d.ts +25 -0
- package/components/modal/lib/modal.config.d.ts +33 -0
- package/components/modal/lib/modal.directive.d.ts +29 -0
- package/components/modal/lib/modal.service.d.ts +54 -0
- package/components/modal/lib/models/modal-ref.d.ts +34 -0
- package/components/navigation-back/lib/navigation-back.component.d.ts +3 -0
- package/components/notification/lib/components/notification-center/notification-center.component.d.ts +0 -2
- package/components/notification/lib/directives/notification-center.directive.d.ts +18 -4
- package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +1 -0
- package/components/notification/lib/helpers/sort-notifications.d.ts +1 -0
- package/components/notification/lib/helpers/to-notification-collection.d.ts +1 -0
- package/components/notification/lib/models/notification-feature.d.ts +15 -0
- package/components/notification/lib/notification.config.d.ts +54 -0
- package/components/notification/lib/notification.logger.d.ts +1 -0
- package/components/notification/lib/notification.service.d.ts +55 -0
- package/components/notification/lib/notification.tokens.d.ts +3 -0
- package/components/notification/lib/services/notification-center.service.d.ts +9 -0
- package/components/paginator/lib/paginator.component.d.ts +89 -0
- package/components/paginator/lib/paginator.config.d.ts +24 -2
- package/components/progress/lib/progress.component.d.ts +15 -0
- package/components/radio-group/lib/radio-group.component.d.ts +11 -0
- package/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.d.ts +19 -0
- package/components/rail-navigation/lib/rail-navigation.component.d.ts +26 -0
- package/components/rich-list/lib/components/rich-list-content/rich-list-content.component.d.ts +4 -0
- package/components/rich-list/lib/components/rich-list-header/rich-list-header.component.d.ts +4 -0
- package/components/rich-list/lib/components/rich-list-item/rich-list-item.component.d.ts +9 -1
- package/components/rich-list/lib/rich-list.component.d.ts +9 -2
- package/components/select/lib/components/select-option/select-option.component.d.ts +39 -2
- package/components/select/lib/directives/select-input-control.directive.d.ts +11 -0
- package/components/select/lib/pipes/select-search-filter.pipe.d.ts +10 -0
- package/components/select/lib/select.component.d.ts +59 -0
- package/components/slider/lib/slider.directive.d.ts +19 -0
- package/components/spinbox/lib/spinbox.component.d.ts +16 -0
- package/components/switch/lib/switch.component.d.ts +10 -0
- package/components/switch/lib/switch.validator.d.ts +12 -0
- package/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.d.ts +28 -0
- package/components/tab-bar/lib/tab-bar.component.d.ts +69 -0
- package/components/table/lib/components/check-cell/check-cell.component.d.ts +18 -0
- package/components/table/lib/components/header-title/header-title.component.d.ts +33 -1
- package/components/table/lib/directives/table-cell.directive.d.ts +4 -0
- package/components/table/lib/directives/table-row.directive.d.ts +4 -0
- package/components/table/lib/table.component.d.ts +36 -0
- package/components/timepicker/lib/timepicker.component.d.ts +11 -2
- package/components/timepicker/lib/utils/generate-time-stamps.d.ts +2 -1
- package/components/timepicker/lib/utils/ngx-mask-helper.d.ts +2 -2
- package/components/toast/lib/toast.config.d.ts +26 -0
- package/components/toast/lib/toast.service.d.ts +35 -0
- package/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.d.ts +11 -0
- package/components/toggle-button-group/lib/toggle-button-group.component.d.ts +12 -0
- package/components/tooltip/lib/tooltip.component.d.ts +20 -0
- package/components/tooltip/lib/tooltip.directive.d.ts +35 -0
- package/components/wizard/lib/components/wizard-step/wizard-step.component.d.ts +34 -0
- package/components/wizard/lib/wizard.component.d.ts +20 -0
- package/esm2022/animations/lib/expand.mjs +45 -1
- package/esm2022/animations/lib/fade.mjs +71 -1
- package/esm2022/animations/lib/slide.mjs +22 -1
- package/esm2022/animations/lib/wait-for-child-animations.mjs +39 -1
- package/esm2022/breakpoints/lib/breakpoints.config.mjs +39 -1
- package/esm2022/breakpoints/lib/breakpoints.service.mjs +44 -1
- package/esm2022/breakpoints/lib/directives/match-breakpoints.directive.mjs +37 -1
- package/esm2022/breakpoints/lib/helpers/configure-breakpoint.mjs +20 -1
- package/esm2022/cdk/a11y/lib/directives/interactive.directive.mjs +33 -1
- package/esm2022/cdk/a11y/lib/directives/list-focus-manager-option.directive.mjs +23 -1
- package/esm2022/cdk/a11y/lib/directives/list-focus-manager.directive.mjs +18 -1
- package/esm2022/cdk/active-indicator/lib/active-indicator.directive.mjs +64 -1
- package/esm2022/cdk/autocomplete-control/lib/autocomplete-control.mjs +39 -1
- package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +4 -1
- package/esm2022/cdk/connected-overlay/lib/connected-overlay.service.mjs +45 -1
- package/esm2022/cdk/connected-overlay/lib/helpers/compute-overlay-position.mjs +11 -1
- package/esm2022/cdk/connected-overlay/lib/models/connected-overlay-ref.mjs +50 -1
- package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +109 -3
- package/esm2022/cdk/custom-form-control/lib/input-control.directive.mjs +76 -1
- package/esm2022/cdk/dynamic-view/lib/dynamic-view.directive.mjs +18 -1
- package/esm2022/cdk/dynamic-view/lib/dynamic-view.service.mjs +31 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/create-projectable-nodes.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-text-content.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/helpers/is-dynamic-view.mjs +23 -1
- package/esm2022/cdk/dynamic-view/lib/models/dynamic-component-ref.mjs +40 -1
- package/esm2022/cdk/dynamic-view/lib/models/dynamic-template-ref.mjs +37 -1
- package/esm2022/cdk/event-plugins/lib/event-plugins.config.mjs +36 -1
- package/esm2022/cdk/event-plugins/lib/models/event-plugin.mjs +45 -1
- package/esm2022/cdk/event-plugins/lib/plugins/debounce-event-plugin.mjs +33 -1
- package/esm2022/cdk/event-plugins/lib/plugins/defer-event-plugin.mjs +25 -1
- package/esm2022/cdk/expandable/lib/directives/expandable-container.directive.mjs +42 -1
- package/esm2022/cdk/expandable/lib/directives/expandable-item.directive.mjs +48 -1
- package/esm2022/cdk/option-control/lib/option-control.mjs +48 -1
- package/esm2022/cdk/radio-group-control/lib/radio-control.directive.mjs +9 -1
- package/esm2022/cdk/radio-group-control/lib/radio-group-control.directive.mjs +12 -1
- package/esm2022/components/accordion/lib/accordion.component.mjs +9 -1
- package/esm2022/components/accordion/lib/components/accordion-item/accordion-item.component.mjs +31 -1
- package/esm2022/components/accordion/lib/directives/accordion-item-title.mjs +4 -1
- package/esm2022/components/action-group/action-group.component.mjs +7 -1
- package/esm2022/components/area-header/area-header.component.mjs +9 -1
- package/esm2022/components/area-header/directives/area-header-content.directive.mjs +4 -1
- package/esm2022/components/area-header/directives/area-header-subtitle.directive.mjs +4 -1
- package/esm2022/components/autocomplete/lib/autocomplete.component.mjs +18 -1
- package/esm2022/components/avatar/lib/avatar.component.mjs +9 -1
- package/esm2022/components/badge/lib/badge.component.mjs +11 -1
- package/esm2022/components/badge/lib/badge.directive.mjs +16 -1
- package/esm2022/components/bar/lib/bar.component.mjs +8 -1
- package/esm2022/components/bar/lib/directives/bar-button.directive.mjs +4 -1
- package/esm2022/components/bar/lib/directives/bar-label.directive.mjs +4 -1
- package/esm2022/components/breadcrumbs/lib/breadcrumbs.component.mjs +4 -1
- package/esm2022/components/button/lib/button.component.mjs +11 -1
- package/esm2022/components/button-group/lib/button-group.component.mjs +16 -1
- package/esm2022/components/calendar/lib/calendar.component.mjs +35 -1
- package/esm2022/components/calendar/lib/calendar.config.mjs +18 -12
- package/esm2022/components/calendar/lib/calendar.service.mjs +49 -1
- package/esm2022/components/calendar/lib/components/calendar-header/calendar-header.component.mjs +19 -1
- package/esm2022/components/calendar/lib/components/calendar-month/calendar-month.component.mjs +9 -3
- package/esm2022/components/calendar/lib/components/calendar-year/calendar-year.component.mjs +9 -3
- package/esm2022/components/calendar/lib/components/calendar-years/calendar-years.component.mjs +9 -3
- package/esm2022/components/calendar/lib/daterange.service.mjs +17 -1
- package/esm2022/components/calendar/lib/directives/calendar-cell.directive.mjs +27 -2
- package/esm2022/components/calendar/lib/directives/calendar-view.directive.mjs +39 -1
- package/esm2022/components/calendar/lib/pipes/date-label.pipe.mjs +27 -9
- package/esm2022/components/calendar/lib/services/calendar-month.service.mjs +2 -1
- package/esm2022/components/calendar/lib/services/calendar-year.service.mjs +2 -1
- package/esm2022/components/calendar/lib/services/calendar-years.service.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/check-cell-in-range.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/check-identical-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/get-A11y-label.mjs +11 -8
- package/esm2022/components/calendar/lib/utils/is-date-disabled.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/parse-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-daterange.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-max-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-min-date.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-next-date-set.mjs +2 -1
- package/esm2022/components/calendar/lib/utils/validate-previous-date-set.mjs +2 -1
- package/esm2022/components/checkbox/lib/checkbox.component.mjs +33 -1
- package/esm2022/components/checkbox/lib/checkbox.validator.mjs +24 -1
- package/esm2022/components/chip/lib/components/chip/chip.component.mjs +15 -1
- package/esm2022/components/chip/lib/components/chip-list/chip-list.component.mjs +4 -1
- package/esm2022/components/chip/lib/components/chip-list-row/chip-list-row.component.mjs +4 -1
- package/esm2022/components/circular-progress/lib/circular-progress.component.mjs +21 -1
- package/esm2022/components/content-box/lib/content-box.component.mjs +4 -1
- package/esm2022/components/content-box/lib/directives/content-box-footer.directive.mjs +4 -1
- package/esm2022/components/content-box/lib/directives/content-box-header.directive.mjs +4 -1
- package/esm2022/components/datepicker/lib/datepicker.component.mjs +33 -1
- package/esm2022/components/datepicker/lib/datepicker.config.mjs +20 -1
- package/esm2022/components/datepicker/lib/directives/datepicker-input-control.directive.mjs +31 -1
- package/esm2022/components/datepicker/lib/utils/get-datepicker-input-pattern.mjs +3 -1
- package/esm2022/components/datepicker/lib/utils/get-datepicker-input-value-as-date.mjs +2 -1
- package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +65 -1
- package/esm2022/components/daterangepicker/lib/daterangepicker.config.mjs +20 -1
- package/esm2022/components/daterangepicker/lib/directives/daterangepicker-input-control.directive.mjs +31 -1
- package/esm2022/components/daterangepicker/lib/range.validator.mjs +16 -1
- package/esm2022/components/daterangepicker/lib/required.validator.mjs +15 -1
- package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-pattern.mjs +3 -1
- package/esm2022/components/daterangepicker/lib/utils/get-daterangepicker-input-value-as-date.mjs +2 -1
- package/esm2022/components/dropdown/lib/dropdown.component.mjs +8 -1
- package/esm2022/components/dropdown/lib/dropdown.directive.mjs +55 -1
- package/esm2022/components/dropdown/lib/helpers/close-current-dropdown.mjs +6 -1
- package/esm2022/components/error-page/lib/error-page.component.mjs +8 -1
- package/esm2022/components/error-page/lib/error-page.config.mjs +9 -1
- package/esm2022/components/footer/lib/footer.component.mjs +10 -7
- package/esm2022/components/footer/lib/footer.config.mjs +3 -1
- package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +14 -1
- package/esm2022/components/form-field/lib/components/form-group/form-group.component.mjs +13 -1
- package/esm2022/components/form-field/lib/directives/form-field-control.directive.mjs +6 -1
- package/esm2022/components/form-field/lib/directives/form-field-error.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form-field-hint.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form-field-label.directive.mjs +4 -1
- package/esm2022/components/form-field/lib/directives/form.directive.mjs +14 -1
- package/esm2022/components/form-field/lib/form-field.component.mjs +14 -1
- package/esm2022/components/form-field/lib/form-field.service.mjs +43 -1
- package/esm2022/components/form-field/lib/services/form-field-error.service.mjs +25 -1
- package/esm2022/components/header/lib/directives/header-avatar.directive.mjs +5 -1
- package/esm2022/components/header/lib/directives/header-title.directive.mjs +4 -1
- package/esm2022/components/header/lib/header.component.mjs +4 -1
- package/esm2022/components/header-navigation/lib/directives/header-navigation-link.directive.mjs +4 -1
- package/esm2022/components/header-navigation/lib/header-navigation.component.mjs +4 -1
- package/esm2022/components/icon/lib/helpers/unpack-icon-identifier.mjs +15 -1
- package/esm2022/components/icon/lib/icon.component.mjs +25 -1
- package/esm2022/components/icon/lib/icon.config.mjs +20 -1
- package/esm2022/components/inline-message/lib/inline-message.component.mjs +14 -1
- package/esm2022/components/link/link.directive.mjs +4 -1
- package/esm2022/components/list/lib/components/expandable-list-item/expandable-list-item.component.mjs +7 -1
- package/esm2022/components/list/lib/components/list-item/list-item.component.mjs +18 -2
- package/esm2022/components/list/lib/list.component.mjs +6 -1
- package/esm2022/components/loading-spinner/lib/loading-spinner.component.mjs +10 -2
- package/esm2022/components/loading-spinner/lib/loading-spinner.directive.mjs +23 -1
- package/esm2022/components/logo/logo.directive.mjs +16 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-button.directive.mjs +5 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-close.directive.mjs +4 -1
- package/esm2022/components/main-menu/lib/directives/main-menu-item.directive.mjs +17 -1
- package/esm2022/components/main-menu/lib/helpers/create-main-menu-links.mjs +2 -1
- package/esm2022/components/main-menu/lib/main-menu.component.mjs +37 -1
- package/esm2022/components/main-menu/lib/main-menu.config.mjs +32 -1
- package/esm2022/components/main-menu/lib/main-menu.service.mjs +29 -1
- package/esm2022/components/mainfilter-group/lib/mainfilter-group.component.mjs +5 -1
- package/esm2022/components/menu/lib/directives/menu-item.directive.mjs +7 -1
- package/esm2022/components/menu/lib/menu.component.mjs +13 -1
- package/esm2022/components/menu/lib/menu.directive.mjs +19 -1
- package/esm2022/components/modal/lib/components/basic-modal/basic-modal.component.mjs +15 -1
- package/esm2022/components/modal/lib/components/modal-footer/modal-footer.component.mjs +4 -1
- package/esm2022/components/modal/lib/components/modal-header/modal-header.component.mjs +4 -1
- package/esm2022/components/modal/lib/components/modal-hero/modal-hero.component.mjs +12 -1
- package/esm2022/components/modal/lib/directives/modal-close.directive.mjs +25 -1
- package/esm2022/components/modal/lib/directives/modal-content.directive.mjs +4 -1
- package/esm2022/components/modal/lib/directives/modal-dismiss.directive.mjs +18 -1
- package/esm2022/components/modal/lib/helpers/inject-modal-ref.mjs +22 -1
- package/esm2022/components/modal/lib/helpers/provide-modal-ref.mjs +10 -1
- package/esm2022/components/modal/lib/modal.component.mjs +21 -2
- package/esm2022/components/modal/lib/modal.config.mjs +34 -1
- package/esm2022/components/modal/lib/modal.directive.mjs +25 -1
- package/esm2022/components/modal/lib/modal.service.mjs +39 -1
- package/esm2022/components/modal/lib/models/modal-ref.mjs +34 -1
- package/esm2022/components/navigation-back/lib/navigation-back.component.mjs +4 -1
- package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +1 -3
- package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +19 -5
- package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +2 -1
- package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +2 -1
- package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +2 -1
- package/esm2022/components/notification/lib/models/notification-feature.mjs +16 -1
- package/esm2022/components/notification/lib/notification.config.mjs +45 -1
- package/esm2022/components/notification/lib/notification.logger.mjs +2 -1
- package/esm2022/components/notification/lib/notification.service.mjs +56 -1
- package/esm2022/components/notification/lib/notification.tokens.mjs +4 -1
- package/esm2022/components/notification/lib/services/notification-center.service.mjs +10 -1
- package/esm2022/components/paginator/lib/paginator.component.mjs +90 -1
- package/esm2022/components/paginator/lib/paginator.config.mjs +29 -1
- package/esm2022/components/progress/lib/progress.component.mjs +16 -1
- package/esm2022/components/radio-group/lib/radio-group.component.mjs +13 -2
- package/esm2022/components/rail-navigation/lib/components/rail-navigation-item/rail-navigation-item.component.mjs +17 -1
- package/esm2022/components/rail-navigation/lib/rail-navigation.component.mjs +27 -1
- package/esm2022/components/rich-list/lib/components/rich-list-content/rich-list-content.component.mjs +5 -1
- package/esm2022/components/rich-list/lib/components/rich-list-header/rich-list-header.component.mjs +5 -1
- package/esm2022/components/rich-list/lib/components/rich-list-item/rich-list-item.component.mjs +10 -2
- package/esm2022/components/rich-list/lib/rich-list.component.mjs +10 -3
- package/esm2022/components/select/lib/components/select-option/select-option.component.mjs +47 -6
- package/esm2022/components/select/lib/directives/select-input-control.directive.mjs +12 -2
- package/esm2022/components/select/lib/pipes/select-search-filter.pipe.mjs +11 -1
- package/esm2022/components/select/lib/select.component.mjs +56 -2
- package/esm2022/components/slider/lib/slider.directive.mjs +20 -1
- package/esm2022/components/spinbox/lib/spinbox.component.mjs +17 -1
- package/esm2022/components/switch/lib/switch.component.mjs +11 -1
- package/esm2022/components/switch/lib/switch.validator.mjs +13 -1
- package/esm2022/components/tab-bar/lib/components/tab-bar-item/tab-bar-item.component.mjs +29 -1
- package/esm2022/components/tab-bar/lib/tab-bar.component.mjs +70 -1
- package/esm2022/components/table/lib/components/check-cell/check-cell.component.mjs +19 -1
- package/esm2022/components/table/lib/components/header-title/header-title.component.mjs +30 -2
- package/esm2022/components/table/lib/directives/table-cell.directive.mjs +5 -1
- package/esm2022/components/table/lib/directives/table-row.directive.mjs +5 -1
- package/esm2022/components/table/lib/table.component.mjs +30 -1
- package/esm2022/components/timepicker/lib/timepicker.component.mjs +15 -6
- package/esm2022/components/timepicker/lib/utils/generate-time-stamps.mjs +5 -3
- package/esm2022/components/timepicker/lib/utils/ngx-mask-helper.mjs +3 -3
- package/esm2022/components/toast/lib/toast.config.mjs +27 -1
- package/esm2022/components/toast/lib/toast.service.mjs +36 -1
- package/esm2022/components/toggle-button-group/lib/components/toggle-button/toggle-button.component.mjs +12 -1
- package/esm2022/components/toggle-button-group/lib/toggle-button-group.component.mjs +14 -2
- package/esm2022/components/tooltip/lib/tooltip.component.mjs +18 -1
- package/esm2022/components/tooltip/lib/tooltip.directive.mjs +36 -1
- package/esm2022/components/wizard/lib/components/wizard-step/wizard-step.component.mjs +35 -1
- package/esm2022/components/wizard/lib/wizard.component.mjs +21 -1
- package/esm2022/internal/lib/helpers/fast-equals.mjs +3 -0
- package/esm2022/internal/lib/helpers/index.mjs +2 -1
- package/esm2022/internal/translate/lib/translate.config.mjs +32 -1
- package/esm2022/internal/translate/lib/translate.service.mjs +30 -1
- package/esm2022/lib/controllers/controller.mjs +26 -1
- package/esm2022/lib/controllers/disabled.controller.mjs +60 -1
- package/esm2022/lib/controllers/readonly.controller.mjs +57 -1
- package/esm2022/lib/directives/click-outside.directive.mjs +30 -1
- package/esm2022/lib/directives/delegate-focus.directive.mjs +15 -1
- package/esm2022/lib/services/window-ref.mjs +67 -1
- package/esm2022/lib/tokens/identity-matcher.mjs +25 -1
- package/esm2022/lib/tokens/string-search-handler.mjs +25 -1
- package/esm2022/lib/tokens/stringify.mjs +26 -1
- package/esm2022/localization/lib/features/with-http-language-header.mjs +54 -1
- package/esm2022/localization/lib/features/with-http-language-query-param.mjs +52 -1
- package/esm2022/localization/lib/loaders/browser-language-loader.mjs +33 -1
- package/esm2022/localization/lib/localization.config.mjs +73 -5
- package/esm2022/localization/lib/localization.logger.mjs +3 -0
- package/esm2022/localization/lib/localization.service.mjs +59 -29
- package/esm2022/rxjs/index.mjs +2 -2
- package/esm2022/rxjs/lib/delay-until.mjs +23 -1
- package/esm2022/rxjs/lib/from-element-mutation.mjs +22 -1
- package/esm2022/rxjs/lib/from-element-resize.mjs +25 -1
- package/esm2022/rxjs/lib/from-events.mjs +25 -1
- package/esm2022/rxjs/lib/from-query-list.mjs +24 -0
- package/esm2022/sdk/lib/application-environment.mjs +51 -1
- package/esm2022/theming/lib/helpers/prefers-dark-theme.mjs +19 -1
- package/esm2022/theming/lib/helpers/resolve-theme.mjs +26 -1
- package/esm2022/theming/lib/helpers/theme-storage.mjs +43 -1
- package/esm2022/theming/lib/theming.config.mjs +34 -1
- package/esm2022/theming/lib/theming.service.mjs +32 -1
- package/esm2022/utils/lib/decorators/pure.mjs +52 -1
- package/esm2022/utils/lib/helpers/angular.mjs +37 -1
- package/esm2022/utils/lib/helpers/array.mjs +5 -1
- package/esm2022/utils/lib/helpers/build-url.mjs +21 -1
- package/esm2022/utils/lib/helpers/build-website-url.mjs +3 -2
- package/esm2022/utils/lib/helpers/cache-storage-client.mjs +52 -1
- package/esm2022/utils/lib/helpers/coercion.mjs +18 -1
- package/esm2022/utils/lib/helpers/debounce.mjs +28 -1
- package/esm2022/utils/lib/helpers/defer-fn.mjs +21 -1
- package/esm2022/utils/lib/helpers/dom.mjs +71 -1
- package/esm2022/utils/lib/helpers/get-axis.mjs +21 -1
- package/esm2022/utils/lib/helpers/get-language-code.mjs +18 -1
- package/esm2022/utils/lib/helpers/get-opposite-side.mjs +22 -1
- package/esm2022/utils/lib/helpers/get-side.mjs +18 -1
- package/esm2022/utils/lib/helpers/get-unique-id.mjs +34 -1
- package/esm2022/utils/lib/helpers/match-url.mjs +41 -1
- package/esm2022/utils/lib/helpers/ng-changes.mjs +30 -1
- package/esm2022/utils/lib/helpers/provide-config.mjs +57 -1
- package/esm2022/utils/lib/helpers/queue.mjs +84 -1
- package/esm2022/utils/lib/helpers/type-guards.mjs +58 -1
- package/esm2022/utils/lib/helpers/until-destroyed.mjs +39 -1
- package/fesm2022/odx-angular-animations.mjs +173 -0
- package/fesm2022/odx-angular-animations.mjs.map +1 -1
- package/fesm2022/odx-angular-breakpoints.mjs +136 -0
- package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-a11y.mjs +71 -0
- package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-active-indicator.mjs +63 -0
- package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +38 -0
- package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs +3 -0
- package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs +103 -0
- package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs +183 -2
- package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs +188 -0
- package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-event-plugins.mjs +135 -0
- package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-expandable.mjs +88 -0
- package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-option-control.mjs +47 -0
- package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs +19 -0
- package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
- package/fesm2022/odx-angular-components-accordion.mjs +41 -0
- package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/odx-angular-components-action-group.mjs +6 -0
- package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-area-header.mjs +14 -0
- package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-autocomplete.mjs +17 -0
- package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/odx-angular-components-avatar.mjs +8 -0
- package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-badge.mjs +25 -0
- package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
- package/fesm2022/odx-angular-components-bar.mjs +13 -0
- package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-breadcrumbs.mjs +3 -0
- package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button-group.mjs +15 -0
- package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-button.mjs +10 -0
- package/fesm2022/odx-angular-components-button.mjs.map +1 -1
- package/fesm2022/odx-angular-components-calendar.mjs +270 -33
- package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-checkbox.mjs +55 -0
- package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-chip.mjs +20 -0
- package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-circular-progress.mjs +20 -0
- package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-content-box.mjs +9 -0
- package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
- package/fesm2022/odx-angular-components-datepicker.mjs +84 -0
- package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-daterangepicker.mjs +145 -0
- package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-dropdown.mjs +66 -0
- package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
- package/fesm2022/odx-angular-components-error-page.mjs +15 -0
- package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
- package/fesm2022/odx-angular-components-footer.mjs +11 -6
- package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
- package/fesm2022/odx-angular-components-form-field.mjs +131 -0
- package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header-navigation.mjs +6 -0
- package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-header.mjs +10 -0
- package/fesm2022/odx-angular-components-header.mjs.map +1 -1
- package/fesm2022/odx-angular-components-icon.mjs +57 -0
- package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
- package/fesm2022/odx-angular-components-inline-message.mjs +13 -0
- package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
- package/fesm2022/odx-angular-components-link.mjs +3 -0
- package/fesm2022/odx-angular-components-link.mjs.map +1 -1
- package/fesm2022/odx-angular-components-list.mjs +28 -1
- package/fesm2022/odx-angular-components-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-loading-spinner.mjs +30 -0
- package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
- package/fesm2022/odx-angular-components-logo.mjs +15 -0
- package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
- package/fesm2022/odx-angular-components-main-menu.mjs +119 -0
- package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-mainfilter-group.mjs +4 -0
- package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-menu.mjs +36 -0
- package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
- package/fesm2022/odx-angular-components-modal.mjs +252 -0
- package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
- package/fesm2022/odx-angular-components-navigation-back.mjs +3 -0
- package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
- package/fesm2022/odx-angular-components-notification.mjs +148 -6
- package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
- package/fesm2022/odx-angular-components-paginator.mjs +117 -0
- package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/odx-angular-components-progress.mjs +15 -0
- package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
- package/fesm2022/odx-angular-components-radio-group.mjs +11 -0
- package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rail-navigation.mjs +42 -0
- package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/odx-angular-components-rich-list.mjs +26 -3
- package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
- package/fesm2022/odx-angular-components-select.mjs +122 -7
- package/fesm2022/odx-angular-components-select.mjs.map +1 -1
- package/fesm2022/odx-angular-components-slider.mjs +19 -0
- package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
- package/fesm2022/odx-angular-components-spinbox.mjs +16 -0
- package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
- package/fesm2022/odx-angular-components-switch.mjs +22 -0
- package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tab-bar.mjs +97 -0
- package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
- package/fesm2022/odx-angular-components-table.mjs +84 -1
- package/fesm2022/odx-angular-components-table.mjs.map +1 -1
- package/fesm2022/odx-angular-components-timepicker.mjs +20 -9
- package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toast.mjs +61 -0
- package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
- package/fesm2022/odx-angular-components-toggle-button-group.mjs +23 -0
- package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
- package/fesm2022/odx-angular-components-tooltip.mjs +52 -0
- package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
- package/fesm2022/odx-angular-components-wizard.mjs +54 -0
- package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
- package/fesm2022/odx-angular-internal-translate.mjs +60 -0
- package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
- package/fesm2022/odx-angular-internal.mjs +4 -1
- package/fesm2022/odx-angular-internal.mjs.map +1 -1
- package/fesm2022/odx-angular-localization.mjs +269 -32
- package/fesm2022/odx-angular-localization.mjs.map +1 -1
- package/fesm2022/odx-angular-rxjs.mjs +115 -5
- package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
- package/fesm2022/odx-angular-sdk.mjs +50 -0
- package/fesm2022/odx-angular-sdk.mjs.map +1 -1
- package/fesm2022/odx-angular-theming.mjs +149 -0
- package/fesm2022/odx-angular-theming.mjs.map +1 -1
- package/fesm2022/odx-angular-utils.mjs +709 -1
- package/fesm2022/odx-angular-utils.mjs.map +1 -1
- package/fesm2022/odx-angular.mjs +322 -0
- package/fesm2022/odx-angular.mjs.map +1 -1
- package/internal/lib/helpers/fast-equals.d.ts +1 -0
- package/internal/lib/helpers/index.d.ts +1 -0
- package/internal/translate/lib/translate.config.d.ts +31 -0
- package/internal/translate/lib/translate.service.d.ts +29 -0
- package/lib/controllers/controller.d.ts +25 -0
- package/lib/controllers/disabled.controller.d.ts +59 -0
- package/lib/controllers/readonly.controller.d.ts +56 -0
- package/lib/directives/click-outside.directive.d.ts +29 -0
- package/lib/directives/delegate-focus.directive.d.ts +14 -0
- package/lib/services/window-ref.d.ts +66 -0
- package/lib/tokens/identity-matcher.d.ts +41 -0
- package/lib/tokens/string-search-handler.d.ts +39 -0
- package/lib/tokens/stringify.d.ts +42 -0
- package/localization/lib/features/with-http-language-header.d.ts +63 -0
- package/localization/lib/features/with-http-language-query-param.d.ts +61 -0
- package/localization/lib/loaders/browser-language-loader.d.ts +32 -0
- package/localization/lib/localization.config.d.ts +81 -2
- package/localization/lib/localization.logger.d.ts +3 -0
- package/localization/lib/localization.service.d.ts +42 -7
- package/package.json +8 -7
- package/rxjs/index.d.ts +1 -1
- package/rxjs/lib/delay-until.d.ts +22 -0
- package/rxjs/lib/from-element-mutation.d.ts +21 -0
- package/rxjs/lib/from-element-resize.d.ts +24 -0
- package/rxjs/lib/from-events.d.ts +24 -0
- package/rxjs/lib/from-query-list.d.ts +22 -0
- package/sdk/lib/application-environment.d.ts +59 -0
- package/theming/lib/helpers/prefers-dark-theme.d.ts +18 -0
- package/theming/lib/helpers/resolve-theme.d.ts +25 -0
- package/theming/lib/helpers/theme-storage.d.ts +42 -0
- package/theming/lib/theming.config.d.ts +46 -0
- package/theming/lib/theming.service.d.ts +31 -0
- package/utils/lib/decorators/pure.d.ts +51 -0
- package/utils/lib/helpers/angular.d.ts +36 -0
- package/utils/lib/helpers/array.d.ts +4 -0
- package/utils/lib/helpers/build-url.d.ts +20 -0
- package/utils/lib/helpers/build-website-url.d.ts +2 -1
- package/utils/lib/helpers/cache-storage-client.d.ts +51 -0
- package/utils/lib/helpers/coercion.d.ts +17 -0
- package/utils/lib/helpers/debounce.d.ts +27 -0
- package/utils/lib/helpers/defer-fn.d.ts +20 -0
- package/utils/lib/helpers/dom.d.ts +70 -0
- package/utils/lib/helpers/get-axis.d.ts +20 -0
- package/utils/lib/helpers/get-language-code.d.ts +17 -0
- package/utils/lib/helpers/get-opposite-side.d.ts +21 -0
- package/utils/lib/helpers/get-side.d.ts +17 -0
- package/utils/lib/helpers/get-unique-id.d.ts +33 -0
- package/utils/lib/helpers/match-url.d.ts +40 -0
- package/utils/lib/helpers/ng-changes.d.ts +52 -0
- package/utils/lib/helpers/provide-config.d.ts +56 -0
- package/utils/lib/helpers/queue.d.ts +83 -0
- package/utils/lib/helpers/type-guards.d.ts +57 -0
- package/utils/lib/helpers/until-destroyed.d.ts +38 -0
- package/esm2022/rxjs/lib/form-query-list.mjs +0 -5
- package/rxjs/lib/form-query-list.d.ts +0 -3
|
@@ -5,10 +5,42 @@ import { CSSComponent } from '@odx/angular/internal';
|
|
|
5
5
|
import { injectElement } from '@odx/angular/utils';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@odx/angular";
|
|
8
|
+
/**
|
|
9
|
+
* Directive that makes an element interactive, responding to click, Enter key, and Space key events.
|
|
10
|
+
* It automatically handles the disabled state through `DisabledController`, inhibiting interactions when disabled.
|
|
11
|
+
* This directive can be useful for creating custom buttons or interactive elements that are not natively interactive,
|
|
12
|
+
* such as divs or custom components.
|
|
13
|
+
*
|
|
14
|
+
* @Directive
|
|
15
|
+
* @CSSComponent cdk-interactive - A CSS Component class that can be targeted for styling interactive elements.
|
|
16
|
+
* @selector '[odxCdkInteractive]' - Applies this directive to any element with the 'odxCdkInteractive' attribute.
|
|
17
|
+
* @hostDirectives {WithDisabledState, WithTabIndex} - Applies disabled state and tab index handling.
|
|
18
|
+
* @host role='button' - Assigns a role of 'button' to the host element for accessibility.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* Applying the directive to a div element to make it interactive:
|
|
22
|
+
* ```html
|
|
23
|
+
* <div odxCdkInteractive (odxCdkInteractive)="onInteract($event)">
|
|
24
|
+
* Click or press Enter/Space to interact
|
|
25
|
+
* </div>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* Using the directive on a custom Angular component
|
|
30
|
+
* ```html
|
|
31
|
+
* <app-custom-button odxCdkInteractive (odxCdkInteractive)="onCustomButtonInteract($event)">
|
|
32
|
+
* </app-custom-button>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
8
35
|
export let InteractiveDirective = class InteractiveDirective {
|
|
9
36
|
constructor() {
|
|
10
37
|
this.disabledController = DisabledController.inject();
|
|
11
38
|
this.element = injectElement();
|
|
39
|
+
/**
|
|
40
|
+
* Emits an event when the element is interacted with via click, Enter key, or Space key.
|
|
41
|
+
*
|
|
42
|
+
* @emits {MouseEvent | KeyboardEvent} - The event that triggered the interaction.
|
|
43
|
+
*/
|
|
12
44
|
this.interact = new EventEmitter();
|
|
13
45
|
}
|
|
14
46
|
handleEvents(event) {
|
|
@@ -45,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
45
77
|
type: HostListener,
|
|
46
78
|
args: ['keyup.space', ['$event']]
|
|
47
79
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9hMTF5L3NyYy9saWIvZGlyZWN0aXZlcy9pbnRlcmFjdGl2ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBVUksV0FBTSxvQkFBb0IsR0FBMUIsTUFBTSxvQkFBb0I7SUFBMUI7UUFDWSx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVsRCxZQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFFMUM7Ozs7V0FJRztRQUVJLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQztLQVNsRTtJQUpXLFlBQVksQ0FBQyxLQUFpQztRQUN0RCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRO1lBQUUsT0FBTztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQW5CVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7QUFBcEIsb0JBQW9CO0lBVGhDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztHQVNuQixvQkFBb0IsQ0FvQmhDOzRGQXBCWSxvQkFBb0I7a0JBUmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQztvQkFDakQsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxRQUFRO3FCQUNmO2lCQUNGOzhCQVlRLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxtQkFBbUI7Z0JBTWpCLFlBQVk7c0JBSHJCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN0QyxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzYWJsZWRDb250cm9sbGVyLCBXaXRoRGlzYWJsZWRTdGF0ZSwgV2l0aFRhYkluZGV4IH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCBtYWtlcyBhbiBlbGVtZW50IGludGVyYWN0aXZlLCByZXNwb25kaW5nIHRvIGNsaWNrLCBFbnRlciBrZXksIGFuZCBTcGFjZSBrZXkgZXZlbnRzLlxuICogSXQgYXV0b21hdGljYWxseSBoYW5kbGVzIHRoZSBkaXNhYmxlZCBzdGF0ZSB0aHJvdWdoIGBEaXNhYmxlZENvbnRyb2xsZXJgLCBpbmhpYml0aW5nIGludGVyYWN0aW9ucyB3aGVuIGRpc2FibGVkLlxuICogVGhpcyBkaXJlY3RpdmUgY2FuIGJlIHVzZWZ1bCBmb3IgY3JlYXRpbmcgY3VzdG9tIGJ1dHRvbnMgb3IgaW50ZXJhY3RpdmUgZWxlbWVudHMgdGhhdCBhcmUgbm90IG5hdGl2ZWx5IGludGVyYWN0aXZlLFxuICogc3VjaCBhcyBkaXZzIG9yIGN1c3RvbSBjb21wb25lbnRzLlxuICpcbiAqIEBEaXJlY3RpdmVcbiAqIEBDU1NDb21wb25lbnQgY2RrLWludGVyYWN0aXZlIC0gQSBDU1MgQ29tcG9uZW50IGNsYXNzIHRoYXQgY2FuIGJlIHRhcmdldGVkIGZvciBzdHlsaW5nIGludGVyYWN0aXZlIGVsZW1lbnRzLlxuICogQHNlbGVjdG9yICdbb2R4Q2RrSW50ZXJhY3RpdmVdJyAtIEFwcGxpZXMgdGhpcyBkaXJlY3RpdmUgdG8gYW55IGVsZW1lbnQgd2l0aCB0aGUgJ29keENka0ludGVyYWN0aXZlJyBhdHRyaWJ1dGUuXG4gKiBAaG9zdERpcmVjdGl2ZXMge1dpdGhEaXNhYmxlZFN0YXRlLCBXaXRoVGFiSW5kZXh9IC0gQXBwbGllcyBkaXNhYmxlZCBzdGF0ZSBhbmQgdGFiIGluZGV4IGhhbmRsaW5nLlxuICogQGhvc3Qgcm9sZT0nYnV0dG9uJyAtIEFzc2lnbnMgYSByb2xlIG9mICdidXR0b24nIHRvIHRoZSBob3N0IGVsZW1lbnQgZm9yIGFjY2Vzc2liaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIEFwcGx5aW5nIHRoZSBkaXJlY3RpdmUgdG8gYSBkaXYgZWxlbWVudCB0byBtYWtlIGl0IGludGVyYWN0aXZlOlxuICogYGBgaHRtbFxuICogPGRpdiBvZHhDZGtJbnRlcmFjdGl2ZSAob2R4Q2RrSW50ZXJhY3RpdmUpPVwib25JbnRlcmFjdCgkZXZlbnQpXCI+XG4gKiAgIENsaWNrIG9yIHByZXNzIEVudGVyL1NwYWNlIHRvIGludGVyYWN0XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBVc2luZyB0aGUgZGlyZWN0aXZlIG9uIGEgY3VzdG9tIEFuZ3VsYXIgY29tcG9uZW50XG4gKiBgYGBodG1sXG4gKiA8YXBwLWN1c3RvbS1idXR0b24gb2R4Q2RrSW50ZXJhY3RpdmUgKG9keENka0ludGVyYWN0aXZlKT1cIm9uQ3VzdG9tQnV0dG9uSW50ZXJhY3QoJGV2ZW50KVwiPlxuICogPC9hcHAtY3VzdG9tLWJ1dHRvbj5cbiAqIGBgYFxuICovXG5AQ1NTQ29tcG9uZW50KCdjZGstaW50ZXJhY3RpdmUnKVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW29keENka0ludGVyYWN0aXZlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3REaXJlY3RpdmVzOiBbV2l0aERpc2FibGVkU3RhdGUsIFdpdGhUYWJJbmRleF0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnYnV0dG9uJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgSW50ZXJhY3RpdmVEaXJlY3RpdmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkQ29udHJvbGxlciA9IERpc2FibGVkQ29udHJvbGxlci5pbmplY3QoKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgZWxlbWVudCBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGNsaWNrLCBFbnRlciBrZXksIG9yIFNwYWNlIGtleS5cbiAgICpcbiAgICogQGVtaXRzIHtNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudH0gLSBUaGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGludGVyYWN0aW9uLlxuICAgKi9cbiAgQE91dHB1dCgnb2R4Q2RrSW50ZXJhY3RpdmUnKVxuICBwdWJsaWMgaW50ZXJhY3QgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgQEhvc3RMaXN0ZW5lcigna2V5dXAuZW50ZXInLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXl1cC5zcGFjZScsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBoYW5kbGVFdmVudHMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWRDb250cm9sbGVyPy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaW50ZXJhY3QubmV4dChldmVudCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,14 +2,36 @@ import { Directive } from '@angular/core';
|
|
|
2
2
|
import { DisabledController } from '@odx/angular';
|
|
3
3
|
import { injectElement } from '@odx/angular/utils';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Directive to make an element focusable as part of a list, integrating with Angular CDK's FocusKeyManager.
|
|
7
|
+
* It listens to the disabled state controlled by `DisabledController` to manage focus correctly based on
|
|
8
|
+
* the enabled state of the element.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* In a component template, apply this directive to list items that should be focusable and managed by a FocusKeyManager:
|
|
12
|
+
* ```html
|
|
13
|
+
* <li odxListFocusManagerOption *ngFor="let item of items">
|
|
14
|
+
* {{ item }}
|
|
15
|
+
* </li>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
5
18
|
export class ListFocusManagerOptionDirective {
|
|
6
19
|
constructor() {
|
|
7
20
|
this.disabledController = DisabledController.inject();
|
|
8
21
|
this.element = injectElement();
|
|
9
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Reflects the disabled state of the element, managed by `DisabledController`.
|
|
25
|
+
* If disabled, the element is not focusable.
|
|
26
|
+
*
|
|
27
|
+
* @returns {boolean} True if the directive's host element is disabled.
|
|
28
|
+
*/
|
|
10
29
|
get disabled() {
|
|
11
30
|
return !!this.disabledController?.disabled;
|
|
12
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Focuses the host element. If the element is disabled, it will not be focused.
|
|
34
|
+
*/
|
|
13
35
|
focus() {
|
|
14
36
|
this.element.nativeElement.focus();
|
|
15
37
|
}
|
|
@@ -23,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
23
45
|
standalone: true,
|
|
24
46
|
}]
|
|
25
47
|
}] });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1mb2N1cy1tYW5hZ2VyLW9wdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2ExMXkvc3JjL2xpYi9kaXJlY3RpdmVzL2xpc3QtZm9jdXMtbWFuYWdlci1vcHRpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFFbkQ7Ozs7Ozs7Ozs7OztHQVlHO0FBS0gsTUFBTSxPQUFPLCtCQUErQjtJQUo1QztRQUttQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCxZQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7S0FrQjVDO0lBaEJDOzs7OztPQUtHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7K0dBbkJVLCtCQUErQjttR0FBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlzYWJsZWRDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBtYWtlIGFuIGVsZW1lbnQgZm9jdXNhYmxlIGFzIHBhcnQgb2YgYSBsaXN0LCBpbnRlZ3JhdGluZyB3aXRoIEFuZ3VsYXIgQ0RLJ3MgRm9jdXNLZXlNYW5hZ2VyLlxuICogSXQgbGlzdGVucyB0byB0aGUgZGlzYWJsZWQgc3RhdGUgY29udHJvbGxlZCBieSBgRGlzYWJsZWRDb250cm9sbGVyYCB0byBtYW5hZ2UgZm9jdXMgY29ycmVjdGx5IGJhc2VkIG9uXG4gKiB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZWxlbWVudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogSW4gYSBjb21wb25lbnQgdGVtcGxhdGUsIGFwcGx5IHRoaXMgZGlyZWN0aXZlIHRvIGxpc3QgaXRlbXMgdGhhdCBzaG91bGQgYmUgZm9jdXNhYmxlIGFuZCBtYW5hZ2VkIGJ5IGEgRm9jdXNLZXlNYW5hZ2VyOlxuICogYGBgaHRtbFxuICogPGxpIG9keExpc3RGb2N1c01hbmFnZXJPcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAqICAge3sgaXRlbSB9fVxuICogPC9saT5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbb2R4TGlzdEZvY3VzTWFuYWdlck9wdGlvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Rm9jdXNNYW5hZ2VyT3B0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgRm9jdXNhYmxlT3B0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlZENvbnRyb2xsZXIgPSBEaXNhYmxlZENvbnRyb2xsZXIuaW5qZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICAvKipcbiAgICogUmVmbGVjdHMgdGhlIGRpc2FibGVkIHN0YXRlIG9mIHRoZSBlbGVtZW50LCBtYW5hZ2VkIGJ5IGBEaXNhYmxlZENvbnRyb2xsZXJgLlxuICAgKiBJZiBkaXNhYmxlZCwgdGhlIGVsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGRpcmVjdGl2ZSdzIGhvc3QgZWxlbWVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5kaXNhYmxlZENvbnRyb2xsZXI/LmRpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGhvc3QgZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaXMgZGlzYWJsZWQsIGl0IHdpbGwgbm90IGJlIGZvY3VzZWQuXG4gICAqL1xuICBwdWJsaWMgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
|
|
@@ -3,6 +3,23 @@ import { ContentChildren, Directive, HostListener, QueryList } from '@angular/co
|
|
|
3
3
|
import { deferFn } from '@odx/angular/utils';
|
|
4
4
|
import { ListFocusManagerOptionDirective } from './list-focus-manager-option.directive';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Directive that sets up keyboard navigation for a list or a group of focusable elements.
|
|
8
|
+
* Utilizes `FocusKeyManager` from Angular CDK to manage focus among items.
|
|
9
|
+
* It automatically skips disabled items and wraps around when navigating past the first or last item.
|
|
10
|
+
* Handles keydown events to navigate through the focusable options.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* In a component template, use this directive on a container element and `odxListFocusManagerOption`
|
|
14
|
+
* on each focusable list item:
|
|
15
|
+
* ```html
|
|
16
|
+
* <ul odxListFocusManager>
|
|
17
|
+
* <li odxListFocusManagerOption *ngFor="let item of items">
|
|
18
|
+
* {{ item }}
|
|
19
|
+
* </li>
|
|
20
|
+
* </ul>
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
6
23
|
export class ListFocusManagerDirective {
|
|
7
24
|
constructor() {
|
|
8
25
|
this.keyManager = null;
|
|
@@ -37,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
37
54
|
type: HostListener,
|
|
38
55
|
args: ['keydown', ['$event']]
|
|
39
56
|
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1mb2N1cy1tYW5hZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jZGsvYTExeS9zcmMvbGliL2RpcmVjdGl2ZXMvbGlzdC1mb2N1cy1tYW5hZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFvQixlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQUV4Rjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUtILE1BQU0sT0FBTyx5QkFBeUI7SUFKdEM7UUFLVSxlQUFVLEdBQTRELElBQUksQ0FBQztLQXNCcEY7SUFqQlEsa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNoRCxjQUFjLEVBQUU7YUFDaEIsUUFBUSxFQUFFO2FBQ1YsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUdTLFNBQVMsQ0FBQyxLQUFvQjtRQUN0QyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQXRCVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixrS0FHbkIsK0JBQStCOzs0RkFIckMseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFLVyxPQUFPO3NCQURoQixlQUFlO3VCQUFDLCtCQUErQjtnQkFpQnRDLFNBQVM7c0JBRGxCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyRm4gfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgTGlzdEZvY3VzTWFuYWdlck9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4vbGlzdC1mb2N1cy1tYW5hZ2VyLW9wdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IHNldHMgdXAga2V5Ym9hcmQgbmF2aWdhdGlvbiBmb3IgYSBsaXN0IG9yIGEgZ3JvdXAgb2YgZm9jdXNhYmxlIGVsZW1lbnRzLlxuICogVXRpbGl6ZXMgYEZvY3VzS2V5TWFuYWdlcmAgZnJvbSBBbmd1bGFyIENESyB0byBtYW5hZ2UgZm9jdXMgYW1vbmcgaXRlbXMuXG4gKiBJdCBhdXRvbWF0aWNhbGx5IHNraXBzIGRpc2FibGVkIGl0ZW1zIGFuZCB3cmFwcyBhcm91bmQgd2hlbiBuYXZpZ2F0aW5nIHBhc3QgdGhlIGZpcnN0IG9yIGxhc3QgaXRlbS5cbiAqIEhhbmRsZXMga2V5ZG93biBldmVudHMgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgZm9jdXNhYmxlIG9wdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIEluIGEgY29tcG9uZW50IHRlbXBsYXRlLCB1c2UgdGhpcyBkaXJlY3RpdmUgb24gYSBjb250YWluZXIgZWxlbWVudCBhbmQgYG9keExpc3RGb2N1c01hbmFnZXJPcHRpb25gXG4gKiBvbiBlYWNoIGZvY3VzYWJsZSBsaXN0IGl0ZW06XG4gKiBgYGBodG1sXG4gKiA8dWwgb2R4TGlzdEZvY3VzTWFuYWdlcj5cbiAqICAgPGxpIG9keExpc3RGb2N1c01hbmFnZXJPcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAqICAgICB7eyBpdGVtIH19XG4gKiAgIDwvbGk+XG4gKiA8L3VsPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tvZHhMaXN0Rm9jdXNNYW5hZ2VyXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGb2N1c01hbmFnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGtleU1hbmFnZXI6IEZvY3VzS2V5TWFuYWdlcjxMaXN0Rm9jdXNNYW5hZ2VyT3B0aW9uRGlyZWN0aXZlPiB8IG51bGwgPSBudWxsO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTGlzdEZvY3VzTWFuYWdlck9wdGlvbkRpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIG9wdGlvbnMhOiBRdWVyeUxpc3Q8TGlzdEZvY3VzTWFuYWdlck9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMub3B0aW9ucylcbiAgICAgIC53aXRoSG9tZUFuZEVuZCgpXG4gICAgICAud2l0aFdyYXAoKVxuICAgICAgLnNraXBQcmVkaWNhdGUoKGl0ZW0pID0+IGl0ZW0uZGlzYWJsZWQpO1xuICAgIGRlZmVyRm4oKCkgPT4gdGhpcy5rZXlNYW5hZ2VyPy5zZXRGaXJzdEl0ZW1BY3RpdmUoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5kZXN0cm95KCk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,42 @@ import { BehaviorSubject, EMPTY, distinctUntilChanged, switchMap } from 'rxjs';
|
|
|
7
7
|
import { ActiveIndicatorPosition } from './models';
|
|
8
8
|
import { ActiveIndicatorDirection } from './models/active-indicator-direction';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
|
+
/**
|
|
11
|
+
* `ActiveIndicatorDirective` is designed to adjust an indicator's position and size dynamically to highlight
|
|
12
|
+
* the active element within a container. It's useful for tabs, menus, or any list where an active state is visually represented.
|
|
13
|
+
* The directive can be customized to align the indicator based on the active element's position and supports
|
|
14
|
+
* both horizontal and vertical orientations.
|
|
15
|
+
*
|
|
16
|
+
* To use this directive, apply it to the element you want to use as an active indicator.
|
|
17
|
+
* Then, bind the active element using the `odxActiveIndicator` input. Optionally, specify
|
|
18
|
+
* the container element with `odxActiveIndicatorParent` if the container is not the immediate parent of the indicator.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```html
|
|
22
|
+
* <div class="tabs-container" #tabsContainer>
|
|
23
|
+
* <div class="tab" *ngFor="let tab of tabs" [class.active]="tab.isActive" #tabElement>{{ tab.label }}</div>
|
|
24
|
+
* <div class="indicator" [odxActiveIndicator]="activeTabElement" [odxActiveIndicatorParent]="tabsContainer"></div>
|
|
25
|
+
* </div>
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* @Component({
|
|
30
|
+
* selector: 'app-tabs',
|
|
31
|
+
* templateUrl: './tabs.component.html',
|
|
32
|
+
* imports: [ActiveIndicatorDirective, NgForOf],
|
|
33
|
+
* })
|
|
34
|
+
* export class TabsComponent {
|
|
35
|
+
* tabs = [{ label: 'Tab 1', isActive: true }, { label: 'Tab 2', isActive: false }];
|
|
36
|
+
* @ViewChildren('tabElement') tabElements?: QueryList<ElementRef>;
|
|
37
|
+
* @ViewChild('tabsContainer') tabsContainer!: ElementRef;
|
|
38
|
+
*
|
|
39
|
+
* get activeTabElement(): HTMLElement {
|
|
40
|
+
* const activeTab = this.tabElements?.find((tab) => tab.nativeElement.classList.contains('active'));
|
|
41
|
+
* return activeTab ? activeTab.nativeElement : null;
|
|
42
|
+
* }
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
10
46
|
export let ActiveIndicatorDirective = class ActiveIndicatorDirective {
|
|
11
47
|
constructor() {
|
|
12
48
|
this.takeUntilDestroyed = untilDestroyed();
|
|
@@ -15,11 +51,38 @@ export let ActiveIndicatorDirective = class ActiveIndicatorDirective {
|
|
|
15
51
|
return parentElement ? fromElementResize$(parentElement) : EMPTY;
|
|
16
52
|
}));
|
|
17
53
|
this.element = injectElement();
|
|
54
|
+
/**
|
|
55
|
+
* Indicates whether the element is active or not.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
*/
|
|
18
59
|
this.isActive = false;
|
|
60
|
+
/**
|
|
61
|
+
* The currently active element to which the indicator should align.
|
|
62
|
+
* It dynamically updates the indicator's position and size based on this element.
|
|
63
|
+
*
|
|
64
|
+
* @type {HTMLElement | null}
|
|
65
|
+
*/
|
|
19
66
|
this.activeElement = null;
|
|
67
|
+
/**
|
|
68
|
+
* The direction in which the indicator should move.
|
|
69
|
+
*
|
|
70
|
+
* @type {ActiveIndicatorDirection}
|
|
71
|
+
*/
|
|
20
72
|
this.direction = ActiveIndicatorDirection.HORIZONTAL;
|
|
73
|
+
/**
|
|
74
|
+
* The position of the indicator relative to the active element.
|
|
75
|
+
*
|
|
76
|
+
* @type {ActiveIndicatorPosition}
|
|
77
|
+
*/
|
|
21
78
|
this.position = ActiveIndicatorPosition.CENTER;
|
|
22
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* The parent container element of the active elements.
|
|
82
|
+
* If not set, the indicator's immediate parent element is used.
|
|
83
|
+
*
|
|
84
|
+
* @type {HTMLElement | null}
|
|
85
|
+
*/
|
|
23
86
|
set parent(value) {
|
|
24
87
|
this.parentElement$$.next(value);
|
|
25
88
|
}
|
|
@@ -124,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
124
187
|
type: Input,
|
|
125
188
|
args: ['odxActiveIndicatorPosition']
|
|
126
189
|
}] } });
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWluZGljYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2FjdGl2ZS1pbmRpY2F0b3Ivc3JjL2xpYi9hY3RpdmUtaW5kaWNhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFhLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFPeEUsV0FBTSx3QkFBd0IsR0FBOUIsTUFBTSx3QkFBd0I7SUFBOUI7UUFDWSx1QkFBa0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUNoRSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3BELG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFCLE9BQU8sYUFBYSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMs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QztTQUNmO0lBQ0gsQ0FBQzsrR0F2R1Usd0JBQXdCO21HQUF4Qix3QkFBd0I7O0FBYTVCO0lBRE4sV0FBVyxFQUFFOzswREFDVTtBQWVqQjtJQUZOLFdBQVcsRUFBRTs7MkRBRW1FO0FBNUJ0RSx3QkFBd0I7SUFMcEMsWUFBWSxDQUFDLHNCQUFzQixDQUFDO0dBS3hCLHdCQUF3QixDQXdHcEM7NEZBeEdZLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7OEJBY1EsUUFBUSxNQUdSLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsb0JBQW9CO2dCQUloQixNQUFNO3NCQURoQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFVMUIsU0FBUztzQkFEZixLQUFLO3VCQUFDLDZCQUE2QjtnQkFJN0IsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBmcm9tRWxlbWVudFJlc2l6ZSQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvcnhqcyc7XG5pbXBvcnQgeyBOZ0NoYW5nZXMsIGFwcGx5U3R5bGVzLCBkaXNhYmxlQ1NTVHJhbnNpdGlvbnMsIGhhc0NoYW5nZWQsIGluamVjdEVsZW1lbnQsIGlzUHJlc2VudCwgcHgsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGl2ZUluZGljYXRvclBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWN0aXZlSW5kaWNhdG9yRGlyZWN0aW9uIH0gZnJvbSAnLi9tb2RlbHMvYWN0aXZlLWluZGljYXRvci1kaXJlY3Rpb24nO1xuXG5AQ1NTQ29tcG9uZW50KCdjZGstYWN0aXZlLWluZGljYXRvcicpXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbb2R4QWN0aXZlSW5kaWNhdG9yXScsXG59KVxuZXhwb3J0IGNsYXNzIEFjdGl2ZUluZGljYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGFrZVVudGlsRGVzdHJveWVkID0gdW50aWxEZXN0cm95ZWQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnRFbGVtZW50JCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25SZXNpemUkID0gdGhpcy5wYXJlbnRFbGVtZW50JCQucGlwZShcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHN3aXRjaE1hcCgocGFyZW50RWxlbWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcmVudEVsZW1lbnQgPyBmcm9tRWxlbWVudFJlc2l6ZSQocGFyZW50RWxlbWVudCkgOiBFTVBUWTtcbiAgICB9KSxcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdEVsZW1lbnQoKTtcblxuICBAQ1NTTW9kaWZpZXIoKVxuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcblxuICBASW5wdXQoJ29keEFjdGl2ZUluZGljYXRvcicpXG4gIHB1YmxpYyBhY3RpdmVFbGVtZW50PzogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoJ29keEFjdGl2ZUluZGljYXRvclBhcmVudCcpXG4gIHB1YmxpYyBzZXQgcGFyZW50KHZhbHVlOiBIVE1MRWxlbWVudCB8IG51bGwpIHtcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQkJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHBhcmVudCgpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnBhcmVudEVsZW1lbnQkJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgQENTU01vZGlmaWVyKClcbiAgQElucHV0KCdvZHhBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24nKVxuICBwdWJsaWMgZGlyZWN0aW9uOiBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24gPSBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24uSE9SSVpPTlRBTDtcblxuICBASW5wdXQoJ29keEFjdGl2ZUluZGljYXRvclBvc2l0aW9uJylcbiAgcHVibGljIHBvc2l0aW9uOiBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbiA9IEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25SZXNpemUkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzKCkpO1xuICAgIHRoaXMucGFyZW50ID8/PSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxBY3RpdmVJbmRpY2F0b3JEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2FjdGl2ZUVsZW1lbnQnLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSAhIXRoaXMuYWN0aXZlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgWydhY3RpdmVFbGVtZW50JywgJ2RpcmVjdGlvbicsICdwb3NpdGlvbiddKSkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZXMoIWlzUHJlc2VudChjaGFuZ2VzLmFjdGl2ZUVsZW1lbnQ/LnByZXZpb3VzVmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlcyhkaXNhYmxlVHJhbnNpdGlvbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSB0aGlzLmRpcmVjdGlvbiA9PT0gQWN0aXZlSW5kaWNhdG9yRGlyZWN0aW9uLkhPUklaT05UQUw7XG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuZGlyZWN0aW9uID09PSBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24uVkVSVElDQUw7XG4gICAgY29uc3QgcmVsYXRpdmVPZmZzZXQgPSB0aGlzLmdldEluZGljYXRvclJlbGF0aXZlT2Zmc2V0KCk7XG5cbiAgICBsZXQgdHJhbnNmb3JtID0gbnVsbDtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblggPSB0aGlzLmdldEluZGljYXRvclBvc2l0aW9uWCh0aGlzLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgdHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtweChwb3NpdGlvblgpfSkgdHJhbnNsYXRlWCgke3JlbGF0aXZlT2Zmc2V0fSUpYDtcbiAgICB9XG4gICAgaWYgKGlzVmVydGljYWwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uWSA9IHRoaXMuZ2V0SW5kaWNhdG9yUG9zaXRpb25ZKHRoaXMuYWN0aXZlRWxlbWVudCk7XG4gICAgICB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke3B4KHBvc2l0aW9uWSl9KSB0cmFuc2xhdGVZKCR7cmVsYXRpdmVPZmZzZXR9JSlgO1xuICAgIH1cblxuICAgIGRpc2FibGVUcmFuc2l0aW9uICYmIGRpc2FibGVDU1NUcmFuc2l0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdHJ1ZSk7XG4gICAgYXBwbHlTdHlsZXModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHRyYW5zZm9ybSxcbiAgICAgIHdpZHRoOiBpc0hvcml6b250YWwgPyBweCh0aGlzLmFjdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIDogbnVsbCxcbiAgICAgIGhlaWdodDogaXNWZXJ0aWNhbCA/IHB4KHRoaXMuYWN0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIDogbnVsbCxcbiAgICB9KTtcbiAgICBkaXNhYmxlVHJhbnNpdGlvbiAmJiBkaXNhYmxlQ1NTVHJhbnNpdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kaWNhdG9yUG9zaXRpb25YKGFjdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uU1RBUlQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCArIGFjdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgY2FzZSBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbi5FTkQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldExlZnQgKyBhY3RpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kaWNhdG9yUG9zaXRpb25ZKGFjdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uU1RBUlQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uQ0VOVEVSOlxuICAgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyBhY3RpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkVORDpcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQub2Zmc2V0VG9wICsgYWN0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRpY2F0b3JSZWxhdGl2ZU9mZnNldCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xuICAgICAgY2FzZSBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbi5TVEFSVDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIC01MDtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uRU5EOlxuICAgICAgICByZXR1cm4gLTEwMDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLWluZGljYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2FjdGl2ZS1pbmRpY2F0b3Ivc3JjL2xpYi9hY3RpdmUtaW5kaWNhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFhLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNHO0FBTUksV0FBTSx3QkFBd0IsR0FBOUIsTUFBTSx3QkFBd0I7SUFBOUI7UUFDWSx1QkFBa0IsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUN0QyxvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUNoRSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQ3BELG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQzFCLE9BQU8sYUFBYSxDQUFDLENB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QUMsQ0FBQztZQUNYLEtBQUssdUJBQXVCLENBQUMsTUFBTTtnQkFDakMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNiLEtBQUssdUJBQXVCLENBQUMsR0FBRztnQkFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQztTQUNmO0lBQ0gsQ0FBQzsrR0FsSVUsd0JBQXdCO21HQUF4Qix3QkFBd0I7O0FBa0I1QjtJQUROLFdBQVcsRUFBRTs7MERBQ1U7QUFnQ2pCO0lBRk4sV0FBVyxFQUFFOzsyREFFbUU7QUFsRHRFLHdCQUF3QjtJQUxwQyxZQUFZLENBQUMsc0JBQXNCLENBQUM7R0FLeEIsd0JBQXdCLENBbUlwQzs0RkFuSVksd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQzs4QkFtQlEsUUFBUSxNQVNSLGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsb0JBQW9CO2dCQVVoQixNQUFNO3NCQURoQixLQUFLO3VCQUFDLDBCQUEwQjtnQkFlMUIsU0FBUztzQkFEZixLQUFLO3VCQUFDLDZCQUE2QjtnQkFTN0IsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBmcm9tRWxlbWVudFJlc2l6ZSQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvcnhqcyc7XG5pbXBvcnQgeyBOZ0NoYW5nZXMsIGFwcGx5U3R5bGVzLCBkaXNhYmxlQ1NTVHJhbnNpdGlvbnMsIGhhc0NoYW5nZWQsIGluamVjdEVsZW1lbnQsIGlzUHJlc2VudCwgcHgsIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFjdGl2ZUluZGljYXRvclBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWN0aXZlSW5kaWNhdG9yRGlyZWN0aW9uIH0gZnJvbSAnLi9tb2RlbHMvYWN0aXZlLWluZGljYXRvci1kaXJlY3Rpb24nO1xuXG4vKipcbiAqIGBBY3RpdmVJbmRpY2F0b3JEaXJlY3RpdmVgIGlzIGRlc2lnbmVkIHRvIGFkanVzdCBhbiBpbmRpY2F0b3IncyBwb3NpdGlvbiBhbmQgc2l6ZSBkeW5hbWljYWxseSB0byBoaWdobGlnaHRcbiAqIHRoZSBhY3RpdmUgZWxlbWVudCB3aXRoaW4gYSBjb250YWluZXIuIEl0J3MgdXNlZnVsIGZvciB0YWJzLCBtZW51cywgb3IgYW55IGxpc3Qgd2hlcmUgYW4gYWN0aXZlIHN0YXRlIGlzIHZpc3VhbGx5IHJlcHJlc2VudGVkLlxuICogVGhlIGRpcmVjdGl2ZSBjYW4gYmUgY3VzdG9taXplZCB0byBhbGlnbiB0aGUgaW5kaWNhdG9yIGJhc2VkIG9uIHRoZSBhY3RpdmUgZWxlbWVudCdzIHBvc2l0aW9uIGFuZCBzdXBwb3J0c1xuICogYm90aCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvcmllbnRhdGlvbnMuXG4gKlxuICogVG8gdXNlIHRoaXMgZGlyZWN0aXZlLCBhcHBseSBpdCB0byB0aGUgZWxlbWVudCB5b3Ugd2FudCB0byB1c2UgYXMgYW4gYWN0aXZlIGluZGljYXRvci5cbiAqIFRoZW4sIGJpbmQgdGhlIGFjdGl2ZSBlbGVtZW50IHVzaW5nIHRoZSBgb2R4QWN0aXZlSW5kaWNhdG9yYCBpbnB1dC4gT3B0aW9uYWxseSwgc3BlY2lmeVxuICogdGhlIGNvbnRhaW5lciBlbGVtZW50IHdpdGggYG9keEFjdGl2ZUluZGljYXRvclBhcmVudGAgaWYgdGhlIGNvbnRhaW5lciBpcyBub3QgdGhlIGltbWVkaWF0ZSBwYXJlbnQgb2YgdGhlIGluZGljYXRvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cInRhYnMtY29udGFpbmVyXCIgI3RhYnNDb250YWluZXI+XG4gKiAgIDxkaXYgY2xhc3M9XCJ0YWJcIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiBbY2xhc3MuYWN0aXZlXT1cInRhYi5pc0FjdGl2ZVwiICN0YWJFbGVtZW50Pnt7IHRhYi5sYWJlbCB9fTwvZGl2PlxuICogICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yXCIgW29keEFjdGl2ZUluZGljYXRvcl09XCJhY3RpdmVUYWJFbGVtZW50XCIgW29keEFjdGl2ZUluZGljYXRvclBhcmVudF09XCJ0YWJzQ29udGFpbmVyXCI+PC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIGBgYHRzXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtdGFicycsXG4gKiAgIHRlbXBsYXRlVXJsOiAnLi90YWJzLmNvbXBvbmVudC5odG1sJyxcbiAqICAgaW1wb3J0czogW0FjdGl2ZUluZGljYXRvckRpcmVjdGl2ZSwgTmdGb3JPZl0sXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFRhYnNDb21wb25lbnQge1xuICogICB0YWJzID0gW3sgbGFiZWw6ICdUYWIgMScsIGlzQWN0aXZlOiB0cnVlIH0sIHsgbGFiZWw6ICdUYWIgMicsIGlzQWN0aXZlOiBmYWxzZSB9XTtcbiAqICAgQFZpZXdDaGlsZHJlbigndGFiRWxlbWVudCcpIHRhYkVsZW1lbnRzPzogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICogICBAVmlld0NoaWxkKCd0YWJzQ29udGFpbmVyJykgdGFic0NvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gKlxuICogICBnZXQgYWN0aXZlVGFiRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gKiAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy50YWJFbGVtZW50cz8uZmluZCgodGFiKSA9PiB0YWIubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGl2ZScpKTtcbiAqICAgICByZXR1cm4gYWN0aXZlVGFiID8gYWN0aXZlVGFiLm5hdGl2ZUVsZW1lbnQgOiBudWxsO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENTU0NvbXBvbmVudCgnY2RrLWFjdGl2ZS1pbmRpY2F0b3InKVxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW29keEFjdGl2ZUluZGljYXRvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBBY3RpdmVJbmRpY2F0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50RWxlbWVudCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUmVzaXplJCA9IHRoaXMucGFyZW50RWxlbWVudCQkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHBhcmVudEVsZW1lbnQpID0+IHtcbiAgICAgIHJldHVybiBwYXJlbnRFbGVtZW50ID8gZnJvbUVsZW1lbnRSZXNpemUkKHBhcmVudEVsZW1lbnQpIDogRU1QVFk7XG4gICAgfSksXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBlbGVtZW50IGlzIGFjdGl2ZSBvciBub3QuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgQENTU01vZGlmaWVyKClcbiAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGVsZW1lbnQgdG8gd2hpY2ggdGhlIGluZGljYXRvciBzaG91bGQgYWxpZ24uXG4gICAqIEl0IGR5bmFtaWNhbGx5IHVwZGF0ZXMgdGhlIGluZGljYXRvcidzIHBvc2l0aW9uIGFuZCBzaXplIGJhc2VkIG9uIHRoaXMgZWxlbWVudC5cbiAgICpcbiAgICogQHR5cGUge0hUTUxFbGVtZW50IHwgbnVsbH1cbiAgICovXG4gIEBJbnB1dCgnb2R4QWN0aXZlSW5kaWNhdG9yJylcbiAgcHVibGljIGFjdGl2ZUVsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IG9mIHRoZSBhY3RpdmUgZWxlbWVudHMuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBpbmRpY2F0b3IncyBpbW1lZGlhdGUgcGFyZW50IGVsZW1lbnQgaXMgdXNlZC5cbiAgICpcbiAgICogQHR5cGUge0hUTUxFbGVtZW50IHwgbnVsbH1cbiAgICovXG4gIEBJbnB1dCgnb2R4QWN0aXZlSW5kaWNhdG9yUGFyZW50JylcbiAgcHVibGljIHNldCBwYXJlbnQodmFsdWU6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIHRoaXMucGFyZW50RWxlbWVudCQkLm5leHQodmFsdWUpO1xuICB9XG4gIHB1YmxpYyBnZXQgcGFyZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50RWxlbWVudCQkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0aGUgaW5kaWNhdG9yIHNob3VsZCBtb3ZlLlxuICAgKlxuICAgKiBAdHlwZSB7QWN0aXZlSW5kaWNhdG9yRGlyZWN0aW9ufVxuICAgKi9cbiAgQENTU01vZGlmaWVyKClcbiAgQElucHV0KCdvZHhBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24nKVxuICBwdWJsaWMgZGlyZWN0aW9uOiBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24gPSBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24uSE9SSVpPTlRBTDtcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBpbmRpY2F0b3IgcmVsYXRpdmUgdG8gdGhlIGFjdGl2ZSBlbGVtZW50LlxuICAgKlxuICAgKiBAdHlwZSB7QWN0aXZlSW5kaWNhdG9yUG9zaXRpb259XG4gICAqL1xuICBASW5wdXQoJ29keEFjdGl2ZUluZGljYXRvclBvc2l0aW9uJylcbiAgcHVibGljIHBvc2l0aW9uOiBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbiA9IEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjtcblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25SZXNpemUkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzKCkpO1xuICAgIHRoaXMucGFyZW50ID8/PSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxBY3RpdmVJbmRpY2F0b3JEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2FjdGl2ZUVsZW1lbnQnLCBmYWxzZSkpIHtcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSAhIXRoaXMuYWN0aXZlRWxlbWVudDtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgWydhY3RpdmVFbGVtZW50JywgJ2RpcmVjdGlvbicsICdwb3NpdGlvbiddKSkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZXMoIWlzUHJlc2VudChjaGFuZ2VzLmFjdGl2ZUVsZW1lbnQ/LnByZXZpb3VzVmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlcyhkaXNhYmxlVHJhbnNpdGlvbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUVsZW1lbnQpIHJldHVybjtcbiAgICBjb25zdCBpc0hvcml6b250YWwgPSB0aGlzLmRpcmVjdGlvbiA9PT0gQWN0aXZlSW5kaWNhdG9yRGlyZWN0aW9uLkhPUklaT05UQUw7XG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuZGlyZWN0aW9uID09PSBBY3RpdmVJbmRpY2F0b3JEaXJlY3Rpb24uVkVSVElDQUw7XG4gICAgY29uc3QgcmVsYXRpdmVPZmZzZXQgPSB0aGlzLmdldEluZGljYXRvclJlbGF0aXZlT2Zmc2V0KCk7XG5cbiAgICBsZXQgdHJhbnNmb3JtID0gbnVsbDtcbiAgICBpZiAoaXNIb3Jpem9udGFsKSB7XG4gICAgICBjb25zdCBwb3NpdGlvblggPSB0aGlzLmdldEluZGljYXRvclBvc2l0aW9uWCh0aGlzLmFjdGl2ZUVsZW1lbnQpO1xuICAgICAgdHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtweChwb3NpdGlvblgpfSkgdHJhbnNsYXRlWCgke3JlbGF0aXZlT2Zmc2V0fSUpYDtcbiAgICB9XG4gICAgaWYgKGlzVmVydGljYWwpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uWSA9IHRoaXMuZ2V0SW5kaWNhdG9yUG9zaXRpb25ZKHRoaXMuYWN0aXZlRWxlbWVudCk7XG4gICAgICB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgke3B4KHBvc2l0aW9uWSl9KSB0cmFuc2xhdGVZKCR7cmVsYXRpdmVPZmZzZXR9JSlgO1xuICAgIH1cblxuICAgIGRpc2FibGVUcmFuc2l0aW9uICYmIGRpc2FibGVDU1NUcmFuc2l0aW9ucyh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgdHJ1ZSk7XG4gICAgYXBwbHlTdHlsZXModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIHRyYW5zZm9ybSxcbiAgICAgIHdpZHRoOiBpc0hvcml6b250YWwgPyBweCh0aGlzLmFjdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpIDogbnVsbCxcbiAgICAgIGhlaWdodDogaXNWZXJ0aWNhbCA/IHB4KHRoaXMuYWN0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIDogbnVsbCxcbiAgICB9KTtcbiAgICBkaXNhYmxlVHJhbnNpdGlvbiAmJiBkaXNhYmxlQ1NTVHJhbnNpdGlvbnModGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kaWNhdG9yUG9zaXRpb25YKGFjdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uU1RBUlQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCArIGFjdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgY2FzZSBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbi5FTkQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldExlZnQgKyBhY3RpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kaWNhdG9yUG9zaXRpb25ZKGFjdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHRoaXMucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uU1RBUlQ6XG4gICAgICAgIHJldHVybiBhY3RpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uQ0VOVEVSOlxuICAgICAgICByZXR1cm4gYWN0aXZlRWxlbWVudC5vZmZzZXRUb3AgKyBhY3RpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkVORDpcbiAgICAgICAgcmV0dXJuIGFjdGl2ZUVsZW1lbnQub2Zmc2V0VG9wICsgYWN0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRpY2F0b3JSZWxhdGl2ZU9mZnNldCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xuICAgICAgY2FzZSBBY3RpdmVJbmRpY2F0b3JQb3NpdGlvbi5TVEFSVDpcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICBjYXNlIEFjdGl2ZUluZGljYXRvclBvc2l0aW9uLkNFTlRFUjpcbiAgICAgICAgcmV0dXJuIC01MDtcbiAgICAgIGNhc2UgQWN0aXZlSW5kaWNhdG9yUG9zaXRpb24uRU5EOlxuICAgICAgICByZXR1cm4gLTEwMDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,6 +6,21 @@ import { DropdownDirective } from '@odx/angular/components/dropdown';
|
|
|
6
6
|
import { FormFieldComponent } from '@odx/angular/components/form-field';
|
|
7
7
|
import { injectElement, isFunction, untilDestroyed } from '@odx/angular/utils';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* `AutocompleteControl` is a base directive to enhance an input field with autocomplete functionality,
|
|
11
|
+
* providing keyboard navigation and selection for options displayed in a dropdown. It's designed to be extended
|
|
12
|
+
* for specific implementations.
|
|
13
|
+
* Extends `CustomFormControl` to provide form control behavior and state management.
|
|
14
|
+
*
|
|
15
|
+
* @see {CustomFormControl}
|
|
16
|
+
*
|
|
17
|
+
* This directive manages the open/close state of the dropdown, the loading state indication, and the interaction between
|
|
18
|
+
* the autocomplete input and the dropdown options. It utilizes `ActiveDescendantKeyManager` for keyboard navigation among options.
|
|
19
|
+
*
|
|
20
|
+
* Extend this directive to create a fully functional autocomplete control tailored to your data type and UI requirements.
|
|
21
|
+
*
|
|
22
|
+
* @template T - The type of the items displayed in the autocomplete dropdown.
|
|
23
|
+
*/
|
|
9
24
|
export class AutocompleteControl extends CustomFormControl {
|
|
10
25
|
get dropdownReferenceElement() {
|
|
11
26
|
return this.formField?.controlElement.nativeElement ?? this.element.nativeElement;
|
|
@@ -24,6 +39,18 @@ export class AutocompleteControl extends CustomFormControl {
|
|
|
24
39
|
this.smoothScrollEnabled = false;
|
|
25
40
|
this.element = injectElement();
|
|
26
41
|
this.isLoading = false;
|
|
42
|
+
/**
|
|
43
|
+
* Emits the selected option when an option is selected from the dropdown.
|
|
44
|
+
*
|
|
45
|
+
* @emits {T} - The selected option.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* autocompleteControl.optionSelected.subscribe((selectedOption) => {
|
|
50
|
+
* console.log('Selected option:', selectedOption);
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
27
54
|
this.optionSelected = new EventEmitter();
|
|
28
55
|
detectControllerChanges(this).subscribe();
|
|
29
56
|
}
|
|
@@ -34,6 +61,17 @@ export class AutocompleteControl extends CustomFormControl {
|
|
|
34
61
|
this.handleQueryListOption(this.options);
|
|
35
62
|
this.handleSearchFieldChanges();
|
|
36
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Scrolls the specified option element into view.
|
|
66
|
+
* @param {OptionControl<T>} option - The option control containing the element to scroll into view.
|
|
67
|
+
* @returns {void}
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* const optionControl: OptionControl<string> = { element: myOptionElement };
|
|
72
|
+
* scrollOptionIntoView(optionControl);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
37
75
|
scrollOptionIntoView({ element }) {
|
|
38
76
|
const behavior = this.smoothScrollEnabled ? 'smooth' : undefined;
|
|
39
77
|
if (isFunction(element.nativeElement.scrollIntoView)) {
|
|
@@ -87,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
87
125
|
type: HostListener,
|
|
88
126
|
args: ['focusout', ['$event']]
|
|
89
127
|
}] } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvYXV0b2NvbXBsZXRlLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sc0NBQXNDLENBQUM7QUFFaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBUy9FLE1BQU0sT0FBZ0IsbUJBQXVCLFNBQVEsaUJBQTJCO0lBaUI5RSxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBV0Q7UUFDRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFwQ0ssbUJBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxjQUFTLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0QsdUJBQWtCLEdBQUcsY0FBYyxFQUFFLENBQUM7UUFHL0Msd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBT3RCLFlBQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQztRQWVuQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBTWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUk1Qyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRTFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEVBQUUsT0FBTyxFQUFvQjtRQUN2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2pFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDcEQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBUVMsY0FBYyxDQUFDLE9BQW9DO1FBQzNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVTLGFBQWE7UUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBR1MsY0FBYyxDQUFDLEtBQWlCO1FBQ3hDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7K0dBMUZtQixtQkFBbUI7bUdBQW5CLG1CQUFtQixzRUE2Qm5CLGdCQUFnQixvU0FuQnpCLGlCQUFpQjs7NEZBVlIsbUJBQW1CO2tCQVB4QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0osaUJBQWlCLEVBQUUsUUFBUTt3QkFDM0Isc0JBQXNCLEVBQUUsb0JBQW9CO3FCQUM3QztpQkFDRjswRUFZb0IsUUFBUTtzQkFEMUIsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBb0JyQixTQUFTO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSS9CLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxjQUFjO3NCQURwQixNQUFNO2dCQWtERyxjQUFjO3NCQUR2QixZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMsIFN0cmluZ2lmeUZuIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sLCBJbnB1dENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgT3B0aW9uQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvb3B0aW9uLWNvbnRyb2wnO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIGlzRnVuY3Rpb24sIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLW9wZW5dJzogJ2lzT3BlbicsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQgfHwgbnVsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbnRyb2w8VD4gZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxUIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IG9wdGlvbnM/OiBRdWVyeUxpc3Q8T3B0aW9uQ29udHJvbDxUPj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1GaWVsZCA9IGluamVjdChGb3JtRmllbGRDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIHByb3RlY3RlZCBrZXlNYW5hZ2VyPzogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8T3B0aW9uQ29udHJvbDxUPj47XG4gIHByb3RlY3RlZCBzbW9vdGhTY3JvbGxFbmFibGVkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChEcm9wZG93bkRpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duPzogRHJvcGRvd25EaXJlY3RpdmU7XG5cbiAgcHVibGljIGFic3RyYWN0IHNlYXJjaEZpZWxkPzogSW5wdXRDb250cm9sRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIHB1YmxpYyBnZXQgZHJvcGRvd25SZWZlcmVuY2VFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRmllbGQ/LmNvbnRyb2xFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgPz8gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc09wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vcHRpb25zPy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duPy5pc09wZW47XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdHJpbmdpZnk/OiBTdHJpbmdpZnlGbjxUPjtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKG51bGwpO1xuICAgIGRldGVjdENvbnRyb2xsZXJDaGFuZ2VzKHRoaXMpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucykgcmV0dXJuO1xuXG4gICAgdGhpcy5pbml0S2V5TWFuYWdlcih0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0T3B0aW9uKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2hGaWVsZENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxPcHRpb25JbnRvVmlldyh7IGVsZW1lbnQgfTogT3B0aW9uQ29udHJvbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IGJlaGF2aW9yID0gdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID8gJ3Ntb290aCcgOiB1bmRlZmluZWQ7XG4gICAgaWYgKGlzRnVuY3Rpb24oZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KSkge1xuICAgICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICdjZW50ZXInLCBiZWhhdmlvciB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlUXVlcnlMaXN0T3B0aW9uKG9wdGlvbnM6IFF1ZXJ5TGlzdDxPcHRpb25Db250cm9sPFQ+Pik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGhhbmRsZVNlYXJjaEZpZWxkQ2hhbmdlcygpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3RpdmF0ZVNlbGVjdGVkT3B0aW9uKCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGluaXRLZXlNYW5hZ2VyKG9wdGlvbnM6IFF1ZXJ5TGlzdDxPcHRpb25Db250cm9sPFQ+Pik6IHZvaWQge1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcihvcHRpb25zKS53aXRoSG9tZUFuZEVuZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc2FibGVTbW9vdGhTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW5hYmxlU21vb3RoU2Nyb2xsKCk6IHZvaWQge1xuICAgIHRoaXMuc21vb3RoU2Nyb2xsRW5hYmxlZCA9IHRydWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd24/Lm9wZW4oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd24/LmNsb3NlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcsIFsnJGV2ZW50J10pXG4gIHByb3RlY3RlZCBoYW5kbGVGb2N1c091dChldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cbn1cbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sL3NyYy9saWIvYXV0b2NvbXBsZXRlLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQXlCLE1BQU0sc0NBQXNDLENBQUM7QUFFaEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRS9FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBUUgsTUFBTSxPQUFnQixtQkFBdUIsU0FBUSxpQkFBMkI7SUFpQjlFLElBQVcsd0JBQXdCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3BGLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFR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IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMsIFN0cmluZ2lmeUZuIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEN1c3RvbUZvcm1Db250cm9sLCBJbnB1dENvbnRyb2xEaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgT3B0aW9uQ29udHJvbCB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvb3B0aW9uLWNvbnRyb2wnO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkJztcbmltcG9ydCB7IGluamVjdEVsZW1lbnQsIGlzRnVuY3Rpb24sIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuLyoqXG4gKiBgQXV0b2NvbXBsZXRlQ29udHJvbGAgaXMgYSBiYXNlIGRpcmVjdGl2ZSB0byBlbmhhbmNlIGFuIGlucHV0IGZpZWxkIHdpdGggYXV0b2NvbXBsZXRlIGZ1bmN0aW9uYWxpdHksXG4gKiBwcm92aWRpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbiBhbmQgc2VsZWN0aW9uIGZvciBvcHRpb25zIGRpc3BsYXllZCBpbiBhIGRyb3Bkb3duLiBJdCdzIGRlc2lnbmVkIHRvIGJlIGV4dGVuZGVkXG4gKiBmb3Igc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLlxuICogRXh0ZW5kcyBgQ3VzdG9tRm9ybUNvbnRyb2xgIHRvIHByb3ZpZGUgZm9ybSBjb250cm9sIGJlaGF2aW9yIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LlxuICpcbiAqIEBzZWUge0N1c3RvbUZvcm1Db250cm9sfVxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIG1hbmFnZXMgdGhlIG9wZW4vY2xvc2Ugc3RhdGUgb2YgdGhlIGRyb3Bkb3duLCB0aGUgbG9hZGluZyBzdGF0ZSBpbmRpY2F0aW9uLCBhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW5cbiAqIHRoZSBhdXRvY29tcGxldGUgaW5wdXQgYW5kIHRoZSBkcm9wZG93biBvcHRpb25zLiBJdCB1dGlsaXplcyBgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXJgIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIGFtb25nIG9wdGlvbnMuXG4gKlxuICogRXh0ZW5kIHRoaXMgZGlyZWN0aXZlIHRvIGNyZWF0ZSBhIGZ1bGx5IGZ1bmN0aW9uYWwgYXV0b2NvbXBsZXRlIGNvbnRyb2wgdGFpbG9yZWQgdG8geW91ciBkYXRhIHR5cGUgYW5kIFVJIHJlcXVpcmVtZW50cy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBpdGVtcyBkaXNwbGF5ZWQgaW4gdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93bi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmlzLW9wZW5dJzogJ2lzT3BlbicsXG4gICAgJ1thdHRyLmFyaWEtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQgfHwgbnVsbCcsXG4gIH0sXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbnRyb2w8VD4gZXh0ZW5kcyBDdXN0b21Gb3JtQ29udHJvbDxUIHwgbnVsbD4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IG9wdGlvbnM/OiBRdWVyeUxpc3Q8T3B0aW9uQ29udHJvbDxUPj47XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1GaWVsZCA9IGluamVjdChGb3JtRmllbGRDb21wb25lbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuXG4gIHByb3RlY3RlZCBrZXlNYW5hZ2VyPzogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8T3B0aW9uQ29udHJvbDxUPj47XG4gIHByb3RlY3RlZCBzbW9vdGhTY3JvbGxFbmFibGVkID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZChEcm9wZG93bkRpcmVjdGl2ZSlcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duPzogRHJvcGRvd25EaXJlY3RpdmU7XG5cbiAgcHVibGljIGFic3RyYWN0IHNlYXJjaEZpZWxkPzogSW5wdXRDb250cm9sRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIHB1YmxpYyBnZXQgZHJvcGRvd25SZWZlcmVuY2VFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRmllbGQ/LmNvbnRyb2xFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgPz8gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc09wdGlvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5vcHRpb25zPy5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duPy5pc09wZW47XG4gIH1cblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBBIGZ1bmN0aW9uIHRoYXQgY29udmVydHMgYW4gaXRlbSBvZiB0eXBlIFQgdG8gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAqIFVzZWQgYnkgdGhlIEF1dG9jb21wbGV0ZUNvbnRyb2wgY29tcG9uZW50IHRvIGRpc3BsYXkgdGhlIHNlbGVjdGVkIGl0ZW0uXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmdpZnlGbjxUPn1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogLy8gRGVmaW5lIGEgc3RyaW5naWZ5IGZ1bmN0aW9uIGZvciBhIGN1c3RvbSB0eXBlIFBlcnNvblxuICAgKiBjb25zdCBzdHJpbmdpZnlQZXJzb246IFN0cmluZ2lmeUZuPFBlcnNvbj4gPSAocGVyc29uKSA9PiBgJHtwZXJzb24uZmlyc3ROYW1lfSAke3BlcnNvbi5sYXN0TmFtZX1gO1xuICAgKlxuICAgKiAvLyBBc3NpZ24gdGhlIHN0cmluZ2lmeSBmdW5jdGlvbiB0byB0aGUgQXV0b2NvbXBsZXRlQ29udHJvbFxuICAgKiBhdXRvY29tcGxldGVDb250cm9sLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVBlcnNvbjtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RyaW5naWZ5PzogU3RyaW5naWZ5Rm48VD47XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBvcHRpb24gd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZHJvcGRvd24uXG4gICAqXG4gICAqIEBlbWl0cyB7VH0gLSBUaGUgc2VsZWN0ZWQgb3B0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBhdXRvY29tcGxldGVDb250cm9sLm9wdGlvblNlbGVjdGVkLnN1YnNjcmliZSgoc2VsZWN0ZWRPcHRpb24pID0+IHtcbiAgICogICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgb3B0aW9uOicsIHNlbGVjdGVkT3B0aW9uKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcHRpb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihudWxsKTtcbiAgICBkZXRlY3RDb250cm9sbGVyQ2hhbmdlcyh0aGlzKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMpIHJldHVybjtcblxuICAgIHRoaXMuaW5pdEtleU1hbmFnZXIodGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmhhbmRsZVF1ZXJ5TGlzdE9wdGlvbih0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuaGFuZGxlU2VhcmNoRmllbGRDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyB0aGUgc3BlY2lmaWVkIG9wdGlvbiBlbGVtZW50IGludG8gdmlldy5cbiAgICogQHBhcmFtIHtPcHRpb25Db250cm9sPFQ+fSBvcHRpb24gLSBUaGUgb3B0aW9uIGNvbnRyb2wgY29udGFpbmluZyB0aGUgZWxlbWVudCB0byBzY3JvbGwgaW50byB2aWV3LlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogY29uc3Qgb3B0aW9uQ29udHJvbDogT3B0aW9uQ29udHJvbDxzdHJpbmc+ID0geyBlbGVtZW50OiBteU9wdGlvbkVsZW1lbnQgfTtcbiAgICogc2Nyb2xsT3B0aW9uSW50b1ZpZXcob3B0aW9uQ29udHJvbCk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIHNjcm9sbE9wdGlvbkludG9WaWV3KHsgZWxlbWVudCB9OiBPcHRpb25Db250cm9sPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgYmVoYXZpb3IgPSB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPyAnc21vb3RoJyA6IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNGdW5jdGlvbihlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcpKSB7XG4gICAgICBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBoYW5kbGVRdWVyeUxpc3RPcHRpb24ob3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbnRyb2w8VD4+KTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlU2VhcmNoRmllbGRDaGFuZ2VzKCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgaW5pdEtleU1hbmFnZXIob3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbnRyb2w8VD4+KTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyKG9wdGlvbnMpLndpdGhIb21lQW5kRW5kKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGlzYWJsZVNtb290aFNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNtb290aFNjcm9sbEVuYWJsZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbmFibGVTbW9vdGhTY3JvbGwoKTogdm9pZCB7XG4gICAgdGhpcy5zbW9vdGhTY3JvbGxFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8ub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bj8uY2xvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIl19
|
|
@@ -3,6 +3,9 @@ import { detectControllerChanges } from '@odx/angular';
|
|
|
3
3
|
import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
|
|
4
4
|
import { booleanToAttributeString, injectElement } from '@odx/angular/utils';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* `CheckBoxControl` is a directive that extends `CustomFormControl` to create a custom checkbox control. It integrates seamlessly with Angular forms and provides additional events and bindings for enhanced functionality.
|
|
8
|
+
*/
|
|
6
9
|
export class CheckBoxControl extends CustomFormControl {
|
|
7
10
|
set checked(value) {
|
|
8
11
|
this.value = value;
|
|
@@ -43,4 +46,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
43
46
|
}], checkedChange: [{
|
|
44
47
|
type: Output
|
|
45
48
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtY29udHJvbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY2RrL2NoZWNrYm94LWNvbnRyb2wvc3JjL2xpYi9jaGVja2JveC1jb250cm9sLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRTdFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEsaUJBQTBCO0lBRzdELElBQ1csT0FBTyxDQUFDLEtBQWM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVNELElBQVcsV0FBVztRQUNwQixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7UUFDRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUF0QkMsWUFBTyxHQUFHLGFBQWEsRUFBRSxDQUFDO1FBVTFDLDJEQUEyRDtRQUVwRCxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFHbkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBUWpELHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBWTtRQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLFdBQVcsQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0EvQlUsZUFBZTttR0FBZixlQUFlLDhFQUdOLGdCQUFnQjs7NEZBSHpCLGVBQWU7a0JBSDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakM7MEVBS1ksT0FBTztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFVL0IsWUFBWTtzQkFEbEIsS0FBSzt1QkFBQyxPQUFPO2dCQUlQLGFBQWE7c0JBRG5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXMgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ3VzdG9tRm9ybUNvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2N1c3RvbS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgYm9vbGVhblRvQXR0cmlidXRlU3RyaW5nLCBpbmplY3RFbGVtZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcblxuLyoqXG4gKiBgQ2hlY2tCb3hDb250cm9sYCBpcyBhIGRpcmVjdGl2ZSB0aGF0IGV4dGVuZHMgYEN1c3RvbUZvcm1Db250cm9sYCB0byBjcmVhdGUgYSBjdXN0b20gY2hlY2tib3ggY29udHJvbC4gSXQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IHdpdGggQW5ndWxhciBmb3JtcyBhbmQgcHJvdmlkZXMgYWRkaXRpb25hbCBldmVudHMgYW5kIGJpbmRpbmdzIGZvciBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbb2R4Q2hlY2tCb3hDb250cm9sXScsXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrQm94Q29udHJvbCBleHRlbmRzIEN1c3RvbUZvcm1Db250cm9sPGJvb2xlYW4+IHtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ3ZhbHVlJylcbiAgcHVibGljIGNvbnRyb2xWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjaGVja2VkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyBnZXQgYXJpYUNoZWNrZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYm9vbGVhblRvQXR0cmlidXRlU3RyaW5nKHRoaXMuY2hlY2tlZCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihmYWxzZSk7XG4gICAgZGV0ZWN0Q29udHJvbGxlckNoYW5nZXModGhpcykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHN1cGVyLnVwZGF0ZVZhbHVlKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuY2hlY2tlZCk7XG4gICAgdGhpcy5jaGVja2VkQ2hhbmdlLm5leHQodGhpcy5jaGVja2VkKTtcbiAgfVxufVxuIl19
|
|
@@ -4,10 +4,54 @@ import { deepmerge } from '@odx/angular/internal';
|
|
|
4
4
|
import { ConnectedOverlayComponent } from './connected-overlay.component';
|
|
5
5
|
import { ConnectedOverlayRef, DefaultConnectedOverlayOptions } from './models';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* Service for creating and managing connected overlays. These overlays are UI elements such as popovers, tooltips,
|
|
9
|
+
* or dropdown menus that are positioned relative to a reference element in the DOM. This service leverages the `DynamicViewService`
|
|
10
|
+
* for dynamic component rendering and provides a streamlined API for creating overlays with custom positioning and options.
|
|
11
|
+
*
|
|
12
|
+
* Use the `ConnectedOverlayService` to dynamically create an overlay next to a specific element in your Angular application.
|
|
13
|
+
* This example demonstrates creating a connected overlay next to a button element when the button is clicked.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { Component, ElementRef, ViewChild } from '@angular/core';
|
|
18
|
+
* import { ConnectedOverlayService, ConnectedOverlayOptions } from '@odx/angular/cdk/connected-overlay';
|
|
19
|
+
*
|
|
20
|
+
* @Component({
|
|
21
|
+
* selector: 'app-example',
|
|
22
|
+
* template: `<button #triggerElement>Click me</button>`,
|
|
23
|
+
* })
|
|
24
|
+
* class AppComponent {
|
|
25
|
+
* @ViewChild('triggerElement') triggerElementRef!: ElementRef;
|
|
26
|
+
*
|
|
27
|
+
* constructor(private connectedOverlayService: ConnectedOverlayService) {}
|
|
28
|
+
*
|
|
29
|
+
* showOverlay(): void {
|
|
30
|
+
* const options: Partial<ConnectedOverlayOptions> = {
|
|
31
|
+
* position: 'bottom-start',
|
|
32
|
+
* showArrow: true,
|
|
33
|
+
* content: 'Hello, world!',
|
|
34
|
+
* };
|
|
35
|
+
*
|
|
36
|
+
* this.connectedOverlayService.createOverlay(this.triggerElementRef.nativeElement, options);
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* This service simplifies the process of creating dynamic, positionally aware overlays that enhance the interactivity
|
|
42
|
+
* and visual appeal of Angular applications.
|
|
43
|
+
*/
|
|
7
44
|
export class ConnectedOverlayService {
|
|
8
45
|
constructor() {
|
|
9
46
|
this.dynamicViewService = inject(DynamicViewService);
|
|
10
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a connected overlay.
|
|
50
|
+
* @param referenceElement - The reference element to which the overlay will be connected.
|
|
51
|
+
* @param options - Optional configuration for the connected overlay.
|
|
52
|
+
* @param renderingOptions - Optional rendering options for the connected overlay.
|
|
53
|
+
* @returns {ConnectedOverlayRef} The created Connected Overlay reference instance.
|
|
54
|
+
*/
|
|
11
55
|
createOverlay(referenceElement, options, renderingOptions) {
|
|
12
56
|
const dynamicViewRef = this.dynamicViewService.createView(ConnectedOverlayComponent, {
|
|
13
57
|
...renderingOptions,
|
|
@@ -22,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
22
66
|
type: Injectable,
|
|
23
67
|
args: [{ providedIn: 'root' }]
|
|
24
68
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGVkLW92ZXJsYXkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jZGsvY29ubmVjdGVkLW92ZXJsYXkvc3JjL2xpYi9jb25uZWN0ZWQtb3ZlcmxheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBK0Isa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUEyQixtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFeEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFEcEM7UUFFbUIsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7S0FxQmxFO0lBbkJDOzs7Ozs7T0FNRztJQUNJLGFBQWEsQ0FDbEIsZ0JBQWdDLEVBQ2hDLE9BQTBDLEVBQzFDLGdCQUF1RDtRQUV2RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFO1lBQ25GLEdBQUcsZ0JBQWdCO1lBQ25CLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsOEJBQThCLEVBQUUsT0FBTyxDQUE0QixFQUFFLGdCQUFnQixFQUFFO1NBQ3RILENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQXJCVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQURWLE1BQU07OzRGQUNuQix1QkFBdUI7a0JBRG5DLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWaXJ0dWFsRWxlbWVudCB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgRHluYW1pY1ZpZXdSZW5kZXJpbmdPcHRpb25zLCBEeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vY29ubmVjdGVkLW92ZXJsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IENvbm5lY3RlZE92ZXJsYXlPcHRpb25zLCBDb25uZWN0ZWRPdmVybGF5UmVmLCBEZWZhdWx0Q29ubmVjdGVkT3ZlcmxheU9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgY3JlYXRpbmcgYW5kIG1hbmFnaW5nIGNvbm5lY3RlZCBvdmVybGF5cy4gVGhlc2Ugb3ZlcmxheXMgYXJlIFVJIGVsZW1lbnRzIHN1Y2ggYXMgcG9wb3ZlcnMsIHRvb2x0aXBzLFxuICogb3IgZHJvcGRvd24gbWVudXMgdGhhdCBhcmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byBhIHJlZmVyZW5jZSBlbGVtZW50IGluIHRoZSBET00uIFRoaXMgc2VydmljZSBsZXZlcmFnZXMgdGhlIGBEeW5hbWljVmlld1NlcnZpY2VgXG4gKiBmb3IgZHluYW1pYyBjb21wb25lbnQgcmVuZGVyaW5nIGFuZCBwcm92aWRlcyBhIHN0cmVhbWxpbmVkIEFQSSBmb3IgY3JlYXRpbmcgb3ZlcmxheXMgd2l0aCBjdXN0b20gcG9zaXRpb25pbmcgYW5kIG9wdGlvbnMuXG4gKlxuICogVXNlIHRoZSBgQ29ubmVjdGVkT3ZlcmxheVNlcnZpY2VgIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZSBhbiBvdmVybGF5IG5leHQgdG8gYSBzcGVjaWZpYyBlbGVtZW50IGluIHlvdXIgQW5ndWxhciBhcHBsaWNhdGlvbi5cbiAqIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgY3JlYXRpbmcgYSBjb25uZWN0ZWQgb3ZlcmxheSBuZXh0IHRvIGEgYnV0dG9uIGVsZW1lbnQgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuICogaW1wb3J0IHsgQ29ubmVjdGVkT3ZlcmxheVNlcnZpY2UsIENvbm5lY3RlZE92ZXJsYXlPcHRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9jb25uZWN0ZWQtb3ZlcmxheSc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICogICB0ZW1wbGF0ZTogYDxidXR0b24gI3RyaWdnZXJFbGVtZW50PkNsaWNrIG1lPC9idXR0b24+YCxcbiAqIH0pXG4gKiBjbGFzcyBBcHBDb21wb25lbnQge1xuICogICBAVmlld0NoaWxkKCd0cmlnZ2VyRWxlbWVudCcpIHRyaWdnZXJFbGVtZW50UmVmITogRWxlbWVudFJlZjtcbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGVkT3ZlcmxheVNlcnZpY2U6IENvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlKSB7fVxuICpcbiAqICAgc2hvd092ZXJsYXkoKTogdm9pZCB7XG4gKiAgICAgY29uc3Qgb3B0aW9uczogUGFydGlhbDxDb25uZWN0ZWRPdmVybGF5T3B0aW9ucz4gPSB7XG4gKiAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1zdGFydCcsXG4gKiAgICAgICBzaG93QXJyb3c6IHRydWUsXG4gKiAgICAgICBjb250ZW50OiAnSGVsbG8sIHdvcmxkIScsXG4gKiAgICAgfTtcbiAqXG4gKiAgICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5U2VydmljZS5jcmVhdGVPdmVybGF5KHRoaXMudHJpZ2dlckVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoaXMgc2VydmljZSBzaW1wbGlmaWVzIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGR5bmFtaWMsIHBvc2l0aW9uYWxseSBhd2FyZSBvdmVybGF5cyB0aGF0IGVuaGFuY2UgdGhlIGludGVyYWN0aXZpdHlcbiAqIGFuZCB2aXN1YWwgYXBwZWFsIG9mIEFuZ3VsYXIgYXBwbGljYXRpb25zLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljVmlld1NlcnZpY2UgPSBpbmplY3QoRHluYW1pY1ZpZXdTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvbm5lY3RlZCBvdmVybGF5LlxuICAgKiBAcGFyYW0gcmVmZXJlbmNlRWxlbWVudCAtIFRoZSByZWZlcmVuY2UgZWxlbWVudCB0byB3aGljaCB0aGUgb3ZlcmxheSB3aWxsIGJlIGNvbm5lY3RlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgY29ubmVjdGVkIG92ZXJsYXkuXG4gICAqIEBwYXJhbSByZW5kZXJpbmdPcHRpb25zIC0gT3B0aW9uYWwgcmVuZGVyaW5nIG9wdGlvbnMgZm9yIHRoZSBjb25uZWN0ZWQgb3ZlcmxheS5cbiAgICogQHJldHVybnMge0Nvbm5lY3RlZE92ZXJsYXlSZWZ9IFRoZSBjcmVhdGVkIENvbm5lY3RlZCBPdmVybGF5IHJlZmVyZW5jZSBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVPdmVybGF5KFxuICAgIHJlZmVyZW5jZUVsZW1lbnQ6IFZpcnR1YWxFbGVtZW50LFxuICAgIG9wdGlvbnM/OiBQYXJ0aWFsPENvbm5lY3RlZE92ZXJsYXlPcHRpb25zPixcbiAgICByZW5kZXJpbmdPcHRpb25zPzogUGFydGlhbDxEeW5hbWljVmlld1JlbmRlcmluZ09wdGlvbnM+LFxuICApOiBDb25uZWN0ZWRPdmVybGF5UmVmIHtcbiAgICBjb25zdCBkeW5hbWljVmlld1JlZiA9IHRoaXMuZHluYW1pY1ZpZXdTZXJ2aWNlLmNyZWF0ZVZpZXcoQ29ubmVjdGVkT3ZlcmxheUNvbXBvbmVudCwge1xuICAgICAgLi4ucmVuZGVyaW5nT3B0aW9ucyxcbiAgICAgIGNvbnRleHQ6IHsgb3B0aW9uczogZGVlcG1lcmdlKERlZmF1bHRDb25uZWN0ZWRPdmVybGF5T3B0aW9ucywgb3B0aW9ucykgYXMgQ29ubmVjdGVkT3ZlcmxheU9wdGlvbnMsIHJlZmVyZW5jZUVsZW1lbnQgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgQ29ubmVjdGVkT3ZlcmxheVJlZihkeW5hbWljVmlld1JlZik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { arrow, computePosition, flip, hide, shift, size, offset as withOffset } from '@floating-ui/dom';
|
|
2
2
|
import { applyStyles, cssTranslate, getOppositeSide, getSide, px } from '@odx/angular/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Computes the position of an overlay element relative to a reference element.
|
|
5
|
+
*
|
|
6
|
+
* @param referenceElement - The reference element to position the overlay relative to.
|
|
7
|
+
* @param overlayElement - The overlay element to be positioned.
|
|
8
|
+
* @param contentElement - The content element within the overlay.
|
|
9
|
+
* @param arrowElement - The arrow element within the overlay.
|
|
10
|
+
* @param options - The options for positioning the overlay.
|
|
11
|
+
* @returns A promise that resolves to the computed position of the overlay.
|
|
12
|
+
*/
|
|
3
13
|
export async function computeOverlayPosition(referenceElement, overlayElement, contentElement, arrowElement, options) {
|
|
4
14
|
const { position, offset, outerPadding, matchReferenceWidth, enableFallback, fallbackAxisSideDirection, strategy, minHeight } = options;
|
|
5
15
|
const arrowSize = options.showArrow ? arrowElement.offsetWidth : 0;
|
|
@@ -51,4 +61,4 @@ export async function computeOverlayPosition(referenceElement, overlayElement, c
|
|
|
51
61
|
return result;
|
|
52
62
|
});
|
|
53
63
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS1vdmVybGF5LXBvc2l0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2Nkay9jb25uZWN0ZWQtb3ZlcmxheS9zcmMvbGliL2hlbHBlcnMvY29tcHV0ZS1vdmVybGF5LXBvc2l0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxJQUFJLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHN0Y7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsZ0JBQWdDLEVBQ2hDLGNBQTJCLEVBQzNCLGNBQTJCLEVBQzNCLFlBQXlCLEVBQ3pCLE9BQWdDO0lBRWhDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN4SSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRyxNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVuRixPQUFPLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUU7UUFDdkQsUUFBUTtRQUNSLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFVBQVUsRUFBRTtZQUNWLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDaEQsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1lBQ2hDLEdBQUcsY0FBYztZQUNqQixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLEtBQUssRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO29CQUNwRCxNQUFNLGNBQWMsR0FBRyw2QkFBNkIsQ0FBQztvQkFDckQsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLGFBQWEsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDdEYsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLFlBQVksRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDcEYsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUgsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxjQUFjLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxSCxDQUFDO2FBQ0YsQ0FBQztZQUNGLEdBQUcsZUFBZTtZQUNsQixJQUFJLEVBQUU7U0FDUDtLQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNqQixXQUFXLENBQUMsY0FBYyxFQUFFO1lBQzFCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFLEdBQUc7WUFDVCxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRCxDQUFDLENBQUM7UUFDSCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDdkIsY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7U0FDckc7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3BELFdBQVcsQ0FBQyxZQUFZLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUMvQixDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUNoRDtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVQb3NpdGlvblJldHVybiwgVmlydHVhbEVsZW1lbnQsIGFycm93LCBjb21wdXRlUG9zaXRpb24sIGZsaXAsIGhpZGUsIHNoaWZ0LCBzaXplLCBvZmZzZXQgYXMgd2l0aE9mZnNldCB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgYXBwbHlTdHlsZXMsIGNzc1RyYW5zbGF0ZSwgZ2V0T3Bwb3NpdGVTaWRlLCBnZXRTaWRlLCBweCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5T3B0aW9ucyB9IGZyb20gJy4uL21vZGVscyc7XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHBvc2l0aW9uIG9mIGFuIG92ZXJsYXkgZWxlbWVudCByZWxhdGl2ZSB0byBhIHJlZmVyZW5jZSBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSByZWZlcmVuY2VFbGVtZW50IC0gVGhlIHJlZmVyZW5jZSBlbGVtZW50IHRvIHBvc2l0aW9uIHRoZSBvdmVybGF5IHJlbGF0aXZlIHRvLlxuICogQHBhcmFtIG92ZXJsYXlFbGVtZW50IC0gVGhlIG92ZXJsYXkgZWxlbWVudCB0byBiZSBwb3NpdGlvbmVkLlxuICogQHBhcmFtIGNvbnRlbnRFbGVtZW50IC0gVGhlIGNvbnRlbnQgZWxlbWVudCB3aXRoaW4gdGhlIG92ZXJsYXkuXG4gKiBAcGFyYW0gYXJyb3dFbGVtZW50IC0gVGhlIGFycm93IGVsZW1lbnQgd2l0aGluIHRoZSBvdmVybGF5LlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcG9zaXRpb25pbmcgdGhlIG92ZXJsYXkuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY29tcHV0ZWQgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21wdXRlT3ZlcmxheVBvc2l0aW9uKFxuICByZWZlcmVuY2VFbGVtZW50OiBWaXJ0dWFsRWxlbWVudCxcbiAgb3ZlcmxheUVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBjb250ZW50RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGFycm93RWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIG9wdGlvbnM6IENvbm5lY3RlZE92ZXJsYXlPcHRpb25zLFxuKTogUHJvbWlzZTxDb21wdXRlUG9zaXRpb25SZXR1cm4+IHtcbiAgY29uc3QgeyBwb3NpdGlvbiwgb2Zmc2V0LCBvdXRlclBhZGRpbmcsIG1hdGNoUmVmZXJlbmNlV2lkdGgsIGVuYWJsZUZhbGxiYWNrLCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBzdHJhdGVneSwgbWluSGVpZ2h0IH0gPSBvcHRpb25zO1xuICBjb25zdCBhcnJvd1NpemUgPSBvcHRpb25zLnNob3dBcnJvdyA/IGFycm93RWxlbWVudC5vZmZzZXRXaWR0aCA6IDA7XG4gIGNvbnN0IGFycm93TWlkZGxld2FyZSA9IG9wdGlvbnMuc2hvd0Fycm93ID8gW2Fycm93KHsgZWxlbWVudDogYXJyb3dFbGVtZW50LCBwYWRkaW5nOiA4IH0pXSA6IFtdO1xuICBjb25zdCBmbGlwTWlkZGxlV2FyZSA9IGVuYWJsZUZhbGxiYWNrID8gW2ZsaXAoeyBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIH0pXSA6IFtdO1xuXG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudCwgb3ZlcmxheUVsZW1lbnQsIHtcbiAgICBzdHJhdGVneSxcbiAgICBwbGFjZW1lbnQ6IHBvc2l0aW9uLFxuICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgIHdpdGhPZmZzZXQoTWF0aC5tYXgob2Zmc2V0LCBhcnJvd1NpemUgKyBvZmZzZXQpKSxcbiAgICAgIHNoaWZ0KHsgcGFkZGluZzogb3V0ZXJQYWRkaW5nIH0pLFxuICAgICAgLi4uZmxpcE1pZGRsZVdhcmUsXG4gICAgICBzaXplKHtcbiAgICAgICAgcGFkZGluZzogb3V0ZXJQYWRkaW5nLFxuICAgICAgICBhcHBseTogKHsgYXZhaWxhYmxlSGVpZ2h0LCBhdmFpbGFibGVXaWR0aCwgcmVjdHMgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlUHJlZml4ID0gJy0tb2R4LWNkay1jb25uZWN0ZWQtb3ZlcmxheSc7XG4gICAgICAgICAgY29udGVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYCR7dmFyaWFibGVQcmVmaXh9LW1heC1oZWlnaHRgLCBweChhdmFpbGFibGVIZWlnaHQpKTtcbiAgICAgICAgICBjb250ZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgJHt2YXJpYWJsZVByZWZpeH0tbWF4LXdpZHRoYCwgcHgoYXZhaWxhYmxlV2lkdGgpKTtcbiAgICAgICAgICBjb250ZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgJHt2YXJpYWJsZVByZWZpeH0tbWluLWhlaWdodGAsIG1pbkhlaWdodCA/IHB4KE1hdGgubWluKGF2YWlsYWJsZUhlaWdodCwgbWluSGVpZ2h0KSkgOiBudWxsKTtcbiAgICAgICAgICBjb250ZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShgJHt2YXJpYWJsZVByZWZpeH0tbWluLXdpZHRoYCwgbWF0Y2hSZWZlcmVuY2VXaWR0aCA/IHB4KHJlY3RzLnJlZmVyZW5jZS53aWR0aCkgOiBudWxsKTtcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uYXJyb3dNaWRkbGV3YXJlLFxuICAgICAgaGlkZSgpLFxuICAgIF0sXG4gIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgIGFwcGx5U3R5bGVzKG92ZXJsYXlFbGVtZW50LCB7XG4gICAgICB0b3A6ICcwJyxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRyYW5zZm9ybTogY3NzVHJhbnNsYXRlKHB4KHJlc3VsdC54KSwgcHgocmVzdWx0LnkpKSxcbiAgICB9KTtcbiAgICBpZiAob3B0aW9ucy5oaWRkZW5DbGFzcykge1xuICAgICAgb3ZlcmxheUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShvcHRpb25zLmhpZGRlbkNsYXNzLCAhIXJlc3VsdC5taWRkbGV3YXJlRGF0YS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4pO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zaG93QXJyb3cpIHtcbiAgICAgIGNvbnN0IG92ZXJsYXlTaWRlID0gZ2V0U2lkZShyZXN1bHQucGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFycm93U2lkZSA9IGdldE9wcG9zaXRlU2lkZShyZXN1bHQucGxhY2VtZW50KTtcbiAgICAgIGFwcGx5U3R5bGVzKGFycm93RWxlbWVudCwge1xuICAgICAgICBkaXNwbGF5OiBudWxsLFxuICAgICAgICB0b3A6IHB4KHJlc3VsdC5taWRkbGV3YXJlRGF0YS5hcnJvdz8ueSksXG4gICAgICAgIGxlZnQ6IHB4KHJlc3VsdC5taWRkbGV3YXJlRGF0YS5hcnJvdz8ueCksXG4gICAgICAgIFthcnJvd1NpZGVdOiBweCgtYXJyb3dTaXplIC8gMiksXG4gICAgICAgIFtvdmVybGF5U2lkZV06IG51bGwsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwbHlTdHlsZXMoYXJyb3dFbGVtZW50LCB7IGRpc3BsYXk6ICdub25lJyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cbiJdfQ==
|