@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
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if the specified property or properties have changed in the current change detection cycle.
|
|
3
|
+
* Optionally ignores changes that occur during the first change detection cycle (e.g., initialization).
|
|
4
|
+
*
|
|
5
|
+
* @template U - The component or directive class.
|
|
6
|
+
* @template T - The type representing the changes, typically `NgChanges<U>`.
|
|
7
|
+
* @template K - The key or keys representing the properties to check for changes.
|
|
8
|
+
* @param {T} changes - The `NgChanges` object containing information about all changes.
|
|
9
|
+
* @param {K | K[]} keyOrKeys - The property name(s) to check for changes.
|
|
10
|
+
* @param {boolean} [ignoreFirstChange=true] - Whether to ignore changes that occur during the first change detection cycle.
|
|
11
|
+
* @returns {boolean} `true` if the specified property or properties have changed, otherwise `false`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Example usage within an Angular component's `ngOnChanges` method
|
|
16
|
+
* ngOnChanges(changes: NgChanges<MyComponent>): void {
|
|
17
|
+
* if (hasChanged(changes, 'name')) {
|
|
18
|
+
* console.log('Name has changed');
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* // Checking multiple properties for changes
|
|
23
|
+
* ngOnChanges(changes: NgChanges<MyComponent>): void {
|
|
24
|
+
* if (hasChanged(changes, ['name', 'age'], false)) {
|
|
25
|
+
* console.log('Name or age has changed (including first change)');
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
1
30
|
export function hasChanged(changes, keyOrKeys, ignoreFirstChange = true) {
|
|
2
31
|
if (Array.isArray(keyOrKeys)) {
|
|
3
32
|
for (const key of keyOrKeys) {
|
|
@@ -11,4 +40,4 @@ export function hasChanged(changes, keyOrKeys, ignoreFirstChange = true) {
|
|
|
11
40
|
return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys]?.isFirstChange());
|
|
12
41
|
}
|
|
13
42
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci91dGlscy9zcmMvbGliL2hlbHBlcnMvbmctY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixPQUFVLEVBQ1YsU0FBa0IsRUFDbEIsaUJBQWlCLEdBQUcsSUFBSTtJQUV4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDNUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUU7WUFDM0IsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU07UUFDTCxPQUFPLFNBQVMsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7S0FDN0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2V0UHJvcGVydGllcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdHlwZWQgdmVyc2lvbiBvZiBBbmd1bGFyJ3MgYFNpbXBsZUNoYW5nZXNgIG9iamVjdCwgZGVzY3JpYmluZyB0aGUgY2hhbmdlcyB0byBlYWNoXG4gKiBwcm9wZXJ0eSBvZiBhIGNvbXBvbmVudCBvciBkaXJlY3RpdmUuIFRoaXMgdXRpbGl0eSBlbmhhbmNlcyB0eXBlIHNhZmV0eSB3aGVuIHdvcmtpbmcgd2l0aCBBbmd1bGFyJ3NcbiAqIGNoYW5nZSBkZXRlY3Rpb24gbWVjaGFuaXNtIGJ5IHByb3ZpZGluZyBzcGVjaWZpYyBwcm9wZXJ0eSB0eXBlcy5cbiAqXG4gKiBAdGVtcGxhdGUgQyAtIFRoZSBjb21wb25lbnQgb3IgZGlyZWN0aXZlIGNsYXNzLlxuICogQHRlbXBsYXRlIFByb3BlcnRpZXMgLSBUaGUgcHJvcGVydGllcyBvZiB0aGUgY29tcG9uZW50IG9yIGRpcmVjdGl2ZSwgaW5mZXJyZWQgZnJvbSBgQ2AgYnkgZGVmYXVsdC5cbiAqIEB0eXBlIHtPYmplY3R9IC0gQSBtYXBwaW5nIGZyb20gcHJvcGVydHkgbmFtZXMgdG8gY2hhbmdlIGluZm9ybWF0aW9uIGZvciBlYWNoIHByb3BlcnR5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW50ZXJmYWNlIE15Q29tcG9uZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBhZ2U6IG51bWJlcjtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8TXlDb21wb25lbnQ+KSB7XG4gKiAgIGlmIChjaGFuZ2VzLm5hbWUpIHtcbiAqICAgICBjb25zb2xlLmxvZygnTmFtZSBjaGFuZ2VkIGZyb20nLCBjaGFuZ2VzLm5hbWUucHJldmlvdXNWYWx1ZSwgJ3RvJywgY2hhbmdlcy5uYW1lLmN1cnJlbnRWYWx1ZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBOZ0NoYW5nZXM8QywgUHJvcGVydGllcyA9IEdldFByb3BlcnRpZXM8Qz4+ID0ge1xuICBbS2V5IGluIGtleW9mIFByb3BlcnRpZXNdOiB7XG4gICAgcHJldmlvdXNWYWx1ZTogUHJvcGVydGllc1tLZXldO1xuICAgIGN1cnJlbnRWYWx1ZTogUHJvcGVydGllc1tLZXldO1xuICAgIGZpcnN0Q2hhbmdlOiBib29sZWFuO1xuICAgIGlzRmlyc3RDaGFuZ2UoKTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgb3IgcHJvcGVydGllcyBoYXZlIGNoYW5nZWQgaW4gdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAqIE9wdGlvbmFsbHkgaWdub3JlcyBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIHRoZSBmaXJzdCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlIChlLmcuLCBpbml0aWFsaXphdGlvbikuXG4gKlxuICogQHRlbXBsYXRlIFUgLSBUaGUgY29tcG9uZW50IG9yIGRpcmVjdGl2ZSBjbGFzcy5cbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgcmVwcmVzZW50aW5nIHRoZSBjaGFuZ2VzLCB0eXBpY2FsbHkgYE5nQ2hhbmdlczxVPmAuXG4gKiBAdGVtcGxhdGUgSyAtIFRoZSBrZXkgb3Iga2V5cyByZXByZXNlbnRpbmcgdGhlIHByb3BlcnRpZXMgdG8gY2hlY2sgZm9yIGNoYW5nZXMuXG4gKiBAcGFyYW0ge1R9IGNoYW5nZXMgLSBUaGUgYE5nQ2hhbmdlc2Agb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGNoYW5nZXMuXG4gKiBAcGFyYW0ge0sgfCBLW119IGtleU9yS2V5cyAtIFRoZSBwcm9wZXJ0eSBuYW1lKHMpIHRvIGNoZWNrIGZvciBjaGFuZ2VzLlxuICogQHBhcmFtIHtib29sZWFufSBbaWdub3JlRmlyc3RDaGFuZ2U9dHJ1ZV0gLSBXaGV0aGVyIHRvIGlnbm9yZSBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIHRoZSBmaXJzdCBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IG9yIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIEV4YW1wbGUgdXNhZ2Ugd2l0aGluIGFuIEFuZ3VsYXIgY29tcG9uZW50J3MgYG5nT25DaGFuZ2VzYCBtZXRob2RcbiAqIG5nT25DaGFuZ2VzKGNoYW5nZXM6IE5nQ2hhbmdlczxNeUNvbXBvbmVudD4pOiB2b2lkIHtcbiAqICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ25hbWUnKSkge1xuICogICAgIGNvbnNvbGUubG9nKCdOYW1lIGhhcyBjaGFuZ2VkJyk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyBDaGVja2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGZvciBjaGFuZ2VzXG4gKiBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBOZ0NoYW5nZXM8TXlDb21wb25lbnQ+KTogdm9pZCB7XG4gKiAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnbmFtZScsICdhZ2UnXSwgZmFsc2UpKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ05hbWUgb3IgYWdlIGhhcyBjaGFuZ2VkIChpbmNsdWRpbmcgZmlyc3QgY2hhbmdlKScpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NoYW5nZWQ8VSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBUIGV4dGVuZHMgTmdDaGFuZ2VzPFU+LCBLIGV4dGVuZHMga2V5b2YgVD4oXG4gIGNoYW5nZXM6IFQsXG4gIGtleU9yS2V5czogSyB8IEtbXSxcbiAgaWdub3JlRmlyc3RDaGFuZ2UgPSB0cnVlLFxuKTogYm9vbGVhbiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlPcktleXMpIHtcbiAgICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIGtleSwgaWdub3JlRmlyc3RDaGFuZ2UpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGtleU9yS2V5cyBpbiBjaGFuZ2VzICYmICghaWdub3JlRmlyc3RDaGFuZ2UgfHwgIWNoYW5nZXNba2V5T3JLZXlzXT8uaXNGaXJzdENoYW5nZSgpKTtcbiAgfVxufVxuIl19
|
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
import { inject, InjectionToken } from '@angular/core';
|
|
2
2
|
import { deepmerge } from '@odx/angular/internal';
|
|
3
|
+
/**
|
|
4
|
+
* Provides a configuration object or a factory for creating the configuration object, optionally applying a transformation function.
|
|
5
|
+
* This utility simplifies the process of defining and injecting configuration objects throughout an Angular application.
|
|
6
|
+
*
|
|
7
|
+
* @template T - The type of the configuration object.
|
|
8
|
+
* @template D - The dependencies required by the configuration factory, if any.
|
|
9
|
+
* @param {InjectionToken<T> | string} token - The injection token or string token associated with the configuration.
|
|
10
|
+
* @param {ConfigProvider<T, D>} config - The configuration object or a factory provider that produces the configuration.
|
|
11
|
+
* @param {ConfigTransformFn<T>} [transform=() => ({}))] - An optional transformation function to apply to the configuration object.
|
|
12
|
+
* @returns {FactoryProvider | ValueProvider} - An Angular provider object for the given configuration.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* // Define a simple configuration object
|
|
17
|
+
* const appConfig = { apiEndpoint: 'https://api.example.com' };
|
|
18
|
+
*
|
|
19
|
+
* // Provide the configuration with an optional transformation function
|
|
20
|
+
* provideConfig(appConfigToken, appConfig, (config) => ({
|
|
21
|
+
* ...config,
|
|
22
|
+
* apiEndpoint: `${config.apiEndpoint}/v2`,
|
|
23
|
+
* }));
|
|
24
|
+
*
|
|
25
|
+
* // Using a factory provider for dynamic configuration
|
|
26
|
+
* provideConfig(appConfigToken, {
|
|
27
|
+
* useFactory: (envService) => ({ apiEndpoint: envService.getApiEndpoint() }),
|
|
28
|
+
* deps: [EnvironmentService],
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
3
32
|
export function provideConfig(token, config, transform = () => ({})) {
|
|
4
33
|
const prepareConfig = (value) => deepmerge(value, transform(value));
|
|
5
34
|
if ('useFactory' in config) {
|
|
@@ -20,6 +49,33 @@ function mergeConfig(token, defaultValue) {
|
|
|
20
49
|
const parentConfig = inject(token, { skipSelf: true, optional: true }) ?? {};
|
|
21
50
|
return deepmerge(defaultValue, parentConfig, config);
|
|
22
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Generates a set of configuration-related tokens and utility functions for managing configuration in an Angular application.
|
|
54
|
+
* This function creates a standardized way to define, provide, and inject configurations, including defaults and transformations.
|
|
55
|
+
*
|
|
56
|
+
* @template T - The type of the configuration object.
|
|
57
|
+
* @template N - The name of the configuration, used to generate token names and utility functions.
|
|
58
|
+
* @param {N} name - The name of the configuration.
|
|
59
|
+
* @param {string} prefix - A prefix for the injection token to ensure uniqueness across the application.
|
|
60
|
+
* @param {T} defaultValue - The default value for the configuration.
|
|
61
|
+
* @param {ConfigTransformFn<T>} [transform] - An optional transformation function to be applied to the configuration.
|
|
62
|
+
* @returns An object containing the generated injection token, default configuration, and utility functions for the configuration.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* // Create configuration tokens and utilities for "appConfig" with a default value and optional transform function
|
|
67
|
+
* const { appConfigConfig, provideAppConfigConfig } = createConfigTokens('appConfig', 'myPrefix', { debug: false }, (config) => ({
|
|
68
|
+
* ...config,
|
|
69
|
+
* debug: true, // Enable debug mode by default
|
|
70
|
+
* }));
|
|
71
|
+
*
|
|
72
|
+
* // Later, in a module or component, provide the customized configuration
|
|
73
|
+
* @NgModule({
|
|
74
|
+
* providers: [provideAppConfigConfig({ apiEndpoint: 'https://api.example.com' })]
|
|
75
|
+
* })
|
|
76
|
+
* class AppModule {}
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
23
79
|
export function createConfigTokens(name, prefix, defaultValue, transform) {
|
|
24
80
|
const configName = `${name}Config`;
|
|
25
81
|
const defaultConfigName = `${name}DefaultConfig`;
|
|
@@ -34,4 +90,4 @@ export function createConfigTokens(name, prefix, defaultValue, transform) {
|
|
|
34
90
|
[provideConfigName]: ((config) => provideConfig(token, config, transform)),
|
|
35
91
|
};
|
|
36
92
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWWxELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWlDLEVBQ2pDLE1BQTRCLEVBQzVCLFlBQWtDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUU7UUFDMUIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsOERBQThEO1lBQzlELFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFJLElBQVksQ0FBQyxDQUFDO1lBQ3RGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNsQixDQUFDO0tBQ0g7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFJLEtBQWlDLEVBQUUsWUFBZTtJQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTdFLE9BQU8sU0FBUyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFNLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBc0IsSUFBTyxFQUFFLE1BQWMsRUFBRSxZQUFlLEVBQUUsU0FBZ0M7SUFJaEksTUFBTSxVQUFVLEdBQUcsR0FBRyxJQUFJLFFBQWlCLENBQUM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLElBQUksZUFBd0IsQ0FBQztJQUMxRCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsSUFBSSxRQUFpQixDQUFDO0lBQ3hELE1BQU0saUJBQWlCLEdBQUcsVUFBVSxJQUFJLFFBQWlCLENBQUM7SUFDMUQsTUFBTSxTQUFTLEdBQUcsR0FBRyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxjQUFjLENBQWEsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUU3RyxPQUFPO1FBQ0wsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLO1FBQ25CLENBQUMsaUJBQWlCLENBQUMsRUFBRSxZQUFZO1FBQ2pDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztRQUMxRCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQXFCO0tBSTVDLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvcnlQcm92aWRlciwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgVHlwZSwgVmFsdWVQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG5pbnRlcmZhY2UgQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXM+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgdXNlRmFjdG9yeTogKC4uLmFyZ3M6IHsgW0kgaW4ga2V5b2YgRF06IERbSV0gZXh0ZW5kcyBUeXBlPHVua25vd24+ID8gSW5zdGFuY2VUeXBlPERbSV0+IDogRFtJXSBleHRlbmRzIEluamVjdGlvblRva2VuPHVua25vd24+ID8gYW55IDogbmV2ZXIgfSkgPT4gVDtcbiAgZGVwcz86IFsuLi5EXTtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnRGVwZW5kZW5jaWVzPFQgPSB1bmtub3duPiA9IFJlYWRvbmx5QXJyYXk8VHlwZTxUPiB8IEluamVjdGlvblRva2VuPFQ+PjtcbmV4cG9ydCB0eXBlIENvbmZpZ1Byb3ZpZGVyPFQgPSB1bmtub3duLCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gW10+ID0gQ29uZmlnRmFjdG9yeVByb3ZpZGVyPFQsIEQ+IHwgVDtcbmV4cG9ydCB0eXBlIENvbmZpZ1RyYW5zZm9ybUZuPFQgPSB1bmtub3duPiA9IChjb25maWc6IFBhcnRpYWw8VD4pID0+IFBhcnRpYWw8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QsIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBDb25maWdEZXBlbmRlbmNpZXM+KFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4gfCBzdHJpbmcsXG4gIGNvbmZpZzogQ29uZmlnUHJvdmlkZXI8VCwgRD4sXG4gIHRyYW5zZm9ybTogQ29uZmlnVHJhbnNmb3JtRm48VD4gPSAoKSA9PiAoe30pLFxuKTogRmFjdG9yeVByb3ZpZGVyIHwgVmFsdWVQcm92aWRlciB7XG4gIGNvbnN0IHByZXBhcmVDb25maWcgPSAodmFsdWU6IFBhcnRpYWw8VD4pID0+IGRlZXBtZXJnZSh2YWx1ZSwgdHJhbnNmb3JtKHZhbHVlKSk7XG4gIGlmICgndXNlRmFjdG9yeScgaW4gY29uZmlnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3ZpZGU6IHRva2VuLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHVzZUZhY3Rvcnk6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHByZXBhcmVDb25maWcoY29uZmlnLnVzZUZhY3RvcnkoLi4uKGFyZ3MgYXMgYW55KSkpLFxuICAgICAgZGVwczogY29uZmlnLmRlcHMsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogdG9rZW4sXG4gICAgdXNlRmFjdG9yeTogKCkgPT4gcHJlcGFyZUNvbmZpZyhjb25maWcpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUNvbmZpZzxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48UGFydGlhbDxUPj4sIGRlZmF1bHRWYWx1ZTogVCk6IFBhcnRpYWw8VD4ge1xuICBjb25zdCBjb25maWcgPSBpbmplY3QodG9rZW4pO1xuICBjb25zdCBwYXJlbnRDb25maWcgPSBpbmplY3QodG9rZW4sIHsgc2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gIHJldHVybiBkZWVwbWVyZ2UoZGVmYXVsdFZhbHVlLCBwYXJlbnRDb25maWcsIGNvbmZpZykgYXMgVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCB0cmFuc2Zvcm0/OiBDb25maWdUcmFuc2Zvcm1GbjxUPikge1xuICB0eXBlIENvbmZpZ1Byb3ZpZGVyRm4gPSA8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcyA9IENvbmZpZ0RlcGVuZGVuY2llczxQYXJ0aWFsPFQ+Pj4oXG4gICAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFQ+LCBEPixcbiAgKSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuICBjb25zdCBjb25maWdOYW1lID0gYCR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCBkZWZhdWx0Q29uZmlnTmFtZSA9IGAke25hbWV9RGVmYXVsdENvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGluamVjdENvbmZpZ05hbWUgPSBgaW5qZWN0JHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdOYW1lID0gYHByb3ZpZGUke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgdG9rZW5OYW1lID0gYCR7cHJlZml4fTo6JHtjb25maWdOYW1lfWA7XG4gIGNvbnN0IHRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+KHRva2VuTmFtZSwgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRWYWx1ZSB9KTtcblxuICByZXR1cm4ge1xuICAgIFtjb25maWdOYW1lXTogdG9rZW4sXG4gICAgW2RlZmF1bHRDb25maWdOYW1lXTogZGVmYXVsdFZhbHVlLFxuICAgIFtpbmplY3RDb25maWdOYW1lXTogKCkgPT4gbWVyZ2VDb25maWcodG9rZW4sIGRlZmF1bHRWYWx1ZSksXG4gICAgW3Byb3ZpZGVDb25maWdOYW1lXTogKChjb25maWcpID0+IHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZywgdHJhbnNmb3JtKSkgYXMgQ29uZmlnUHJvdmlkZXJGbixcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3Byb3ZpZGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsTUFBTSxFQUFFLGNBQWMsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBWWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBaUMsRUFDakMsTUFBNEIsRUFDNUIsWUFBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFNUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksWUFBWSxJQUFJLE1BQU0sRUFBRTtRQUMxQixPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUs7WUFDZCw4REFBOEQ7WUFDOUQsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUksSUFBWSxDQUFDLENBQUM7WUFDdEYsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO0tBQ3hDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUksS0FBaUMsRUFBRSxZQUFlO0lBQ3hFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFN0UsT0FBTyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLENBQU0sQ0FBQztBQUM1RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFzQixJQUFPLEVBQUUsTUFBYyxFQUFFLFlBQWUsRUFBRSxTQUFnQztJQUloSSxNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksUUFBaUIsQ0FBQztJQUM1QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsSUFBSSxlQUF3QixDQUFDO0lBQzFELE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxJQUFJLFFBQWlCLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLElBQUksUUFBaUIsQ0FBQztJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBYSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBRTdHLE9BQU87UUFDTCxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUs7UUFDbkIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFlBQVk7UUFDakMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1FBQzFELENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBcUI7S0FJNUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyLCBpbmplY3QsIEluamVjdGlvblRva2VuLCBUeXBlLCBWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5cbmludGVyZmFjZSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcz4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICB1c2VGYWN0b3J5OiAoLi4uYXJnczogeyBbSSBpbiBrZXlvZiBEXTogRFtJXSBleHRlbmRzIFR5cGU8dW5rbm93bj4gPyBJbnN0YW5jZVR5cGU8RFtJXT4gOiBEW0ldIGV4dGVuZHMgSW5qZWN0aW9uVG9rZW48dW5rbm93bj4gPyBhbnkgOiBuZXZlciB9KSA9PiBUO1xuICBkZXBzPzogWy4uLkRdO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWdEZXBlbmRlbmNpZXM8VCA9IHVua25vd24+ID0gUmVhZG9ubHlBcnJheTxUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4+O1xuZXhwb3J0IHR5cGUgQ29uZmlnUHJvdmlkZXI8VCA9IHVua25vd24sIEQgZXh0ZW5kcyBDb25maWdEZXBlbmRlbmNpZXMgPSBbXT4gPSBDb25maWdGYWN0b3J5UHJvdmlkZXI8VCwgRD4gfCBUO1xuZXhwb3J0IHR5cGUgQ29uZmlnVHJhbnNmb3JtRm48VCA9IHVua25vd24+ID0gKGNvbmZpZzogUGFydGlhbDxUPikgPT4gUGFydGlhbDxUPjtcblxuLyoqXG4gKiBQcm92aWRlcyBhIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG9yIGEgZmFjdG9yeSBmb3IgY3JlYXRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBvcHRpb25hbGx5IGFwcGx5aW5nIGEgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24uXG4gKiBUaGlzIHV0aWxpdHkgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBkZWZpbmluZyBhbmQgaW5qZWN0aW5nIGNvbmZpZ3VyYXRpb24gb2JqZWN0cyB0aHJvdWdob3V0IGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBAdGVtcGxhdGUgRCAtIFRoZSBkZXBlbmRlbmNpZXMgcmVxdWlyZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24gZmFjdG9yeSwgaWYgYW55LlxuICogQHBhcmFtIHtJbmplY3Rpb25Ub2tlbjxUPiB8IHN0cmluZ30gdG9rZW4gLSBUaGUgaW5qZWN0aW9uIHRva2VuIG9yIHN0cmluZyB0b2tlbiBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge0NvbmZpZ1Byb3ZpZGVyPFQsIEQ+fSBjb25maWcgLSBUaGUgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSBmYWN0b3J5IHByb3ZpZGVyIHRoYXQgcHJvZHVjZXMgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge0NvbmZpZ1RyYW5zZm9ybUZuPFQ+fSBbdHJhbnNmb3JtPSgpID0+ICh7fSkpXSAtIEFuIG9wdGlvbmFsIHRyYW5zZm9ybWF0aW9uIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBjb25maWd1cmF0aW9uIG9iamVjdC5cbiAqIEByZXR1cm5zIHtGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyfSAtIEFuIEFuZ3VsYXIgcHJvdmlkZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIERlZmluZSBhIHNpbXBsZSBjb25maWd1cmF0aW9uIG9iamVjdFxuICogY29uc3QgYXBwQ29uZmlnID0geyBhcGlFbmRwb2ludDogJ2h0dHBzOi8vYXBpLmV4YW1wbGUuY29tJyB9O1xuICpcbiAqIC8vIFByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gd2l0aCBhbiBvcHRpb25hbCB0cmFuc2Zvcm1hdGlvbiBmdW5jdGlvblxuICogcHJvdmlkZUNvbmZpZyhhcHBDb25maWdUb2tlbiwgYXBwQ29uZmlnLCAoY29uZmlnKSA9PiAoe1xuICogICAuLi5jb25maWcsXG4gKiAgIGFwaUVuZHBvaW50OiBgJHtjb25maWcuYXBpRW5kcG9pbnR9L3YyYCxcbiAqIH0pKTtcbiAqXG4gKiAvLyBVc2luZyBhIGZhY3RvcnkgcHJvdmlkZXIgZm9yIGR5bmFtaWMgY29uZmlndXJhdGlvblxuICogcHJvdmlkZUNvbmZpZyhhcHBDb25maWdUb2tlbiwge1xuICogICB1c2VGYWN0b3J5OiAoZW52U2VydmljZSkgPT4gKHsgYXBpRW5kcG9pbnQ6IGVudlNlcnZpY2UuZ2V0QXBpRW5kcG9pbnQoKSB9KSxcbiAqICAgZGVwczogW0Vudmlyb25tZW50U2VydmljZV0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0LCBEIGV4dGVuZHMgQ29uZmlnRGVwZW5kZW5jaWVzID0gQ29uZmlnRGVwZW5kZW5jaWVzPihcbiAgdG9rZW46IEluamVjdGlvblRva2VuPFQ+IHwgc3RyaW5nLFxuICBjb25maWc6IENvbmZpZ1Byb3ZpZGVyPFQsIEQ+LFxuICB0cmFuc2Zvcm06IENvbmZpZ1RyYW5zZm9ybUZuPFQ+ID0gKCkgPT4gKHt9KSxcbik6IEZhY3RvcnlQcm92aWRlciB8IFZhbHVlUHJvdmlkZXIge1xuICBjb25zdCBwcmVwYXJlQ29uZmlnID0gKHZhbHVlOiBQYXJ0aWFsPFQ+KSA9PiBkZWVwbWVyZ2UodmFsdWUsIHRyYW5zZm9ybSh2YWx1ZSkpO1xuICBpZiAoJ3VzZUZhY3RvcnknIGluIGNvbmZpZykge1xuICAgIHJldHVybiB7XG4gICAgICBwcm92aWRlOiB0b2tlbixcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICB1c2VGYWN0b3J5OiAoLi4uYXJnczogdW5rbm93bltdKSA9PiBwcmVwYXJlQ29uZmlnKGNvbmZpZy51c2VGYWN0b3J5KC4uLihhcmdzIGFzIGFueSkpKSxcbiAgICAgIGRlcHM6IGNvbmZpZy5kZXBzLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IHRva2VuLFxuICAgIHVzZUZhY3Rvcnk6ICgpID0+IHByZXBhcmVDb25maWcoY29uZmlnKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWc8VD4odG9rZW46IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+LCBkZWZhdWx0VmFsdWU6IFQpOiBQYXJ0aWFsPFQ+IHtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KHRva2VuKTtcbiAgY29uc3QgcGFyZW50Q29uZmlnID0gaW5qZWN0KHRva2VuLCB7IHNraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KSA/PyB7fTtcblxuICByZXR1cm4gZGVlcG1lcmdlKGRlZmF1bHRWYWx1ZSwgcGFyZW50Q29uZmlnLCBjb25maWcpIGFzIFQ7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2V0IG9mIGNvbmZpZ3VyYXRpb24tcmVsYXRlZCB0b2tlbnMgYW5kIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBtYW5hZ2luZyBjb25maWd1cmF0aW9uIGluIGFuIEFuZ3VsYXIgYXBwbGljYXRpb24uXG4gKiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvIGRlZmluZSwgcHJvdmlkZSwgYW5kIGluamVjdCBjb25maWd1cmF0aW9ucywgaW5jbHVkaW5nIGRlZmF1bHRzIGFuZCB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gKiBAdGVtcGxhdGUgTiAtIFRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLCB1c2VkIHRvIGdlbmVyYXRlIHRva2VuIG5hbWVzIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSB7Tn0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCAtIEEgcHJlZml4IGZvciB0aGUgaW5qZWN0aW9uIHRva2VuIHRvIGVuc3VyZSB1bmlxdWVuZXNzIGFjcm9zcyB0aGUgYXBwbGljYXRpb24uXG4gKiBAcGFyYW0ge1R9IGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7Q29uZmlnVHJhbnNmb3JtRm48VD59IFt0cmFuc2Zvcm1dIC0gQW4gb3B0aW9uYWwgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb24gdG8gYmUgYXBwbGllZCB0byB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgaW5qZWN0aW9uIHRva2VuLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBDcmVhdGUgY29uZmlndXJhdGlvbiB0b2tlbnMgYW5kIHV0aWxpdGllcyBmb3IgXCJhcHBDb25maWdcIiB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBhbmQgb3B0aW9uYWwgdHJhbnNmb3JtIGZ1bmN0aW9uXG4gKiBjb25zdCB7IGFwcENvbmZpZ0NvbmZpZywgcHJvdmlkZUFwcENvbmZpZ0NvbmZpZyB9ID0gY3JlYXRlQ29uZmlnVG9rZW5zKCdhcHBDb25maWcnLCAnbXlQcmVmaXgnLCB7IGRlYnVnOiBmYWxzZSB9LCAoY29uZmlnKSA9PiAoe1xuICogICAuLi5jb25maWcsXG4gKiAgIGRlYnVnOiB0cnVlLCAvLyBFbmFibGUgZGVidWcgbW9kZSBieSBkZWZhdWx0XG4gKiB9KSk7XG4gKlxuICogLy8gTGF0ZXIsIGluIGEgbW9kdWxlIG9yIGNvbXBvbmVudCwgcHJvdmlkZSB0aGUgY3VzdG9taXplZCBjb25maWd1cmF0aW9uXG4gKiBATmdNb2R1bGUoe1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlQXBwQ29uZmlnQ29uZmlnKHsgYXBpRW5kcG9pbnQ6ICdodHRwczovL2FwaS5leGFtcGxlLmNvbScgfSldXG4gKiB9KVxuICogY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Rva2VuczxULCBOIGV4dGVuZHMgc3RyaW5nPihuYW1lOiBOLCBwcmVmaXg6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBULCB0cmFuc2Zvcm0/OiBDb25maWdUcmFuc2Zvcm1GbjxUPikge1xuICB0eXBlIENvbmZpZ1Byb3ZpZGVyRm4gPSA8RCBleHRlbmRzIENvbmZpZ0RlcGVuZGVuY2llcyA9IENvbmZpZ0RlcGVuZGVuY2llczxQYXJ0aWFsPFQ+Pj4oXG4gICAgY29uZmlnOiBDb25maWdQcm92aWRlcjxQYXJ0aWFsPFQ+LCBEPixcbiAgKSA9PiBGYWN0b3J5UHJvdmlkZXIgfCBWYWx1ZVByb3ZpZGVyO1xuICBjb25zdCBjb25maWdOYW1lID0gYCR7bmFtZX1Db25maWdgIGFzIGNvbnN0O1xuICBjb25zdCBkZWZhdWx0Q29uZmlnTmFtZSA9IGAke25hbWV9RGVmYXVsdENvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IGluamVjdENvbmZpZ05hbWUgPSBgaW5qZWN0JHtuYW1lfUNvbmZpZ2AgYXMgY29uc3Q7XG4gIGNvbnN0IHByb3ZpZGVDb25maWdOYW1lID0gYHByb3ZpZGUke25hbWV9Q29uZmlnYCBhcyBjb25zdDtcbiAgY29uc3QgdG9rZW5OYW1lID0gYCR7cHJlZml4fTo6JHtjb25maWdOYW1lfWA7XG4gIGNvbnN0IHRva2VuID0gbmV3IEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+KHRva2VuTmFtZSwgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRWYWx1ZSB9KTtcblxuICByZXR1cm4ge1xuICAgIFtjb25maWdOYW1lXTogdG9rZW4sXG4gICAgW2RlZmF1bHRDb25maWdOYW1lXTogZGVmYXVsdFZhbHVlLFxuICAgIFtpbmplY3RDb25maWdOYW1lXTogKCkgPT4gbWVyZ2VDb25maWcodG9rZW4sIGRlZmF1bHRWYWx1ZSksXG4gICAgW3Byb3ZpZGVDb25maWdOYW1lXTogKChjb25maWcpID0+IHByb3ZpZGVDb25maWcodG9rZW4sIGNvbmZpZywgdHJhbnNmb3JtKSkgYXMgQ29uZmlnUHJvdmlkZXJGbixcbiAgfSBhcyBSZWNvcmQ8dHlwZW9mIGNvbmZpZ05hbWUsIEluamVjdGlvblRva2VuPFBhcnRpYWw8VD4+PiAmXG4gICAgUmVjb3JkPHR5cGVvZiBkZWZhdWx0Q29uZmlnTmFtZSwgVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgaW5qZWN0Q29uZmlnTmFtZSwgKCkgPT4gVD4gJlxuICAgIFJlY29yZDx0eXBlb2YgcHJvdmlkZUNvbmZpZ05hbWUsIENvbmZpZ1Byb3ZpZGVyRm4+O1xufVxuIl19
|
|
@@ -4,6 +4,13 @@ import { isNumber, isString } from './type-guards';
|
|
|
4
4
|
function isQueueItemId(value) {
|
|
5
5
|
return isString(value) || isNumber(value);
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* A class representing a queue structure with advanced functionalities including adding, removing,
|
|
9
|
+
* updating items, and observing changes through RxJS observables. It supports generic queue item types,
|
|
10
|
+
* allowing for flexible usage across different contexts.
|
|
11
|
+
*
|
|
12
|
+
* @template T - The type of items stored in the queue. Each item must extend an object containing a unique `id`.
|
|
13
|
+
*/
|
|
7
14
|
export class Queue {
|
|
8
15
|
constructor() {
|
|
9
16
|
this.queue = new Map();
|
|
@@ -11,29 +18,82 @@ export class Queue {
|
|
|
11
18
|
this.values = [];
|
|
12
19
|
this.firstItem = null;
|
|
13
20
|
this.lastItem = null;
|
|
21
|
+
/**
|
|
22
|
+
* An observable that emits when an item is added to the queue.
|
|
23
|
+
* @type {Observable<T>}
|
|
24
|
+
*/
|
|
14
25
|
this.onAdd$ = this.createEventObserver('add');
|
|
26
|
+
/**
|
|
27
|
+
* An observable that emits when an item in the queue is updated.
|
|
28
|
+
* @type {Observable<T>}
|
|
29
|
+
*/
|
|
15
30
|
this.onUpdate$ = this.createEventObserver('update');
|
|
31
|
+
/**
|
|
32
|
+
* An observable that emits when an item is removed from the queue.
|
|
33
|
+
* @type {Observable<T>}
|
|
34
|
+
*/
|
|
16
35
|
this.onRemove$ = this.createEventObserver('remove');
|
|
36
|
+
/**
|
|
37
|
+
* An observable representing the current state of the queue as an array of items.
|
|
38
|
+
* @type {Observable<QueueItem<T>[]>}
|
|
39
|
+
*/
|
|
17
40
|
this.value$ = this.events$$.pipe(startWith(() => void 0), map(() => this.values), shareReplay({ bufferSize: 1, refCount: true }));
|
|
41
|
+
/**
|
|
42
|
+
* An observable that emits the current size of the queue.
|
|
43
|
+
* @type {Observable<number>}
|
|
44
|
+
*/
|
|
18
45
|
this.size$ = this.value$.pipe(map(() => this.size), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
19
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets the size of the queue.
|
|
49
|
+
* @returns The number of elements in the queue.
|
|
50
|
+
*/
|
|
20
51
|
get size() {
|
|
21
52
|
return this.queue.size;
|
|
22
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Checks if the specified item is the first item in the queue.
|
|
56
|
+
* @param {QueueItem<T>} item - The item to check.
|
|
57
|
+
* @returns {boolean} - Returns `true` if the item is the first item in the queue, `false` otherwise.
|
|
58
|
+
*/
|
|
23
59
|
isFirst({ id }) {
|
|
24
60
|
return this.firstItem?.id === id;
|
|
25
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Checks if the specified item is the last item in the queue.
|
|
64
|
+
* @param {QueueItem<T>} item - The item to check.
|
|
65
|
+
* @returns {boolean} - Returns true if the item is the last item, otherwise returns false.
|
|
66
|
+
*/
|
|
26
67
|
isLast({ id }) {
|
|
27
68
|
return this.lastItem?.id === id;
|
|
28
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Retrieves a queue item from the queue based on the provided item or item ID.
|
|
72
|
+
* @param itemOrId - The queue item or item ID to retrieve.
|
|
73
|
+
* @returns The queue item if found, or `null` if not found.
|
|
74
|
+
*/
|
|
29
75
|
get(itemOrId) {
|
|
30
76
|
const id = isQueueItemId(itemOrId) ? itemOrId.toString() : itemOrId.id.toString();
|
|
31
77
|
return this.queue.get(id) ?? null;
|
|
32
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Adds an item to the queue, optionally emitting an event.
|
|
81
|
+
*
|
|
82
|
+
* @param {QueueItem<T>} item - The item to add.
|
|
83
|
+
* @param {boolean} [emitEvent=true] - Whether to emit an event for this action.
|
|
84
|
+
* @returns {QueueItem<T>} The item added to the queue.
|
|
85
|
+
*/
|
|
33
86
|
add(item, emitEvent = true) {
|
|
34
87
|
this.remove(item, false);
|
|
35
88
|
return this.addMany([item], emitEvent)[0];
|
|
36
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* Adds multiple items to the queue.
|
|
92
|
+
*
|
|
93
|
+
* @param items - An array of items to be added to the queue.
|
|
94
|
+
* @param emitEvent - (Optional) A boolean indicating whether to emit an event after adding the items. Default is true.
|
|
95
|
+
* @returns An array of added items.
|
|
96
|
+
*/
|
|
37
97
|
addMany(items, emitEvent = true) {
|
|
38
98
|
const addedItems = [];
|
|
39
99
|
const updatedItems = [];
|
|
@@ -54,9 +114,22 @@ export class Queue {
|
|
|
54
114
|
}
|
|
55
115
|
return items;
|
|
56
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Removes an item from the queue.
|
|
119
|
+
*
|
|
120
|
+
* @param itemOrId - The item or ID of the item to be removed.
|
|
121
|
+
* @param emitEvent - Whether to emit an event after removing the item. Default is `true`.
|
|
122
|
+
* @returns The removed item, or `null` if the item was not found.
|
|
123
|
+
*/
|
|
57
124
|
remove(itemOrId, emitEvent = true) {
|
|
58
125
|
return this.removeMany([itemOrId], emitEvent)[0];
|
|
59
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Removes multiple items from the queue based on the provided item or item IDs.
|
|
129
|
+
* @param itemOrIds - An array of QueueItem or QueueItemId objects representing the items to be removed.
|
|
130
|
+
* @param emitEvent - A boolean indicating whether to emit an event after removing the items. Default is true.
|
|
131
|
+
* @returns An array of removed QueueItem objects or null values.
|
|
132
|
+
*/
|
|
60
133
|
removeMany(itemOrIds, emitEvent = true) {
|
|
61
134
|
const items = itemOrIds.map((itemOrId) => this.get(itemOrId)).filter(Boolean);
|
|
62
135
|
const removedItems = [];
|
|
@@ -69,11 +142,21 @@ export class Queue {
|
|
|
69
142
|
this.notify({ type: 'remove', items: removedItems }, emitEvent);
|
|
70
143
|
return items;
|
|
71
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Clears the queue by removing all items.
|
|
147
|
+
*
|
|
148
|
+
* @param emitEvent - Whether to emit an event after clearing the queue. Default is true.
|
|
149
|
+
*/
|
|
72
150
|
clear(emitEvent = true) {
|
|
73
151
|
const items = this.toArray();
|
|
74
152
|
this.queue.clear();
|
|
75
153
|
this.notify({ type: 'remove', items }, emitEvent);
|
|
76
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Returns an array representation of the queue.
|
|
157
|
+
*
|
|
158
|
+
* @returns An array containing all the items in the queue.
|
|
159
|
+
*/
|
|
77
160
|
toArray() {
|
|
78
161
|
return this.values;
|
|
79
162
|
}
|
|
@@ -89,4 +172,4 @@ export class Queue {
|
|
|
89
172
|
return this.events$$.pipe(filter((event) => event.type === type), map(({ items }) => items), concatAll(), share());
|
|
90
173
|
}
|
|
91
174
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPbkQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sT0FBTyxLQUFLO0lBQWxCO1FBQ21CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFDakQsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFFN0IsV0FBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxjQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLGNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdkIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFD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QUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDNUQsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFvQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQ3RDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN6QixTQUFTLEVBQUUsRUFDWCxLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0QWxsLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzU3RyaW5nIH0gZnJvbSAnLi90eXBlLWd1YXJkcyc7XG5cbnR5cGUgUXVldWVJdGVtSWQgPSBzdHJpbmcgfCBudW1iZXI7XG50eXBlIFF1ZXVlSXRlbTxUPiA9IFQgJiB7IGlkOiBRdWV1ZUl0ZW1JZCB9O1xudHlwZSBRdWV1ZUV2ZW50VHlwZSA9ICdyZW1vdmUnIHwgJ2FkZCcgfCAndXBkYXRlJztcbnR5cGUgUXVldWVFdmVudDxUPiA9IHsgaXRlbXM6IFF1ZXVlSXRlbTxUPltdOyB0eXBlOiBRdWV1ZUV2ZW50VHlwZSB9O1xuXG5mdW5jdGlvbiBpc1F1ZXVlSXRlbUlkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUXVldWVJdGVtSWQge1xuICByZXR1cm4gaXNTdHJpbmcodmFsdWUpIHx8IGlzTnVtYmVyKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXVlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWV1ZSA9IG5ldyBNYXA8c3RyaW5nLCBRdWV1ZUl0ZW08VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJCQgPSBuZXcgU3ViamVjdDxRdWV1ZUV2ZW50PFQ+PigpO1xuICBwcml2YXRlIHZhbHVlczogUXVldWVJdGVtPFQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBmaXJzdEl0ZW06IFF1ZXVlSXRlbTxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RJdGVtOiBRdWV1ZUl0ZW08VD4gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25BZGQkID0gdGhpcy5jcmVhdGVFdmVudE9ic2VydmVyKCdhZGQnKTtcbiAgcHVibGljIHJlYWRvbmx5IG9uVXBkYXRlJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcigndXBkYXRlJyk7XG4gIHB1YmxpYyByZWFkb25seSBvblJlbW92ZSQgPSB0aGlzLmNyZWF0ZUV2ZW50T2JzZXJ2ZXIoJ3JlbW92ZScpO1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5ldmVudHMkJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgoKSA9PiB2b2lkIDApLFxuICAgIG1hcCgoKSA9PiB0aGlzLnZhbHVlcyksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpemUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBtYXAoKCkgPT4gdGhpcy5zaXplKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgcHVibGljIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0ZpcnN0KHsgaWQgfTogUXVldWVJdGVtPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlyc3RJdGVtPy5pZCA9PT0gaWQ7XG4gIH1cblxuICBwdWJsaWMgaXNMYXN0KHsgaWQgfTogUXVldWVJdGVtPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdEl0ZW0/LmlkID09PSBpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoaXRlbU9ySWQ6IFF1ZXVlSXRlbTxUPiB8IFF1ZXVlSXRlbUlkKTogUXVldWVJdGVtPFQ+IHwgbnVsbCB7XG4gICAgY29uc3QgaWQgPSBpc1F1ZXVlSXRlbUlkKGl0ZW1PcklkKSA/IGl0ZW1PcklkLnRvU3RyaW5nKCkgOiBpdGVtT3JJZC5pZC50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ2V0KGlkKSA/PyBudWxsO1xuICB9XG5cbiAgcHVibGljIGFkZChpdGVtOiBRdWV1ZUl0ZW08VD4sIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4ge1xuICAgIHRoaXMucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1hbnkoW2l0ZW1dLCBlbWl0RXZlbnQpWzBdO1xuICB9XG5cbiAgcHVibGljIGFkZE1hbnkoaXRlbXM6IEFycmF5PFF1ZXVlSXRlbTxUPj4sIGVtaXRFdmVudCA9IHRydWUpOiBBcnJheTxRdWV1ZUl0ZW08VD4+IHtcbiAgICBjb25zdCBhZGRlZEl0ZW1zID0gW107XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaXRlbSkpIHtcbiAgICAgICAgYWRkZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlLnNldChpdGVtLmlkLnRvU3RyaW5nKCksIGl0ZW0pO1xuICAgIH1cbiAgICBpZiAoYWRkZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ2FkZCcsIGl0ZW1zOiBhZGRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICd1cGRhdGUnLCBpdGVtczogdXBkYXRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShpdGVtT3JJZDogUXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQsIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVNYW55KFtpdGVtT3JJZF0sIGVtaXRFdmVudClbMF07XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlTWFueShpdGVtT3JJZHM6IEFycmF5PFF1ZXVlSXRlbTxUPiB8IFF1ZXVlSXRlbUlkPiwgZW1pdEV2ZW50ID0gdHJ1ZSk6IEFycmF5PFF1ZXVlSXRlbTxUPiB8IG51bGw+IHtcbiAgICBjb25zdCBpdGVtcyA9IGl0ZW1Pcklkcy5tYXAoKGl0ZW1PcklkKSA9PiB0aGlzLmdldChpdGVtT3JJZCkpLmZpbHRlcihCb29sZWFuKSBhcyBRdWV1ZUl0ZW08VD5bXTtcbiAgICBjb25zdCByZW1vdmVkSXRlbXMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGl0ZW1SZW1vdmVkID0gdGhpcy5xdWV1ZS5kZWxldGUoaXRlbS5pZC50b1N0cmluZygpKTtcbiAgICAgIGlmICghaXRlbVJlbW92ZWQpIGNvbnRpbnVlO1xuICAgICAgcmVtb3ZlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ3JlbW92ZScsIGl0ZW1zOiByZW1vdmVkSXRlbXMgfSwgZW1pdEV2ZW50KTtcblxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRvQXJyYXkoKTtcbiAgICB0aGlzLnF1ZXVlLmNsZWFyKCk7XG4gICAgdGhpcy5ub3RpZnkoeyB0eXBlOiAncmVtb3ZlJywgaXRlbXMgfSwgZW1pdEV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB0b0FycmF5KCk6IFF1ZXVlSXRlbTxUPltdIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeShldmVudDogUXVldWVFdmVudDxUPiwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXVlLCAoW18sIGl0ZW1dKSA9PiBpdGVtKS5yZXZlcnNlKCk7XG4gICAgdGhpcy5maXJzdEl0ZW0gPSB0aGlzLnZhbHVlc1swXSA/PyBudWxsO1xuICAgIHRoaXMubGFzdEl0ZW0gPSB0aGlzLnZhbHVlc1t0aGlzLnZhbHVlcy5sZW5ndGggLSAxXSA/PyBudWxsO1xuICAgIGlmICghZW1pdEV2ZW50KSByZXR1cm47XG4gICAgdGhpcy5ldmVudHMkJC5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnRPYnNlcnZlcih0eXBlOiBRdWV1ZUV2ZW50VHlwZSk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50cyQkLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC50eXBlID09PSB0eXBlKSxcbiAgICAgIG1hcCgoeyBpdGVtcyB9KSA9PiBpdGVtcyksXG4gICAgICBjb25jYXRBbGwoKSxcbiAgICAgIHNoYXJlKCksXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3F1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPbkQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBQWxCO1FBQ21CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztRQUN4QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFDakQsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUF3QixJQUFJLENBQUM7UUFDdEMsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFFN0M7OztXQUdHO1FBQ2EsV0FBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RDs7O1dBR0c7UUFDYSxjQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9EOzs7V0FHRztRQUNhLGNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0Q7OztXQUdHO1FBQ2EsV0FBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxTQUFTLENB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O0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQW9CLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkIsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUN0QyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFDekIsU0FBUyxFQUFFLEVBQ1gsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbmNhdEFsbCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzaGFyZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc1N0cmluZyB9IGZyb20gJy4vdHlwZS1ndWFyZHMnO1xuXG50eXBlIFF1ZXVlSXRlbUlkID0gc3RyaW5nIHwgbnVtYmVyO1xudHlwZSBRdWV1ZUl0ZW08VD4gPSBUICYgeyBpZDogUXVldWVJdGVtSWQgfTtcbnR5cGUgUXVldWVFdmVudFR5cGUgPSAncmVtb3ZlJyB8ICdhZGQnIHwgJ3VwZGF0ZSc7XG50eXBlIFF1ZXVlRXZlbnQ8VD4gPSB7IGl0ZW1zOiBRdWV1ZUl0ZW08VD5bXTsgdHlwZTogUXVldWVFdmVudFR5cGUgfTtcblxuZnVuY3Rpb24gaXNRdWV1ZUl0ZW1JZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFF1ZXVlSXRlbUlkIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSB8fCBpc051bWJlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogQSBjbGFzcyByZXByZXNlbnRpbmcgYSBxdWV1ZSBzdHJ1Y3R1cmUgd2l0aCBhZHZhbmNlZCBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkaW5nIGFkZGluZywgcmVtb3ZpbmcsXG4gKiB1cGRhdGluZyBpdGVtcywgYW5kIG9ic2VydmluZyBjaGFuZ2VzIHRocm91Z2ggUnhKUyBvYnNlcnZhYmxlcy4gSXQgc3VwcG9ydHMgZ2VuZXJpYyBxdWV1ZSBpdGVtIHR5cGVzLFxuICogYWxsb3dpbmcgZm9yIGZsZXhpYmxlIHVzYWdlIGFjcm9zcyBkaWZmZXJlbnQgY29udGV4dHMuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiBpdGVtcyBzdG9yZWQgaW4gdGhlIHF1ZXVlLiBFYWNoIGl0ZW0gbXVzdCBleHRlbmQgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYSB1bmlxdWUgYGlkYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXVlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBxdWV1ZSA9IG5ldyBNYXA8c3RyaW5nLCBRdWV1ZUl0ZW08VD4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRzJCQgPSBuZXcgU3ViamVjdDxRdWV1ZUV2ZW50PFQ+PigpO1xuICBwcml2YXRlIHZhbHVlczogUXVldWVJdGVtPFQ+W10gPSBbXTtcbiAgcHJpdmF0ZSBmaXJzdEl0ZW06IFF1ZXVlSXRlbTxUPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGxhc3RJdGVtOiBRdWV1ZUl0ZW08VD4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUgcXVldWUuXG4gICAqIEB0eXBlIHtPYnNlcnZhYmxlPFQ+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uQWRkJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcignYWRkJyk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGl0ZW0gaW4gdGhlIHF1ZXVlIGlzIHVwZGF0ZWQuXG4gICAqIEB0eXBlIHtPYnNlcnZhYmxlPFQ+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG9uVXBkYXRlJCA9IHRoaXMuY3JlYXRlRXZlbnRPYnNlcnZlcigndXBkYXRlJyk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZS5cbiAgICogQHR5cGUge09ic2VydmFibGU8VD59XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZW1vdmUkID0gdGhpcy5jcmVhdGVFdmVudE9ic2VydmVyKCdyZW1vdmUnKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHF1ZXVlIGFzIGFuIGFycmF5IG9mIGl0ZW1zLlxuICAgKiBAdHlwZSB7T2JzZXJ2YWJsZTxRdWV1ZUl0ZW08VD5bXT59XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWUkID0gdGhpcy5ldmVudHMkJC5waXBlKFxuICAgIHN0YXJ0V2l0aCgoKSA9PiB2b2lkIDApLFxuICAgIG1hcCgoKSA9PiB0aGlzLnZhbHVlcyksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICAvKipcbiAgICogQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHF1ZXVlLlxuICAgKiBAdHlwZSB7T2JzZXJ2YWJsZTxudW1iZXI+fVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpemUkID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBtYXAoKCkgPT4gdGhpcy5zaXplKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpemUgb2YgdGhlIHF1ZXVlLlxuICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLnNpemU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgaXRlbSBpcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7UXVldWVJdGVtPFQ+fSBpdGVtIC0gVGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgYHRydWVgIGlmIHRoZSBpdGVtIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBxdWV1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgaXNGaXJzdCh7IGlkIH06IFF1ZXVlSXRlbTxUPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpcnN0SXRlbT8uaWQgPT09IGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIGl0ZW0gaXMgdGhlIGxhc3QgaXRlbSBpbiB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSB7UXVldWVJdGVtPFQ+fSBpdGVtIC0gVGhlIGl0ZW0gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgaXRlbSBpcyB0aGUgbGFzdCBpdGVtLCBvdGhlcndpc2UgcmV0dXJucyBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBpc0xhc3QoeyBpZCB9OiBRdWV1ZUl0ZW08VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sYXN0SXRlbT8uaWQgPT09IGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIHF1ZXVlIGl0ZW0gZnJvbSB0aGUgcXVldWUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGl0ZW0gb3IgaXRlbSBJRC5cbiAgICogQHBhcmFtIGl0ZW1PcklkIC0gVGhlIHF1ZXVlIGl0ZW0gb3IgaXRlbSBJRCB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMgVGhlIHF1ZXVlIGl0ZW0gaWYgZm91bmQsIG9yIGBudWxsYCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0KGl0ZW1PcklkOiBRdWV1ZUl0ZW08VD4gfCBRdWV1ZUl0ZW1JZCk6IFF1ZXVlSXRlbTxUPiB8IG51bGwge1xuICAgIGNvbnN0IGlkID0gaXNRdWV1ZUl0ZW1JZChpdGVtT3JJZCkgPyBpdGVtT3JJZC50b1N0cmluZygpIDogaXRlbU9ySWQuaWQudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdldChpZCkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGl0ZW0gdG8gdGhlIHF1ZXVlLCBvcHRpb25hbGx5IGVtaXR0aW5nIGFuIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1F1ZXVlSXRlbTxUPn0gaXRlbSAtIFRoZSBpdGVtIHRvIGFkZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbZW1pdEV2ZW50PXRydWVdIC0gV2hldGhlciB0byBlbWl0IGFuIGV2ZW50IGZvciB0aGlzIGFjdGlvbi5cbiAgICogQHJldHVybnMge1F1ZXVlSXRlbTxUPn0gVGhlIGl0ZW0gYWRkZWQgdG8gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHVibGljIGFkZChpdGVtOiBRdWV1ZUl0ZW08VD4sIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4ge1xuICAgIHRoaXMucmVtb3ZlKGl0ZW0sIGZhbHNlKTtcblxuICAgIHJldHVybiB0aGlzLmFkZE1hbnkoW2l0ZW1dLCBlbWl0RXZlbnQpWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgbXVsdGlwbGUgaXRlbXMgdG8gdGhlIHF1ZXVlLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbXMgLSBBbiBhcnJheSBvZiBpdGVtcyB0byBiZSBhZGRlZCB0byB0aGUgcXVldWUuXG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgLSAoT3B0aW9uYWwpIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciBhZGRpbmcgdGhlIGl0ZW1zLiBEZWZhdWx0IGlzIHRydWUuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFkZGVkIGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIGFkZE1hbnkoaXRlbXM6IEFycmF5PFF1ZXVlSXRlbTxUPj4sIGVtaXRFdmVudCA9IHRydWUpOiBBcnJheTxRdWV1ZUl0ZW08VD4+IHtcbiAgICBjb25zdCBhZGRlZEl0ZW1zID0gW107XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaXRlbSkpIHtcbiAgICAgICAgYWRkZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnF1ZXVlLnNldChpdGVtLmlkLnRvU3RyaW5nKCksIGl0ZW0pO1xuICAgIH1cbiAgICBpZiAoYWRkZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubm90aWZ5KHsgdHlwZTogJ2FkZCcsIGl0ZW1zOiBhZGRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuICAgIGlmICh1cGRhdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICd1cGRhdGUnLCBpdGVtczogdXBkYXRlZEl0ZW1zIH0sIGVtaXRFdmVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW1PcklkIC0gVGhlIGl0ZW0gb3IgSUQgb2YgdGhlIGl0ZW0gdG8gYmUgcmVtb3ZlZC5cbiAgICogQHBhcmFtIGVtaXRFdmVudCAtIFdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciByZW1vdmluZyB0aGUgaXRlbS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEByZXR1cm5zIFRoZSByZW1vdmVkIGl0ZW0sIG9yIGBudWxsYCBpZiB0aGUgaXRlbSB3YXMgbm90IGZvdW5kLlxuICAgKi9cbiAgcHVibGljIHJlbW92ZShpdGVtT3JJZDogUXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQsIGVtaXRFdmVudCA9IHRydWUpOiBRdWV1ZUl0ZW08VD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVNYW55KFtpdGVtT3JJZF0sIGVtaXRFdmVudClbMF07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBtdWx0aXBsZSBpdGVtcyBmcm9tIHRoZSBxdWV1ZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgaXRlbSBvciBpdGVtIElEcy5cbiAgICogQHBhcmFtIGl0ZW1PcklkcyAtIEFuIGFycmF5IG9mIFF1ZXVlSXRlbSBvciBRdWV1ZUl0ZW1JZCBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgaXRlbXMgdG8gYmUgcmVtb3ZlZC5cbiAgICogQHBhcmFtIGVtaXRFdmVudCAtIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZW1pdCBhbiBldmVudCBhZnRlciByZW1vdmluZyB0aGUgaXRlbXMuIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgcmVtb3ZlZCBRdWV1ZUl0ZW0gb2JqZWN0cyBvciBudWxsIHZhbHVlcy5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVNYW55KGl0ZW1PcklkczogQXJyYXk8UXVldWVJdGVtPFQ+IHwgUXVldWVJdGVtSWQ+LCBlbWl0RXZlbnQgPSB0cnVlKTogQXJyYXk8UXVldWVJdGVtPFQ+IHwgbnVsbD4ge1xuICAgIGNvbnN0IGl0ZW1zID0gaXRlbU9ySWRzLm1hcCgoaXRlbU9ySWQpID0+IHRoaXMuZ2V0KGl0ZW1PcklkKSkuZmlsdGVyKEJvb2xlYW4pIGFzIFF1ZXVlSXRlbTxUPltdO1xuICAgIGNvbnN0IHJlbW92ZWRJdGVtcyA9IFtdO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgY29uc3QgaXRlbVJlbW92ZWQgPSB0aGlzLnF1ZXVlLmRlbGV0ZShpdGVtLmlkLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKCFpdGVtUmVtb3ZlZCkgY29udGludWU7XG4gICAgICByZW1vdmVkSXRlbXMucHVzaChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5ub3RpZnkoeyB0eXBlOiAncmVtb3ZlJywgaXRlbXM6IHJlbW92ZWRJdGVtcyB9LCBlbWl0RXZlbnQpO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgcXVldWUgYnkgcmVtb3ZpbmcgYWxsIGl0ZW1zLlxuICAgKlxuICAgKiBAcGFyYW0gZW1pdEV2ZW50IC0gV2hldGhlciB0byBlbWl0IGFuIGV2ZW50IGFmdGVyIGNsZWFyaW5nIHRoZSBxdWV1ZS4gRGVmYXVsdCBpcyB0cnVlLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudG9BcnJheSgpO1xuICAgIHRoaXMucXVldWUuY2xlYXIoKTtcbiAgICB0aGlzLm5vdGlmeSh7IHR5cGU6ICdyZW1vdmUnLCBpdGVtcyB9LCBlbWl0RXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHF1ZXVlLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBjb250YWluaW5nIGFsbCB0aGUgaXRlbXMgaW4gdGhlIHF1ZXVlLlxuICAgKi9cbiAgcHVibGljIHRvQXJyYXkoKTogUXVldWVJdGVtPFQ+W10ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5KGV2ZW50OiBRdWV1ZUV2ZW50PFQ+LCBlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMgPSBBcnJheS5mcm9tKHRoaXMucXVldWUsIChbXywgaXRlbV0pID0+IGl0ZW0pLnJldmVyc2UoKTtcbiAgICB0aGlzLmZpcnN0SXRlbSA9IHRoaXMudmFsdWVzWzBdID8/IG51bGw7XG4gICAgdGhpcy5sYXN0SXRlbSA9IHRoaXMudmFsdWVzW3RoaXMudmFsdWVzLmxlbmd0aCAtIDFdID8/IG51bGw7XG4gICAgaWYgKCFlbWl0RXZlbnQpIHJldHVybjtcbiAgICB0aGlzLmV2ZW50cyQkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFdmVudE9ic2VydmVyKHR5cGU6IFF1ZXVlRXZlbnRUeXBlKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzJCQucGlwZShcbiAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LnR5cGUgPT09IHR5cGUpLFxuICAgICAgbWFwKCh7IGl0ZW1zIH0pID0+IGl0ZW1zKSxcbiAgICAgIGNvbmNhdEFsbCgpLFxuICAgICAgc2hhcmUoKSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,29 +1,86 @@
|
|
|
1
1
|
import { TemplateRef } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the given value is a `ViewContainerRef`.
|
|
4
|
+
*
|
|
5
|
+
* @param {unknown} value - The value to check.
|
|
6
|
+
* @returns {value is ViewContainerRef} `true` if the value is a `ViewContainerRef`, otherwise `false`.
|
|
7
|
+
*/
|
|
2
8
|
export function isViewContainer(value) {
|
|
3
9
|
return isFunction(value?.createComponent);
|
|
4
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Checks if the given value is a `TemplateRef`.
|
|
13
|
+
*
|
|
14
|
+
* @template T - The embedded view type.
|
|
15
|
+
* @param {unknown} value - The value to check.
|
|
16
|
+
* @returns {value is TemplateRef<T>} `true` if the value is a `TemplateRef`, otherwise `false`.
|
|
17
|
+
*/
|
|
5
18
|
export function isTemplateRef(value) {
|
|
6
19
|
return value instanceof TemplateRef;
|
|
7
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks if the given value is an Angular component class.
|
|
23
|
+
*
|
|
24
|
+
* @template T - The component class type.
|
|
25
|
+
* @param {unknown} value - The value to check.
|
|
26
|
+
* @returns {value is Type<T>} `true` if the value is a component class, otherwise `false`.
|
|
27
|
+
*/
|
|
8
28
|
export function isComponent(value) {
|
|
9
29
|
return isFunction(value);
|
|
10
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Checks if the given value is a string.
|
|
33
|
+
*
|
|
34
|
+
* @param {unknown} value - The value to check.
|
|
35
|
+
* @returns {value is string} `true` if the value is a string, otherwise `false`.
|
|
36
|
+
*/
|
|
11
37
|
export function isString(value) {
|
|
12
38
|
return typeof value === 'string';
|
|
13
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Checks if the given value is a non-empty string.
|
|
42
|
+
*
|
|
43
|
+
* @param {unknown} value - The value to check.
|
|
44
|
+
* @returns {value is string} `true` if the value is a non-empty string, otherwise `false`.
|
|
45
|
+
*/
|
|
14
46
|
export function isNonEmptyString(value) {
|
|
15
47
|
return isString(value) && value.length > 0;
|
|
16
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Checks if the given value is a boolean.
|
|
51
|
+
*
|
|
52
|
+
* @param {unknown} value - The value to check.
|
|
53
|
+
* @returns {value is boolean} `true` if the value is a boolean, otherwise `false`.
|
|
54
|
+
*/
|
|
17
55
|
export function isBoolean(value) {
|
|
18
56
|
return value === true || value === false;
|
|
19
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Checks if the given value is a function.
|
|
60
|
+
*
|
|
61
|
+
* @param {unknown} value - The value to check.
|
|
62
|
+
* @returns {value is CallableFunction} `true` if the value is a function, otherwise `false`.
|
|
63
|
+
*/
|
|
20
64
|
export function isFunction(value) {
|
|
21
65
|
return typeof value === 'function';
|
|
22
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Checks if the given value is present (not null or undefined).
|
|
69
|
+
*
|
|
70
|
+
* @template T - The value type.
|
|
71
|
+
* @param {T | null | undefined} value - The value to check.
|
|
72
|
+
* @returns {value is NonNullable<T>} `true` if the value is present, otherwise `false`.
|
|
73
|
+
*/
|
|
23
74
|
export function isPresent(value) {
|
|
24
75
|
return value !== null && value !== undefined;
|
|
25
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Checks if the given value is a number.
|
|
79
|
+
*
|
|
80
|
+
* @param {unknown} value - The value to check.
|
|
81
|
+
* @returns {value is number} `true` if the value is a number, otherwise `false`.
|
|
82
|
+
*/
|
|
26
83
|
export function isNumber(value) {
|
|
27
84
|
return typeof value === 'number';
|
|
28
85
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1ndWFyZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvdXRpbHMvc3JjL2xpYi9oZWxwZXJzL3R5cGUtZ3VhcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRXBFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFjO0lBQzVDLE9BQU8sVUFBVSxDQUFFLEtBQTBCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQWMsS0FBYztJQUN2RCxPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQWMsS0FBYztJQUNyRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3RDLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQzNDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYztJQUN2QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxLQUEyQjtJQUN0RCxPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIGBWaWV3Q29udGFpbmVyUmVmYC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIFZpZXdDb250YWluZXJSZWZ9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBgVmlld0NvbnRhaW5lclJlZmAsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWaWV3Q29udGFpbmVyKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgVmlld0NvbnRhaW5lclJlZiB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKCh2YWx1ZSBhcyBWaWV3Q29udGFpbmVyUmVmKT8uY3JlYXRlQ29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgYFRlbXBsYXRlUmVmYC5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBlbWJlZGRlZCB2aWV3IHR5cGUuXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIFRlbXBsYXRlUmVmPFQ+fSBgdHJ1ZWAgaWYgdGhlIHZhbHVlIGlzIGEgYFRlbXBsYXRlUmVmYCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RlbXBsYXRlUmVmPFQgPSB1bmtub3duPih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFRlbXBsYXRlUmVmPFQ+IHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBBbmd1bGFyIGNvbXBvbmVudCBjbGFzcy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSBjb21wb25lbnQgY2xhc3MgdHlwZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgVHlwZTxUPn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBjbGFzcywgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBvbmVudDxUID0gdW5rbm93bj4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUeXBlPFQ+IHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBzdHJpbmd9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgbm9uLWVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIHN0cmluZ30gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb25FbXB0eVN0cmluZyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyB7XG4gIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID4gMDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgYm9vbGVhbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIGJvb2xlYW59IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge3ZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb259IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvbiwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBwcmVzZW50IChub3QgbnVsbCBvciB1bmRlZmluZWQpLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHZhbHVlIHR5cGUuXG4gKiBAcGFyYW0ge1QgfCBudWxsIHwgdW5kZWZpbmVkfSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPn0gYHRydWVgIGlmIHRoZSB2YWx1ZSBpcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJlc2VudDxUPih2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBudW1iZXIuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBudW1iZXJ9IGB0cnVlYCBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXIsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXIodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbn1cbiJdfQ==
|
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
import { DestroyRef, inject } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a MonoTypeOperatorFunction that automatically unsubscribes from observables when the host component or service is destroyed.
|
|
5
|
+
* It uses Angular's `DestroyRef` to detect when the component or service is destroyed and triggers the unsubscription at that point.
|
|
6
|
+
* This utility function helps in managing subscriptions and prevents memory leaks by ensuring observables are unsubscribed when no longer needed.
|
|
7
|
+
*
|
|
8
|
+
* @returns A function that returns a `MonoTypeOperatorFunction<T>`, which can be used in an RxJS pipe to automatically unsubscribe
|
|
9
|
+
* based on the component's or service's lifecycle.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // In an Angular component or service
|
|
14
|
+
* import { Component } from '@angular/core';
|
|
15
|
+
* import { Observable } from 'rxjs';
|
|
16
|
+
* import { untilDestroyed } from './path/to/untilDestroyed';
|
|
17
|
+
*
|
|
18
|
+
* @Component({
|
|
19
|
+
* selector: 'app-example',
|
|
20
|
+
* template: `<div>Example Component</div>`,
|
|
21
|
+
* })
|
|
22
|
+
* export class ExampleComponent {
|
|
23
|
+
* private readonly takeUntilDestroyed = untilDestroyed();
|
|
24
|
+
*
|
|
25
|
+
* constructor() {
|
|
26
|
+
* const exampleObservable$ = new Observable(observer => {
|
|
27
|
+
* // Observable logic here
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* exampleObservable$.pipe(
|
|
31
|
+
* this.takeUntilDestroyed(),
|
|
32
|
+
* ).subscribe(data => {
|
|
33
|
+
* // Subscription logic here
|
|
34
|
+
* });
|
|
35
|
+
* }
|
|
36
|
+
*
|
|
37
|
+
* // No need to manually implement ngOnDestroy to unsubscribe
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
3
41
|
export function untilDestroyed() {
|
|
4
42
|
const destroyRef = inject(DestroyRef);
|
|
5
43
|
return () => takeUntilDestroyed(destroyRef);
|
|
6
44
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3V0aWxzL3NyYy9saWIvaGVscGVycy91bnRpbC1kZXN0cm95ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHaEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQ0c7QUFDSCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uIHRoYXQgYXV0b21hdGljYWxseSB1bnN1YnNjcmliZXMgZnJvbSBvYnNlcnZhYmxlcyB3aGVuIHRoZSBob3N0IGNvbXBvbmVudCBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZC5cbiAqIEl0IHVzZXMgQW5ndWxhcidzIGBEZXN0cm95UmVmYCB0byBkZXRlY3Qgd2hlbiB0aGUgY29tcG9uZW50IG9yIHNlcnZpY2UgaXMgZGVzdHJveWVkIGFuZCB0cmlnZ2VycyB0aGUgdW5zdWJzY3JpcHRpb24gYXQgdGhhdCBwb2ludC5cbiAqIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBoZWxwcyBpbiBtYW5hZ2luZyBzdWJzY3JpcHRpb25zIGFuZCBwcmV2ZW50cyBtZW1vcnkgbGVha3MgYnkgZW5zdXJpbmcgb2JzZXJ2YWJsZXMgYXJlIHVuc3Vic2NyaWJlZCB3aGVuIG5vIGxvbmdlciBuZWVkZWQuXG4gKlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFQ+YCwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gYW4gUnhKUyBwaXBlIHRvIGF1dG9tYXRpY2FsbHkgdW5zdWJzY3JpYmVcbiAqIGJhc2VkIG9uIHRoZSBjb21wb25lbnQncyBvciBzZXJ2aWNlJ3MgbGlmZWN5Y2xlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gSW4gYW4gQW5ndWxhciBjb21wb25lbnQgb3Igc2VydmljZVxuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG4gKiBpbXBvcnQgeyB1bnRpbERlc3Ryb3llZCB9IGZyb20gJy4vcGF0aC90by91bnRpbERlc3Ryb3llZCc7XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnYXBwLWV4YW1wbGUnLFxuICogICB0ZW1wbGF0ZTogYDxkaXY+RXhhbXBsZSBDb21wb25lbnQ8L2Rpdj5gLFxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBFeGFtcGxlQ29tcG9uZW50IHtcbiAqICAgcHJpdmF0ZSByZWFkb25seSB0YWtlVW50aWxEZXN0cm95ZWQgPSB1bnRpbERlc3Ryb3llZCgpO1xuICpcbiAqICAgY29uc3RydWN0b3IoKSB7XG4gKiAgICAgY29uc3QgZXhhbXBsZU9ic2VydmFibGUkID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICogICAgICAgLy8gT2JzZXJ2YWJsZSBsb2dpYyBoZXJlXG4gKiAgICAgfSk7XG4gKlxuICogICAgIGV4YW1wbGVPYnNlcnZhYmxlJC5waXBlKFxuICogICAgICAgdGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAqICAgICApLnN1YnNjcmliZShkYXRhID0+IHtcbiAqICAgICAgIC8vIFN1YnNjcmlwdGlvbiBsb2dpYyBoZXJlXG4gKiAgICAgfSk7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIE5vIG5lZWQgdG8gbWFudWFsbHkgaW1wbGVtZW50IG5nT25EZXN0cm95IHRvIHVuc3Vic2NyaWJlXG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVudGlsRGVzdHJveWVkKCk6IDxUPigpID0+IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcmV0dXJuICgpID0+IHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95UmVmKTtcbn1cbiJdfQ==
|