{"version":3,"file":"nova-ui-bits.mjs","sources":["../../src/lib/button/public-api.ts","../../src/constants/button.constants.ts","../../src/environment.ts","../../src/services/log-service.ts","../../src/lib/icon/types.ts","../../src/lib/icon/icons.ts","../../src/lib/icon/public-api.ts","../../src/lib/icon/icon.service.ts","../../src/functions/a11y-graphics.util.ts","../../src/lib/icon/icon.component.ts","../../src/lib/icon/icon.component.html","../../src/lib/button/button.component.ts","../../src/lib/button/button.component.html","../../src/constants/images.ts","../../src/constants/images.constants.ts","../../src/constants/unit-conversion.constants.ts","../../src/lib/selector/public-api.ts","../../src/lib/sorter/public-api.ts","../../src/services/data-source/public-api.ts","../../src/lib/dialog/dialog-ref.ts","../../src/services/public-api.ts","../../src/lib/repeat/types.ts","../../src/lib/selector/selector.service.ts","../../src/pipes/highlight.pipe.ts","../../src/pipes/limit-to.pipe.ts","../../src/pipes/map-key-value.pipe.ts","../../src/services/unit-conversion.service.ts","../../src/pipes/unit-conversion.pipe.ts","../../src/services/dom-util.service.ts","../../src/services/edge-detection.service.ts","../../src/services/event-bus.ts","../../src/constants/event.constants.ts","../../src/services/event-bus.service.ts","../../src/services/event-propagation.service.ts","../../src/services/history-storage.ts","../../src/services/notification-service.ts","../../src/services/position.service.ts","../../src/services/search.service.ts","../../src/services/util.service.ts","../../src/services/transient-cache.service.ts","../../src/common/directives/click-filter/public-api.ts","../../src/common/directives/click-filter/click-filter.directive.ts","../../src/common/directives/click-interceptor/click-interceptor.directive.ts","../../src/common/directives/clipboard/clipboard.directive.ts","../../src/common/directives/dragdrop/drag-and-drop.service.ts","../../src/common/directives/dragdrop/dragdrop.constants.ts","../../src/common/directives/dragdrop/draggable.directive.ts","../../src/common/directives/dragdrop/droppable.directive.ts","../../src/common/directives/resize/resize.directive.ts","../../src/constants/resize.constants.ts","../../src/common/directives/resize-observer/resize-observer.directive.ts","../../src/common/directives/resizer/public-api.ts","../../src/common/directives/resizer/resizer.directive.ts","../../src/common/directives/set-focus/set-focus.directive.ts","../../src/functions/uuid.ts","../../src/common/directives/zoom-content/zoom-content.directive.ts","../../src/common/common.module.ts","../../src/lib/icon/icon.module.ts","../../src/lib/button/button.module.ts","../../src/constants/keycode.constants.ts","../../src/lib/form-field/public-api.ts","../../src/lib/checkbox/checkbox.component.ts","../../src/lib/checkbox/checkbox.component.html","../../src/lib/checkbox/checkbox-group.component.ts","../../src/lib/checkbox/checkbox-group.component.html","../../src/lib/checkbox/checkbox.module.ts","../../src/lib/divider/divider.component.ts","../../src/lib/divider/divider.module.ts","../../src/lib/dragdrop/droppable.component.ts","../../src/lib/dragdrop/droppable.component.html","../../src/lib/dragdrop/draggable.component.ts","../../src/lib/dragdrop/draggable.component.html","../../src/lib/dragdrop/dragdrop.module.ts","../../src/lib/message/message.component.ts","../../src/lib/message/message.component.html","../../src/lib/message/message.module.ts","../../src/lib/image/image.component.ts","../../src/lib/image/image.component.html","../../src/lib/image/image.module.ts","../../src/lib/overlay/constants.ts","../../src/lib/overlay/types.ts","../../src/lib/overlay/overlay-container.service.ts","../../src/lib/overlay/overlay-custom-container.ts","../../src/lib/overlay/overlay-position.service.ts","../../src/lib/overlay/overlay.service.ts","../../src/lib/overlay/overlay-component/overlay.component.ts","../../src/lib/popup/popup-toggle.directive.ts","../../src/lib/popup-adapter/popup-adapter.component.ts","../../src/lib/popup-adapter/popup-adapter.component.html","../../src/lib/menu/menu-item/menu-group/menu-group.component.ts","../../src/lib/menu/menu-item/menu-item/menu-item-base.ts","../../src/lib/menu/public-api.ts","../../src/lib/menu/menu-item/menu-action/menu-action.component.ts","../../src/lib/menu/menu-item/menu-item/menu-item.component.ts","../../src/lib/menu/menu-key-control.service.ts","../../src/lib/menu/menu-item/menu-link/menu-link.component.ts","../../src/lib/menu/menu-item/menu-option/menu-option.component.ts","../../src/lib/switch/switch.component.ts","../../src/lib/switch/switch.component.html","../../src/lib/menu/menu-item/menu-switch/menu-switch.component.ts","../../src/lib/menu/menu-popup/menu-popup.component.ts","../../src/lib/menu/menu-popup/menu-popup.component.html","../../src/lib/menu/menu/menu.component.ts","../../src/lib/menu/menu/menu.component.html","../../src/lib/popup/popup-container.component.ts","../../src/lib/popup/popup-container.service.ts","../../src/lib/popup/popup.component.ts","../../src/lib/overlay/overlay.module.ts","../../src/lib/select-v2/constants.ts","../../src/lib/overlay/overlay-item/overlay-item.component.ts","../../src/lib/select-v2/option/select-v2-option.component.ts","../../src/lib/select-v2/option-key-control.service.ts","../../src/lib/overlay/overlay-utilities.service.ts","../../src/lib/select-v2/base-select-v2.ts","../../src/lib/select-v2/mark-as-selected-item.directive.ts","../../src/lib/select-v2/selected-items-key-control.service.ts","../../src/animations/fadeIn.ts","../../src/lib/tooltip/tooltip.component.ts","../../src/lib/tooltip/tooltip.directive.ts","../../src/lib/select-v2/combobox-v2/combobox-v2.component.ts","../../src/lib/select-v2/combobox-v2/combobox-v2.component.html","../../src/lib/select-v2/combobox-v2-option-highlight/combobox-v2-option-highlight.directive.ts","../../src/lib/select-v2/option-group/select-v2-option-group.component.ts","../../src/lib/breadcrumb/public-api.ts","../../src/lib/busy/public-api.ts","../../src/lib/checkbox/public-api.ts","../../src/lib/chips/public-api.ts","../../src/lib/date-picker/public-api.ts","../../src/lib/dnd/dnd-drop-target.directive.ts","../../src/lib/dnd/dnd.module.ts","../../src/lib/dnd/public-api.ts","../../src/lib/dialog/public-api.ts","../../src/lib/divider/public-api.ts","../../src/lib/docs/srlc-indicator/public-api.ts","../../src/lib/docs/public-api.ts","../../src/lib/image/public-api.ts","../../src/lib/layout/public-api.ts","../../src/lib/paginator/public-api.ts","../../src/lib/panel/public-api.ts","../../src/lib/popover/public-api.ts","../../src/lib/repeat/public-api.ts","../../src/lib/select/public-api.ts","../../src/lib/select-v2/types.ts","../../src/lib/spinner/public-api.ts","../../src/lib/table/table-virtual-scroll/table-virtual-scroll-strategy.ts","../../src/lib/table/table-virtual-scroll/table-virtual-scroll.directive.ts","../../src/lib/table/constants.ts","../../src/lib/table/types.ts","../../src/lib/table/table-state-handler.service.ts","../../src/lib/table/table.component.ts","../../src/lib/table/table-virtual-scroll/table-sticky-header.directive.ts","../../src/functions/nameof.ts","../../src/lib/table/table-virtual-scroll/slice-range.pipe.ts","../../src/lib/table/public-api.ts","../../src/lib/time-frame-picker/public-api.ts","../../src/lib/toast/public-api.ts","../../src/lib/toolbar/public-api.ts","../../src/lib/tooltip/tooltip.module.ts","../../src/lib/tooltip/public-api.ts","../../src/lib/validation-message/validation-message.component.ts","../../src/lib/validation-message/validation-message.component.html","../../src/lib/validation-message/custom-validation-message/custom-validation-message.component.ts","../../src/lib/validation-message/public-api.ts","../../src/lib/wizard/public-api.ts","../../src/lib/wizard-v2/error-state-matcher.provider.ts","../../src/lib/wizard-v2/wizard-button/wizard-button.ts","../../src/lib/wizard-v2/wizard-step-footer.directive.ts","../../src/lib/wizard-v2/wizard-footer/wizard-footer.component.ts","../../src/lib/wizard-v2/wizard-footer/wizard-footer.component.html","../../src/lib/wizard-v2/wizard-step-label.directive.ts","../../src/lib/wizard-v2/wizard-step/wizard-step.component.ts","../../src/constants/wizard.constants.ts","../../src/lib/wizard-v2/wizard-step-header/wizard-step-header.component.ts","../../src/lib/wizard-v2/wizard-step-header/wizard-step-header.component.html","../../src/lib/wizard-v2/wizard.directive.ts","../../src/lib/overlay/arrow-component/overlay-arrow.component.ts","../../src/lib/popover/popover-modal.component.ts","../../src/lib/popover/popover-modal.component.html","../../src/lib/popover/popover-position.service.ts","../../src/constants/popover.constants.ts","../../src/lib/popover/popover.component.ts","../../src/lib/popover/popover.component.html","../../src/lib/wizard-v2/wizard-overflow/wizard-overflow.component.ts","../../src/lib/wizard-v2/wizard-overflow/wizard-overflow.component.html","../../src/lib/wizard-v2/wizard-horizontal/wizard-horizontal.component.ts","../../src/lib/wizard-v2/wizard-horizontal/wizard-horizontal.component.html","../../src/lib/wizard-v2/wizard-vertical/wizard-vertical.component.ts","../../src/lib/wizard-v2/wizard-vertical/wizard-vertical.component.html","../../src/lib/overlay/overlay-additions.module.ts","../../src/lib/popover/popover.module.ts","../../src/lib/wizard-v2/wizard.module.ts","../../src/lib/wizard-v2/types.ts","../../src/lib/wizard-v2/public-api.ts","../../src/lib/overlay/public-api.ts","../../src/lib/freetype-query-builder/models.ts","../../src/lib/freetype-query-builder/public-api.ts","../../src/lib/public-api.ts","../../src/lib/select-v2/select/select-v2.component.ts","../../src/lib/select-v2/select/select-v2.component.html","../../src/lib/select-v2/select-v2.module.ts","../../src/lib/popup-adapter/popup-adapter.module.ts","../../src/lib/popup/popup.module.ts","../../src/lib/switch/switch.module.ts","../../src/lib/menu/menu.module.ts","../../src/lib/select/base-select.ts","../../src/lib/spinner/spinner.component.ts","../../src/lib/spinner/spinner.component.html","../../src/lib/textbox/textbox.component.ts","../../src/lib/textbox/textbox.component.html","../../src/lib/select/combobox/combobox.component.ts","../../src/lib/select/combobox/combobox.component.html","../../src/lib/menu/index.ts","../../src/lib/select/select.component.ts","../../src/lib/select/select.component.html","../../src/constants/regex.constants.ts","../../src/lib/textbox/textbox-number/textbox-number.component.ts","../../src/lib/textbox/textbox-number/textbox-number.component.html","../../src/lib/repeat/repeat-item/repeat-item.component.ts","../../src/lib/repeat/repeat-item/repeat-item.component.html","../../src/lib/radio/radio-group.component.ts","../../src/lib/radio/radio.component.html","../../src/lib/repeat/repeat.component.ts","../../src/lib/repeat/repeat.component.html","../../src/lib/radio/radio.module.ts","../../src/lib/repeat/repeat.module.ts","../../src/lib/spinner/spinner.module.ts","../../src/lib/textbox/textbox.module.ts","../../src/lib/select/select.module.ts","../../src/lib/tabgroup/tab/tab-heading-custom-template-ref.directive.ts","../../src/lib/tabgroup/tab-group/tab-group.component.ts","../../src/lib/tabgroup/tab-group/tab-group.component.html","../../src/lib/tabgroup/tab/tab.component.ts","../../src/lib/tabgroup/tab/tab-heading.directive.ts","../../src/lib/tabgroup/tab-heading/tab-heading.component.ts","../../src/lib/tabgroup/tab-heading/tab-heading.component.html","../../src/lib/tabgroup/tab-heading-group/tab-heading-group.component.ts","../../src/lib/tabgroup/tab-heading-group/tab-heading-group.component.html","../../src/lib/tabgroup/tabs.module.ts","../../src/lib/layout/card/card.component.ts","../../src/lib/layout/card/card.component.html","../../src/lib/layout/card-group/card-group.component.ts","../../src/lib/layout/card-group/card-group.component.html","../../src/common/directives/index.ts","../../src/lib/layout/layout-resizer/layout-resizer.component.ts","../../src/lib/layout/layout-resizer/layout-resizer.component.html","../../src/lib/layout/sheet/sheet.component.ts","../../src/lib/layout/sheet/sheet.component.html","../../src/lib/layout/sheet-group/sheet-group.component.ts","../../src/lib/layout/sheet-group/sheet-group.component.html","../../src/lib/layout/layout.module.ts","../../src/lib/breadcrumb/breadcrumb-state.service.ts","../../src/lib/breadcrumb/breadcrumb.component.ts","../../src/lib/breadcrumb/breadcrumb.component.html","../../src/lib/breadcrumb/breadcrumb.module.ts","../../src/services/tab-navigation.service.ts","../../src/lib/progress/progress.component.ts","../../src/lib/progress/progress.component.html","../../src/lib/busy/busy.component.ts","../../src/lib/busy/busy.component.html","../../src/lib/busy/busy.module.ts","../../src/lib/chips/chip/chip.component.ts","../../src/lib/chips/chip/chip.component.html","../../src/lib/chips/chips-overflow.service.ts","../../src/lib/chips/chips.component.ts","../../src/lib/chips/chips.component.html","../../src/lib/chips/chips-overflow/chips-overflow.component.ts","../../src/lib/chips/chips-overflow/chips-overflow.component.html","../../src/lib/chips/chips.module.ts","../../src/functions/color.helper.ts","../../src/constants/color-picker.constants.ts","../../src/lib/color-picker/color.service.ts","../../src/lib/color-picker/color-picker.component.ts","../../src/lib/color-picker/color-picker.component.html","../../src/lib/color-picker/color-picker.module.ts","../../src/lib/content/content.component.ts","../../src/lib/content/content.component.html","../../src/lib/content/content.module.ts","../../src/lib/date-picker/date-picker-inner.component.ts","../../src/lib/date-picker/date-picker-inner.component.html","../../src/lib/date-picker/date-picker-day-picker.component.ts","../../src/lib/date-picker/date-picker-day-picker.component.html","../../src/lib/date-picker/date-picker-month-picker.component.ts","../../src/lib/date-picker/date-picker-month-picker.component.html","../../src/lib/date-picker/date-picker-year-picker.component.ts","../../src/lib/date-picker/date-picker-year-picker.component.html","../../src/validators/nui-validators.ts","../../src/validators/index.ts","../../src/lib/date-picker/date-picker.component.ts","../../src/lib/date-picker/date-picker.component.html","../../src/lib/date-picker/date-picker.module.ts","../../src/lib/time-picker/time-picker-keyboard.service.ts","../../src/lib/time-picker/time-picker.component.ts","../../src/lib/time-picker/time-picker.component.html","../../src/lib/date-time-picker/date-time-picker.component.ts","../../src/lib/date-time-picker/date-time-picker.component.html","../../src/lib/time-picker/time-picker.module.ts","../../src/lib/date-time-picker/date-time-picker.module.ts","../../src/lib/dialog/dialog-header.component.ts","../../src/lib/dialog/dialog-header.component.html","../../src/lib/dialog/dialog-footer.component.ts","../../src/lib/dialog/dialog-footer.component.html","../../src/lib/dialog/confirmation-dialog.component.ts","../../src/lib/dialog/confirmation-dialog.component.html","../../src/lib/dialog/dialog-backdrop.component.ts","../../src/lib/dialog/dialog.component.ts","../../src/lib/dialog/dialog.component.html","../../src/services/content-ref.ts","../../src/lib/dialog/dialog-stack.service.ts","../../src/lib/dialog/dialog.service.ts","../../src/lib/dialog/dialog.module.ts","../../src/animations/expand.ts","../../src/lib/expander/expander.component.ts","../../src/lib/expander/expander.component.html","../../src/lib/expander/expander.module.ts","../../src/lib/form-field/touched-changes-helper.ts","../../src/lib/form-field/form-field.component.ts","../../src/lib/form-field/form-field.component.html","../../src/lib/form-field/form-field.module.ts","../../src/lib/freetype-query-builder/helpers/window.ts","../../src/lib/freetype-query-builder/helpers/freetype-query-utils.service.ts","../../src/lib/freetype-query-builder/text-highlight-overlay/text-highlight-overlay-component.ts","../../src/lib/freetype-query-builder/text-highlight-overlay/text-highlight-overlay-component.html","../../src/lib/toast/toast-container.service.ts","../../src/lib/toast/toast-package.ts","../../src/lib/toast/toast-injector.ts","../../src/lib/toast/toast-ref.ts","../../src/lib/toast/toast.servicebase.ts","../../src/lib/toast/toast.component.ts","../../src/lib/toast/toast.component.html","../../src/services/notification-args.ts","../../src/lib/toast/toast.service.ts","../../src/lib/freetype-query-builder/freetype-query-builder.component.ts","../../src/lib/freetype-query-builder/freetype-query-builder.component.html","../../src/lib/toast/toast.directive.ts","../../src/lib/toast/toast.module.ts","../../src/lib/freetype-query-builder/freetype-query-builder.module.ts","../../src/lib/select/index.ts","../../src/lib/paginator/paginator.component.ts","../../src/lib/paginator/paginator.component.html","../../src/lib/paginator/paginator.module.ts","../../src/lib/panel/panel.component.ts","../../src/lib/panel/panel.component.html","../../src/lib/panel/panel.module.ts","../../src/lib/progress/progress.module.ts","../../src/lib/risk-score/risk-score.component.ts","../../src/lib/risk-score/risk-score.component.html","../../src/lib/risk-score/risk-score.module.ts","../../src/lib/search/search.component.ts","../../src/lib/search/search.component.html","../../src/lib/search/search.module.ts","../../src/lib/selector/selector.component.ts","../../src/lib/selector/selector.component.html","../../src/lib/selector/selector.module.ts","../../src/lib/sorter/constants.ts","../../src/lib/sorter/sorter-keyboard.service.ts","../../src/lib/sorter/sorter.component.ts","../../src/lib/sorter/sorter.component.html","../../src/lib/sorter/sorter.module.ts","../../src/lib/table/table-cell/table-cell-def.directive.ts","../../src/lib/table/table-cell/table-column-def.directive.ts","../../src/lib/table/table-cell/table-cell.directive.ts","../../src/lib/table/table-cell/table-footer-cell-def.directive.ts","../../src/lib/table/table-cell/table-footer-cell.directive.ts","../../src/lib/table/table-cell/table-header-cell-def.directive.ts","../../src/lib/table/table-resizer/table-resizer.directive.ts","../../src/lib/table/table-cell/table-header-cell.component.ts","../../src/constants/interaction.constants.ts","../../src/lib/table/table-row/table-row.component.ts","../../src/lib/table/table.module.ts","../../src/lib/time-frame-picker/quick-picker/quick-picker.component.ts","../../src/lib/time-frame-picker/quick-picker/quick-picker.component.html","../../src/lib/time-frame-picker/services/timeframe.service.ts","../../src/lib/time-frame-picker/time-frame-picker.component.ts","../../src/lib/time-frame-picker/time-frame-picker.component.html","../../src/lib/convenience/time-frame-bar/time-frame-bar.component.ts","../../src/lib/convenience/time-frame-bar/time-frame-bar.component.html","../../src/lib/time-frame-picker/time-frame-format.pipe.ts","../../src/lib/time-frame-picker/time-frame-picker.module.ts","../../src/lib/convenience/time-frame-bar/time-frame-bar.module.ts","../../src/lib/toolbar/toolbar-item.component.ts","../../src/lib/toolbar/toolbar-group.component.ts","../../src/lib/toolbar/toolbar-message.component.ts","../../src/lib/toolbar/toolbar-splitter.component.ts","../../src/lib/toolbar/toolbar-keyboard.service.ts","../../src/lib/toolbar/toolbar.component.ts","../../src/lib/toolbar/toolbar.component.html","../../src/lib/toolbar/toolbar.module.ts","../../src/lib/validation-message/validation-message.module.ts","../../src/lib/wizard/wizard-step.component.ts","../../src/lib/wizard/wizard-step.component.html","../../src/lib/wizard/wizard.component.ts","../../src/lib/wizard/wizard.component.html","../../src/lib/wizard/wizard.module.ts","../../src/lib/docs/copy-text/copy-text.component.ts","../../src/lib/docs/copy-text/copy-text.component.html","../../src/lib/docs/example-code/example-code.component.ts","../../src/lib/docs/example-code/example-code.component.html","../../src/lib/docs/live-example-files/angular.json.ts","../../src/lib/docs/live-example-files/app.component.ts","../../src/lib/docs/live-example-files/app.module.ts","../../src/lib/docs/live-example-files/index.html.ts","../../src/lib/docs/live-example-files/main.ts","../../src/lib/docs/live-example-files/package.json.ts","../../src/lib/docs/live-example-files/polyfills.ts","../../src/lib/docs/live-example-files/tsconfig.json.ts","../../src/lib/docs/example-wrapper/code-sandbox-files.ts","../../src/constants/path.constants.ts","../../src/lib/docs/example-wrapper/code-sandbox.service.ts","../../src/lib/docs/services/sources.service.ts","../../src/lib/docs/example-wrapper/example-wrapper.component.ts","../../src/lib/docs/example-wrapper/example-wrapper.component.html","../../src/lib/docs/srlc-indicator/srlc-indicator.component.ts","../../src/lib/docs/srlc-indicator/srlc-indicator.component.html","../../src/services/theme-switch.service.ts","../../src/lib/docs/theme-switcher/theme-switcher.component.ts","../../src/lib/docs/theme-switcher/theme-switcher.component.html","../../src/lib/docs/docs.module.ts","../../src/types.ts","../../src/constants/dragdrop.constants.ts","../../src/constants/public-api.ts","../../src/common/directives/dragdrop/public-api.ts","../../src/common/directives/public-api.ts","../../src/functions/immutable-set.ts","../../src/functions/remove-errors.ts","../../src/functions/traverse.ts","../../src/functions/public-api.ts","../../src/nui-api.ts","../../src/services/data-source/data-source.service.ts","../../src/services/data-source/noop-data-source.service.ts","../../src/services/data-source/data-source-features.ts","../../src/services/data-filter.service.ts","../../src/services/list.service.ts","../../src/services/data-source/local-filtering-data-source.service.ts","../../src/services/data-source/client-side-data-source.service.ts","../../src/services/data-source/server-side-source.service.ts","../../src/services/virtual-viewport-manager.service.ts","../../src/public_api.ts","../../src/nova-ui-bits.ts"],"sourcesContent":["// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport enum ButtonSizeType {\n    compact = \"compact\",\n    default = \"default\",\n    large = \"large\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport interface IButtonConstants {\n    repeatDelay: number;\n    repeatInterval: number;\n    iconSizeMap: { [key: string]: string };\n}\n\n/** @ignore */\nexport const buttonConstants: IButtonConstants = {\n    repeatDelay: 400,\n    repeatInterval: 100,\n    iconSizeMap: { large: \"\", default: \"\", compact: \"small\" },\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, Optional, SkipSelf } from \"@angular/core\";\n\nexport enum LogLevel {\n    debug = \"debug\",\n    info = \"info\",\n    log = \"log\",\n    warn = \"warn\",\n    error = \"error\",\n}\n\n/**\n * @ignore\n * To modify nui env from outside please create a new instance of NuiEnvironment and\n * include it in a custom provider\n */\n@Injectable()\nexport class NuiEnvironment {\n    public logLevel: LogLevel = LogLevel.warn;\n}\n\n/** @ignore */\nexport function NUI_ENV_PROVIDER_FACTORY(\n    parentEnv: NuiEnvironment\n): NuiEnvironment {\n    return parentEnv || new NuiEnvironment();\n}\n\n/** @ignore */\nexport const NUI_ENV_PROVIDER = {\n    // If there is already an MatPaginatorIntl available, use that. Otherwise, provide a new one.\n    provide: NuiEnvironment,\n    deps: [[new Optional(), new SkipSelf(), NuiEnvironment]],\n    useFactory: NUI_ENV_PROVIDER_FACTORY,\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, Optional } from \"@angular/core\";\nimport noop from \"lodash/noop\";\n\nimport { LogLevel, NuiEnvironment } from \"../environment\";\n\n/**\n * __Name : __\n * Log Service\n *\n * __Usage :__\n * Used to show log messages in the console\n */\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class LoggerService {\n    private logLevel: LogLevel = LogLevel.warn;\n\n    constructor(@Optional() env?: NuiEnvironment) {\n        if (env && env.logLevel) {\n            this.logLevel = env.logLevel;\n            this.info(\"Log level set to \" + this.logLevel);\n        }\n    }\n\n    /**\n     *\n     * __Description:__ Log to debug\n     * @param ...msgs multiple arguments to be logged.\n     */\n    get debug(): Console[\"debug\"] {\n        if (this.logLevel === LogLevel.debug) {\n            // eslint-disable-next-line no-console\n            return console.debug.bind(console);\n        }\n        return noop;\n    }\n\n    /**\n     *\n     * __Description:__ Log to info\n     * @param ...msgs multiple arguments to be logged.\n     */\n    get info(): Console[\"info\"] {\n        if (\n            this.logLevel === LogLevel.debug ||\n            this.logLevel === LogLevel.info\n        ) {\n            // eslint-disable-next-line no-console\n            return console.info.bind(console);\n        }\n        return noop;\n    }\n\n    /**\n     *\n     * __Description:__ Log without specifying log level\n     * @param ...msgs multiple arguments to be logged.\n     */\n    get log(): Console[\"log\"] {\n        if (\n            this.logLevel === LogLevel.debug ||\n            this.logLevel === LogLevel.info ||\n            this.logLevel === LogLevel.log\n        ) {\n            return console.log.bind(console);\n        }\n        return noop;\n    }\n\n    /**\n     *\n     * __Description:__ Log to warn\n     * @param ...msgs multiple arguments to be logged.\n     */\n    get warn(): Console[\"warn\"] {\n        if (\n            this.logLevel === LogLevel.debug ||\n            this.logLevel === LogLevel.info ||\n            this.logLevel === LogLevel.log ||\n            this.logLevel === LogLevel.warn\n        ) {\n            return console.warn.bind(console);\n        }\n        return noop;\n    }\n\n    /**\n     *\n     * __Description:__ Log to error\n     * @param ...msgs multiple arguments to be logged.\n     */\n    get error(): Console[\"error\"] {\n        if (\n            this.logLevel === LogLevel.debug ||\n            this.logLevel === LogLevel.info ||\n            this.logLevel === LogLevel.log ||\n            this.logLevel === LogLevel.warn ||\n            this.logLevel === LogLevel.error\n        ) {\n            return console.error.bind(console);\n        }\n        return noop;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface IconData {\n    svgFile: string;\n    name: string | MappedIconNames;\n    cat_namespace?: string | IconCategoryNamespace;\n    category: string | IconCategory;\n    code: string;\n}\n\nexport enum IconCategory {\n    Command = \"command\",\n    HealthStatus = \"health-status\",\n    Object = \"object\",\n    Severity = \"severity\",\n    State = \"state\",\n    Tab = \"tab\",\n    Widget = \"widget\",\n}\n\nexport enum IconCategoryNamespace {\n    Command = \"command_\",\n    Object = \"object_\",\n    Severity = \"severity_\",\n    State = \"state_\",\n    Status = \"status_\",\n    Widget = \"widget_\",\n}\n\nexport type MappedIconNames = IconSeverity | IconState | IconWidget;\n\nexport enum IconStatus {\n    Acknowledged = \"acknowledged\",\n    Critical = \"critical\",\n    Disabled = \"disabled\",\n    Down = \"down\",\n    External = \"external\",\n    Inactive = \"inactive\",\n    Issues = \"issues\",\n    Missing = \"missing\",\n    Mixed = \"mixed\",\n    Reserved = \"reserved\",\n    NotRunning = \"notrunning\",\n    Shutdown = \"shutdown\",\n    Sleep = \"sleep\",\n    Standby = \"standby\",\n    Suspended = \"suspended\",\n    Testing = \"testing\",\n    Transient = \"transient\",\n    Undefined = \"undefined\",\n    Unknown = \"unknown\",\n    Unmanaged = \"unmanaged\",\n    Unplugged = \"unplugged\",\n    Unreachable = \"unreachable\",\n    Up = \"up\",\n    Used = \"used\",\n    Warning = \"warning\",\n}\n\nexport enum IconSeverity {\n    CriticalInverse = \"severity_critical-inverse\",\n    Critical = \"severity_critical\",\n    Error = \"severity_error\",\n    InfoInverse = \"severity_info-inverse\",\n    Info = \"severity_info\",\n    Ok = \"severity_ok\",\n    Tip = \"severity_tip\",\n    Unknown = \"severity_unknown\",\n    WarningInverse = \"severity_warning-inverse\",\n    Warning = \"severity_warning\",\n}\n\nexport enum IconState {\n    Hidden = \"state_hidden\",\n    Ok = \"state_ok\",\n    Paused = \"state_paused\",\n    Restarting = \"state_restarting\",\n    Running = \"state_running\",\n    Shutdown = \"state_shutdown\",\n    Sleeping = \"state_sleeping\",\n    Stopped = \"state_stopped\",\n    Unknown = \"state_unknown\",\n    Unmanaged = \"state_unmanaged\",\n    Unplugged = \"state_unplugged\",\n    Visible = \"state_visible\",\n    Lock = \"state_lock\",\n    Unlock = \"state_unlock\",\n}\n\nexport enum IconWidget {\n    Chart = \"widget_chart\",\n    Dashboard = \"widget_dashboard\",\n    Gauge = \"widget_gauge\",\n    List = \"widget_list\",\n    Map = \"widget_map\",\n    Other = \"widget_other\",\n    PieChart = \"widget_pie-chart\",\n    Summary = \"widget_summary\",\n    Table = \"widget_table\",\n    Tree = \"widget_tree\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/* eslint-disable max-len */\nimport {\n    IconCategory,\n    IconCategoryNamespace,\n    IconData,\n    IconSeverity,\n    IconState,\n} from \"./types\";\n\nexport interface ITypedIconData extends IconData {\n    cat_namespace?: IconCategoryNamespace;\n    category: IconCategory;\n}\n\nexport const icons: ITypedIconData[] = [\n    {\n        svgFile: \"acknowledge.svg\",\n        name: \"acknowledge\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm0,2c1.42,0,2.57,1.64,2.57,3.67s-1.15,3.7-2.57,3.7S7.43,8.72,7.43,6.7,8.58,3,10,3Zm2.49,7.45a4.24,4.24,0,0,1-.62,1.64A2.31,2.31,0,0,1,10,13.3a2.31,2.31,0,0,1-1.88-1.17,4.24,4.24,0,0,1-.62-1.64,4.4,4.4,0,0,0-3,3.92,1.34,1.34,0,0,0,1.34,1.34h0a1.3,1.3,0,0,0,.6-.15A4.66,4.66,0,0,0,10,17a4.66,4.66,0,0,0,3.56-1.37,1.3,1.3,0,0,0,.6.15,1.34,1.34,0,0,0,1.34-1.34s0,0,0,0a4.4,4.4,0,0,0-3-3.92ZM12,10h0M8,10H8'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"add.svg\",\n        name: \"add\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm1,10h4V9H11V5H9V9H5v2H9v4h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"application.svg\",\n        name: \"application\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M1,1V18H19V1ZM18,2V4H16V2ZM15,2V4H13V2ZM12,2V4H10V2Zm6,15H2V5H18Zm-6-2H4V13h8Zm4-3H4V10H16Zm0-3H4V7H16Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"arrow-down.svg\",\n        name: \"arrow-down\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='10 17.41 4.29 11.71 5.71 10.29 9 13.59 9 3 11 3 11 13.59 14.29 10.29 15.71 11.71 10 17.41'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"arrow-left.svg\",\n        name: \"arrow-left\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='8.29 15.71 2.59 10 8.29 4.29 9.71 5.71 6.41 9 17 9 17 11 6.41 11 9.71 14.29 8.29 15.71'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"arrow-right.svg\",\n        name: \"arrow-right\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='11.71 15.71 10.29 14.29 13.59 11 3 11 3 9 13.59 9 10.29 5.71 11.71 4.29 17.41 10 11.71 15.71'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"arrow-up.svg\",\n        name: \"arrow-up\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='11 17 9 17 9 6.41 5.71 9.71 4.29 8.29 10 2.59 15.71 8.29 14.29 9.71 11 6.41 11 17'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"assign.svg\",\n        name: \"assign\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M20,0V12H16V11h3V1H9V11h3v1H8V0ZM15,6.06V12a5,5,0,0,1-5,5H7.86a4,4,0,1,1,0-2H10a3,3,0,0,0,3-3V6.06L11.53,7.53,10.47,6.47,14,2.94l3.53,3.53L16.47,7.53ZM6,16a2,2,0,1,0-2,2A2,2,0,0,0,6,16Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"blog02.svg\",\n        name: \"blog02\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M0,20l2.31-5.7A9.49,9.49,0,1,1,10.5,19a9.38,9.38,0,0,1-4.1-.94ZM10.5,1A8.49,8.49,0,0,0,3.3,14l.14.23L1.5,18.5,6.5,17l.19.09A8.4,8.4,0,0,0,10.5,18a8.5,8.5,0,0,0,0-17ZM11,5V9h2a2.44,2.44,0,0,1-2.63,2.76l1,1.3A3.75,3.75,0,0,0,15,9.2q0-.1,0-.2V5ZM8,11h2V7H6v4a3.86,3.86,0,0,0,3.55,4.14h.08l1-1.35A2.48,2.48,0,0,1,8,11Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"browse.svg\",\n        name: \"browse\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M12,7H9V6h3ZM9,9h3V8H9Zm0,2h3V10H9ZM6,11H8V10H6ZM8,6H6V7H8ZM8,8H6V9H8Zm4,6H2V2H18V9h1V1H1V15H8v3H4v1H15V18H12Zm4.91-.31L19,12.76,13,5V15.44l2.09-.93,2.2,4.9,1.82-.82ZM15,6h1V3H4V13h8V12H5V5H15Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"calendar.svg\",\n        name: \"calendar\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M15,7H9v5h6Zm-2,3H11V9h2ZM1,2V18H19V2ZM5,14H2V12H5Zm0-3H2V9H5ZM2,17V15H5v2Zm4,0V15H9v2Zm12,0H10V15h8Zm0-9H16V9h2v2H16v1h2v2H15V13H14v1H10V13H9v1H6V12H8V11H6V9H8V8H2V6H18ZM2,5V3H18V5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"caret-down.svg\",\n        name: \"caret-down\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='10 14.41 4.29 8.71 5.71 7.29 10 11.59 14.29 7.29 15.71 8.71 10 14.41'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"caret-left.svg\",\n        name: \"caret-left\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='11.29 15.71 5.59 10 11.29 4.29 12.71 5.71 8.41 10 12.71 14.29 11.29 15.71'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"caret-right.svg\",\n        name: \"caret-right\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='8.71 15.71 7.29 14.29 11.59 10 7.29 5.71 8.71 4.29 14.41 10 8.71 15.71'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"caret-up.svg\",\n        name: \"caret-up\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='14.29 12.71 10 8.41 5.71 12.71 4.29 11.29 10 5.59 15.71 11.29 14.29 12.71'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"check.svg\",\n        name: \"check\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1ZM9,14.41,4.29,9.71,5.71,8.29,9,11.59l5.29-5.3,1.42,1.42Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"clear.svg\",\n        name: \"clear\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M16,20H1V19H16ZM19,4V6l-4.5,4.5L7,18H1V14L9.5,5.5,14,1h2Zm-5.91,6.5L9.5,6.91,2,14.41V17H6.59ZM17.17,5,15,2.83,11.83,6,14,8.17Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"clock.svg\",\n        name: \"clock\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm0,17a8,8,0,1,1,8-8A8,8,0,0,1,10,18ZM10,4a6,6,0,1,0,6,6A6,6,0,0,0,10,4Zm2.92,4.62-.83-1.25L9.79,8.9,8.17,5.66l-1.34.67L9.21,11.1Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"clock_off.svg\",\n        name: \"clock_off\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'>\\n    <path fill='currentColor' d='M13.9005 3.84155C14.996 3.84155 16.0426 4.06123 16.9981 4.45961C17.9894 4.87275 18.8814 5.47933 19.6285 6.23182C20.374 6.98268 20.9763 7.88108 21.3865 8.88276C21.782 9.8451 22.0002 10.8992 22.0002 12.0009C22.0002 13.1043 21.782 14.1584 21.3865 15.1207C20.9763 16.1191 20.374 17.0175 19.6269 17.77C18.8814 18.5209 17.9894 19.1275 16.9949 19.5406C16.0394 19.939 14.9927 20.1587 13.8989 20.1587C12.8034 20.1587 11.7568 19.939 10.8013 19.5406C9.81004 19.1275 8.91804 18.5209 8.17253 17.77L8.1709 17.7684C7.42377 17.0159 6.82314 16.1175 6.41295 15.1207C6.28599 14.8109 6.17693 14.4928 6.0874 14.1666C6.25669 14.183 6.42923 14.1912 6.60339 14.1912C6.93383 14.1912 7.25612 14.1617 7.57027 14.1043C7.62236 14.2617 7.67933 14.4174 7.74118 14.5699C8.07812 15.3896 8.57296 16.1273 9.18824 16.747C9.80352 17.3667 10.5376 17.8651 11.3499 18.2045C12.1328 18.5307 12.9939 18.7127 13.8989 18.7127C14.8039 18.7127 15.6634 18.5324 16.4479 18.2045C17.2618 17.8651 17.9943 17.3667 18.6096 16.747C19.2249 16.1273 19.7197 15.388 20.0566 14.5699C20.3806 13.7813 20.5612 12.9141 20.5612 12.0026C20.5612 11.0911 20.3822 10.2254 20.0566 9.43524C19.7197 8.61553 19.2249 7.8778 18.6096 7.2581C17.9943 6.6384 17.2602 6.14002 16.4479 5.80066C15.665 5.47441 14.8039 5.29244 13.8989 5.29244C12.9939 5.29244 12.1344 5.47277 11.3499 5.80066C11.2799 5.83017 11.2099 5.86131 11.1415 5.89246C10.8746 5.46949 10.5523 5.08587 10.1828 4.75307C10.3846 4.64815 10.5913 4.55142 10.8013 4.46289C11.7601 4.06123 12.8051 3.84155 13.9005 3.84155ZM12.9711 8.12207C12.9711 7.92206 13.0525 7.74173 13.1811 7.61057C13.3113 7.47942 13.4903 7.39909 13.6889 7.39909C13.8875 7.39909 14.0666 7.47942 14.1968 7.61057C14.327 7.74173 14.4068 7.92206 14.4068 8.12207V11.9288L17.2309 13.6158C17.4002 13.7174 17.5141 13.8797 17.5597 14.0584C17.6053 14.2371 17.5841 14.4338 17.4832 14.6043V14.606C17.3823 14.7765 17.2211 14.8912 17.0437 14.9371C16.8663 14.983 16.6709 14.9617 16.5017 14.8601H16.5L13.3406 12.9715C13.2315 12.9108 13.142 12.8223 13.0769 12.7174C13.0102 12.6075 12.9711 12.478 12.9711 12.3403V8.12207Z'/>\\n    <path fill='currentColor' fill-rule='evenodd' clip-rule='evenodd' d='M6.39163 4.27441C8.81696 4.27441 10.7833 6.25483 10.7833 8.69756C10.7833 11.1403 8.81696 13.1207 6.39163 13.1207C3.96631 13.1207 2 11.1403 2 8.69756C2 6.25483 3.96631 4.27441 6.39163 4.27441ZM7.25108 7.09257C7.44803 6.89092 7.76707 6.89092 7.96566 7.09093C8.16261 7.29094 8.16424 7.61555 7.96728 7.81719L7.10458 8.69756L7.96728 9.57957C8.16261 9.77958 8.15936 10.1025 7.96077 10.3009C7.76219 10.4993 7.44478 10.4993 7.24945 10.2993L6.39163 9.42382L5.53219 10.3009C5.33523 10.5026 5.0162 10.5026 4.81761 10.3025C4.62066 10.1025 4.61903 9.77794 4.81598 9.57629L5.67868 8.69592L4.81598 7.81391C4.62066 7.61391 4.62391 7.29094 4.8225 7.09257C5.02108 6.8942 5.33849 6.8942 5.53382 7.09421L6.39163 7.96966L7.25108 7.09257Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"close.svg\",\n        name: \"close\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm4.71,12.29L11.41,10l3.29-3.29L13.29,5.29,10,8.59,6.71,5.29,5.29,6.71,8.59,10,5.29,13.29l1.41,1.41L10,11.41l3.29,3.29Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"color.svg\",\n        name: \"color\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'>\\n    <path fill='#767676'\\n          d='M58.89 40.56l4.37 12.58A5.91 5.91 0 0157.67 61a5.92 5.92 0 01-5.51-8.08L57 40.52a1 1 0 011.89.04zM25 63.1a13.06 13.06 0 009.27-3.84l25.48-25.52a2.5 2.5 0 000-3.53l-26-26a2.52 2.52 0 00-3.54 0L12.78 21.69A8 8 0 0115 6h5.5a2.5 2.5 0 000-5H15a13 13 0 000 26h20.5a2.5 2.5 0 000-5h-16L32 9.54 54.44 32 30.73 55.72A8 8 0 0125 58.1a8.06 8.06 0 01-5.73-2.37l-11-11a8.09 8.09 0 010-11.46 2.5 2.5 0 10-3.54-3.54 13.13 13.13 0 000 18.54l11 11A13 13 0 0025 63.1z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"copy.svg\",\n        name: \"copy\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M18,7.29V20H5V18H6v1H17V7.71l-1-1V5.29ZM15,17H2V0h8.71L15,4.29ZM11,4h2.29L11,1.71Zm3,12V5H10V1H3V16ZM5,14h7V12H5ZM5,8h7V6H5Zm0,3h7V9H5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"customize.svg\",\n        name: \"customize\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M3.32,20A3.33,3.33,0,0,1,1,14.34L7.4,7.89A5.91,5.91,0,0,1,8.48,1.58a6,6,0,0,1,6.74-1,.5.5,0,0,1,.13.8L11.71,5,15,8.29l3.65-3.65a.5.5,0,0,1,.8.13,6,6,0,0,1-1,6.67l0,0a5.93,5.93,0,0,1-6.34,1.12L5.67,19A3.32,3.32,0,0,1,3.32,20ZM12.6.95A5,5,0,0,0,9.19,2.29a4.91,4.91,0,0,0-.74,5.49.5.5,0,0,1-.09.58L1.67,15A2.33,2.33,0,1,0,5,18.34l6.68-6.69a.5.5,0,0,1,.57-.1,4.94,4.94,0,0,0,5.54-.79,5,5,0,0,0,1.06-4.87L15.35,9.35a.5.5,0,0,1-.71,0l-4-4a.5.5,0,0,1,0-.71l3.46-3.47A5,5,0,0,0,12.6.95ZM3.71,17.71l6-6a1,1,0,0,0-1.41-1.41l-6,6a1,1,0,1,0,1.41,1.41Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"cut.svg\",\n        name: \"cut\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M16.12,7.09a2.31,2.31,0,0,0,0-3.25.5.5,0,0,0-.66,0l-4,3.11-.68-5.48a.5.5,0,0,0-.5-.44A2.3,2.3,0,0,0,8,3.3V9.64l-1.18.91A3.43,3.43,0,0,0,2.15,11a3.43,3.43,0,0,0-.36,4.78,2.83,2.83,0,0,0,.36.36,1.2,1.2,0,0,0,.88.37c.73,0,1.68-.57,2.83-1.71a7.76,7.76,0,0,0,1.56-2l1.91-.56,1,1.72a9.71,9.71,0,0,0-.18,2c0,2.41.56,3.63,1.59,3.63h.59a3.43,3.43,0,0,0,3.13-3.63,3.47,3.47,0,0,0,0-.5,3.42,3.42,0,0,0-3.32-3.12L12,11.19Zm-.46-2.18a1.3,1.3,0,0,1-.25,1.47L11.87,9.93l-.23-1.85ZM9,3.3a1.3,1.3,0,0,1,.87-1.23l1.29,10.37a1.38,1.38,0,0,0-.35.32L9,9.74ZM3.25,14.36a1.43,1.43,0,0,1,.25-1.91l.12-.12a1.41,1.41,0,0,1,1.08-.51,1.48,1.48,0,0,1,.83.26A9.24,9.24,0,0,1,3.25,14.36Zm4.4-2.71a1.08,1.08,0,0,0-.13-.36l.86-.67.41.69Zm5.83,3.89a1.53,1.53,0,0,1,0,.25V16a1.43,1.43,0,0,1-1.17,1.53,9.26,9.26,0,0,1,0-3.23A1.43,1.43,0,0,1,13.48,15.54Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"database.svg\",\n        name: \"database\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M10,19c-4,0-8-1-8-3V4c0-2,4-3,8-3s8,1,8,3V16C18,18,14,19,10,19ZM3,13.53V16c0,.82,2.73,2,7,2s7-1.18,7-2V13.53C14.12,15.47,5.88,15.47,3,13.53ZM3,12c0,.82,2.73,2,7,2s7-1.18,7-2V9.53c-2.88,1.94-11.12,1.94-14,0ZM3,8c0,.82,2.73,2,7,2s7-1.18,7-2V5.53c-2.88,1.94-11.12,1.94-14,0ZM3,4c0,.82,2.73,2,7,2s7-1.18,7-2-2.73-2-7-2S3,3.18,3,4Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"delete.svg\",\n        name: \"delete\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M18,4H14A4,4,0,0,0,6,4H2V7H3V20H17V7h1ZM10,2a2,2,0,0,1,2,2H8A2,2,0,0,1,10,2Zm6,17H4V7H16ZM17,6H3V5H17ZM7,18H5V8H7Zm4,0H9V8h2Zm4,0H13V8h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"deselect-all.svg\",\n        name: \"deselect-all\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M19,19H6V18H18V6h1Zm-2-2H4V16H16V4h1Zm-2-2H1V1H15ZM2,14H14V2H2Zm10.71-2.71L9.41,8l3.29-3.29L11.29,3.29,8,6.59,4.71,3.29,3.29,4.71,6.59,8,3.29,11.29l1.41,1.41L8,9.41l3.29,3.29Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"deselect.svg\",\n        name: \"deselect\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M19,19H1V1H19ZM2,18H18V2H2Zm12.71-4.71L11.41,10l3.29-3.29L13.29,5.29,10,8.59,6.71,5.29,5.29,6.71,8.59,10,5.29,13.29l1.41,1.41L10,11.41l3.29,3.29Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"double-caret-down.svg\",\n        name: \"double-caret-down\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,16.41,4.29,10.71,5.71,9.29,10,13.59l4.29-4.29,1.41,1.41Zm0-5L4.29,5.71,5.71,4.29,10,8.59l4.29-4.29,1.41,1.41Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"double-caret-left.svg\",\n        name: \"double-caret-left\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M14.29,15.71,8.59,10l5.71-5.71,1.41,1.41L11.41,10l4.29,4.29Zm-5,0L3.59,10,9.29,4.29l1.41,1.41L6.41,10l4.29,4.29Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"double-caret-right.svg\",\n        name: \"double-caret-right\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10.71,15.71,9.29,14.29,13.59,10,9.29,5.71l1.41-1.41L16.41,10Zm-5,0L4.29,14.29,8.59,10,4.29,5.71,5.71,4.29,11.41,10Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"double-caret-up.svg\",\n        name: \"double-caret-up\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M14.29,15.71,10,11.41,5.71,15.71,4.29,14.29,10,8.59l5.71,5.71Zm0-5L10,6.41,5.71,10.71,4.29,9.29,10,3.59l5.71,5.71Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"download.svg\",\n        name: \"download\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm5,14H5V12H7v1h6V12h2Zm-5-2.59L6.29,8.71,7.71,7.29,9,8.59V4h2V8.59l1.29-1.29,1.41,1.41Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"drag.svg\",\n        name: \"drag\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#aaaaaa'\\n          d='M7,1H9V3H7Zm4,0h2V3H11ZM7,5H9V7H7ZM7,9H9v2H7Zm4,0h2v2H11Zm0-4h2V7H11ZM7,17H9v2H7Zm4,0h2v2H11ZM7,13H9v2H7Zm4,0h2v2H11Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"edit.svg\",\n        name: \"edit\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M17,1H14L12.71,2.29,11.29,3.71,2,13,1,14v5H6l1-1,9.29-9.29,1.41-1.41L19,6V3ZM6.3,17.29,2.71,13.7,12,4.41,15.59,8ZM18,5.59l-1,1L13.41,3l1-1h2.18L18,3.41Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"email.svg\",\n        name: \"email\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994' d='M0,3V17H20V3ZM16.75,5,10,11,3.25,5ZM2,15V5.89L10,13l8-7.11V15Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"enable.svg\",\n        name: \"enable\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm.55,14A5,5,0,0,0,13.13,6.1L11.88,7.66a3,3,0,1,1-3.75,0L6.88,6.1a5.06,5.06,0,0,0-.78.78A5,5,0,0,0,10,15,4.91,4.91,0,0,0,10.55,15ZM11,4H9v6h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"execute.svg\",\n        name: \"execute\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M6.56,20.71,7.86,11H3.11L6.78,0h9.78L14.42,6h4.76ZM5.89,9h4.25l-.7,5.29L14.83,8H11.58l2.14-6H8.22Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"export-pdf.svg\",\n        name: \"export-pdf\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M13.71,0H2V20H18V4.29ZM14,1.71,16.29,4H14ZM3,19V1H13V5h4V19Zm11.23-5.33a4,4,0,0,1,.58,0,1.83,1.83,0,0,1,.48.06c.12.05.27,0,.37.11L16,14a1.87,1.87,0,0,0-.13-.39.9.9,0,0,0-.32-.4,1.93,1.93,0,0,0-.58-.34,2.63,2.63,0,0,0-.71-.18,4.06,4.06,0,0,0-.78,0,9.78,9.78,0,0,0-1,.16,10.82,10.82,0,0,1-2-2.64c-.08-.16-.16-.32-.23-.48a13.81,13.81,0,0,0,.17-1.38V7.72l-.15.61c-.07.28-.16.54-.25.81a7.31,7.31,0,0,1-.36-1.57,4.76,4.76,0,0,1,.29-2.14A1.19,1.19,0,0,1,10,5.6a6.06,6.06,0,0,1,.25.71c.12.41.17.67.17.67a2.16,2.16,0,0,0,.36-.69,2.85,2.85,0,0,0,.1-.89,1.9,1.9,0,0,0-.2-.65.91.91,0,0,0-.22-.26.78.78,0,0,0-.69-.16c-.51.21-.51.4-.6.57a6,6,0,0,0-.26,1.31,6,6,0,0,0,0,1.48,7.3,7.3,0,0,0,.76,2.47A18.92,18.92,0,0,1,8.88,12a19.12,19.12,0,0,1-1.35,2.17A9.56,9.56,0,0,1,5.86,16a2.56,2.56,0,0,1-.37.24,3.26,3.26,0,0,1,.31-.56l.4-.59c.25-.33.38-.54.38-.54a3.82,3.82,0,0,0-.58.27,3.89,3.89,0,0,0-.6.48,3.12,3.12,0,0,0-.71.72,1.09,1.09,0,0,0-.17.7.78.78,0,0,0,.6.65,1.85,1.85,0,0,0,1.36-.55,9.39,9.39,0,0,0,1.78-2.06l1-.27c.38-.09.82-.22,1.29-.32l1.48-.31c.24,0,.49-.06.74-.1a10.13,10.13,0,0,0,1.09.68,2.32,2.32,0,0,0,1.81.32.53.53,0,0,0,.28-.44.76.76,0,0,0,0-.18l-.11.13a.47.47,0,0,1-.29.35,2.26,2.26,0,0,1-1.61-.5c-.2-.13-.38-.29-.57-.43l.14,0ZM5.4,16.45c0,.06,0,.08,0,0Zm5-2.95a11.37,11.37,0,0,0-1.23.59l-.8.5a12.2,12.2,0,0,0,1.17-2.3A12.68,12.68,0,0,0,10,10.78,10.12,10.12,0,0,0,11.86,13,9.79,9.79,0,0,0,10.4,13.5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"export.svg\",\n        name: \"export\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M2,1H12V5h4v6h1V4.29L12.71,0H1V20H14V19H2Zm11,.71L15.29,4H13ZM14,12H4V10H14Zm0-3H4V7H14ZM4,13H14v1H8v1H4Zm16,3-3.7,3.71-1.42-1.42L16.18,17H9V15h7.18l-1.3-1.29,1.42-1.42Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"external-link.svg\",\n        name: \"external-link\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M14,9h1V19H1V5H11V6H2V18H14ZM12,1V3h3.59L10.1,8.48,11.52,9.9,17,4.41V8h2V1Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"filter.svg\",\n        name: \"filter\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M.29,1,7,7.71V19.5l5-3.75v-8L18.71,1ZM2.71,2H16.29l-5,5H7.71ZM11,15.25,8,17.5V9h3Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"no-filter.svg\",\n        name: \"no-filter\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'>\\n<g transform='translate(12 12) scale(1.12) translate(-12 -12)'>\\n<path d='M15.291 10C17.5002 10 19.291 8.20914 19.291 6C19.291 3.79086 17.5002 2 15.291 2C13.0819 2 11.291 3.79086 11.291 6C11.291 8.20914 13.0819 10 15.291 10Z' fill='#DD2C00'/>\\n<path d='M16.3999 7.33207C16.3406 7.33207 16.284 7.30762 16.2427 7.26644L15.2846 6.30912L14.3265 7.26644C14.2364 7.33979 14.1063 7.33335 14.0239 7.25229C13.9415 7.16994 13.935 7.03998 14.0097 6.94991L14.9678 5.99259L14.0097 5.03526C13.9363 4.94519 13.9428 4.81523 14.0239 4.73288C14.1063 4.65053 14.2364 4.6441 14.3265 4.71873L15.2846 5.67605L16.2427 4.71873C16.3316 4.64539 16.463 4.65182 16.5454 4.73288C16.6278 4.81523 16.6342 4.94519 16.5595 5.03526L15.6014 5.99259L16.5595 6.94991C16.6226 7.01425 16.642 7.11075 16.6072 7.19439C16.5724 7.27802 16.4913 7.33207 16.4011 7.33335L16.3999 7.33207Z' fill='white'/>\\n<path d='M10.3262 5.41113C10.3036 5.6043 10.2911 5.80074 10.2911 6C10.2911 6.25257 10.3106 6.50066 10.3467 6.74316H6.33305L9.02934 10.7832H9.33989C9.44445 10.7566 9.55362 10.7422 9.66606 10.7422H10.9991C11.1113 10.7422 11.2198 10.7566 11.3243 10.7832H11.6299L12.2002 9.92871C12.5429 10.1986 12.9207 10.4258 13.3272 10.5996L12.3331 12.0771V17.541L12.3321 17.5391C12.332 18.2026 11.7935 18.7412 11.1299 18.7412C10.8358 18.7411 10.5512 18.6338 10.3321 18.4385L8.77934 17.0586C8.49525 16.8059 8.33219 16.4434 8.33208 16.0625V12.0771L5.14067 7.34082C4.81193 6.6823 5.07898 5.88168 5.73735 5.55273C5.92194 5.45994 6.12674 5.41117 6.33403 5.41113H10.3262ZM9.66606 16.0615L10.9991 17.2461V12.0762H9.66606V16.0615Z' fill='#297994'/>\\n</g>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"fullscreen.svg\",\n        name: \"fullscreen\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M19,1V9H17V4.06L12.53,8.53,11.47,7.47,15.94,3H11V1ZM8.53,12.53,7.47,11.47,3,15.94V11H1v8H9V17H4.06Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"gear.svg\",\n        name: \"gear\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,6a4,4,0,1,0,4,4A4,4,0,0,0,10,6Zm1.37,14H8.63L7.9,17.71A8.88,8.88,0,0,1,6.08,17L3.9,18,2,16.1l1-2.19a8.88,8.88,0,0,1-.75-1.82L0,11.37V8.63L2.29,7.9A8.86,8.86,0,0,1,3,6.08L2,3.9,3.9,2,6.08,3A8.86,8.86,0,0,1,7.9,2.25L8.63,0h2.73l.73,2.29A8.88,8.88,0,0,1,13.92,3L16.1,2,18,3.9,17,6.08a8.88,8.88,0,0,1,.75,1.82L20,8.63v2.73l-2.29.73A8.91,8.91,0,0,1,17,13.92l1,2.19L16.1,18l-2.19-1a8.91,8.91,0,0,1-1.82.75Zm-2-1h1.27l.67-2.12.27-.07A8,8,0,0,0,13.65,16l.23-.13,2,1,.9-.9-1-2,.13-.23a8,8,0,0,0,.85-2.07l.07-.27L19,10.63V9.37L16.88,8.7l-.07-.27A8,8,0,0,0,16,6.35l-.13-.23,1-2-.9-.9-2,1L13.65,4a8,8,0,0,0-2.07-.85l-.27-.07L10.63,1H9.37L8.69,3.12l-.27.07A8,8,0,0,0,6.35,4l-.23.13-2-1-.9.9,1,2L4,6.35a8,8,0,0,0-.85,2.07l-.07.27L1,9.37v1.27l2.12.67.07.27A8,8,0,0,0,4,13.65l.13.23-1,2,.9.9,2-1,.23.13a8,8,0,0,0,2.07.85l.27.07ZM10,12.5A2.5,2.5,0,1,1,12.5,10,2.5,2.5,0,0,1,10,12.5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"group.svg\",\n        name: \"group\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M17,7V4H10V2H1V18H16a3,3,0,0,0,3-3V7ZM3,15a1,1,0,0,1-1,1V3H9V5h7V7H3Zm14,0a1,1,0,0,1-1,1H4.83A3,3,0,0,0,5,15V9H17Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"help.svg\",\n        name: \"help\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1ZM8.79,11.54v-.47A2.09,2.09,0,0,1,9,10a3.41,3.41,0,0,1,1-1,4,4,0,0,0,.88-.77,1.12,1.12,0,0,0,.21-.67.72.72,0,0,0-.3-.63,1.46,1.46,0,0,0-.85-.22,4.89,4.89,0,0,0-2.17.62L7.07,6a6,6,0,0,1,3-.79,3.19,3.19,0,0,1,2.08.63,2,2,0,0,1,.77,1.68,2.24,2.24,0,0,1-.32,1.21,4.55,4.55,0,0,1-1.2,1.13,3.71,3.71,0,0,0-.77.69,1.07,1.07,0,0,0-.16.62v.38Zm-.2,2.17a1.07,1.07,0,0,1,.29-.81,1.16,1.16,0,0,1,.83-.27,1.12,1.12,0,0,1,.82.28,1.23,1.23,0,0,1,0,1.59,1.11,1.11,0,0,1-.81.29,1.14,1.14,0,0,1-.83-.28,1.06,1.06,0,0,1-.31-.8Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"hide.svg\",\n        name: \"hide\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M19.77,9.69a19,19,0,0,0-3.38-3.27l-.58.84A18.28,18.28,0,0,1,18.74,10c-.92,1.08-4.27,4.69-8.24,5l-.69,1H10c5.36,0,9.59-5.46,9.77-5.69L20,10ZM1.26,10c1-1.13,4.55-5,8.74-5a7.47,7.47,0,0,1,2.26.36l.6-.87A9,9,0,0,0,10,4C4.64,4,.41,9.46.23,9.69L0,10l.23.31a18.13,18.13,0,0,0,5.48,4.58l.57-.83A17.27,17.27,0,0,1,1.26,10ZM10,6a4,4,0,0,0-2.85,6.8l1.17-1.71A2,2,0,0,1,10,8a2.84,2.84,0,0,1,.42,0l1.17-1.7A3.84,3.84,0,0,0,10,6ZM6.82,18.57,5.18,17.43l11-16,1.65,1.13Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"ignore.svg\",\n        name: \"ignore\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,0A10,10,0,1,0,20,10,10,10,0,0,0,10,0Zm0,19a9,9,0,1,1,9-9A9,9,0,0,1,10,19ZM10,5a5,5,0,1,0,5,5A5,5,0,0,0,10,5Zm0,2a3,3,0,0,1,2.82,2H7.18A3,3,0,0,1,10,7Zm0,6a3,3,0,0,1-2.82-2h5.63A3,3,0,0,1,10,13Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"image.svg\",\n        name: \"image\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M0,2V12.76l-.07,0,.07.1V18H20V2ZM1,3H19V9.71l-5.46,2.66-7.09-4L1,12.07ZM1,17V14.35l.07.1,5.48-3.77,6.91,4L19,11.94V17ZM12,7a2,2,0,1,1,2,2A2,2,0,0,1,12,7Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"key.svg\",\n        name: \"key\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M6,20H0V15.29L6.74,8.55a6.15,6.15,0,0,1,.91-6.91c2.4-2.4,6.75-2,9.71,1h0c3,3,3.4,7.31,1,9.71a6.07,6.07,0,0,1-6.23,1.23L10.71,15H9v2H6ZM1,19H5V16H8V14h2.29l1.59-1.59.31.14a5.06,5.06,0,0,0,5.46-.91c2-2,1.55-5.72-1-8.28s-6.28-3-8.29-1C6.91,3.8,6.69,6.18,7.79,8.44l.16.32L1,15.71v1.59L8.65,9.65l.71.71L1,18.71Zm15.88-8.91L9.66,3.34C11,2,13.57,2.57,15.5,4.5S17.88,8.74,16.88,10.09Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"lock.svg\",\n        name: \"lock\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M16,8V7A6,6,0,0,0,4,7V8H2V20H18V8ZM7,7a3,3,0,0,1,6,0V8H7ZM17,19H3V9H17Zm-6-2H9V11h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"menu.svg\",\n        name: \"menu\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,2A2,2,0,1,1,8,4,2,2,0,0,1,10,2Zm0,6a2,2,0,1,1-2,2A2,2,0,0,1,10,8Zm0,6a2,2,0,1,1-2,2A2,2,0,0,1,10,14Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"move-down.svg\",\n        name: \"move-down\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm5.21,7.71L13.79,7.29,10,11.09,6.21,7.29,4.79,8.71,10,13.91Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"ncm-config-change-template.svg\",\n        name: \"ncm-config-change-template\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M20,2.5A2.5,2.5,0,0,0,17.5,0H4.5A2.5,2.5,0,0,0,2,2.5V15H0v2.5A2.5,2.5,0,0,0,2.5,20h12A2.5,2.5,0,0,0,17,17.5V5h3ZM2.5,19A1.5,1.5,0,0,1,1,17.5V16H12v1.5A2.49,2.49,0,0,0,12,18s0,.09,0,.14a2.48,2.48,0,0,0,.09.3l.06.15a2.47,2.47,0,0,0,.14.26l.08.13,0,.06ZM16,17.5a1.5,1.5,0,0,1-3,0V15H3V2.5A1.5,1.5,0,0,1,4.5,1H16ZM19,4H17V1h.5A1.5,1.5,0,0,1,19,2.5ZM5,5h9V7H5ZM5,8h9v2H5Zm0,3h9v2H5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"orion-ape-backup.svg\",\n        name: \"orion-ape-backup\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M7,9.26,5,8V7L7,8.26Zm0,1L5,9v1l2,1.26Zm2,9.82L0,14.79V12.31l3-1.74V4.19L11.52-.07,17,3.22V9.75l3,2v2.06ZM1,14.21l8,4.71,10-5.71v-.94L17,11V12.3L8.49,17.09,3,13.79V11.73L1,12.89Zm8-6.4v7.84l7-3.94V4.32ZM4,13.23l4,2.4V7.79L4,5.39Zm.53-8.68,4,2.4,6.95-3.47-4-2.4Zm8,8A2.5,2.5,0,0,1,10,10a2.63,2.63,0,0,1,.62-1.62l.76.65A1.61,1.61,0,0,0,11,10a1.5,1.5,0,0,0,3,0,1.4,1.4,0,0,0-.37-1l.74-.68A2.39,2.39,0,0,1,15,10,2.5,2.5,0,0,1,12.5,12.5ZM13,10H12V7h1Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"orion-sitemaster.svg\",\n        name: \"orion-sitemaster\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M15,5H5V1L7.5,3,10,0l2.5,3L15,1ZM7,8.26,5,7V8L7,9.26Zm10,1.8V3.26l-1-.63v9.08L9,15.64V7.81L12.6,6H10.37l-1.82.93L7,6H5L8,7.78v7.83L4,13.22V3.69l-1,.5v6.17L0,12v3l9,5,11-6V12.09Zm-10,.2L5,9v1l2,1.26Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"overview.svg\",\n        name: \"overview\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M10,.59.29,10.29l1.41,1.41L2,11.41V20H18V11.41l.29.29,1.41-1.41ZM12,18H8V11h4Zm4,0H13V10H7v8H4V9.41l6-6,6,6Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"patch-manager01.svg\",\n        name: \"patch-manager01\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M12.59,3H11V1h8V9H17V7.41l-.29.29L15.29,6.29,17,4.59V3H15.41L13.71,4.71,12.29,3.29ZM4.29,17.29a1.13,1.13,0,0,1-1.59,0,1.12,1.12,0,0,1,0-1.59l2-2L3.29,12.29l-2,2a3.12,3.12,0,0,0,4.41,4.41l2-2L6.29,15.29Zm15.06-3.94-6,6a.5.5,0,0,1-.71,0l-12-12a.5.5,0,0,1,0-.71l6-6a.5.5,0,0,1,.71,0l12,12A.5.5,0,0,1,19.35,13.35ZM4,9.29,9.29,4,7,1.71,1.71,7Zm6,6L15.29,10,10,4.71,4.71,10ZM18.29,13,16,10.71,10.71,16,13,18.29ZM7.45,9.07a.81.81,0,1,0,.81.81A.81.81,0,0,0,7.45,9.07ZM9.88,6.64a.81.81,0,1,0,.81.81A.81.81,0,0,0,9.88,6.64Zm0,4.85a.81.81,0,1,0,.81.81A.81.81,0,0,0,9.88,11.49ZM12.3,9.07a.81.81,0,1,0,.81.81A.81.81,0,0,0,12.3,9.07Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"plus.svg\",\n        name: \"plus\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='11 15 9 15 9 11 5 11 5 9 9 9 9 5 11 5 11 9 15 9 15 11 11 11 11 15'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"port.svg\",\n        name: \"port\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M13,19H7V15H4V13H1V1H19V13H16v2H13ZM8,18h4V14h3V12h3V2H2V12H5v2H8ZM17,8H15V3h2ZM14,8H12V3h2ZM11,8H9V3h2ZM8,8H6V3H8ZM5,8H3V3H5Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"power-off.svg\",\n        name: \"power-off\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm1,6H9v6h2Zm-1,9a6,6,0,1,1,6-6A6,6,0,0,1,10,16ZM10,6a4,4,0,1,0,4,4A4,4,0,0,0,10,6Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"power-on.svg\",\n        name: \"power-on\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm.55,14A5,5,0,0,0,13.13,6.1L11.88,7.66a3,3,0,1,1-3.75,0L6.88,6.1a5.06,5.06,0,0,0-.78.78A5,5,0,0,0,10,15,4.91,4.91,0,0,0,10.55,15ZM11,4H9v6h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"printer.svg\",\n        name: \"printer\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M19,5H16V1H4V5H1V16H3v3H17V16h2ZM5,2H15V5H5ZM15,17H5V12H15Zm3-2H17V10H3v5H2V6H18Zm-5-1H7V13h6Zm4-5H16V8h1Zm-4,7H7V15h6Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"reload.svg\",\n        name: \"reload\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,0A10,10,0,1,0,20,10,10,10,0,0,0,10,0Zm0,19a9,9,0,1,1,9-9A9,9,0,0,1,10,19Zm5.87-7.79A6,6,0,0,1,10,16a5.6,5.6,0,0,1-1.21-.13A6,6,0,0,1,5.52,6H4V4H9V9H7V7.35a3.8,3.8,0,0,0-.93,1.84A4,4,0,1,0,10.8,6.08l.4-2A6,6,0,0,1,15.87,11.21Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"remote-access-vpn-tunnel.svg\",\n        name: \"remote-access-vpn-tunnel\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M9,8V1h2V8h1.79L10,12.84,7.21,8Zm10,7v4H1V15H2V4H8V5H3V15H17V5H12V4h6V15Zm-1,1H13v1H7V16H2v2H18Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"remove.svg\",\n        name: \"remove\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm4.71,12.29L11.41,10l3.29-3.29L13.29,5.29,10,8.59,6.71,5.29,5.29,6.71,8.59,10,5.29,13.29l1.41,1.41L10,11.41l3.29,3.29Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"reset.svg\",\n        name: \"reset\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,0A10,10,0,1,0,20,10,10,10,0,0,0,10,0Zm0,19a9,9,0,1,1,9-9A9,9,0,0,1,10,19Zm0-5.25v1.5h0A5.24,5.24,0,0,1,4.75,10,5.4,5.4,0,0,1,6.59,6H5V5H9V9H8V6.82A3.86,3.86,0,0,0,6.25,10,3.76,3.76,0,0,0,10,13.75Zm3.32.25H15v1H11V11h1v2.11a3.77,3.77,0,0,0-2-7V4.65a5.24,5.24,0,0,1,4.85,3.27,5.17,5.17,0,0,1,0,4A5.27,5.27,0,0,1,13.32,14Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"run.svg\",\n        name: \"run\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1ZM6,14.52v-9L16.54,10Zm2-6v3L11.46,10Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"schedule.svg\",\n        name: \"schedule\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M4,7V9H9.1A7,7,0,0,1,14,7Zm0,3v2H7.3a7.5,7.5,0,0,1,1-2Zm3.1,3H4v2H7.1A3.4,3.4,0,0,1,7,14,3.4,3.4,0,0,1,7.1,13ZM15,15H11V13h2V10h2Zm-1,5a6.08,6.08,0,0,1-6-6,6.08,6.08,0,0,1,6-6,6.08,6.08,0,0,1,6,6A6.08,6.08,0,0,1,14,20ZM14,9a5,5,0,1,0,5,5A5.07,5.07,0,0,0,14,9ZM9,20H1V0H12.71L17,4.29V7H16V5H12V1H2V19H9ZM13,4h2.29L13,1.71Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"search.svg\",\n        name: \"search\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M18.79,20.21,14.62,16A9,9,0,1,1,16,14.62l4.18,4.18ZM9,2a7,7,0,1,0,7,7A7,7,0,0,0,9,2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"critical.svg\",\n        name: IconSeverity.Critical,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D50000' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M9,13h2v2H9V13z M9,5h2v6H9V5z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"error.svg\",\n        name: IconSeverity.Error,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#D50000' points='5.858,20 0,14.143 0,5.858 5.858,0 14.143,0 20,5.858 20,14.143 14.143,20 '/>\\r\\n<path fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' d='M14,6l-8,8 M6,6l8,8'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"info.svg\",\n        name: IconSeverity.Info,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#FFFFFF' stroke='#297994' stroke-miterlimit='10' cx='10' cy='10' r='9.5'/>\\r\\n<path fill='#297994' d='M9,5h2v2H9V5z M9,15h2V9H9V15z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"ok.svg\",\n        name: IconSeverity.Ok,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' id='Ok'\\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#30B230' cx='10' cy='10' r='10'/>\\r\\n<polyline fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' points='15,7 9,13 5,9 '/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"unknown.svg\",\n        name: IconSeverity.Unknown,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D4' cx='10' cy='10' r='10'/>\\r\\n<path fill='#90908F' d='M8.956,11.412v-0.57c0-0.434,0.088-0.799,0.266-1.098c0.177-0.298,0.491-0.589,0.941-0.872\\r\\n\\tc0.358-0.226,0.616-0.429,0.772-0.61c0.156-0.182,0.235-0.389,0.235-0.624c0-0.186-0.084-0.333-0.252-0.441\\r\\n\\tc-0.167-0.108-0.386-0.163-0.656-0.163c-0.668,0-1.448,0.236-2.341,0.709L7,5.941C8.101,5.314,9.25,5,10.448,5\\r\\n\\tc0.985,0,1.76,0.216,2.319,0.65c0.562,0.434,0.844,1.023,0.844,1.771c0,0.535-0.125,0.998-0.375,1.389\\r\\n\\tc-0.25,0.392-0.647,0.762-1.197,1.111c-0.464,0.301-0.754,0.521-0.871,0.66c-0.117,0.14-0.176,0.304-0.176,0.494v0.338L8.956,11.412\\r\\n\\tL8.956,11.412z M8.671,13.732c0-0.406,0.119-0.719,0.354-0.94C9.262,12.57,9.61,12.46,10.07,12.46c0.442,0,0.782,0.112,1.019,0.336\\r\\n\\tc0.236,0.224,0.354,0.536,0.354,0.938c0,0.401-0.123,0.714-0.367,0.935C10.829,14.891,10.495,15,10.07,15\\r\\n\\tc-0.438,0-0.781-0.109-1.028-0.329C8.795,14.453,8.671,14.141,8.671,13.732z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"warning.svg\",\n        name: IconSeverity.Warning,\n        cat_namespace: IconCategoryNamespace.Severity,\n        category: IconCategory.Severity,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#F9C700' points='20,20 0,20 10,0 '/>\\r\\n<path fill='#333333' fill-opacity='0.6' d='M11,17H9v-2h2V17z M11,7H9v6h2V7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"signal-0.svg\",\n        name: \"signal-0\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M17,19H16V1h1Zm-3,0H13V16h1Zm-4,0H9V14h1ZM7,19H6V16H7ZM4,19H3V13H4Zm10.78-5.78L11.56,10l3.22-3.22L13.22,5.22,10,8.44,6.78,5.22,5.22,6.78,8.44,10,5.22,13.22l1.56,1.55L10,11.56l3.22,3.22Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"star-full.svg\",\n        name: \"star-full\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994'\\n             points='10 0.5 13.09 6.75 19.99 7.76 14.99 12.63 16.17 19.5 10 16.25 3.83 19.5 5 12.63 0.01 7.76 6.91 6.75 10 0.5'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"ok.svg\",\n        name: IconState.Ok,\n        cat_namespace: IconCategoryNamespace.State,\n        category: IconCategory.State,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' id='Ok'\\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#30B230' cx='10' cy='10' r='10'/>\\r\\n<polyline fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' points='15,7 9,13 5,9 '/>\\r\\n</svg>\",\n    },\n    {\n        svgFile: \"acknowledged.svg\",\n        name: \"status_acknowledged\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\n<svg version='1.1'  xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'\\n\\t width='20' height='20' viewBox='0 0 20 20' style='enable-background:new 0 0 20 20;' xml:space='preserve'>\\n<g id='acknowledged'>\\n    <circle fill='#FFFFFF' cx='10' cy='10' r='10'/>\\n    <path fill='#297994' d='M10,3c1.4,0,2.6,1.7,2.6,3.7s-1.2,3.7-2.6,3.7S7.4,8.7,7.4,6.7S8.6,3,10,3z M12.5,10.5\\n    \\tc-0.1,0.6-0.3,1.2-0.6,1.6c-0.5,0.7-1.1,1.2-1.9,1.2c-0.7,0-1.4-0.5-1.9-1.2c-0.3-0.5-0.5-1-0.6-1.6c-1.8,0.7-3,2.2-3,3.9\\n    \\tc0,0.7,0.6,1.3,1.3,1.3c0.2,0,0.4-0.1,0.6-0.1c0.7,0.8,2,1.4,3.6,1.4c1.5,0,2.9-0.6,3.6-1.4c0.2,0.1,0.4,0.1,0.6,0.1\\n    \\tc0.7,0,1.3-0.6,1.3-1.3C15.5,12.7,14.3,11.2,12.5,10.5z'/>\\n</g>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"critical.svg\",\n        name: \"status_critical\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D50000' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M11,15H9v-2h2V15z M11,5H9v6h2V5z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"disabled.svg\",\n        name: \"status_disabled\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D5' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M13.98,4.25l-9.73,9.73C3.46,12.85,3,11.48,3,10c0-3.87,3.13-7,7-7C11.48,3,12.85,3.46,13.98,4.25z\\r\\n\\t M15.75,6.02l-9.73,9.73C7.15,16.54,8.52,17,10,17c3.87,0,7-3.13,7-7C17,8.52,16.54,7.15,15.75,6.02z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"down.svg\",\n        name: \"status_down\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#950000' points='5.858,20 0,14.143 0,5.858 5.858,0 14.143,0 20,5.858 20,14.143 14.143,20 '/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"external.svg\",\n        name: \"status_external\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#9966CC' cx='10' cy='10' r='10'/>\\r\\n<path fill='none' stroke='#FFFFFF' stroke-width='2' stroke-miterlimit='10' d='M7,6h6.997L14,13'/>\\r\\n<line fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' x1='14' y1='6' x2='6' y2='14'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"inactive.svg\",\n        name: \"status_inactive\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D4' cx='10' cy='10' r='10'/>\\r\\n<path fill='#90908F' d='M8.956,11.412v-0.57c0-0.434,0.088-0.799,0.266-1.098c0.177-0.298,0.491-0.589,0.941-0.872\\r\\n\\tc0.358-0.226,0.616-0.429,0.772-0.61c0.156-0.182,0.235-0.389,0.235-0.624c0-0.186-0.084-0.333-0.252-0.441\\r\\n\\tc-0.167-0.108-0.386-0.163-0.656-0.163c-0.668,0-1.448,0.236-2.341,0.709L7,5.941C8.101,5.314,9.25,5,10.448,5\\r\\n\\tc0.985,0,1.76,0.216,2.319,0.65c0.562,0.434,0.844,1.023,0.844,1.771c0,0.535-0.125,0.998-0.375,1.389\\r\\n\\tc-0.25,0.392-0.647,0.762-1.197,1.111c-0.464,0.301-0.754,0.521-0.871,0.66c-0.117,0.14-0.176,0.304-0.176,0.494v0.338L8.956,11.412\\r\\n\\tL8.956,11.412z M8.671,13.732c0-0.406,0.119-0.719,0.354-0.94C9.262,12.57,9.61,12.46,10.07,12.46c0.442,0,0.782,0.112,1.019,0.336\\r\\n\\tc0.236,0.224,0.354,0.536,0.354,0.938c0,0.401-0.123,0.714-0.367,0.935C10.829,14.891,10.495,15,10.07,15\\r\\n\\tc-0.438,0-0.781-0.109-1.028-0.329C8.795,14.453,8.671,14.141,8.671,13.732z'/>\\r\\n</svg>\",\n    },\n    {\n        svgFile: \"issues.svg\",\n        name: \"status_issues\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#F9C700' points='20,20 0,20 10,0 '/>\\r\\n<path fill='#333333' fill-opacity='0.6' d='M11,17H9v-2h2V17z M11,7H9v6h2V7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"missing.svg\",\n        name: \"status_missing\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#BD6ADF' cx='10' cy='10' r='10'/>\\r\\n<circle fill='#FFFFFF' cx='10' cy='10' r='5'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"mixed.svg\",\n        name: \"status_mixed\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#F9C700' points='20,20 0,20 10,0 '/>\\r\\n<path fill='#333333' fill-opacity='0.6' d='M11,17H9v-2h2V17z M11,7H9v6h2V7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"reserved.svg\",\n        name: \"status_reserved\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#9966CC' cx='10' cy='10' r='10'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"notrunning.svg\",\n        name: \"status_notrunning\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D5' cx='10' cy='10' r='10'/>\\r\\n<path fill='none' stroke='#D50000' stroke-width='1.5' stroke-miterlimit='10' d='M14,6l-8,8 M6,6l8,8'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"shutdown.svg\",\n        name: \"status_shutdown\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D5' cx='10' cy='10' r='10'/>\\r\\n<path fill='none' stroke='#D50000' stroke-width='1.5' stroke-miterlimit='10' d='M14,6l-8,8 M6,6l8,8'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"sleep.svg\",\n        name: \"status_sleep\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#7590C9' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M15,10l-2.898,3H15v2h-5v-2l2.904-3H10V8h5V10z M10,7V5H5v2h2.904L5,10v2h5v-2H7.102L10,7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"standby.svg\",\n        name: \"status_standby\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#004EFF' cx='10' cy='10' r='10'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"suspended.svg\",\n        name: \"status_suspended\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#3399CC' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M9,6H7v8h2V6z M13,6h-2v8h2V6z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"testing.svg\",\n        name: \"status_testing\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D3D3D3' cx='10' cy='10' r='10'/>\\r\\n<polyline fill='none' stroke='#646464' stroke-width='1.5' stroke-miterlimit='10' points='15,7 9,13 5,9 '/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"thresholds.svg\",\n        name: \"thresholds\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'>\\n<path fill='#767676' d='M39.88 49.79h-.26A3 3 0 0137.13 48L24.5 19.3l-8 12.33A3 3 0 0114 33H3a3 3 0 010-6h9.37l10.11-15.63A3 3 0 0125.24 10a3 3 0 012.51 1.78l12.66 28.77 6.09-9.21A3 3 0 0149 30h11a3 3 0 010 6h-9.39l-8.23 12.44a3 3 0 01-2.5 1.35z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"transient.svg\",\n        name: \"status_transient\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#6BBAE2' cx='10' cy='10' r='10'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"undefined.svg\",\n        name: \"status_undefined\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D4' cx='10' cy='10' r='10'/>\\r\\n<path fill='#90908F' d='M8.956,11.412v-0.57c0-0.434,0.088-0.799,0.266-1.098c0.177-0.298,0.491-0.589,0.941-0.872\\r\\n\\tc0.358-0.226,0.616-0.429,0.772-0.61c0.156-0.182,0.235-0.389,0.235-0.624c0-0.186-0.084-0.333-0.252-0.441\\r\\n\\tc-0.167-0.108-0.386-0.163-0.656-0.163c-0.668,0-1.448,0.236-2.341,0.709L7,5.941C8.101,5.314,9.25,5,10.448,5\\r\\n\\tc0.985,0,1.76,0.216,2.319,0.65c0.562,0.434,0.844,1.023,0.844,1.771c0,0.535-0.125,0.998-0.375,1.389\\r\\n\\tc-0.25,0.392-0.647,0.762-1.197,1.111c-0.464,0.301-0.754,0.521-0.871,0.66c-0.117,0.14-0.176,0.304-0.176,0.494v0.338L8.956,11.412\\r\\n\\tL8.956,11.412z M8.671,13.732c0-0.406,0.119-0.719,0.354-0.94C9.262,12.57,9.61,12.46,10.07,12.46c0.442,0,0.782,0.112,1.019,0.336\\r\\n\\tc0.236,0.224,0.354,0.536,0.354,0.938c0,0.401-0.123,0.714-0.367,0.935C10.829,14.891,10.495,15,10.07,15\\r\\n\\tc-0.438,0-0.781-0.109-1.028-0.329C8.795,14.453,8.671,14.141,8.671,13.732z'/>\\r\\n</svg>\",\n    },\n    {\n        svgFile: \"unknown.svg\",\n        name: \"status_unknown\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#D5D5D4' cx='10' cy='10' r='10'/>\\r\\n<path fill='#90908F' d='M8.956,11.412v-0.57c0-0.434,0.088-0.799,0.266-1.098c0.177-0.298,0.491-0.589,0.941-0.872\\r\\n\\tc0.358-0.226,0.616-0.429,0.772-0.61c0.156-0.182,0.235-0.389,0.235-0.624c0-0.186-0.084-0.333-0.252-0.441\\r\\n\\tc-0.167-0.108-0.386-0.163-0.656-0.163c-0.668,0-1.448,0.236-2.341,0.709L7,5.941C8.101,5.314,9.25,5,10.448,5\\r\\n\\tc0.985,0,1.76,0.216,2.319,0.65c0.562,0.434,0.844,1.023,0.844,1.771c0,0.535-0.125,0.998-0.375,1.389\\r\\n\\tc-0.25,0.392-0.647,0.762-1.197,1.111c-0.464,0.301-0.754,0.521-0.871,0.66c-0.117,0.14-0.176,0.304-0.176,0.494v0.338L8.956,11.412\\r\\n\\tL8.956,11.412z M8.671,13.732c0-0.406,0.119-0.719,0.354-0.94C9.262,12.57,9.61,12.46,10.07,12.46c0.442,0,0.782,0.112,1.019,0.336\\r\\n\\tc0.236,0.224,0.354,0.536,0.354,0.938c0,0.401-0.123,0.714-0.367,0.935C10.829,14.891,10.495,15,10.07,15\\r\\n\\tc-0.438,0-0.781-0.109-1.028-0.329C8.795,14.453,8.671,14.141,8.671,13.732z'/>\\r\\n</svg>\",\n    },\n    {\n        svgFile: \"unmanaged.svg\",\n        name: \"status_unmanaged\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#7591CA' cx='10' cy='10' r='10'/>\\r\\n<path fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' d='M14,6l-8,8 M6,6l8,8'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"unplugged.svg\",\n        name: \"status_unplugged\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#3CAADD' cx='10' cy='10' r='10'/>\\r\\n<path fill='#FFFFFF' d='M15,9h-3V7h3V9z M15,11h-3v2h3V11z M9,6c-2.21,0-4,1.79-4,4s1.79,4,4,4h2V6H9z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"unreachable.svg\",\n        name: \"status_unreachable\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='utf-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>\\r\\n<svg version='1.0' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#646464' cx='10' cy='10' r='10'/>\\r\\n<path fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' d='M14,6l-8,8 M6,6l8,8'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"up.svg\",\n        name: \"status_up\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' id='Ok'\\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<circle fill='#30B230' cx='10' cy='10' r='10'/>\\r\\n<polyline fill='none' stroke='#FFFFFF' stroke-width='1.5' stroke-miterlimit='10' points='15,7 9,13 5,9 '/>\\r\\n</svg>\",\n    },\n    {\n        svgFile: \"used.svg\",\n        name: \"status_used\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#F9C700' points='20,20 0,20 10,0 '/>\\r\\n<path fill='#333333' fill-opacity='0.6' d='M11,17H9v-2h2V17z M11,7H9v6h2V7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"warning.svg\",\n        name: \"status_warning\",\n        cat_namespace: IconCategoryNamespace.Status,\n        category: IconCategory.HealthStatus,\n        code: \"<?xml version='1.0' encoding='UTF-8'?>\\r\\n<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\\r\\n<svg version='1.1' \\r\\n\\t xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:a='http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/'\\r\\n\\t x='0px' y='0px' viewBox='0 0 20 20' width='20' height='20' enable-background='new 0 0 20 20' xml:space='preserve'>\\r\\n<polygon fill='#F9C700' points='20,20 0,20 10,0 '/>\\r\\n<path fill='#333333' fill-opacity='0.6' d='M11,17H9v-2h2V17z M11,7H9v6h2V7z'/>\\r\\n</svg>\\r\\n\",\n    },\n    {\n        svgFile: \"step-active.svg\",\n        name: \"step-active\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <circle fill='#204a63' cx='10' cy='10' r='10'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"step-complete.svg\",\n        name: \"step-complete\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Zm5.53,6.53L14.47,6.47,9,11.94,5.53,8.47,4.47,9.53,9,14.06Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"step.svg\",\n        name: \"step\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#aaaaaa'\\n          d='M10,20A10,10,0,1,1,20,10,10,10,0,0,1,10,20ZM10,1a9,9,0,1,0,9,9A9,9,0,0,0,10,1Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"table.svg\",\n        name: \"table\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M0,2V17H20V2Zm7,9h6v2H7Zm6-1H7V8h6ZM6,8v2H1V8Zm0,5H1V11H6ZM1,16V14H6v2Zm6,0V14h6v2Zm12,0H14V14h5Zm0-3H14V11h5Zm0-3H14V8h5ZM14,4h4V6H14ZM8,4h4V6H8ZM2,4H6V6H2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"tag.svg\",\n        name: \"tag\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M7.71,20H0V12.29L12.17.13A1.25,1.25,0,0,1,13-.21a1.18,1.18,0,0,1,.83.37l6,6a1.21,1.21,0,0,1,.36.88,1.18,1.18,0,0,1-.37.83ZM1,19H7.29L19.15,7.15a.22.22,0,0,0,0-.28l-6-6a.21.21,0,0,0-.28,0L12.5.5l.35.35L1,12.71Zm18.35-7.65-.71-.71-8,8,.71.71ZM13.53,5.53,12.47,4.47l-7,7,1.06,1.06Zm0,4L12.47,8.47l-5,5,1.06,1.06Zm-10,8.72A1.75,1.75,0,1,1,5.25,16.5,1.75,1.75,0,0,1,3.5,18.25Zm0-2.5a.75.75,0,1,0,.75.75A.75.75,0,0,0,3.5,15.75Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"tools.svg\",\n        name: \"tools\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M3.31,19.94A3.32,3.32,0,0,1,1,14.28L7.38,7.86A5.89,5.89,0,0,1,8.45,1.58a6,6,0,0,1,6.72-1,.5.5,0,0,1,.13.8L11.67,5,15,8.26l3.63-3.63A.5.5,0,0,1,19,4.49a.5.5,0,0,1,.37.27,5.92,5.92,0,0,1-1,6.64l0,0a5.91,5.91,0,0,1-6.32,1.12L5.66,19A3.31,3.31,0,0,1,3.31,19.94Zm9.25-19a5,5,0,0,0-3.4,1.33,4.89,4.89,0,0,0-.74,5.47.5.5,0,0,1-.09.58L1.67,15A2.32,2.32,0,0,0,5,18.26l6.66-6.66a.5.5,0,0,1,.57-.1,4.93,4.93,0,0,0,5.52-.79,4.93,4.93,0,0,0,1.06-4.85L15.31,9.32a.5.5,0,0,1-.71,0l-4-4a.5.5,0,0,1,0-.71l3.45-3.45A5,5,0,0,0,12.56.95ZM3.7,17.64l6-6a1,1,0,1,0-1.41-1.41l-6,6A1,1,0,1,0,3.7,17.64Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"tools.svg\",\n        name: \"tools\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M14,5V1H6V5H1V19H19V5ZM7,3h6V5H7ZM18,18H2V11H4v2H6V11h8v2h2V11h2Zm0-8H16V9H14v1H6V9H4v1H2V6H18Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"triangle-down.svg\",\n        name: \"triangle-down\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994' points='5 7 15 7 10 13 5 7'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"triangle-left.svg\",\n        name: \"triangle-left\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994' points='13 5 13 15 7 10 13 5'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"triangle-right.svg\",\n        name: \"triangle-right\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994' points='7 15 7 5 13 10 7 15'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"triangle-up.svg\",\n        name: \"triangle-up\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <polygon fill='#297994' points='15 13 5 13 10 7 15 13'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"undo.svg\",\n        name: \"undo\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,0A10,10,0,1,0,20,10,10,10,0,0,0,10,0Zm0,19a9,9,0,1,1,9-9A9,9,0,0,1,10,19Zm7-8v1H15V11a4,4,0,0,0-8-.41L8.29,9.32l1.42,1.42L7,13.44l-1,1-1-1-2.71-2.7L3.71,9.32,5,10.63A6,6,0,0,1,17,11Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"upload.svg\",\n        name: \"upload\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M10,0A10,10,0,1,0,20,10,10,10,0,0,0,10,0Zm0,19a9,9,0,1,1,9-9A9,9,0,0,1,10,19Zm5-4H5V12H7v1h6V12h2ZM13.71,7.29,12.29,8.71,11,7.41V12H9V7.41L7.71,8.71,6.29,7.29,10,3.59Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"user.svg\",\n        name: \"user\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M10,11.75C7.62,11.75,5.75,9.22,5.75,6S7.62.25,10,.25,14.25,2.83,14.25,6,12.34,11.75,10,11.75Zm0-10C8.51,1.75,7.25,3.7,7.25,6S8.51,10.25,10,10.25,12.75,8.3,12.75,6,11.49,1.75,10,1.75ZM10.34,20H10A6.79,6.79,0,0,1,5,18.22a2.3,2.3,0,0,1-.71.11A2.33,2.33,0,0,1,2,16a6.48,6.48,0,0,1,4.44-5.81L7,10l.09.59a5.24,5.24,0,0,0,.77,2A2.64,2.64,0,0,0,10,14a2.62,2.62,0,0,0,2.09-1.35,5.3,5.3,0,0,0,.78-2.07L13,10l.56.19A6.47,6.47,0,0,1,18,16v0a2.33,2.33,0,0,1-2.33,2.33,2.27,2.27,0,0,1-.71-.11A6.86,6.86,0,0,1,10.34,20ZM10,19a5.92,5.92,0,0,0,4.52-1.72l.26-.26.33.17a1.29,1.29,0,0,0,.59.14A1.33,1.33,0,0,0,17,16a5.47,5.47,0,0,0-3.23-4.67A6.24,6.24,0,0,1,13,13.17,3.61,3.61,0,0,1,10,15a3.64,3.64,0,0,1-3-1.86,6.15,6.15,0,0,1-.78-1.8A5.47,5.47,0,0,0,3,16a1.33,1.33,0,0,0,1.33,1.3,1.28,1.28,0,0,0,.59-.14L5.25,17l.26.26A5.89,5.89,0,0,0,10,19Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"user.svg\",\n        name: \"user\",\n        category: IconCategory.Tab,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M10,11.25c-2.38,0-4.25-2.53-4.25-5.75S7.62-.25,10-.25s4.25,2.58,4.25,5.75S12.34,11.25,10,11.25Zm0-10C8.51,1.25,7.25,3.2,7.25,5.5S8.51,9.75,10,9.75,12.75,7.8,12.75,5.5,11.49,1.25,10,1.25ZM10.34,20H10A6.79,6.79,0,0,1,5,18.22a2.3,2.3,0,0,1-.71.11A2.33,2.33,0,0,1,2,16a6.48,6.48,0,0,1,4.44-5.81L7,10l.09.59a5.25,5.25,0,0,0,.77,2A2.64,2.64,0,0,0,10,14a2.61,2.61,0,0,0,2.09-1.34,5.31,5.31,0,0,0,.78-2.07L13,10l.56.19A6.47,6.47,0,0,1,18,16v0a2.33,2.33,0,0,1-2.33,2.33,2.3,2.3,0,0,1-.71-.11A6.85,6.85,0,0,1,10.34,20ZM10,19a5.86,5.86,0,0,0,4.52-1.72l.26-.26.33.17a1.29,1.29,0,0,0,.59.14A1.33,1.33,0,0,0,17,16a5.47,5.47,0,0,0-3.23-4.67A6.25,6.25,0,0,1,13,13.17,3.6,3.6,0,0,1,10,15a3.64,3.64,0,0,1-3-1.85,6.17,6.17,0,0,1-.78-1.8A5.47,5.47,0,0,0,3,16a1.33,1.33,0,0,0,1.33,1.3,1.28,1.28,0,0,0,.59-.14L5.25,17l.26.26A5.87,5.87,0,0,0,10,19Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"virtual-host.svg\",\n        name: \"virtual-host\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#767676'\\n          d='M2,18H4v2H2Zm14,2h2V18H16Zm-5-4.07V18h4v2H5V18H9V15.93a8,8,0,1,1,2,0ZM14.3,3.17,14.92,3A7,7,0,0,0,11.11,1.1c.25.33.53.74.84,1.23a2.19,2.19,0,0,1,2.36.84ZM12.75,12.5a.75.75,0,1,0,.75-.75A.75.75,0,0,0,12.75,12.5Zm-1-8a.75.75,0,1,0,.75-.75A.75.75,0,0,0,11.75,4.5ZM10.7,5.83A12.42,12.42,0,0,0,8.18,8a2.19,2.19,0,0,1,.31,2.51,11.27,11.27,0,0,0,2.95,1.08,2.25,2.25,0,0,1,2-1.35,10.59,10.59,0,0,0-.51-3.55,2.18,2.18,0,0,1-2.19-.88ZM6.5,8.75a.75.75,0,1,0,.75.75A.75.75,0,0,0,6.5,8.75ZM6,11.67a12.5,12.5,0,0,0-.52,1.62,6.94,6.94,0,0,0,7.09,1.23,2.24,2.24,0,0,1-1.27-1.93,12.33,12.33,0,0,1-3.43-1.29A2.16,2.16,0,0,1,6,11.67ZM17,8a7,7,0,0,0-1.33-4.09c-.32,0-.64.13-1,.21a2.18,2.18,0,0,1-.9,2.21,11.57,11.57,0,0,1,.57,4.11A2.26,2.26,0,0,1,15.7,12,7,7,0,0,0,17,8ZM3.32,5.92A15.43,15.43,0,0,0,5,7.87a2.24,2.24,0,0,1,2.42-.44A13.43,13.43,0,0,1,10.29,4.9a2.18,2.18,0,0,1,.76-2.11A18.1,18.1,0,0,0,9.78,1,7,7,0,0,0,3.32,5.92Zm1.3,6.56q.19-.64.44-1.26A2.2,2.2,0,0,1,4.4,8.72,17.47,17.47,0,0,1,3,7.22a6.93,6.93,0,0,0,1.58,5.25Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"xml-file.svg\",\n        name: \"xml-file\",\n        cat_namespace: IconCategoryNamespace.Object,\n        category: IconCategory.Object,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='#767676'><g id='shapes'><polygon points='4.29 8.29 0.59 12 4.29 15.71 5.71 14.29 3.41 12 5.71 9.71 4.29 8.29'/><rect x='3.61' y='11' width='10.77' height='2' transform='translate(-5.48 15.9) rotate(-68.2)'/><polygon points='13.71 15.71 17.41 12 13.71 8.29 12.29 9.71 14.59 12 12.29 14.29 13.71 15.71'/><path d='M14.71,0H3V7H4V1H14V5h4V19H4V17H3v3H19V4.29ZM15,1.71,17.29,4H15Z'/></g></svg>\",\n    },\n    {\n        svgFile: \"zoom-in.svg\",\n        name: \"zoom-in\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M18.65,19.35,15,15.71a9,9,0,1,1,.71-.71l3.65,3.65ZM9,1a8,8,0,1,0,8,8A8,8,0,0,0,9,1Zm1,9h4V8H10V4H8V8H4v2H8v4h2Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"zoom-out.svg\",\n        name: \"zoom-out\",\n        cat_namespace: IconCategoryNamespace.Command,\n        category: IconCategory.Command,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n    <path fill='#297994'\\n          d='M18.65,19.35,15,15.71a9,9,0,1,1,.71-.71l3.65,3.65ZM9,1a8,8,0,1,0,8,8A8,8,0,0,0,9,1Zm5,7H4v2H14Z'/>\\n</svg>\\n\",\n    },\n    {\n        svgFile: \"widget_list.svg\",\n        name: \"widget_list\",\n        category: IconCategory.Widget,\n        cat_namespace: IconCategoryNamespace.Widget,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n\\t<path fill=\\\"#767676\\\" d=\\\"M16 7h-9v-2h9zM16 9h-9v2h9zM16 13h-9v2h9zM6 5h-2v2h2zM6 9h-2v2h2zM6 13h-2v2h2zM19 1h-18v18h18zM2 2h16v16h-16z\\\"></path>\\n</svg>\",\n    },\n    {\n        svgFile: \"widget_pie-chart.svg\",\n        name: \"widget_pie-chart\",\n        category: IconCategory.Widget,\n        cat_namespace: IconCategoryNamespace.Widget,\n        code: \"<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'>\\n\\t<path fill=\\\"#767676\\\" d=\\\"M9 20c-4.971 0-9-4.029-9-9s4.029-9 9-9v0 1c-4.418 0-8 3.582-8 8s3.582 8 8 8c4.418 0 8-3.582 8-8v0h1c0 4.971-4.029 9-9 9v0z\\\"></path>\\n<path fill=\\\"#767676\\\" d=\\\"M10 0c5.476 0.115 9.885 4.524 10 9.989l0 0.011h-10z\\\"></path>\\n</svg>\",\n    },\n];\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./types\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\nimport { icons } from \"./icons\";\nimport { IconCategoryNamespace, IconData } from \"./public-api\";\n\n/** @ignore */\ninterface IStatus {\n    [key: string]: string;\n}\n/** @ignore */\ninterface IName {\n    [key: string]: IconData;\n}\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class IconService {\n    public icons: IconData[] = icons;\n    private statuses: IStatus;\n    private names: IName;\n\n    constructor() {\n        this.updateIconStatusesAndNames();\n    }\n\n    public getIconData(iconName: string): IconData {\n        return this.names[iconName];\n    }\n\n    public getStatusIcon(status: string): string {\n        return this.statuses[status];\n    }\n\n    public getIconResized(\n        iconCode: string,\n        iconNewSize: number,\n        viewBox?: string\n    ): string {\n        return `<g transform=\"translate(-${iconNewSize / 2}, -${\n            iconNewSize / 2\n        })\">\n                    <svg height=\"${iconNewSize}\" width=\"${iconNewSize}\" viewBox=\"${\n            viewBox ? viewBox : \"0 0 20 20\"\n        }\">\n                        ${iconCode}\n                    </svg>\n                </g>`;\n    }\n\n    /**\n     * Allows registering additional icons from other sources\n     *\n     * @param iconsList\n     */\n    public registerIcons(iconsList: IconData[]): void {\n        this.icons.push(...iconsList);\n\n        this.updateIconStatusesAndNames();\n    }\n\n    private updateIconStatusesAndNames() {\n        this.statuses = this.icons\n            .filter((iconData) => {\n                if (iconData.cat_namespace === IconCategoryNamespace.Status) {\n                    return iconData;\n                }\n            })\n            .reduce((acc: any, curr) => {\n                acc[curr.name.split(IconCategoryNamespace.Status)[1]] =\n                    curr.code;\n                return acc;\n            }, {});\n\n        // ensure unique icons by name, so only the last one is available\n        this.names = this.icons.reduce((acc: any, curr) => {\n            acc[curr.name] = curr;\n            return acc;\n        }, {});\n    }\n}\n","export interface A11yGraphicOptions {\n    decorative?: boolean; // undefined treated as true by caller if desired\n    explicitRole?: \"img\" | \"presentation\" | null;\n    label?: string | null;\n    hasAlt?: boolean; // true if native <img alt> exists\n    statusParts?: string[]; // additional semantic qualifiers (statuses)\n}\n\nexport interface A11yGraphicResult {\n    role: string | null;\n    ariaHidden: string | null;\n    ariaLabel: string | null;\n}\n\n/**\n * Computes role, aria-hidden, and aria-label for graphics (icons/images) with consistent rules:\n * - Decorative defaults to presentation + aria-hidden\n * - role=\"img\" only if a non-empty accessible name is available\n * - Explicit role overrides are honored but guarded against invalid accessible name cases\n */\nexport function computeA11yForGraphic(\n    opts: A11yGraphicOptions\n): A11yGraphicResult {\n    const decorative = opts.decorative !== false; // undefined => decorative\n    const normalizedLabel = normalizeLabel(\n        decorative ? null : opts.label ?? null\n    );\n    const statusLabel = buildStatusLabel(normalizedLabel, opts.statusParts);\n\n    let role: string | null = null;\n    if (decorative) {\n        role = \"presentation\";\n    } else if (opts.explicitRole) {\n        if (opts.explicitRole === \"img\") {\n            role = normalizedLabel ? \"img\" : null;\n        } else if (opts.explicitRole === \"presentation\") {\n            role = \"presentation\";\n        }\n    } else {\n        // Infer role from presence of alt or label\n        if (opts.hasAlt || normalizedLabel) {\n            role = \"img\";\n        } else {\n            role = \"presentation\";\n        }\n    }\n\n    const ariaHidden = role !== \"img\" ? \"true\" : null;\n\n    // Provide aria-label only if role is img, no native alt, and we have a label\n    const ariaLabel = role === \"img\" && !opts.hasAlt ? statusLabel : null;\n\n    return { role, ariaHidden, ariaLabel };\n}\n\nfunction normalizeLabel(raw: string | null | undefined): string | null {\n    if (!raw) {\n        return null;\n    }\n    const trimmed = raw.trim();\n    return trimmed.length ? trimmed : null;\n}\n\nfunction buildStatusLabel(\n    base: string | null,\n    parts?: string[]\n): string | null {\n    if (!base) {\n        return null;\n    }\n    const valid = (parts || []).map((p) => p?.trim()).filter((p) => !!p);\n    return valid.length ? `${base} ${valid.join(\" \")}` : base;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CommonModule } from \"@angular/common\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ViewEncapsulation,\n    computed,\n    inject,\n    input,\n} from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\n\nimport { IconService } from \"./icon.service\";\nimport { IconData, IconStatus } from \"./types\";\nimport { computeA11yForGraphic } from \"../../functions/a11y-graphics.util\";\n\n/**\n * <example-url>./../examples/index.html#/icon</example-url>\n */\n\n@Component({\n    selector: \"nui-icon\",\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: \"./icon.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: \"nui-icon-wrapper\",\n        \"[attr.role]\": \"computedRole()\",\n        \"[attr.aria-hidden]\": \"computedAriaHidden()\",\n        \"[attr.aria-label]\": \"computedAriaLabel()\",\n    },\n    styleUrls: [\"./icon.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class IconComponent {\n    public static SIZE_MAP: { [key: string]: string } = {\n        medium: \"nui-icon-size-md\",\n        small: \"nui-icon-size-sm\",\n    };\n\n    private iconService = inject(IconService);\n    private sanitizer = inject(DomSanitizer);\n\n    public iconColor = input<string>();\n    public brushType = input<string>(\"filled\");\n    public iconHoverColor = input<string>();\n    public iconSize = input<string>();\n    public cssClass = input<string>();\n    public fillContainer = input<boolean>(false);\n    public status = input<IconStatus>();\n    public childStatus = input<IconStatus>();\n    public icon = input<string>();\n    public counter = input<string | number | undefined, string | number | undefined>(undefined, {\n        transform: (value) => {\n            if (value == null) {\n                return undefined;\n            }\n            const counterAttrValue = +value;\n            return Number.isInteger(counterAttrValue) ? counterAttrValue.toString() : undefined;\n        },\n    });\n\n    /**\n     * Marks the icon as purely decorative. Decorative icons are hidden from assistive technologies.\n     */\n    public decorative = input<boolean>();\n    /**\n     * Accessible name for a meaningful icon. Ignored if `decorative` is true or empty.\n     */\n    public ariaLabel = input<string>();\n    /**\n     * Optional explicit role override. Constrained to 'img' | 'presentation' | null.\n     * If omitted, role is inferred from `decorative` and `ariaLabel`.\n     */\n    public explicitRole = input<\"img\" | \"presentation\" | null>();\n\n    private iconData = computed<IconData | undefined>(() => {\n        const iconName = this.icon();\n        return iconName ? this.iconService.getIconData(iconName) : undefined;\n    });\n\n    private iconFound = computed(() => !!this.iconData());\n\n    public iconClass = computed(() => {\n        const classes: string[] = [\"nui-icon\"];\n\n        if (!this.iconFound()) {\n            classes.push(\"nui-icon-not-found\");\n        } else {\n            const brushType = this.brushType();\n            if (brushType) {\n                classes.push(brushType);\n            }\n\n            const iconColor = this.iconColor();\n            if (iconColor) {\n                classes.push(\"custom-icon-color\", `${iconColor}-icon`);\n            }\n\n            const iconHoverColor = this.iconHoverColor();\n            if (iconHoverColor) {\n                classes.push(`${iconHoverColor}-hover-icon`);\n            }\n\n            const iconSize = this.iconSize();\n            const sizeClass = iconSize ? IconComponent.SIZE_MAP[iconSize] : undefined;\n            if (sizeClass) {\n                classes.push(sizeClass);\n            }\n\n            const cssClass = this.cssClass();\n            if (cssClass) {\n                classes.push(cssClass);\n            }\n\n            if (this.fillContainer()) {\n                classes.push(\"nui-icon--fill-container\");\n            }\n        }\n\n        return classes.join(\" \");\n    });\n\n    public resultingSvg = computed<SafeHtml>(() => {\n        const iconData = this.iconData();\n        const status = this.status();\n        const childStatus = this.childStatus();\n\n        let svg = `<div class='nui-icon-item'>${iconData?.code ?? \"\"}</div>`;\n\n        if (status) {\n            svg += `<div class=\"nui-icon-item nui-icon-item__child\">${this.getIconByStatus(status)}</div>`;\n        }\n\n        if (childStatus) {\n            svg += `<div class=\"nui-icon-item nui-icon-item__grand-child\">${this.getIconByStatus(childStatus)}</div>`;\n        }\n\n        return this.sanitizer.bypassSecurityTrustHtml(svg);\n    });\n\n    private a11y = computed(() => {\n        const statusParts: string[] = [];\n        const status = this.status();\n        const childStatus = this.childStatus();\n\n        if (status) {\n            statusParts.push(status.toLowerCase());\n        }\n        if (childStatus) {\n            statusParts.push(childStatus.toLowerCase());\n        }\n\n        return computeA11yForGraphic({\n            decorative: this.decorative(),\n            explicitRole: this.explicitRole(),\n            label: this.ariaLabel() || this.icon() || null,\n            hasAlt: false,\n            statusParts,\n        });\n    });\n\n    public computedRole = computed(() => this.a11y().role);\n    public computedAriaHidden = computed(() => this.a11y().ariaHidden);\n    public computedAriaLabel = computed(() => this.a11y().ariaLabel);\n\n    public getIconByStatus(status: string): string {\n        if (!status) {\n            return \"\";\n        }\n        return this.iconService.getStatusIcon(status);\n    }\n}\n","<i\n    [ngClass]=\"iconClass()\"\n    [attr.icon]=\"icon()\"\n    [attr.counter]=\"counter()\"\n    [attr.status]=\"status() | lowercase\"\n>\n    <div class=\"nui-svg-wrapper\" [innerHTML]=\"resultingSvg()\"></div>\n</i>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentChecked,\n    Attribute,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { fromEvent, merge, Subject, timer } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\nimport { ButtonSizeType } from \"./public-api\";\nimport { buttonConstants } from \"../../constants/button.constants\";\nimport { LoggerService } from \"../../services/log-service\";\n\n// <example-url>./../examples/index.html#/button</example-url>\n\n@Component({\n    selector: \"[nui-button]\",\n    templateUrl: \"./button.component.html\",\n    host: {\n        \"[attr.aria-busy]\": \"isBusy || null\",\n        class: \"nui-button btn\",\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\"./button.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class ButtonComponent implements OnInit, OnDestroy, AfterContentChecked {\n    /**\n     * Optionally, specify the display style. Supported values are \"default\", \"primary\", \"action\", and \"destructive\".\n     */\n    @Input() public displayStyle: string;\n    /**\n     * Optionally, specify an icon to be displayed within the button.\n     */\n    @Input() public icon: string;\n    /**\n     * Optionally, specify an icon color. Note: The icon color for displayStyle \"primary\" is \"white\" and is not configurable.\n     */\n    @Input() public get iconColor(): string {\n        return this._iconColor ? this._iconColor : \"\";\n    }\n    public set iconColor(value: string) {\n        this._iconColor = value;\n    }\n    /**\n     * Optionally, modify the placement of the icon. If true, the icon is placed to the right of the button's text; otherwise, it's\n     * placed to the left.\n     */\n    @Input() public iconRight: boolean;\n    /**\n     * Optionally, set the current busy state of the button.\n     */\n    @Input() public isBusy: boolean;\n    /**\n     * Optionally, set whether to apply special styling for a button consisting of an icon by itself with no accompanying text\n     * (the special styling reduces min-width, adjusts padding, etc.). Note: If no value is provided for this input and\n     * the button has no inner content, the empty button styling will still be applied.\n     */\n    @Input() public isEmpty: boolean;\n\n    /** Sets aria-label for the component */\n    @Input() public ariaLabel: string = \"\";\n\n    /**\n     * Optionally, set whether to fire a \"click\" event repeatedly while the button is pressed.\n     */\n    @Input() public isRepeat = false;\n    /**\n     * Optionally, set the size of the button. Supported values are \"compact\", \"default\", and \"large\".\n     */\n    // TODO: Remove this setter/getter logic in scope of NUI-3475\n    @Input() public get size(): ButtonSizeType {\n        return this._size;\n    }\n    public set size(value: ButtonSizeType) {\n        this._size =\n            (value as string) === \"small\" ? ButtonSizeType.compact : value;\n    }\n\n    @HostBinding(\"class.btn-lg\")\n    public get sizeClassLarge(): boolean {\n        return this.size === \"large\";\n    }\n\n    @HostBinding(\"class.btn-xs\")\n    public get sizeClassCompact(): boolean {\n        return this.size === \"compact\";\n    }\n\n    @HostBinding(\"class.icon-right\")\n    public get iconRightClass(): boolean {\n        return this.iconRight;\n    }\n\n    @HostBinding(\"class.icon-left\")\n    public get iconleftClass(): boolean {\n        return !this.iconRight;\n    }\n\n    @HostBinding(\"class.is-busy\")\n    public get isBusyClass(): boolean {\n        return this.isBusy;\n    }\n\n    @HostBinding(\"class.is-empty\")\n    public get isEmptyClass(): boolean {\n        return this.isEmpty ?? this._isContentEmpty;\n    }\n\n    @HostBinding(\"class.btn-primary\")\n    public get dispStylePrimClass(): boolean {\n        return this.displayStyle === \"primary\";\n    }\n\n    @HostBinding(\"class.btn-action\")\n    public get dispStyleActionClass(): boolean {\n        return this.displayStyle === \"action\";\n    }\n\n    @HostBinding(\"class.btn-destructive\")\n    public get displayStyleDestructiveClass(): boolean {\n        return this.displayStyle === \"destructive\";\n    }\n\n    @HostBinding(\"class.btn-default\")\n    public get dispStyleDefaultClass(): boolean {\n        return (\n            this.displayStyle === \"default\" ||\n            !(\n                this.dispStylePrimClass ||\n                this.dispStyleActionClass ||\n                this.displayStyleDestructiveClass\n            )\n        );\n    }\n\n    @HostBinding(\"attr.aria-label\")\n    public get ariaIconLabel(): string {\n        return this.ariaLabel || this.getAriaLabel();\n    }\n\n    @ViewChild(\"contentContainer\", { static: true, read: ViewContainerRef })\n    private contentContainer: ViewContainerRef;\n\n    private ngUnsubscribe: Subject<void> = new Subject<void>();\n    private _iconColor: string;\n    private _isContentEmpty: boolean;\n    private _size: ButtonSizeType;\n\n    constructor(\n        @Attribute(\"type\") private type: string,\n        private el: ElementRef,\n        private logger: LoggerService\n    ) {\n        if (this.getHostElement().tagName === \"BUTTON\" && !type) {\n            this.logger.error(\n                `No type specified for button element. To avoid potential problems, the \"type\" attribute \\\nshould be set explicitly: `,\n                el.nativeElement\n            );\n        }\n    }\n\n    public ngOnInit(): void {\n        this.setupRepeatEvent();\n    }\n\n    public ngAfterContentChecked(): void {\n        if (this.isEmpty === undefined) {\n            this.setIsContentEmptyValue();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n\n    /**\n     * Passes correct size of icon to inner HTML template.\n     */\n    public getIconSize(): string {\n        return this.size\n            ? buttonConstants.iconSizeMap[this.size.toLowerCase()]\n            : \"\";\n    }\n\n    /**\n     * Passes correct styles to inner HTML template for displaying busy state.\n     */\n    public getRippleContainerStyle(): Partial<CSSStyleDeclaration> {\n        const host = this.getHostElement();\n        const d = Math.max(host.offsetWidth, host.offsetHeight);\n        const x = Math.floor((host.offsetWidth - d) / 2);\n        const y = Math.floor((host.offsetHeight - d) / 2);\n\n        return {\n            left: `${x}px`,\n            top: `${y}px`,\n            width: `${d}px`,\n            height: `${d}px`,\n        };\n    }\n\n    private getAriaLabel() {\n        // In chrome once innerText gets touched in a native element this caused issues in table-sticky-header NUI-6033\n        return this._isContentEmpty\n            ? this.icon\n            : this.contentContainer.element.nativeElement.textContent.trim();\n    }\n\n    private setIsContentEmptyValue() {\n        const innerHTML = this.contentContainer.element.nativeElement.innerHTML;\n        this._isContentEmpty = !innerHTML || !innerHTML.trim();\n    }\n\n    private setupRepeatEvent() {\n        const hostElement = this.getHostElement();\n        const mouseUp$ = fromEvent(hostElement, \"mouseup\").pipe(\n            takeUntil(this.ngUnsubscribe)\n        );\n        const mouseLeave$ = fromEvent(hostElement, \"mouseleave\").pipe(\n            takeUntil(this.ngUnsubscribe)\n        );\n        fromEvent(hostElement, \"mousedown\")\n            .pipe(\n                takeUntil(this.ngUnsubscribe),\n                filter(() => this.isRepeat)\n            )\n            .subscribe(() => {\n                const repeatSubscription = timer(\n                    buttonConstants.repeatDelay,\n                    buttonConstants.repeatInterval\n                )\n                    .pipe(\n                        takeUntil(\n                            merge(mouseUp$, mouseLeave$, this.ngUnsubscribe)\n                        )\n                    )\n                    .subscribe(() => {\n                        if (hostElement.disabled) {\n                            repeatSubscription.unsubscribe();\n                        } else {\n                            hostElement.click();\n                        }\n                    });\n            });\n    }\n\n    private getHostElement() {\n        return this.el.nativeElement;\n    }\n}\n","<div\n    *ngIf=\"isBusy\"\n    [ngStyle]=\"getRippleContainerStyle()\"\n    class=\"nui-button-ripple-container\"\n>\n    <div class=\"ripple ripple-1\"></div>\n    <div class=\"ripple ripple-2\"></div>\n</div>\n<nui-icon\n    class=\"nui-button__icon\"\n    *ngIf=\"icon\"\n    [icon]=\"icon\"\n    [iconSize]=\"getIconSize()\"\n    [iconColor]=\"iconColor\"\n></nui-icon>\n<div #contentContainer class=\"nui-button__content\">\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/* eslint-disable */\n/** @ignore */\nexport const imagesData = [\n    {\n        svgFile: \"watermark-data.svg\",\n        name: \"no-data-to-show\",\n        brushType: \"filled\",\n        code: \"<svg width='169.5' height='116.09' viewBox='0 0 169.5 116.09'><defs><style aria-hidden='true'>.nui-image-watermark-data-1,.nui-image-watermark-data-2{fill:#707070;}.nui-image-watermark-data-1{fill-opacity:0.2;}.nui-image-watermark-data-2{fill-opacity:0.2;}.nui-image-watermark-data-3,.nui-image-watermark-data-6{fill:#fff;}.nui-image-watermark-data-3,.nui-image-watermark-data-5,.nui-image-watermark-data-6{stroke:#707070;}.nui-image-watermark-data-3,.nui-image-watermark-data-5{stroke-linecap:round;stroke-linejoin:round;}.nui-image-watermark-data-4{fill:#d5d5d5;}.nui-image-watermark-data-5{fill:none;}.nui-image-watermark-data-6{stroke-miterlimit:10;}</style></defs><title>empty-data</title><g id='empty-data'><path class='nui-image-watermark-data-1' d='M169.5,62.09c0-5-12.31-9-27.5-9s-27.5,4-27.5,9v45c0,5,12.31,9,27.5,9s27.5-4,27.5-9Z'/><polygon class='nui-image-watermark-data-2' points='144 24.47 93.77 5 74.5 12.47 124.73 31.94 144 24.47'/><polygon class='nui-image-watermark-data-2' points='55.23 5 5 24.47 24.27 31.94 74.5 12.47 55.23 5'/><polygon class='nui-image-watermark-data-2' points='124.73 31.94 124.5 32.03 124.5 31.85 74.5 12.47 24.5 31.85 24.5 32.03 24.27 31.94 5 39.41 24.5 46.97 24.5 78.88 74.5 98.26 124.5 78.88 124.5 46.97 144 39.41 124.73 31.94'/><polygon class='nui-image-watermark-data-3' points='120 27.44 120 74.38 70 93.76 20 74.38 20 27.44 70 7.97 120 27.44'/><polygon class='nui-image-watermark-data-4' points='70 7.97 120 27.44 70 46.76 20 27.44 70 7.97'/><line class='nui-image-watermark-data-5' x1='70' y1='93.59' x2='70' y2='8.18'/><polygon class='nui-image-watermark-data-3' points='70 7.97 120.23 27.44 139.5 19.97 89.27 0.5 70 7.97'/><polygon class='nui-image-watermark-data-3' points='70 7.97 19.77 27.44 0.5 19.97 50.73 0.5 70 7.97'/><polygon class='nui-image-watermark-data-3' points='70 46.91 120.23 27.44 139.5 34.91 89.27 54.38 70 46.91'/><polygon class='nui-image-watermark-data-3' points='70 46.91 19.77 27.44 0.5 34.91 50.73 54.38 70 46.91'/><path class='nui-image-watermark-data-6' d='M137.5,78.59c-15.19,0-27.5,4-27.5,9v15c0,5,12.31,9,27.5,9s27.5-4,27.5-9v-15C165,82.62,152.69,78.59,137.5,78.59Z'/><ellipse class='nui-image-watermark-data-6' cx='137.5' cy='87.59' rx='27.5' ry='9'/><path class='nui-image-watermark-data-6' d='M137.5,63.59c-15.19,0-27.5,4-27.5,9v15c0,5,12.31,9,27.5,9s27.5-4,27.5-9v-15C165,67.62,152.69,63.59,137.5,63.59Z'/><ellipse class='nui-image-watermark-data-6' cx='137.5' cy='72.59' rx='27.5' ry='9'/><path class='nui-image-watermark-data-6' d='M137.5,48.59c-15.19,0-27.5,4-27.5,9v15c0,5,12.31,9,27.5,9s27.5-4,27.5-9v-15C165,52.62,152.69,48.59,137.5,48.59Z'/><ellipse class='nui-image-watermark-data-6' cx='137.5' cy='57.59' rx='27.5' ry='9'/></g></svg>\",\n    },\n    {\n        svgFile: \"watermark-search.svg\",\n        name: \"no-search-results\",\n        brushType: \"filled\",\n        code: \"<svg width='200.6' height='131.17' viewBox='0 0 200.6 131.17'><defs><style aria-hidden='true'>.nui-image-watermark-search-1{fill:#707070;opacity:0.2;}.nui-image-watermark-search-2,.nui-image-watermark-search-5{fill:#fff;}.nui-image-watermark-search-2,.nui-image-watermark-search-4,.nui-image-watermark-search-5{stroke:#707070;}.nui-image-watermark-search-2,.nui-image-watermark-search-4{stroke-linecap:round;stroke-linejoin:round;}.nui-image-watermark-search-3{fill:#d5d5d5;}.nui-image-watermark-search-4{fill:none;}.nui-image-watermark-search-5{stroke-miterlimit:10;}</style></defs><title>empty-search</title><g id='empty-search'><polygon class='nui-image-watermark-search-1' points='124.73 64.85 124.42 64.97 123.99 64.8 124.29 64.68 124.73 64.85 144 57.38 93.77 37.91 74.5 45.38 93.68 52.81 87.85 50.62 74.5 45.38 61.15 50.62 55.32 52.81 74.5 45.38 55.23 37.91 5 57.38 24.27 64.85 24.71 64.68 25.01 64.8 24.58 64.97 24.27 64.85 5 72.32 24.5 79.88 24.5 111.79 74.5 131.17 124.5 111.79 124.5 79.88 144 72.32 124.73 64.85'/><polygon class='nui-image-watermark-search-2' points='120 60.5 120 107.29 70 126.67 20 107.29 20 60.5 70 40.88 120 60.5'/><polygon class='nui-image-watermark-search-3' points='70 41.09 120.23 60.01 70 79.67 19.77 60.01 70 41.09'/><line class='nui-image-watermark-search-4' x1='70' y1='126.5' x2='70' y2='40.5'/><path class='nui-image-watermark-search-2' d='M70,40.88l50.23,19.47,19.27-7.47L89.27,33.41Zm0,0L19.77,60.35.5,52.88,50.73,33.41Zm0,38.94,50.23-19.47,19.27,7.47L89.27,87.29Zm0,0L19.77,60.35.5,67.82,50.73,87.29Z'/><path class='nui-image-watermark-search-1' d='M198,103.5l-22-22a7.74,7.74,0,0,0-7.09-2.11l-8.73-8.73a40.11,40.11,0,1,0-6.11,5.89l8.83,8.83A7.77,7.77,0,0,0,165,92.5l22,22a7.77,7.77,0,0,0,11,0h0A7.77,7.77,0,0,0,198,103.5Z'/><rect class='nui-image-watermark-search-5' x='152.26' y='63.8' width='8.49' height='18.38' transform='translate(-5.77 132.04) rotate(-45)'/><rect class='nui-image-watermark-search-5' x='169.23' y='70.17' width='15.56' height='46.67' rx='7.78' ry='7.78' transform='translate(-14.27 152.55) rotate(-45)'/><circle class='nui-image-watermark-search-5' cx='125' cy='40.5' r='40'/><circle class='nui-image-watermark-search-5' cx='125' cy='40.5' r='32'/></g></svg>\",\n    },\n];\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { IImagesPresetItem } from \"../lib/image/public-api\";\n\nexport const imagesPresetToken = new InjectionToken<Array<IImagesPresetItem>>(\n    \"IMAGES_PRESET\"\n);\n\n// This ts file used to supply the image data for the whole nui library.  However, there is an angular bug that prevents\n// loading certain files in this manner: https://github.com/angular/angular/issues/20931\n// To get around this, we changed all references to the images to be direct.  This can be reverted after the angular\n// bug has been addressed.\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const unitConversionToken = new InjectionToken<IUnitConversionConstants>(\n    \"unit-conversion.constant\"\n);\n\nexport interface IUnitConversionConstants {\n    generic: string[];\n    bytes: string[];\n    bytesPerSecond: string[];\n    bitsPerSecond: string[];\n    hertz: string[];\n    milliseconds: string[];\n    percent: string[];\n}\n\nexport type TUnitConversionBases = {\n    [Key in keyof IUnitConversionConstants]: number[] | number;\n};\n\n/** Standard base values used in unit conversion */\nexport enum UnitBase {\n    Standard = 1000,\n    Bytes = 1024,\n}\n\n/**\n * Unit display values used in unit conversion\n */\nexport const unitConversionConstants: IUnitConversionConstants = {\n    generic: [\"\", \"K\", \"M\", \"B\", \"T\", \"Qa\", \"Qi\", \"Sx\", \"Sp\"],\n    bytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"],\n    bytesPerSecond: [\n        \"Bps\",\n        \"kBps\",\n        \"MBps\",\n        \"GBps\",\n        \"TBps\",\n        \"PBps\",\n        \"EBps\",\n        \"ZBps\",\n        \"YBps\",\n    ],\n    bitsPerSecond: [\n        \"bps\",\n        \"kbps\",\n        \"Mbps\",\n        \"Gbps\",\n        \"Tbps\",\n        \"Pbps\",\n        \"Ebps\",\n        \"Zbps\",\n        \"Ybps\",\n    ],\n    hertz: [\"Hz\", \"kHz\", \"MHz\", \"GHz\", \"THz\", \"PHz\", \"EHz\", \"ZHz\", \"YHz\"],\n    milliseconds: [\"ms\", \"s\", \"m\", \"h\", \"d\"],\n    percent: [\"%\"],\n};\n\nexport const unitConversionBases: TUnitConversionBases = {\n    generic: UnitBase.Standard,\n    bytes: UnitBase.Bytes,\n    bytesPerSecond: UnitBase.Standard,\n    bitsPerSecond: UnitBase.Standard,\n    hertz: UnitBase.Standard,\n    milliseconds: [1, 1_000, 60_000, 3_600_000, 86_400_000],\n    percent: UnitBase.Standard,\n};\n\n/** Available options for unit conversion */\nexport type UnitOption = keyof IUnitConversionConstants;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport enum SelectionType {\n    All = \"Select all items on this page\",\n    UnselectAll = \"Unselect all items on this page\",\n    None = \"Unselect all items\",\n    AllPages = \"Select all items on all pages\",\n}\n\nexport enum CheckboxStatus {\n    Checked = \"checked\",\n    Indeterminate = \"indeterminate\",\n    Unchecked = \"unchecked\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface ISortedItem {\n    sortBy: any;\n    direction: SorterDirection;\n}\n\nexport interface ISorterChanges {\n    newValue: ISortedItem;\n    oldValue: ISortedItem;\n}\n\nexport enum SorterDirection {\n    ascending = \"asc\",\n    descending = \"desc\",\n    original = \"original\", // This means that sorting will not be applied\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { BehaviorSubject, Subject } from \"rxjs\";\n\nimport { IMenuGroup } from \"../../lib/menu/public-api\";\nimport { RepeatSelectionMode } from \"../../lib/repeat/types\";\nimport { CheckboxStatus, SelectionType } from \"../../lib/selector/public-api\";\nimport { SorterDirection } from \"../../lib/sorter/public-api\";\nimport { ISelection } from \"../public-api\";\n\nexport interface IFilterItem<T> {\n    [key: string]: T;\n}\nexport interface IFilterGroup<T> {\n    [key: string]: T;\n}\nexport interface IMultiFilterMetadata {\n    allCategories: string[];\n}\nexport interface IMultiFilter {\n    [key: string]: IFilter<string[], IMultiFilterMetadata>;\n}\nexport interface IFilteringOutputs {\n    [key: string]: any;\n}\nexport interface INovaFilteringOutputs extends IFilteringOutputs {\n    repeat?: Repeat;\n    paginator?: Paginator;\n    selector?: Selector;\n}\nexport interface Repeat {\n    itemsSource: any[];\n    selectedItems?: any[];\n}\nexport interface Selector {\n    selectorState?: ISelectorState;\n    selection?: ISelection;\n}\nexport interface Paginator {\n    total: number;\n    reset?: boolean;\n}\nexport interface IFilterPub<F extends IFilters = IFilters> {\n    onDestroy$?: Subject<void>;\n    detectFilterChanges?: boolean;\n    resetFilter?: () => void;\n    getFilters: () => F;\n}\nexport interface IFilters {\n    [key: string]: any;\n}\nexport interface INovaFilters extends IFilters {\n    search?: IFilter<string>;\n    paginator?: IFilter<IRange<number>>;\n    sorter?: IFilter<ISorterFilter>;\n    timerange?: IFilter<IRange<number>>;\n    selection?: any;\n    virtualScroll?: IFilter<IRange<number>>;\n    [key: string]: IFilter<any> | undefined;\n}\nexport interface IFilteringParticipant {\n    componentInstance: IFilterPub;\n}\nexport interface ISorterFilter {\n    sortBy: string;\n    direction: SorterDirection;\n}\nexport interface IRepeatFilter {\n    selection: any[];\n    itemsSource: any[];\n    selectionMode: RepeatSelectionMode;\n    selectionHasChanged: boolean;\n}\nexport interface ISelectorFilter {\n    selectorState: ISelectorState;\n    status: SelectionType;\n}\nexport interface ISelectorState {\n    checkboxStatus: CheckboxStatus;\n    selectorItems: IMenuGroup[];\n}\nexport interface IFilter<T, E = any> extends IFilters {\n    type: string;\n    value: T;\n    metadata?: E;\n}\nexport interface IRange<T> {\n    start: T;\n    end: T;\n}\nexport interface IFilteringParticipants {\n    [key: string]: IFilteringParticipant;\n}\nexport const defaultFilters: INovaFilters = {\n    search: {\n        type: \"string\",\n        value: \"\",\n    },\n    sorter: {\n        type: \"sorter\",\n        value: {\n            sortBy: \"\",\n            direction: SorterDirection.original,\n        },\n    },\n    paginator: {\n        type: \"range\",\n        value: {\n            start: 0,\n            end: 5,\n        },\n    },\n};\n\nexport interface IDataSourceError {\n    type: string | number;\n    message?: string;\n}\n\nexport interface IDataSourceOutput<T> {\n    result: T;\n    error?: IDataSourceError;\n}\n\nexport interface IDataSource<T extends IFilteringOutputs = IFilteringOutputs> {\n    outputsSubject: Subject<any | IDataSourceOutput<T>>;\n    busy?: Subject<boolean>;\n    features?: IDataSourceFeaturesConfiguration;\n    dataFieldsConfig?: IDataFieldsConfig;\n    applyFilters(): Promise<void>;\n    registerComponent(components: Partial<IFilteringParticipants>): void;\n    deregisterComponent?(componentKey: string): void;\n    getFilters?(): IFilters;\n    resetFilterComponent?(componentName: string): boolean;\n}\n\nexport interface IDataSourceFeaturesConfiguration {\n    featuresChanged: Subject<IDataSourceFeatures>;\n    getSupportedFeatures: () => IDataSourceFeatures | undefined;\n    setSupportedFeatures: (features: IDataSourceFeatures) => void;\n    getFeatureConfig: (key: string) => IDataSourceFeature | undefined; // should it be?\n}\n\nexport interface IDataSourceFeatures {\n    search?: IDataSourceFeature;\n    sorting?: IDataSourceFeature;\n    pagination?: IDataSourceFeature;\n    [key: string]: IDataSourceFeature | undefined;\n}\n\nexport interface IDataSourceFeature {\n    enabled: boolean;\n    metadata?: {\n        [key: string]: any;\n    };\n}\n\nexport interface IDataSourceDrilldown extends IDataSource {\n    busy?: BehaviorSubject<boolean>;\n}\n\nexport interface IDataFieldsConfig {\n    dataFields$: BehaviorSubject<IDataField[]>;\n}\n\n// TODO: mark dataType field as optional in vNext, because previously it was used only for TableWidget,\n//  but IDataField is using in DataSource now so that consumers are required to fill these fields - will be done in the scope of NUI-5836\nexport interface IDataField {\n    id: string;\n    label: string;\n    dataType: string;\n    sortable?: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ComponentRef, EventEmitter } from \"@angular/core\";\nimport noop from \"lodash/noop\";\n\nimport { DialogBackdropComponent } from \"./dialog-backdrop.component\";\nimport { ContentRef } from \"../../services/content-ref\";\n\n/**\n * @ignore\n */\nexport class NuiDialogRef {\n    private resolve: (result?: any) => void;\n    private reject: (reason?: any) => void;\n\n    get componentInstance(): any {\n        if (this.contentRef && this.contentRef.componentRef) {\n            return this.contentRef.componentRef.instance;\n        }\n    }\n\n    public closed$ = new EventEmitter();\n    public beforeDismissed$ = new EventEmitter();\n\n    result: Promise<any>;\n\n    constructor(\n        public windowCmptRef?: ComponentRef<any>,\n        private contentRef?: ContentRef,\n        private backdropCmptRef?: ComponentRef<DialogBackdropComponent>,\n        private beforeDismiss?: Function\n    ) {\n        windowCmptRef?.instance.dismissEvent.subscribe((reason: any) => {\n            this.dismiss(reason);\n        });\n        if (windowCmptRef?.instance.closeEvent) {\n            windowCmptRef.instance.closeEvent.subscribe((result: any) => {\n                this.close(result);\n            });\n        }\n\n        this.result = new Promise((resolve, reject) => {\n            this.resolve = resolve;\n            this.reject = reject;\n        });\n        this.result.then(null, noop);\n    }\n\n    public close(result?: any): void {\n        if (this.windowCmptRef) {\n            this.resolve(result);\n            this.removeDialogElements();\n            this.closed$.emit(result);\n        }\n    }\n\n    public dismiss(reason?: any): void {\n        if (this.windowCmptRef) {\n            this.beforeDismissed$.emit(reason);\n            if (!this.beforeDismiss || this.beforeDismiss(reason) !== false) {\n                this.reject(reason);\n                this.removeDialogElements();\n                this.closed$.emit(reason);\n            }\n        }\n    }\n\n    private removeDialogElements() {\n        const windowNativeEl = this.windowCmptRef?.location.nativeElement;\n        windowNativeEl.parentNode.removeChild(windowNativeEl);\n        this.windowCmptRef?.destroy();\n\n        if (this.backdropCmptRef) {\n            const backdropNativeEl =\n                this.backdropCmptRef.location.nativeElement;\n            backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n            this.backdropCmptRef.destroy();\n        }\n\n        if (this.contentRef && this.contentRef.viewRef) {\n            this.contentRef.viewRef.destroy();\n        }\n\n        this.windowCmptRef = undefined;\n        this.backdropCmptRef = undefined;\n        this.contentRef = undefined;\n    }\n}\n/** @ignore */\nexport class NuiActiveDialog {\n    close(result?: any): void {\n        noop();\n    }\n    dismiss(reason?: any): void {\n        noop();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Subject, Subscription } from \"rxjs\";\n\nimport { NotificationHandler } from \"./notification-service\";\n\nexport * from \"./data-source/public-api\";\n\nexport interface IEventPropagationService {\n    targetShouldPropagate(event: Event): boolean;\n}\n\nexport { NuiActiveDialog } from \"../lib/dialog/dialog-ref\";\n\nexport interface IEdgeDetectionResult {\n    placed: {\n        top: boolean;\n        right: boolean;\n        bottom: boolean;\n        left: boolean;\n    };\n    aligned: {\n        top: boolean;\n        right: boolean;\n        bottom: boolean;\n        left: boolean;\n    };\n}\n\nexport interface IEdgeDetectionCoordinates {\n    left: number;\n    top: number;\n}\n\nexport interface IEdgeDetectionProperties {\n    position: IEdgeDetectionCoordinates;\n    height: number;\n}\nexport interface IEdgeDetectionService {\n    canBe(\n        basePointElement: Element,\n        placedElement: Element\n    ): IEdgeDetectionResult;\n}\n\nexport interface IEdgeDefinerMeasurements {\n    position: IEdgeDetectionCoordinates;\n    width: number;\n    height: number;\n    scrollY: number;\n    scrollX: number;\n}\n\nexport interface ISearchService {\n    search(\n        items: any[],\n        properties: string[],\n        searchValue: any,\n        dateFormat?: string\n    ): any[];\n}\n\nexport interface INotificationService {\n    subscribe(channel: string, handler: NotificationHandler): Subscription;\n    post(channel: string, args: any): void;\n}\n\n/** @ignore */\nexport interface ITransientCache {\n    put: (key: string, value: any, lifetime: number) => Promise<void>;\n    get: (key: string) => any;\n    remove: (key: string) => void;\n    removeAll: () => void;\n    destroy: () => void;\n    entryCount: () => number;\n    size: () => number;\n}\n\n/**\n * The result of a unit conversion returned by the UnitConversionService's convert method\n */\nexport interface IUnitConversionResult {\n    /** Serves as an index into the exported 'unitConversionConstants' for determining which unit string display value to use. */\n    order: number;\n    /** The converted value as a string */\n    value: string;\n    /** The converted value in exponential form */\n    scientificNotation: string;\n    /** The maximum number of significant digits to display to the right of the decimal */\n    scale?: number;\n}\n\nexport interface ISelection {\n    exclude: any[];\n    include: any[];\n    isAllPages: boolean;\n}\n\nexport class SelectionModel implements ISelection {\n    public exclude: any[] = [];\n    public include: any[] = [];\n    public isAllPages: boolean = false;\n\n    constructor(selection: Partial<ISelection> = {}) {\n        Object.assign(this, selection);\n    }\n}\n\nexport class IEvent<T = any> {\n    id?: string;\n    payload?: T;\n    [key: string]: any;\n}\n\nexport interface IEventDefinition<T = any> {\n    id: string;\n    subjectFactory?: () => Subject<T>;\n}\n\nexport class EventDefinition<T> implements IEventDefinition<IEvent<T>> {\n    constructor(\n        public id: string,\n        public subjectFactory?: () => Subject<IEvent<T>>\n    ) {}\n\n    public toString(): string {\n        return this.id;\n    }\n}\n\nexport interface IVirtualPageConfig {\n    /**\n     * The required property that should be passed on initialization.\n     * IMPORTANT: It should be equal to pageSize requested from the server.\n     */\n    pageSize: number;\n    /**\n     * Set this boolean to false if the first batch of data will be loaded/requested\n     * externally by a different entity (ex. search, sort, etc.).\n     * When true, VirtualViewportManager will request/emit the first page range event automatically.\n     */\n    emitFirstPage?: boolean;\n}\n\n/**\n * VirtualViewportManager reset configuration options\n */\nexport interface IVirtualViewportResetOptions\n    extends Required<Pick<IVirtualPageConfig, \"emitFirstPage\">> {\n    /**\n     * Set this boolean to false if the first batch of data will be loaded/requested\n     * externally by a different entity (ex. search, sort, etc.).\n     * When true, VirtualViewportManager will request/emit the first page range event automatically.\n     * Default: true\n     */\n    emitFirstPage: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkDrag, DropListRef } from \"@angular/cdk/drag-drop\";\nimport { TrackByFunction } from \"@angular/core\";\n\nexport enum RepeatSelectionMode {\n    multi = \"multi\",\n    single = \"single\",\n    singleWithRequiredSelection = \"singleWithRequiredSelection\",\n    radio = \"radio\",\n    radioWithNonRequiredSelection = \"radioWithNonRequiredSelection\",\n    none = \"none\",\n}\n\nexport enum PaddingOptions {\n    normal = \"normal\",\n    compact = \"compact\",\n}\n\nexport interface IItemsReorderedEvent<T = IRepeatItem> {\n    previousIndex: number;\n    currentIndex: number;\n    item: CdkDrag<T>;\n    previousState: T[];\n    currentState: T[];\n    dropListRef: DropListRef;\n}\n\nexport interface ITypedRepeatItem {\n    disabled?: boolean;\n}\n\nexport type IRepeatItem = ITypedRepeatItem | any;\n\nexport interface IRepeatItemConfig<T extends IRepeatItem = IRepeatItem> {\n    isDisabled?: (params: T) => boolean;\n    isDraggable?: (params: T) => boolean;\n    trackBy?: TrackByFunction<T>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, Optional, TrackByFunction } from \"@angular/core\";\nimport _differenceWith from \"lodash/differenceWith\";\nimport _intersectionWith from \"lodash/intersectionWith\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport _reject from \"lodash/reject\";\nimport _unionWith from \"lodash/unionWith\";\n\nimport { CheckboxStatus, SelectionType } from \"./public-api\";\nimport { LoggerService } from \"../../services/log-service\";\nimport {\n    ISelection,\n    ISelectorState,\n    SelectionModel,\n} from \"../../services/public-api\";\nimport { IMenuGroup } from \"../menu/public-api\";\nimport { RepeatSelectionMode } from \"../repeat/types\";\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class SelectorService {\n    /**\n     * Map if SelectionType to internationalized selector options\n     */\n    public i18nTitleMap: Record<string, string> = {};\n\n    constructor(@Optional() private logger?: LoggerService) {\n        this.i18nTitleMap[\n            SelectionType.All\n        ] = $localize`Select all items on this page`;\n        this.i18nTitleMap[\n            SelectionType.AllPages\n        ] = $localize`Select all items on all pages`;\n        this.i18nTitleMap[SelectionType.None] = $localize`Unselect all items`;\n        this.i18nTitleMap[\n            SelectionType.UnselectAll\n        ] = $localize`Unselect all items on this page`;\n    }\n\n    // TODO: think about an ability to provide isEqual function from outside\n\n    /**\n     * Allows to react on changes of a selector component.\n     * If user has selected one of the options in a selector (Select all items pages, Select all items on all pages),\n     * the new selection object should be created.\n     * @param {ISelection} currentSelection\n     * @param {any[]} currentItems Items on current page\n     * @param {SelectionType} selectorValue\n     * @param {number} totalItems\n     * @param trackBy\n     * @param {boolean} virtualScroll Enables virtual scroll selection behavior\n     * @returns {ISelection} New selection object\n     */\n    public applySelector(\n        currentSelection: ISelection,\n        currentItems: any[],\n        selectorValue: SelectionType,\n        totalItems: number,\n        trackBy: TrackByFunction<any> = (i, d) => d,\n        virtualScroll?: boolean\n    ): ISelection {\n        if (virtualScroll) {\n            if (\n                selectorValue === SelectionType.AllPages ||\n                selectorValue === SelectionType.All\n            ) {\n                return new SelectionModel({ isAllPages: true });\n            }\n            return new SelectionModel();\n        }\n\n        if (selectorValue === SelectionType.AllPages) {\n            return new SelectionModel({ isAllPages: true });\n        }\n\n        const trackedItems = currentItems.map((value, index) =>\n            trackBy(index, value)\n        );\n        if (currentSelection.isAllPages) {\n            if (selectorValue === SelectionType.All) {\n                return new SelectionModel({\n                    isAllPages: true,\n                    exclude: _differenceWith(\n                        currentSelection.exclude,\n                        trackedItems,\n                        _isEqual\n                    ),\n                });\n            }\n\n            if (selectorValue === SelectionType.UnselectAll) {\n                return new SelectionModel({\n                    isAllPages: true,\n                    exclude: _unionWith(\n                        currentSelection.exclude,\n                        trackedItems,\n                        _isEqual\n                    ),\n                });\n            }\n        } else {\n            if (selectorValue === SelectionType.All) {\n                return new SelectionModel({\n                    include: _unionWith(\n                        currentSelection.include,\n                        trackedItems,\n                        _isEqual\n                    ),\n                });\n            }\n\n            if (selectorValue === SelectionType.UnselectAll) {\n                return new SelectionModel({\n                    include: _differenceWith(\n                        currentSelection.include,\n                        trackedItems,\n                        _isEqual\n                    ),\n                });\n            }\n        }\n\n        return new SelectionModel();\n    }\n\n    /**\n     * You may need to obtain the set of items that are selected given selection object and some set of items.\n     * @param {ISelection} selection\n     * @param {any[]} items\n     * @param comparator\n     * @returns {any[]} Set of items\n     */\n    public getSelectedItems(selection: ISelection, items: any[], comparator: (a: any, b: any) => boolean = _isEqual): any[] {\n        if (selection.isAllPages) {\n            return _differenceWith(items, selection.exclude, comparator);\n        } else {\n            return _intersectionWith(items, selection.include, comparator);\n        }\n    }\n\n    /**\n     * Allows to react on changes of selected items (for selector).\n     * If user selects some items directly in a list, selector state may change\n     * @param {ISelection} currentSelection\n     * @param {number} totalOnCurrentPage\n     * @param {number} selectedOnCurrentPage\n     * @param totalItems\n     * @param selectedOnAllPages\n     * @param {boolean} virtualScroll Enables virtual scroll selection behavior\n     * @returns {ISelectorState}\n     */\n    public getSelectorState(\n        currentSelection: ISelection,\n        totalOnCurrentPage: number,\n        selectedOnCurrentPage: number,\n        totalItems?: number,\n        selectedOnAllPages?: number,\n        virtualScroll?: boolean\n    ): ISelectorState {\n        // Note: short cutting the flow in case we're preforming the selection in\n        // virtual scroll mode where we can't have options for selection, just select all and unselect all\n        if (virtualScroll) {\n            // Note: In case user manually selected all the items we should set the Checked state\n            if (selectedOnAllPages === totalItems) {\n                return {\n                    checkboxStatus: CheckboxStatus.Checked,\n                    selectorItems: [],\n                };\n            }\n\n            if (currentSelection.isAllPages) {\n                return {\n                    // Note: In case master checkbox is in the checked state we should ensure\n                    // that we don't have any excluded items to prevent displaying Checked state\n                    checkboxStatus: currentSelection.exclude.length\n                        ? CheckboxStatus.Indeterminate\n                        : CheckboxStatus.Checked,\n                    selectorItems: [],\n                };\n            } else {\n                return {\n                    // Note: In case master checkbox is in the unchecked state we should ensure\n                    // that we don't have any included items to prevent displaying Unchecked state\n                    checkboxStatus: currentSelection.include.length\n                        ? CheckboxStatus.Indeterminate\n                        : CheckboxStatus.Unchecked,\n                    selectorItems: [],\n                };\n            }\n        }\n\n        if (selectedOnCurrentPage === 0) {\n            if (totalOnCurrentPage === totalItems) {\n                return {\n                    checkboxStatus: CheckboxStatus.Unchecked,\n                    selectorItems: this.getFlatSelectorItems([\n                        SelectionType.All,\n                    ]),\n                };\n            }\n            if (selectedOnAllPages && selectedOnAllPages > 0) {\n                return {\n                    checkboxStatus: CheckboxStatus.Unchecked,\n                    selectorItems: this.getFlatSelectorItems([\n                        SelectionType.All,\n                        SelectionType.AllPages,\n                        SelectionType.None,\n                    ]),\n                };\n            }\n\n            return {\n                checkboxStatus: CheckboxStatus.Unchecked,\n                selectorItems: this.getFlatSelectorItems([\n                    SelectionType.AllPages,\n                    SelectionType.All,\n                ]),\n            };\n        }\n        // case when we have only one page. Clarified with UX team that when we have one page we need to have SelectionType.All\n        if (\n            selectedOnCurrentPage < totalOnCurrentPage &&\n            totalOnCurrentPage === totalItems\n        ) {\n            return {\n                checkboxStatus: CheckboxStatus.Indeterminate,\n                selectorItems: this.getFlatSelectorItems([\n                    SelectionType.All,\n                    SelectionType.None,\n                ]),\n            };\n        }\n\n        if (selectedOnCurrentPage === totalOnCurrentPage) {\n            return {\n                checkboxStatus: CheckboxStatus.Checked,\n                selectorItems:\n                    currentSelection.isAllPages &&\n                    currentSelection.exclude.length === 0\n                        ? this.getFlatSelectorItems([SelectionType.None])\n                        : this.getFlatSelectorItems([\n                              SelectionType.AllPages,\n                              SelectionType.None,\n                          ]),\n            };\n        }\n\n        return {\n            checkboxStatus: CheckboxStatus.Indeterminate,\n            selectorItems: this.getFlatSelectorItems([\n                SelectionType.All,\n                SelectionType.AllPages,\n                SelectionType.None,\n            ]),\n        };\n    }\n\n    /**\n     * Allows to react on selection.\n     * @param {ISelection} prevSelection Previous selection\n     * @param {any[]} selectedItems Selected items on the current page\n     * @param {any[]} items Items on the current page\n     * @param {RepeatSelectionMode} selectionMode One of possible repeater selection modes\n     * @param {number} totalItems Deprecated in v9 - Unused - Removal: NUI-5809\n     * @returns {ISelection} New selection\n     */\n    public selectItems(\n        prevSelection: ISelection,\n        selectedItems: any[],\n        items: any[],\n        selectionMode: RepeatSelectionMode,\n        totalItems?: number\n    ): ISelection {\n        if (!_isUndefined(totalItems)) {\n            this.logger?.warn(\n                \"'totalItems' parameter of SelectorService.selectItems is unused and deprecated. As of Nova v9, this \\\n                argument may be omitted. Removal: NUI-5896\"\n            );\n        }\n\n        if (\n            selectionMode === RepeatSelectionMode.radio ||\n            selectionMode === RepeatSelectionMode.single ||\n            selectionMode ===\n                RepeatSelectionMode.radioWithNonRequiredSelection ||\n            selectionMode === RepeatSelectionMode.singleWithRequiredSelection\n        ) {\n            return new SelectionModel({ include: selectedItems });\n        }\n\n        // This is just common sense: if selection mode can be dynamically changed this may be useful\n        if (selectionMode === RepeatSelectionMode.none) {\n            return new SelectionModel();\n        }\n\n        const includedItems = this.getIncludedItems(\n            prevSelection,\n            items,\n            selectedItems\n        );\n\n        if (prevSelection.isAllPages) {\n            return new SelectionModel({\n                isAllPages: prevSelection.isAllPages,\n                exclude: this.getExcludedItems(\n                    prevSelection,\n                    items,\n                    selectedItems\n                ),\n            });\n        }\n\n        return new SelectionModel({\n            isAllPages: prevSelection.isAllPages,\n            include: includedItems,\n        });\n    }\n\n    // items are all items in current repeater\n    private getIncludedItems(\n        prevSelection: ISelection,\n        items: any[],\n        selectedItems: any[]\n    ): any[] {\n        const unselectedItems = _differenceWith(items, selectedItems, _isEqual);\n        const includedItems = _reject(prevSelection.include, (includedItem) =>\n            unselectedItems.some((unselectedItem) =>\n                _isEqual(includedItem, unselectedItem)\n            )\n        );\n        return _unionWith(includedItems, selectedItems, _isEqual);\n    }\n\n    private getExcludedItems(\n        prevSelection: ISelection,\n        items: any[],\n        selectedItems: any[]\n    ): any[] {\n        const excludedItems = _reject(prevSelection.exclude, (excludedItem) =>\n            selectedItems.some((item) => _isEqual(excludedItem, item))\n        );\n        const unselectedItemsOnPage = _differenceWith(\n            items,\n            selectedItems,\n            _isEqual\n        );\n\n        return unselectedItemsOnPage.reduce((memo, item) => {\n            const isItemExcluded = excludedItems.some((excludedItem) =>\n                _isEqual(excludedItem, item)\n            );\n            if (!isItemExcluded) {\n                memo.push(item);\n            }\n            return memo;\n        }, excludedItems);\n    }\n\n    private getFlatSelectorItems(arr: SelectionType[]): IMenuGroup[] {\n        return [\n            {\n                itemsSource: arr.map((element: SelectionType) => ({\n                    value: element,\n                    title: this.i18nTitleMap[element],\n                })),\n            },\n        ];\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport { SafeHtml } from \"@angular/platform-browser\";\nimport escape from \"lodash/escape\";\nimport escapeRegExp from \"lodash/escapeRegExp\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isString from \"lodash/isString\";\n\n/**\n * <example-url>./../examples/index.html#/pipes/highlight</example-url>\n *\n * The nuiHighlight pipe is used to mark a portion of text. It will search the provided text for the specified string and highlight it. Returns HTML.\n * Can only be used with `innerHTML` directive. Escapes all the characters by default and highlights every match in the string.\n *\n * __Parameters :__\n *\n *   text - The source text.\n *\n *   search - The search term to be highlighted.\n *\n * __Usage :__\n *   \"text\" | nuiHighlight : \"search\"\n *\n * __Examples :__\n *\n *   <code>{{ \"hello world\" | nuiHighlight:\"world\" }}</code>\n *\n *   formats to: <code>hello &lt;span class=\"nui-highlighted\"&gt;world&lt;/span&gt;</code>\n *\n *\n *   <code>{{ \"hello &lt;span class=\"x\"&gt;FOO&lt;/span&gt; bar\" | nuiHighlight:\"bar\" }}</code>\n *\n *   formats to: <code>hello &lt;span class=&quot;x&quot;&gt;FOO&lt;/span&gt;&lt;span class=\"nui-highlighted\"&gt;bar&lt;/span&gt;;</code>\n */\n@Pipe({\n    name: \"nuiHighlight\",\n    standalone: false,\n})\nexport class HighlightPipe implements PipeTransform {\n    private readonly deduplicateStarsRegex = new RegExp(\"(\\\\\\\\\\\\*)+\", \"gi\");\n\n    public transform(text: string, search: string): SafeHtml {\n        if (!isString(search) || isEmpty(search)) {\n            return this.escapeItem(text);\n        }\n        const regex = new RegExp(\n            \"(\" + this.getHighlightRegex(search) + \")\",\n            \"i\"\n        );\n        const matchRes = Array.from(text.split(regex));\n        let result = \"\";\n        for (let i = 0; i < matchRes.length; i++) {\n            const isMatch = i % 2 !== 0;\n            if (isMatch) {\n                result += `<span class=\"nui-highlighted\">${this.escapeItem(\n                    matchRes[i]\n                )}</span>`;\n            } else {\n                result += this.escapeItem(matchRes[i]);\n            }\n        }\n        return result;\n    }\n\n    public escapeItem(item: string): string {\n        return escape(item);\n    }\n\n    private getHighlightRegex = (text: string) => {\n        const escaped = escapeRegExp(text);\n        return escaped.replace(this.deduplicateStarsRegex, () => \".*\");\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Pipe, PipeTransform } from \"@angular/core\";\nimport take from \"lodash/take\";\n\n/**\n * Filter used for limiting amount of items in array\n *\n * __Parameters :__\n *\n *   limit - basically, length of the resulting array\n *\n * __Usage :__\n *   array | limitTo:limit\n *\n * __Example :__\n *   <code>{{ [1,2,3,4,5,6,7] | limitTo:3 }}</code>\n *\n */\n@Pipe({\n    name: \"limitTo\",\n    standalone: false,\n})\nexport class LimitToPipe implements PipeTransform {\n    transform(collection: any[], limitTo: number): any[] {\n        return take(collection, limitTo);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { KeyValue } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\n/**\n * Pipe for transforming Map to KeyValue array without ordering\n *\n * __Parameters :__\n *\n *   input - source Map\n *\n * __Usage :__\n *   Map | nuiMapKeyValue\n *\n * __Example :__\n *   \"let items of itemsMap | nuiMapKeyValue\"\n *\n */\n@Pipe({\n    name: \"nuiMapKeyValue\",\n    standalone: false,\n})\nexport class MapKeyValuePipe implements PipeTransform {\n    public transform<K, V>(input: ReadonlyMap<K, V>): Array<KeyValue<K, V>> {\n        return Array.from(input.entries(), ([key, value]) => ({ key, value }));\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\nimport { LoggerService } from \"./log-service\";\nimport { IUnitConversionResult } from \"./public-api\";\nimport {\n    UnitBase,\n    unitConversionConstants,\n    UnitOption,\n} from \"../constants/unit-conversion.constants\";\n\n/**\n * <example-url>./../examples/index.html#/common/unit-conversion-service</example-url>\n *\n * Service for converting a raw value to a larger unit approximation of the value--for example, 1024 B to 1 MB, 12345 Hz to 12.35 kHz, etc.\n */\n@Injectable({ providedIn: \"root\" })\nexport class UnitConversionService {\n    constructor(private logger: LoggerService) {}\n\n    /**\n     * Converts a raw value to a larger unit approximation of the value. For example, 1024 B to 1 KB, 12345 Hz to 12.35 kHz, etc.\n     *\n     * @param value The value to convert\n     * @param base The base to use for the exponential expression when calculating the conversion result\n     *\n     * @returns {{ [Key in keyof Pick<IUnitConversionResult, \"value\" | \"order\">]: number }} The value and order of conversion\n     */\n    private convertLinear(\n        value: number,\n        base: number\n    ): { [Key in keyof Pick<IUnitConversionResult, \"value\" | \"order\">]: number } {\n        let resultValue: number;\n        let resultOrder: number;\n\n        if (value === 0) {\n            return {\n                value: 0,\n                order: 0,\n            };\n        }\n\n        resultOrder = Math.floor(\n            Math.log(Math.abs(value)) / Math.log(base)\n        );\n        resultValue = value / Math.pow(base, Math.floor(resultOrder));\n\n        if (Math.abs(value) > 0 && Math.abs(value) < 1) {\n            return {\n                value: value,\n                order: 0,\n            };\n        }\n\n        // fix the precision edge case\n        const valueCeiled = Math.ceil(resultValue);\n        if (valueCeiled % base === 0) {\n            resultValue = valueCeiled / base;\n            resultOrder += 1;\n        }\n\n        return {\n            value: resultValue,\n            order: resultOrder,\n        };\n    }\n\n    /**\n     * Converts a raw value to a larger unit approximation of the value. For example, 1100ms to 1.1s, 66000ms to 1.1m, etc.\n     *\n     * @param value The value to convert\n     * @param factors Array of factors to use for calculating smallest possible not zero result\n     *\n     * @returns {{ [Key in keyof Pick<IUnitConversionResult, \"value\" | \"order\">]: number }} The value and order of conversion\n     */\n    private convertNonLinear(\n        value: number,\n        factors: number[]\n    ): { [Key in keyof Pick<IUnitConversionResult, \"value\" | \"order\">]: number } {\n        const sortedFactors = factors.sort((a, b) => a > b ? -1 : a < b ? 1 : 0);\n        const highestFactorIndex = sortedFactors.findIndex((factor) => value / factor >= 1);\n        const highestFactor = factors[highestFactorIndex];\n\n        if (Math.abs(value) > 0 && Math.abs(value) < 1) {\n            return {\n                value: value,\n                order: 0,\n            };\n        }\n\n        return {\n            value: value / highestFactor,\n            order: highestFactorIndex === -1 ? 0 : factors.length - highestFactorIndex - 1,\n        };\n    }\n\n    /**\n     * Converts a raw value to a larger unit approximation of the value. For example, 1024 B to 1 KB, 12345 Hz to 12.35 kHz, 66000ms to 1.1m, etc.\n     *\n     * @param value The value to convert\n     * @param base The base or array of factors to use for calculating the conversion result\n     * @param scale The number of significant digits to the right of the decimal to include in the resulting converted value\n     *\n     * @returns {IUnitConversionResult} The conversion result\n     */\n    convert(\n        value: number,\n        base: number | number[] = UnitBase.Standard,\n        scale: number = 1\n    ): IUnitConversionResult {\n        const result = Array.isArray(base) ?\n            this.convertNonLinear(value, base) :\n            this.convertLinear(value, base);\n\n        let strValue: string;\n\n        if (value !== 0) {\n            strValue = parseFloat(result.value.toFixed(scale)).toString();\n        } else {\n            result.order = 0;\n            strValue = value.toString();\n        }\n\n        return {\n            value: strValue,\n            order: result.order,\n            scientificNotation: value?.toExponential(scale),\n            scale,\n        };\n    }\n\n    /**\n     * Gets the display string of a conversion result\n     *\n     * @param conversion The result of an invocation of this service's convert method\n     * @param unit The unit used in the conversion\n     * @param plusSign Whether to prepend the display string with a '+'\n     * @param nanDisplay The string to display in case the conversion result is NaN or Infinity\n     *\n     * @returns {string} The display string of the conversion result\n     */\n    public getFullDisplay(\n        conversion: IUnitConversionResult,\n        unit: UnitOption,\n        plusSign = false,\n        nanDisplay = \"---\"\n    ): string {\n        const isValidNumber = this.isValidNumber(conversion.value);\n        const spacing = unit !== \"generic\" && isValidNumber ? \" \" : \"\";\n        let unitDisplay = isValidNumber\n            ? this.getUnitDisplay(conversion, unit)\n            : \"\";\n\n        // The generic unit is not currently i18n friendly\n        const localizeValue = unit !== \"generic\";\n\n        let displayValue: string;\n\n        if (!unitDisplay && isValidNumber && conversion.order) {\n            unitDisplay = this.getUnitDisplayBaseValue(unit);\n            displayValue = this.getScientificDisplay(\n                conversion,\n                plusSign,\n                nanDisplay\n            );\n        } else {\n            displayValue = this.getValueDisplay(\n                conversion,\n                plusSign,\n                nanDisplay,\n                localizeValue\n            );\n        }\n        return `${displayValue}${spacing}${unitDisplay}`;\n    }\n\n    /**\n     * Gets the converted value display string\n     *\n     * @param conversion The result of an invocation of this service's convert method\n     * @param plusSign Whether to prepend the display string with a '+'\n     * @param nanDisplay The string to display in case the conversion result is NaN or Infinity\n     * @param localize Whether to localize the value for display. Note: It's not recommended to localize values for\n     *                 the \"generic\" unit, e.g. \"1.1K\" for 1100, as the \"generic\" unit is currently not i18n friendly\n     *\n     * @returns {string} The converted value display string\n     */\n    public getValueDisplay(\n        conversion: IUnitConversionResult,\n        plusSign = false,\n        nanDisplay = \"---\",\n        localize = true\n    ): string {\n        if (!this.isValidNumber(conversion.value)) {\n            return nanDisplay;\n        }\n\n        const outputValue = localize\n            ? parseFloat(conversion.value).toLocaleString(undefined, {\n                  maximumFractionDigits: conversion.scale,\n              })\n            : conversion.value;\n        const prefix =\n            plusSign && parseInt(conversion.value, 10) > 0 ? \"+\" : \"\";\n        return `${prefix}${outputValue}`;\n    }\n\n    /**\n     * Gets the converted unit display string\n     *\n     * @param conversion The result of an invocation of this service's convert method\n     * @param unit The basic unit used in the conversion\n     *\n     * @returns {string} The converted unit display string\n     */\n    public getUnitDisplay(\n        conversion: IUnitConversionResult,\n        unit: UnitOption\n    ): string {\n        return unitConversionConstants[unit][conversion.order];\n    }\n\n    /**\n     * Gets the base value of the converted unit\n     *\n     * @param unit The basic unit used in the conversion\n     *\n     * @returns {string} The abbreviation for the smallest unit of the provided UnitOption\n     */\n    public getUnitDisplayBaseValue(unit: UnitOption): string {\n        return unitConversionConstants[unit][0];\n    }\n\n    /**\n     * Gets the converted value display string in scientific notation\n     *\n     * @param conversion The result of an invocation of this service's convert method\n     * @param plusSign Whether to prepend the display string with a '+'\n     * @param nanDisplay The string to display in case the conversion result is NaN or Infinity\n     *\n     * @returns {string} The converted value display string in scientific notation\n     */\n    public getScientificDisplay(\n        conversion: IUnitConversionResult,\n        plusSign = false,\n        nanDisplay = \"---\"\n    ): string {\n        if (!this.isValidNumber(conversion.value)) {\n            return nanDisplay;\n        }\n        const prefix =\n            plusSign && parseInt(conversion.value, 10) > 0 ? \"+\" : \"\";\n\n        return `${prefix}${conversion.scientificNotation}`;\n    }\n\n    private isValidNumber(value: any): boolean {\n        return !isNaN(parseFloat(value)) && isFinite(parseInt(value, 10));\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\nimport {\n    unitConversionBases,\n    UnitOption,\n} from \"../constants/unit-conversion.constants\";\nimport { UnitConversionService } from \"../services/unit-conversion.service\";\n\n/**\n * <example-url>./../examples/index.html#/pipes/unit-conversion</example-url>\n *\n * Pipe for converting a large quantity of a small basic unit to a smaller approximation of the same quantity in a larger unit. This can be useful for\n * displaying larger values in a limited amount of space.\n */\n@Pipe({\n    name: \"unitConversion\",\n    standalone: false,\n})\nexport class UnitConversionPipe implements PipeTransform {\n    constructor(private unitConversionService: UnitConversionService) {}\n\n    /**\n     * Gets a string representation of the conversion of a large quantity of a small basic unit to a smaller quantity of a larger unit.\n     * For example, a quantity of 1024 in bytes is output as \"1 KB\".\n     *\n     * @param value The value to convert\n     * @param scale The number of significant digits to the right of the decimal to include in the converted value\n     * @param plusSign Specify whether to prefix positive values with a '+'\n     * @param unit The basic unit to use for the conversion result's unit label\n     *\n     * @returns {string} The conversion result appended with the converted unit label\n     */\n    transform(\n        value: any,\n        scale: number = 0,\n        plusSign: boolean = false,\n        unit: UnitOption = \"bytes\"\n    ): string {\n        const base = unitConversionBases[unit];\n        const result = this.unitConversionService.convert(\n            value as number,\n            base,\n            scale\n        );\n\n        return this.unitConversionService.getFullDisplay(\n            result,\n            unit,\n            plusSign\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\n\n// TODO: Refactor class to use strongly typed values\n/**\n * Service providing DOM utilities\n */\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class DomUtilService {\n    constructor(@Inject(DOCUMENT) private document: any) {}\n\n    /**\n     * Gets the closest parent element matching the specified selector\n     * @param elem the source element\n     * @param selector the selector to match\n     * @returns the matching element\n     */\n    public getClosest = (\n        elem: HTMLElement | undefined,\n        selector: string\n    ): HTMLElement | null => {\n        // Element.matches() polyfill\n        if (!Element.prototype.matches) {\n            Element.prototype.matches =\n                (Element.prototype as any).msMatchesSelector ||\n                Element.prototype.webkitMatchesSelector ||\n                function (slctr: string): boolean {\n                    const matches =\n                        // @ts-ignore: 'this' implicitly has type 'any' because it does not have a type annotation\n                        // An outer value of 'this' is shadowed by this container.\n                        (this.document || this.ownerDocument).querySelectorAll(\n                            slctr\n                        );\n                    let index = matches.length - 1;\n                    // @ts-ignore: 'this' implicitly has type 'any' because it does not have a type annotation\n                    // An outer value of 'this' is shadowed by this container.\n                    while (index >= 0 && matches.item(index) !== this) {\n                        --index;\n                    }\n                    return index > -1;\n                };\n        }\n\n        // Get the closest matching element\n        for (\n            ;\n            elem && elem !== this.document;\n            elem = elem.parentElement ?? undefined\n        ) {\n            if (elem?.matches(selector)) {\n                return elem;\n            }\n        }\n        return null;\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport _capitalize from \"lodash/capitalize\";\nimport _get from \"lodash/get\";\nimport _isNil from \"lodash/isNil\";\nimport _parseInt from \"lodash/parseInt\";\n\nimport { DomUtilService } from \"./dom-util.service\";\nimport { LoggerService } from \"./log-service\";\nimport {\n    IEdgeDefinerMeasurements,\n    IEdgeDetectionProperties,\n    IEdgeDetectionResult,\n} from \"./public-api\";\n\n/**\n * <example-url>./../examples/index.html#/common/edge-detection-service</example-url>\n */\n\n/**\n * @dynamic\n * @ignore\n *  Service that helps to calculate free space for dynamic elements (popover, dropdown, etc.) and define the best\n *  direction to show them. There are two ways how detection can be made:\n *  1) default one - detection is made within viewport area.\n *  2) custom container can be used for detection. Identify such container using 'nui-edge-definer' CSS-class.\n *\n * __Name :__\n * Edge Detection Service\n */\n\n@Injectable({ providedIn: \"root\" })\nexport class EdgeDetectionService {\n    public edgeDefinerSelector = \".nui-edge-definer\";\n    public initialEdgeDetectionResult: IEdgeDetectionResult;\n\n    constructor(\n        @Inject(DomUtilService) private domUtilService: DomUtilService,\n        @Inject(DOCUMENT) private document: Document,\n        private logger: LoggerService\n    ) {\n        this.initialEdgeDetectionResult = {\n            placed: {\n                top: false,\n                right: false,\n                bottom: false,\n                left: false,\n            },\n            aligned: {\n                top: false,\n                right: false,\n                bottom: false,\n                left: false,\n            },\n        };\n    }\n\n    public canBe = (\n        basePoint: HTMLElement,\n        placed: HTMLElement,\n        edgeDefinerElement?: Element\n    ): IEdgeDetectionResult | undefined => {\n        if (!basePoint || !placed) {\n            this.logger.error(\n                \"basePoint: Element and placed: Element arguments are required!\"\n            );\n            return;\n        }\n\n        const result = this.initialEdgeDetectionResult;\n        const edgeDefiner =\n            edgeDefinerElement ||\n            this.domUtilService.getClosest(basePoint, this.edgeDefinerSelector);\n        const basePosition = this.offset(basePoint).position;\n        const baseWidth = this.outer(basePoint, \"width\");\n        const baseHeight = this.outer(basePoint, \"height\");\n        const depositWidth = this.outer(placed, \"width\");\n        const depositHeight = this.outer(placed, \"height\");\n        const container = this.getEdgeDefinerMeasurements(<Element>edgeDefiner);\n\n        if (_isNil(this.document.defaultView)) {\n            throw new Error(\"Document defaultView is not available\");\n        }\n\n        result.placed.top =\n            basePosition.top - container.position.top - depositHeight >\n            this.document.defaultView.pageYOffset;\n        result.placed.right =\n            basePosition.left -\n                container.position.left +\n                baseWidth +\n                depositWidth <\n            container.width + this.document.defaultView.pageXOffset;\n        result.placed.bottom = edgeDefiner\n            ? basePosition.top + baseHeight + depositHeight <\n              container.position.top + container.height\n            : basePosition.top -\n                  container.position.top +\n                  baseHeight +\n                  depositHeight <\n              container.height + this.document.defaultView.pageYOffset;\n        result.placed.left =\n            basePosition.left - container.position.left - depositWidth >\n            this.document.defaultView.pageXOffset;\n\n        result.aligned.top =\n            basePosition.top - container.position.top + depositHeight <\n            this.document.defaultView.pageYOffset + container.height;\n        result.aligned.right =\n            basePosition.left -\n                container.position.left +\n                baseWidth -\n                depositWidth >\n            this.document.defaultView.pageXOffset;\n        result.aligned.bottom =\n            basePosition.top -\n                container.position.top +\n                baseHeight -\n                depositHeight >\n            this.document.defaultView.pageYOffset;\n        result.aligned.left =\n            basePosition.left - container.position.left + depositWidth <\n            this.document.defaultView.pageXOffset + container.width;\n\n        return result;\n    };\n\n    private outer(element: HTMLElement, dimension: \"width\" | \"height\"): number {\n        const clientValue = _get(element, `offset${_capitalize(dimension)}`);\n        if (clientValue) {\n            return clientValue;\n        }\n        return _parseInt(_get(getComputedStyle(element), dimension));\n    }\n\n    private offset(element: HTMLElement): IEdgeDetectionProperties {\n        const rect = element.getBoundingClientRect();\n        const scrollLeft =\n            this.document.defaultView?.pageXOffset ||\n            this.document.documentElement.scrollLeft;\n        const scrollTop =\n            this.document.defaultView?.pageYOffset ||\n            this.document.documentElement.scrollTop;\n        const rectHeight = rect.top < 0 ? rect.height + rect.top : rect.height;\n        return {\n            position: {\n                top: rect.top + scrollTop,\n                left: rect.left + scrollLeft,\n            },\n            height: rectHeight,\n        };\n    }\n\n    private getEdgeDefinerMeasurements(\n        edgeDefiner: Element\n    ): IEdgeDefinerMeasurements {\n        if (edgeDefiner) {\n            return {\n                position: this.offset(edgeDefiner as HTMLElement).position,\n                width: edgeDefiner.clientWidth,\n                height: this.offset(edgeDefiner as HTMLElement).height,\n                scrollY: edgeDefiner.scrollTop,\n                scrollX: edgeDefiner.scrollLeft,\n            };\n        }\n\n        if (_isNil(this.document.defaultView)) {\n            throw new Error(\"Document defaultView is not available\");\n        }\n\n        return {\n            position: { top: 0, left: 0 },\n            width: this.document.defaultView.innerWidth,\n            height: this.document.defaultView.innerHeight,\n            scrollY: this.document.defaultView.pageYOffset,\n            scrollX: this.document.defaultView.pageXOffset,\n        };\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, OnDestroy } from \"@angular/core\";\nimport each from \"lodash/each\";\nimport { Observable, ReplaySubject, Subject, Subscription } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { IEventDefinition } from \"./public-api\";\n\n/**\n * @ignore\n */\n@Injectable()\nexport class EventBus<T> implements OnDestroy {\n    public streamAdded = new ReplaySubject<string>();\n    private streams: { [key: string]: Subject<T> } = {};\n\n    // Workaround to avoid refactoring of EventBus that is using by default NuiEvent as generic type\n    // But we're storing a generic set of data types in our registered subjects\n    public getStream<U = T>(event: IEventDefinition<U>): Subject<U> {\n        if (!this.streams[event.id]) {\n            const subject = event.subjectFactory\n                ? event.subjectFactory()\n                : new Subject<T>();\n\n            // we're decorating the payload with the stream id\n            const originalNext = subject.next.bind(subject);\n            subject.next = (value?: T) =>\n                originalNext(<any>Object.assign(value || {}, { id: event.id }));\n            this.streams[event.id] = subject as unknown as Subject<T>;\n\n            this.streamAdded.next(event.id);\n        }\n        return this.streams[event.id] as unknown as Subject<U>;\n    }\n\n    public ngOnDestroy(): void {\n        each(Object.keys(this.streams), (key: string) => {\n            this.streams[key].complete();\n        });\n    }\n\n    public subscribe(\n        event: IEventDefinition<T>,\n        next: (value: T) => void,\n        error?: (error: any) => void,\n        complete?: () => void\n    ): Subscription {\n        return this.getStream(event).subscribe(next, error, complete);\n    }\n\n    public subscribeUntil(\n        event: IEventDefinition<T>,\n        until: Observable<any>,\n        next: (value: T) => void,\n        error?: (error: any) => void,\n        complete?: () => void\n    ): Subscription {\n        return this.getStream(event)\n            .pipe(takeUntil(until))\n            .subscribe(next, error, complete);\n    }\n\n    public next(event: IEventDefinition<T>, value: T): void {\n        return this.getStream(event).next(value);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { IEventDefinition } from \"../services/public-api\";\n\nexport const DOCUMENT_CLICK_EVENT: IEventDefinition<MouseEvent> = {\n    id: \"document-click\",\n};\nexport const COMPLETE_RESIZE_EVENT: IEventDefinition<Event> = {\n    id: \"complete-resize\",\n};\nexport const CHECKBOX_KEYDOWN_EVENT: IEventDefinition<KeyboardEvent> = {\n    id: \"checkbox-keydown\",\n};\nexport const CLOSE_POPOVER_EVENT: IEventDefinition<void> = {\n    id: \"close-popover\",\n};\nexport const POPOVER_CLOSED_EVENT: IEventDefinition<void> = {\n    id: \"popover-closed\",\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, OnDestroy, Renderer2, RendererFactory2 } from \"@angular/core\";\n\nimport { EventBus } from \"./event-bus\";\nimport { DOCUMENT_CLICK_EVENT } from \"../constants/event.constants\";\n\n/**\n * Service to share events among components in nova\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class EventBusService extends EventBus<Event> implements OnDestroy {\n    private renderer: Renderer2;\n    private listenerUnsubscriber?: () => void;\n\n    constructor(rendererFactory: RendererFactory2) {\n        super();\n        // Angular does not allow to easily use renderer in services. This is a workaround\n        this.renderer = rendererFactory.createRenderer(null, null);\n        // This is moved from popup code.\n        // Every event that is triggered for document should be handled by popup,\n        // but we should register listener only once\n        this.listenerUnsubscriber = this.renderer.listen(\"document\", \"click\", (event: MouseEvent) => {\n            // separate stream to detect document-body clicks in case of popup in popover\n            this.getStream(DOCUMENT_CLICK_EVENT).next(event);\n        });\n    }\n\n    public ngOnDestroy(): void {\n        super.ngOnDestroy();\n        this.listenerUnsubscriber?.();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport includes from \"lodash/includes\";\nimport isUndefined from \"lodash/isUndefined\";\n\nimport { IEventPropagationService } from \"./public-api\";\n\n/**\n * <example-url>./../examples/index.html#/common/event-propagation-service</example-url>\n */\n\n/**\n *  Service that provides event propagation rules for NUI components.\n *\n * __Name :__\n * Event Propagation service\n *\n */\n\n/** @ignore */\n@Injectable({ providedIn: \"root\" })\nexport class EventPropagationService implements IEventPropagationService {\n    private preventedTargetSelectors: string[] = [\n        \"a\",\n        \"nui-checkbox-mark\",\n        \"nui-checkbox-glyph\",\n        \"nui-checkbox-input\",\n        \"input\",\n        \"button\",\n    ];\n\n    // nui-button uses transclusion and so we need to check the parent too\n    private preventedTargetParentSelectors: string[] = [\n        \"button\",\n        \"nui-button-content\",\n    ];\n\n    private should: boolean;\n\n    /**\n     * __Description:__\n     * Returns a boolean which indicates if event should propagate based on predefined list of selectors.\n     * @param   event Event to handle propagation.\n     * @returns  Value indicating whether that event should be propagated.\n     */\n    public targetShouldPropagate(event: Event): boolean {\n        // TODO: Refactor event.target logic, incorrect type, EventTarget type does not contain parentElement property\n        const element = <Element>event.target;\n        const parentElement: HTMLElement | undefined =\n            element.parentElement ?? undefined;\n        this.should = true;\n\n        if (isUndefined(parentElement)) {\n            throw new Error(\"parentElement is not defined\");\n        }\n\n        this.compareElementSelector(this.preventedTargetSelectors, element);\n        this.compareElementSelector(\n            this.preventedTargetParentSelectors,\n            parentElement\n        );\n\n        return this.should;\n    }\n\n    /**\n     * __Description:__\n     * Helper compare function\n     * @param   selectors Selectors list to compare with.\n     * @param  element Event's target element or its parent.\n     * @returns  Value indicating whether that event should be propagated.\n     */\n    private compareElementSelector(selectors: string[], element: Element) {\n        selectors.forEach((selector: string) => {\n            if (\n                element.tagName.toLowerCase() === selector ||\n                includes(element.classList, selector)\n            ) {\n                return (this.should = false);\n            }\n        });\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\n/**\n * This class can help with storing and managing the history of state mutations\n */\n@Injectable()\nexport class HistoryStorage<T> {\n    private stack: T[] = [];\n\n    /**\n     * The index of current history element (equals -1 when there are no items, 0 for first item)\n     */\n    public index = -1;\n\n    /**\n     * Add a new record to the storage\n     *\n     * @param value\n     */\n    public save(value: T): T {\n        this.stack.splice(this.index + 1, this.length, value);\n        this.index = this.length - 1;\n        return this.current();\n    }\n\n    /**\n     * Rewind the history and return the record before the last one. A redo will still be available after this.\n     */\n    public undo(): T {\n        if (this.index > 0) {\n            this.index--;\n        }\n        return this.current();\n    }\n\n    /**\n     * Moves on to the next step in history if undo was previously triggered\n     */\n    public redo(): T {\n        if (this.index < this.length - 1) {\n            this.index++;\n        }\n        return this.current();\n    }\n\n    /**\n     * Clears the storage\n     */\n    public reset(): void {\n        this.index = -1;\n        this.stack = [];\n    }\n\n    /**\n     * Clears the storage and saves the initial value or preserves the previous one\n     */\n    public restart(value: T = this.stack[0]): T {\n        this.reset();\n        if (typeof value === \"undefined\") {\n            return value;\n        }\n        return this.save(value);\n    }\n\n    /**\n     * Returns the currently valid stored element\n     */\n    public current(): T {\n        return this.stack[this.index];\n    }\n\n    /**\n     * Returns the current history step (starts from 0 when there are no items, 1 for one item)\n     */\n    public get step(): number {\n        return this.index + 1;\n    }\n\n    /**\n     * Number of total saved steps in the history\n     */\n    public get length(): number {\n        return this.stack.length;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport { Subject, Subscription } from \"rxjs\";\n\nimport { INotificationService } from \"./public-api\";\n\nexport type NotificationHandler = (args: any) => void;\n\n/**\n * @ngdoc service\n *\n * @name nui.services:nuiNotificationService\n *\n * @description\n * Service that provides generic notifications to consumers that subscribe.\n */\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class NotificationService implements INotificationService {\n    private channels: { [channelId: string]: Subject<any> } = {};\n\n    private ensureChannel(channelId: string): Subject<any> {\n        return (\n            this.channels[channelId] ||\n            (this.channels[channelId] = new Subject<any>())\n        );\n    }\n\n    public subscribe(\n        channelId: string,\n        action: NotificationHandler\n    ): Subscription {\n        const channel = this.ensureChannel(channelId);\n        return channel.subscribe(action);\n    }\n\n    public post(channelId: string, args: any): void {\n        const channel = this.channels[channelId];\n        if (!channel) {\n            console.warn(`post on nonexistent channel #${channelId}`);\n            return;\n        }\n        channel.next(args);\n    }\n}\n\nexport default NotificationService;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport _isNil from \"lodash/isNil\";\n\n/**\n * Service for calculating element's position (e.g. tooltip, popover).\n * For now has one public method 'getCoordinates' (see method description).\n */\n\ntype OurCSS = CSSStyleDeclaration & { [key: string]: any };\n\n/**\n * @dynamic\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class PositionService {\n    constructor(@Inject(DOCUMENT) private document: Document) {}\n    /**\n     * __Description:__\n     * Takes two HTMLElements (hostElement and targetElement) and calculates a position for the targetElement.\n     * @param  hostElement If you want to display tooltip for some textbox, hostElement is textbox.\n     * @param   targetElement Tooltip (or popover) element, for which position will be returned.\n     * @param   placementAndAlign String in format \"placement-align\", e.g. \"top-center\".\n     * 'Placement' could be 'right', 'left', 'top' (default), 'bottom'. It defines how target will be placed\n     * to the host.\n     * 'Align' could be 'right', 'left', 'top', 'bottom' and 'center' (default). It defines whether one of the target's\n     * edges will be aligned to host's one. Be aware that horizontal placements need vertical alignment and vice verca.\n     * Possible values of 'placementAndAlign' could be: 'top' (the same as 'top-center'), 'top-right', 'left-bottom',\n     * 'bottom-left' etc.\n     * @param   appendToBody Specifies whether target element is appended to the body.\n     * When not, service seeks for the first positioned parent of host.\n     * @returns Object literal { top:number, left:number } that contains\n     * coordinates for the top left corner of targetElement.\n     */\n    public getPosition(\n        hostElement: HTMLElement,\n        targetElement: HTMLElement,\n        placementAndAlign: string,\n        appendToBody?: boolean\n    ): { top: number; left: number } {\n        const placement = placementAndAlign.split(\"-\")[0];\n        const align = placementAndAlign.split(\"-\")[1];\n        let shiftByX: number;\n        let shiftByY: number;\n        const hostElementPosition = appendToBody\n            ? this.offset(hostElement)\n            : this.position(hostElement);\n        switch (align) {\n            case \"right\":\n                shiftByX =\n                    hostElementPosition.width - targetElement.offsetWidth;\n                shiftByY =\n                    (hostElementPosition.height - targetElement.offsetHeight) /\n                    2;\n                break;\n            case \"left\":\n                shiftByX = 0;\n                shiftByY =\n                    (hostElementPosition.height - targetElement.offsetHeight) /\n                    2;\n                break;\n            case \"top\":\n                shiftByX =\n                    (hostElementPosition.width - targetElement.offsetWidth) / 2;\n                shiftByY = 0;\n                break;\n            case \"bottom\":\n                shiftByX =\n                    (hostElementPosition.width - targetElement.offsetWidth) / 2;\n                shiftByY =\n                    hostElementPosition.height - targetElement.offsetHeight;\n                break;\n            case \"center\":\n            default:\n                shiftByX =\n                    (hostElementPosition.width - targetElement.offsetWidth) / 2;\n                shiftByY =\n                    (hostElementPosition.height - targetElement.offsetHeight) /\n                    2;\n                break;\n        }\n        let targetElementPosition: { top: number; left: number };\n        switch (placement) {\n            case \"right\":\n                targetElementPosition = {\n                    top: hostElementPosition.top + shiftByY,\n                    left: hostElementPosition.left + hostElementPosition.width,\n                };\n                break;\n            case \"left\":\n                targetElementPosition = {\n                    top: hostElementPosition.top + shiftByY,\n                    left: hostElementPosition.left - targetElement.offsetWidth,\n                };\n                break;\n            case \"bottom\":\n                targetElementPosition = {\n                    top: hostElementPosition.top + hostElementPosition.height,\n                    left: hostElementPosition.left + shiftByX,\n                };\n                break;\n            case \"top\":\n            default:\n                targetElementPosition = {\n                    top: hostElementPosition.top - targetElement.offsetHeight,\n                    left: hostElementPosition.left + shiftByX,\n                };\n                break;\n        }\n        return targetElementPosition;\n    }\n\n    private position(nativeElement: HTMLElement): {\n        width: number;\n        height: number;\n        top: number;\n        left: number;\n    } {\n        let offsetParentBoundingClientRect = { top: 0, left: 0 };\n        const elementBoundingClientRect = this.offset(nativeElement);\n        const offsetParentElement = this.parentOffsetEl(nativeElement);\n\n        if (offsetParentElement !== this.document) {\n            offsetParentBoundingClientRect = this.offset(offsetParentElement);\n            offsetParentBoundingClientRect.top +=\n                offsetParentElement.clientTop - offsetParentElement.scrollTop;\n            offsetParentBoundingClientRect.left +=\n                offsetParentElement.clientLeft - offsetParentElement.scrollLeft;\n        }\n\n        const boundingClientRect = nativeElement.getBoundingClientRect();\n\n        return {\n            width: boundingClientRect.width || nativeElement.offsetWidth,\n            height: boundingClientRect.height || nativeElement.offsetHeight,\n            top:\n                elementBoundingClientRect.top -\n                offsetParentBoundingClientRect.top,\n            left:\n                elementBoundingClientRect.left -\n                offsetParentBoundingClientRect.left,\n        };\n    }\n\n    private offset(nativeElement: any): {\n        width: number;\n        height: number;\n        top: number;\n        left: number;\n    } {\n        const boundingClientRect = nativeElement.getBoundingClientRect();\n        if (_isNil(this.document.defaultView)) {\n            throw new Error(\"Document defaultView is not available\");\n        }\n\n        return {\n            width: boundingClientRect.width || nativeElement.offsetWidth,\n            height: boundingClientRect.height || nativeElement.offsetHeight,\n            top:\n                boundingClientRect.top +\n                (this.document.defaultView.pageYOffset ||\n                    this.document.documentElement.scrollTop),\n            left:\n                boundingClientRect.left +\n                (this.document.defaultView.pageXOffset ||\n                    this.document.documentElement.scrollLeft),\n        };\n    }\n\n    private getStyle(nativeElement: HTMLElement, cssProp: string): string {\n        if (_isNil(this.document.defaultView)) {\n            throw new Error(\"Document defaultView is not available\");\n        }\n\n        if (this.document.defaultView.getComputedStyle) {\n            return (\n                this.document.defaultView.getComputedStyle(\n                    nativeElement\n                ) as OurCSS\n            )[cssProp];\n        }\n\n        // finally try and get inline style\n        return (nativeElement.style as OurCSS)[cssProp];\n    }\n\n    private isStaticPositioned(nativeElement: HTMLElement): boolean {\n        return (\n            (this.getStyle(nativeElement, \"position\") || \"static\") === \"static\"\n        );\n    }\n\n    private parentOffsetEl(nativeElement: HTMLElement): any {\n        let offsetParent: any = nativeElement.offsetParent || this.document;\n\n        while (\n            offsetParent &&\n            offsetParent !== this.document &&\n            this.isStaticPositioned(offsetParent)\n        ) {\n            offsetParent = offsetParent.offsetParent;\n        }\n\n        return offsetParent || this.document;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DatePipe } from \"@angular/common\";\nimport { Injectable } from \"@angular/core\";\nimport has from \"lodash/has\";\nimport isArray from \"lodash/isArray\";\nimport isDate from \"lodash/isDate\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isNumber from \"lodash/isNumber\";\nimport isString from \"lodash/isString\";\nimport isUndefined from \"lodash/isUndefined\";\nimport keys from \"lodash/keys\";\nimport startsWith from \"lodash/startsWith\";\n\nimport { LoggerService } from \"./log-service\";\nimport { ISearchService } from \"./public-api\";\n\n/**\n * <example-url>./../examples/index.html#/common/search-service</example-url>\n */\n\n/**\n *  Service that provides searching algorithms.\n *\n * __Name :__\n * Search service\n *\n */\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class SearchService implements ISearchService {\n    /**\n     *  __Description :__\n     * Search the value on the items within the given properties.\n     *\n     * __Parameters :__\n     *\n     * {any[]} items Items to search within.\n     *\n     *  {string[]} properties Properties where the search is applied. If no property specified, search is\n     *  applied on all fields.\n     *\n     *  {string|number|date} searchValue The searched value that is used as a string or string fragment. Empty\n     *  string returns the whole array.\n     *\n     *  {string} [dateFormat=\"mediumDate\"] The Angular date format that is used for searching on Date type\n     *  properties.\n     *\n     *  return {any[]} Items resulted after the search.\n     *\n     */\n    constructor(private logger: LoggerService, private datePipe: DatePipe) {}\n\n    public search = <T>(\n        items: T[],\n        properties: string[],\n        searchValue: any,\n        dateFormat?: string\n    ): T[] => {\n        // TODO: in case of interest, create options as object, put dateFormat in, put caseSensitive in\n        if (!isArray(items)) {\n            this.logger.error(\n                \"nuiSearchService needs items parameter as an Array\"\n            );\n        }\n        if (!isArray(properties)) {\n            this.logger.error(\n                \"nuiSearchService needs properties parameter as an Array\"\n            );\n        }\n        if (isEmpty(properties)) {\n            properties = this.getSearchableColumns(items);\n            this.logger.warn(\n                \"No properties specified to search on, so all of the fields will be used\"\n            );\n        }\n        if (isUndefined(searchValue)) {\n            this.logger.warn(\n                \"No searchValue specified to search by, the whole list will be the result\"\n            );\n            return items;\n        }\n\n        return this.filterResults(items, properties, searchValue, dateFormat);\n    };\n\n    protected filterResults<T>(\n        items: T[],\n        properties: string[],\n        searchValue: any,\n        dateFormat?: string\n    ): T[] {\n        return items.filter((item) => {\n            if (isString(item) || isNumber(item)) {\n                return this.filterPredicate(item, searchValue);\n            }\n            for (const prop of properties) {\n                let value = has(item, prop) ? (item as any)[prop] : item;\n\n                if (isDate(value)) {\n                    value = this.transformDate(value, dateFormat);\n                }\n                if (isDate(searchValue)) {\n                    searchValue = this.transformDate(searchValue, dateFormat);\n                }\n                if (value && this.filterPredicate(value, searchValue)) {\n                    return true;\n                }\n            }\n        });\n    }\n\n    protected transformDate(\n        value: Date,\n        dateFormat: string | undefined\n    ): string | null {\n        return this.datePipe.transform(value, dateFormat);\n    }\n\n    protected filterPredicate(item: any, searchValue: any): boolean {\n        return (\n            item\n                .toString()\n                .toLowerCase()\n                .indexOf(searchValue.toString().toLowerCase()) !== -1\n        );\n    }\n\n    protected getSearchableColumns = (items: any[]): string[] => {\n        const props: { [key: string]: boolean } = {};\n        for (const item of items) {\n            keys(item).map((key: any) => {\n                if (!startsWith(key, \"$\")) {\n                    props[key] = true;\n                }\n            });\n        }\n        return keys(props);\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport { Inject, Injectable, PLATFORM_ID } from \"@angular/core\";\nimport forOwn from \"lodash/forOwn\";\nimport includes from \"lodash/includes\";\nimport isBoolean from \"lodash/isBoolean\";\nimport isDate from \"lodash/isDate\";\nimport isFunction from \"lodash/isFunction\";\nimport isNil from \"lodash/isNil\";\nimport isNumber from \"lodash/isNumber\";\nimport isObject from \"lodash/isObject\";\nimport isString from \"lodash/isString\";\n\n/** @ignore */\nenum ByteCount {\n    String = 2,\n    Boolean = 4,\n    Number = 8,\n}\n\n/** @ignore */\nexport enum BrowserName {\n    Chrome = \"Chrome\",\n    Edge = \"Edge\",\n    Firefox = \"Firefox\",\n    Opera = \"Opera\",\n    Safari = \"Safari\",\n}\n\n/** @ignore */\nexport interface BrowserInfo {\n    name(): string | undefined;\n    version(): string | undefined;\n    isChrome(): boolean;\n    isEdge(): boolean;\n    isFirefox(): boolean;\n    isOpera(): boolean;\n    isSafari(): boolean;\n    mobileDevice: {\n        isAndroid(): boolean;\n        isBlackberry(): boolean;\n        isIOS(): boolean;\n        isOpera(): boolean;\n        isAny(): boolean;\n    };\n}\n\n/**\n * Service providing common utilities\n */\n\n/**\n * @dynamic\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class UtilService {\n    public static getSvgFromString(s: string): DocumentFragment {\n        const div = document.createElementNS(\n            \"http://www.w3.org/1999/xhtml\",\n            \"div\"\n        );\n        div.innerHTML = `<svg xmlns='http://www.w3.org/2000/svg'>${s}</svg>`;\n        const frag = document.createDocumentFragment();\n        while (div.firstChild?.firstChild) {\n            frag.appendChild(div.firstChild.firstChild);\n        }\n        return frag;\n    }\n\n    public static getEventPath(event: MouseEvent): EventTarget[] {\n        if (isFunction(event.composedPath)) {\n            return event.composedPath();\n        }\n\n        let element: HTMLElement | null = event.target as HTMLElement;\n\n        // Hack for EDGE\n        if (!(element as any).path) {\n            element = event.currentTarget as HTMLElement;\n        }\n\n        const path = [];\n        while (element) {\n            path.push(element);\n            if (element.tagName === \"HTML\") {\n                path.push(document);\n                path.push(window);\n                return path;\n            }\n            element = element.parentElement;\n        }\n\n        return [];\n    }\n\n    private nextUniqueId = [\"0\", \"0\", \"0\"];\n    private browserName?: string;\n\n    public isBrowser(): boolean {\n        return isPlatformBrowser(this.platformId);\n    }\n\n    /**\n     * Object for getting information about the browser\n     */\n    public get browser(): BrowserInfo | undefined {\n        if (this.isBrowser()) {\n            return {\n                name: () => this.browserName,\n                version: () => this.getBrowserVersion(),\n                isChrome: () => this.browserName === BrowserName.Chrome,\n                isEdge: () => this.browserName === BrowserName.Edge,\n                isFirefox: () => this.browserName === BrowserName.Firefox,\n                isOpera: () => this.browserName === BrowserName.Opera,\n                isSafari: () => this.browserName === BrowserName.Safari,\n                mobileDevice: {\n                    isAndroid: () =>\n                        this.document.defaultView?.navigator.userAgent.match(\n                            /Android/i\n                        ) !== null,\n                    isBlackberry: () =>\n                        this.document.defaultView?.navigator.userAgent.match(\n                            /BlackBerry|BB10/i\n                        ) !== null,\n                    isIOS: () =>\n                        this.document.defaultView?.navigator.userAgent.match(\n                            /iPhone|iPad|iPod/i\n                        ) !== null,\n                    isOpera: () =>\n                        this.document.defaultView?.navigator.userAgent.match(\n                            /Opera Mini/i\n                        ) !== null,\n                    isAny: () =>\n                        !!(\n                            this.browser?.mobileDevice.isIOS() ||\n                            this.browser?.mobileDevice.isAndroid() ||\n                            this.browser?.mobileDevice.isBlackberry() ||\n                            this.browser?.mobileDevice.isOpera()\n                        ),\n                },\n            };\n        }\n    }\n\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {\n        this.browserName = this.getBrowser();\n    }\n\n    /**\n     * Formats the target string in the same way as .NET's String.format\n     * @param  target the target string\n     * @param  params one or more numbers, booleans, or strings to insert\n     *     into the target string at the specified location(s)\n     * @returns the formatted string\n     */\n    public formatString(target: string, ...params: Array<any>): string {\n        const toString = (obj: any, format: any) => {\n            const ctor = ((o: any) => {\n                if (typeof o === \"number\") {\n                    return Number;\n                } else if (typeof o === \"boolean\") {\n                    return Boolean;\n                } else if (typeof o === \"string\") {\n                    return String;\n                } else {\n                    return o.constructor;\n                }\n            })(obj);\n            const proto = ctor.prototype;\n            const formatter =\n                typeof obj !== \"string\"\n                    ? proto\n                        ? proto.format || proto.toString\n                        : obj.format || obj.toString\n                    : obj.toString;\n            if (formatter) {\n                if (typeof format === \"undefined\" || format === \"\") {\n                    return formatter.call(obj);\n                } else {\n                    return formatter.call(obj, format);\n                }\n            } else {\n                return \"\";\n            }\n        };\n\n        target = target.replace(\n            /\\{\\{|\\}\\}|\\{([^}: ]+?)(?::([^}]*?))?\\}/g,\n            (match, num, format) => {\n                if (match === \"{{\") {\n                    return \"{\";\n                }\n                if (match === \"}}\") {\n                    return \"}\";\n                }\n                if (\n                    typeof params[num] !== \"undefined\" &&\n                    params[num] !== null\n                ) {\n                    return toString(params[num], format);\n                } else {\n                    return \"\";\n                }\n            }\n        );\n\n        return target;\n    }\n\n    private getBrowser() {\n        if (isPlatformBrowser(this.platformId)) {\n            const ua = this.document.defaultView?.navigator.userAgent;\n\n            if (isNil(ua)) {\n                throw new Error(\"UserAgent is not available\");\n            }\n\n            let tem;\n            let M: RegExpMatchArray | [] =\n                ua.match(\n                    /(edge|opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\n                ) || [];\n            if (M[1] === \"Chrome\") {\n                tem = ua.match(/\\bOPR\\/(\\d+)/);\n                if (tem != null) {\n                    return BrowserName.Opera;\n                }\n                tem = ua.match(/\\bEdge\\/(\\d+)/);\n                if (tem != null) {\n                    return BrowserName.Edge;\n                }\n            }\n            M = <RegExpMatchArray>(\n                (M[2]\n                    ? [M[1], M[2]]\n                    : [\n                          this.document.defaultView?.navigator.appName,\n                          this.document.defaultView?.navigator.appVersion,\n                          \"-?\",\n                      ])\n            );\n            if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n                M.splice(1, 1, tem[1]);\n            }\n            return M[0];\n        }\n    }\n\n    private getBrowserVersion() {\n        if (isPlatformBrowser(this.platformId)) {\n            const ua = this.document.defaultView?.navigator.userAgent;\n\n            if (isNil(ua)) {\n                throw new Error(\"UserAgent is not available\");\n            }\n\n            let tem,\n                M =\n                    ua.match(\n                        /(edge|opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i\n                    ) || [];\n            if (/trident/i.test(M[1])) {\n                tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n                return tem[1] || \"\";\n            }\n            if (M[1] === \"Chrome\") {\n                tem = ua.match(/\\bOPR\\/(\\d+)/);\n                if (tem != null) {\n                    return tem[1];\n                }\n                tem = ua.match(/\\bEdge\\/(\\d+)/);\n                if (tem != null) {\n                    return tem[1];\n                }\n            }\n            M = <RegExpMatchArray>(\n                (M[2]\n                    ? [M[1], M[2]]\n                    : [\n                          this.document.defaultView?.navigator.appName,\n                          this.document.defaultView?.navigator.appVersion,\n                          \"-?\",\n                      ])\n            );\n            if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n                M.splice(1, 1, tem[1]);\n            }\n            return M[1];\n        }\n    }\n\n    /**\n     * nextUid, from angular.js.\n     * A consistent way of creating unique IDs in angular. The ID is a sequence of alpha numeric\n     * characters such as \"012ABC\". The reason why we are not using simply a number counter is that\n     * the number string gets longer over time, and it can also overflow, where as the nextId\n     * will grow much slower, it is a string, and it will never overflow.\n     *\n\n     */\n    public nextUid(): string {\n        let index = this.nextUniqueId.length;\n        let digit: number;\n\n        while (index) {\n            index--;\n            digit = this.nextUniqueId[index].charCodeAt(0);\n\n            if (digit === 57 /* \"9\" */) {\n                this.nextUniqueId[index] = \"A\";\n                return this.nextUniqueId.join(\"\");\n            }\n            if (digit === 90 /* \"Z\" */) {\n                this.nextUniqueId[index] = \"0\";\n            } else {\n                this.nextUniqueId[index] = String.fromCharCode(digit + 1);\n                return this.nextUniqueId.join(\"\");\n            }\n        }\n\n        this.nextUniqueId.unshift(\"0\");\n        return this.nextUniqueId.join(\"\");\n    }\n\n    /**\n     * Returns the approximate memory footprint (byte count) of the object specified\n\n     */\n    public sizeof = (object: any): number => {\n        const visitedObjects: any[] = [];\n        return this.calculateSizeof(object, visitedObjects);\n    };\n\n    private calculateSizeof = (object: any, visitedObjects: any[]): number => {\n        if (isString(object)) {\n            return object.length * ByteCount.String;\n        } else if (isBoolean(object)) {\n            return ByteCount.Boolean;\n        } else if (isNumber(object)) {\n            return ByteCount.Number;\n        } else if (isObject(object)) {\n            visitedObjects.push(object);\n            let bytes = 0;\n\n            forOwn(object, (value: any, key: any) => {\n                bytes += this.calculateSizeof(key, visitedObjects);\n                // short-circuit circular refs\n                if (!includes(visitedObjects, value)) {\n                    bytes += this.calculateSizeof(value, visitedObjects);\n                }\n            });\n\n            return bytes;\n        } else {\n            return 0;\n        }\n    };\n\n    public dateEquals(date1?: Date, date2?: Date): boolean {\n        if (isNil(date1) && isNil(date2)) {\n            return date1 === date2;\n        }\n\n        if (!isDate(date1) || !isDate(date2)) {\n            return false;\n        }\n\n        return date1?.valueOf() === date2?.valueOf();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport { timer } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { ITransientCache } from \"./public-api\";\nimport { UtilService } from \"./util.service\";\n\ninterface ICache {\n    [key: string]: any;\n}\n\n/** @ignore */\n@Injectable({ providedIn: \"root\" })\nexport class TransientCacheService implements ITransientCache {\n    private cache: ICache = {};\n\n    constructor(private utilService: UtilService) {}\n\n    public put = async (\n        key: string,\n        value: any,\n        lifetime: number\n    ): Promise<void> => {\n        if (typeof key === \"undefined\" || key === null) {\n            return Promise.reject(\"no key\");\n        }\n        if (typeof value === \"undefined\" || value === null) {\n            return Promise.reject(\"no value\");\n        }\n        this.cache[key] = value;\n\n        return timer(lifetime)\n            .pipe(\n                map(() => {\n                    this.remove(key);\n                })\n            )\n            .toPromise();\n    };\n\n    public remove = (key: string): void => {\n        delete this.cache[key];\n    };\n\n    public get = (key: string): any => this.cache[key];\n\n    public removeAll = (): void => {\n        for (const key in this.cache) {\n            if (this.cache.hasOwnProperty(key)) {\n                this.remove(key);\n            }\n        }\n    };\n\n    public destroy = (): void => {\n        this.removeAll();\n    };\n\n    public entryCount = (): number => Object.keys(this.cache).length;\n\n    public size = (): number => {\n        let byteCount = 0;\n\n        for (const key in this.cache) {\n            if (this.cache.hasOwnProperty(key)) {\n                byteCount +=\n                    this.utilService.sizeof(key) +\n                    this.utilService.sizeof(this.get(key));\n            }\n        }\n\n        return byteCount;\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Predicate } from \"@angular/core\";\n\nexport const isTargetAnAnchor = (event: Event): boolean =>\n    event.target instanceof HTMLAnchorElement;\n\nexport const isTargetNotAnAnchor = (event: Event): boolean =>\n    !isTargetAnAnchor(event);\n\nexport type IEventFilter = Predicate<Event>;\n\nexport const makePredicate = (value: IEventFilter | boolean): IEventFilter =>\n    typeof value === \"boolean\" ? () => value : value;\n","import {\n    Directive,\n    EventEmitter,\n    HostListener,\n    Input,\n    Output,\n} from \"@angular/core\";\n\nimport { IEventFilter, isTargetNotAnAnchor, makePredicate } from \"./public-api\";\n\n@Directive({\n    selector: \"[nuiClickFilter]\",\n    standalone: false,\n})\nexport class ClickFilterDirective {\n    private _cancelBubble: IEventFilter = makePredicate(true);\n    private _preventDefault: IEventFilter = isTargetNotAnAnchor;\n\n    @Input() public set cancelBubble(value: IEventFilter | boolean | null) {\n        this._cancelBubble = makePredicate(value ?? true);\n    }\n\n    @Input() public set preventDefault(value: IEventFilter | boolean | null) {\n        this._preventDefault = makePredicate(value ?? isTargetNotAnAnchor);\n    }\n\n    @Output() public passed$ = new EventEmitter<Event>();\n    @Output() public canceled$ = new EventEmitter<Event>();\n    @Output() public prevented$ = new EventEmitter<Event>();\n\n    @HostListener(\"click\", [\"$event\"])\n    public handleEvent(event: Event): void {\n        let passed = true;\n        if (this._cancelBubble(event)) {\n            event.stopPropagation();\n            event.stopImmediatePropagation();\n            this.canceled$.emit(event);\n            passed = false;\n        }\n        if (this._preventDefault(event)) {\n            event.preventDefault();\n            this.prevented$.emit(event);\n            passed = false;\n        }\n        if (passed) {\n            this.passed$.emit(event);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, HostListener } from \"@angular/core\";\n\nimport { DOCUMENT_CLICK_EVENT } from \"../../../constants/event.constants\";\nimport { EventBusService } from \"../../../services/event-bus.service\";\n\n/**\n *\n * <h4>Required Modules</h4>\n *  <ul>\n *   <li>\n *      <code>NuiCommonModule</code>\n *   </li>\n *  </ul>\n *\n */\n\n@Directive({\n    selector: \"[nuiClickInterceptor]\",\n    standalone: false,\n})\nexport class ClickInterceptorDirective {\n    @HostListener(\"click\", [\"$event\"])\n    catchClick(event: MouseEvent): void {\n        event.stopPropagation();\n        this.eventBusService.getStream(DOCUMENT_CLICK_EVENT).next(event);\n    }\n\n    constructor(private eventBusService: EventBusService) {}\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    Directive,\n    EventEmitter,\n    HostListener,\n    Inject,\n    Input,\n    OnInit,\n    Output,\n} from \"@angular/core\";\nimport isEmpty from \"lodash/isEmpty\";\nimport isEqual from \"lodash/isEqual\";\nimport isString from \"lodash/isString\";\n\nimport { LoggerService } from \"../../../services/log-service\";\n\n/**\n * <example-url>./../examples/index.html#/common/clipboard</example-url>\n */\n\n/**\n * @ignore\n * @dynamic\n * Directive that provides copy to clipboard functionality.\n */\n@Directive({\n    selector: \"[nuiClipboard]\",\n    standalone: false,\n})\nexport class ClipboardDirective implements OnInit {\n    /* eslint-disable @angular-eslint/no-input-rename */\n    /**\n     * Text to be copied to the clipboard\n     */\n    @Input(\"nuiClipboard\") public textToCopy: string;\n    /* eslint-enable @angular-eslint/no-input-rename */\n\n    /**\n     * Event that is fired when text was copied to the clipboard successfully\n     */\n    @Output() public clipboardSuccess = new EventEmitter<void>();\n    /**\n     * Event that is fired when copy text was failed\n     */\n    @Output() public clipboardError = new EventEmitter<void>();\n\n    private hasCopySupport = false;\n\n    /**\n     * Replaces element click behavior with clipboard copy event\n     */\n    @HostListener(\"click\", [\"$event\"])\n    public onClick(e: Event): void {\n        if (isEqual(this.hasCopySupport, true)) {\n            e.preventDefault();\n            return this.copyText();\n        } else {\n            this.clipboardError.emit();\n            return this.logger.error(\n                \"document copy operation is not supported\"\n            );\n        }\n    }\n\n    constructor(\n        private logger: LoggerService,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    public ngOnInit(): void {\n        try {\n            this.hasCopySupport = this.document.queryCommandSupported(\"copy\");\n        } catch (ex) {\n            this.logger.error(ex.message);\n        }\n    }\n\n    private copyText(): void {\n        if (isEmpty(this.textToCopy) || !isString(this.textToCopy)) {\n            return this.logger.warn(\n                \"notext\",\n                \"nuiClipboard text is empty or not a string\"\n            );\n        }\n\n        const node = this.createNode(this.textToCopy);\n\n        try {\n            const selection = this.document.getSelection();\n            this.document.body.appendChild(node);\n            node.select();\n            this.document.execCommand(\"copy\");\n            selection?.removeAllRanges();\n            this.clipboardSuccess.emit();\n        } catch (ex) {\n            this.logger.error(ex.message);\n            this.clipboardError.emit();\n        } finally {\n            this.document.body.removeChild(node);\n        }\n    }\n\n    private createNode = (text: string): HTMLTextAreaElement => {\n        const node = this.document.createElement(\"textarea\");\n\n        node.style.position = \"absolute\";\n        node.style.left = \"-10000px\";\n        node.textContent = text;\n\n        return node;\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport _isNil from \"lodash/isNil\";\nimport _isObject from \"lodash/isObject\";\nimport { Observable, Subject } from \"rxjs\";\n\nimport { IDragPayload, IDragState } from \"./public-api\";\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class DragAndDropService {\n    private onDragStateSubject = new Subject<IDragState>();\n    private dragPayload: any;\n\n    public get onDragStateChanged(): Observable<IDragState> {\n        return this.onDragStateSubject.asObservable();\n    }\n\n    public setDragPayload(payload: any, event: DragEvent): void {\n        this.dragPayload = payload;\n        const stringifiedPayload = _isObject(payload)\n            ? JSON.stringify(payload)\n            : <string>payload;\n        event.dataTransfer?.setData(\"Text\", stringifiedPayload);\n        event.dataTransfer?.setData(\"text/plain\", stringifiedPayload);\n        this.onDragStateSubject.next({\n            payload: this.dragPayload,\n            isInProgress: true,\n        });\n    }\n\n    public getDragPayload(event: DragEvent): IDragPayload {\n        if (_isNil(this.dragPayload)) {\n            return { data: this.extractDragObject(event), isExternal: true };\n        }\n        return { data: this.dragPayload, isExternal: false };\n    }\n\n    public resetPayload(): void {\n        this.onDragStateSubject.next({\n            payload: this.dragPayload,\n            isInProgress: false,\n        });\n        this.dragPayload = undefined;\n    }\n\n    private extractDragObject(event: DragEvent): any {\n        const payload =\n            event.dataTransfer?.getData(\"Text\") ||\n            event.dataTransfer?.getData(\"text/plain\");\n        try {\n            return JSON.parse(payload || \"\");\n        } catch (e) {\n            return payload;\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const scrollConstants = {\n    verticalScrollPercentage: 30,\n    horizontalScrollPercentage: 30,\n    checkIntervalInMs: 30,\n    accelerationFactor: 0.5,\n    dragOverThrottleInMs: 100,\n    adornerUpdateThrottleInMs: 16,\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Inject,\n    Input,\n    NgZone,\n    OnInit,\n    Output,\n} from \"@angular/core\";\nimport throttle from \"lodash/throttle\";\n\nimport { DragAndDropService } from \"./drag-and-drop.service\";\nimport { scrollConstants } from \"./dragdrop.constants\";\nimport { IDragEvent } from \"./public-api\";\nimport { UtilService } from \"../../../services/util.service\";\n\n/**\n * Directive that provides draggable behavior for an element\n *\n *  __Usage:__\n *\n * Bind this directive to an element to add a draggable behavior to it.\n *\n *        `<div nuiDraggable>Some content</div>`\n *\n * Make sure that this zone has some content, because draggable directive doesn't set any height\n * to the element. This won't work:\n *\n *        `<div nuiDraggable></div>`\n *\n * Don't forget to assign some payload (data for transmission from draggable to droppable).\n * It can be an `Object`, string or whatever can be converted to a string:\n *\n *        `<div nuiDraggable [payload]=\"myData\"></div>`\n *\n * To subscribe to an event `dragStart, dragEnd` just transmit an attribute\n *\n *         `<div nuiDroppable (dragStart)=\"dragStart($event)\"></div>`\n *\n * And `dragStart` method will look like that:\n *\n *         `public dragStart(dropEvent: DragEvent) {\n *              //dropEvent - HTML 5 drag event (native)\n *          };`\n *\n * <example-url>./../examples/index.html#/dragdrop</example-url>\n *\n * @dynamic\n * @ignore\n */\n@Directive({\n    selector: \"[nuiDraggable]\",\n    standalone: false,\n})\nexport class DraggableDirective implements OnInit {\n    private static draggableClass = \"nui-drag__draggable\";\n    private static draggingClass = \"nui-drag--dragging\";\n    private static dragSourceClass = \"nui-drag__drag-source\";\n    private static adornerClass = \"nui-drag__drag-container\";\n    private static adornerHaloClass = \"nui-drag__drag-halo\";\n    private static dragsourceOverlayClass = \"nui-drag__drag-source--overlay\";\n\n    @Input() adornerDragClass: string;\n    @Input() payload: any;\n    @Output() dragStart = new EventEmitter();\n    @Output() dragEnd = new EventEmitter();\n\n    private adorner?: HTMLElement;\n    private dragsourceOverlay?: HTMLElement;\n    private moveDragAdorner = throttle(\n        (coordinates: { x: number; y: number }) => {\n            requestAnimationFrame(() => {\n                if (this.adorner) {\n                    this.adorner.style.left = coordinates.x + \"px\";\n                    this.adorner.style.top = coordinates.y + \"px\";\n                }\n                this.autoScroll(coordinates.x, coordinates.y);\n            });\n        },\n        scrollConstants.adornerUpdateThrottleInMs\n    );\n\n    @HostBinding(`class.${DraggableDirective.draggableClass}`)\n    @HostBinding(\"attr.draggable\")\n    draggable: boolean;\n\n    @HostListener(\"dragstart\", [\"$event\"])\n    onDragStart(event: IDragEvent): void {\n        this.dragStart.emit(event);\n        this.document.defaultView?.getSelection()?.removeAllRanges();\n        window.getSelection()?.removeAllRanges();\n        this.dragsourceOverlay = this.createDragVisuals(event);\n        this.setImageAndData(event);\n        /*\n            runOutsideAngular is used when some action has to be performed outside\n            angular zone. Therefore, this action won't trigger change detection.\n        */\n        this.zone.runOutsideAngular(() => {\n            this.document.addEventListener(\"dragover\", this.mouseHook);\n        });\n        event.stopPropagation();\n    }\n\n    @HostListener(\"dragend\", [\"$event\"])\n    onDragEnd(event: IDragEvent): void {\n        this.dragEnd.emit(event);\n        this.elRef.nativeElement.classList.remove(\n            DraggableDirective.dragSourceClass\n        );\n        if (this.adorner) {\n            this.adorner.remove();\n            this.adorner = undefined;\n        }\n\n        if (this.dragsourceOverlay) {\n            this.dragsourceOverlay.remove();\n            this.dragsourceOverlay = undefined;\n        }\n        this.dragAndDropService.resetPayload();\n        event.stopPropagation();\n\n        this.zone.runOutsideAngular(() => {\n            this.document.removeEventListener(\"dragover\", this.mouseHook);\n        });\n    }\n\n    constructor(\n        private elRef: ElementRef,\n        private zone: NgZone,\n        private utilService: UtilService,\n        private dragAndDropService: DragAndDropService,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    public ngOnInit(): void {\n        this.draggable = true;\n    }\n\n    private mouseHook = (event: DragEvent) => {\n        const clientX = event.clientX;\n        const clientY = event.clientY;\n        this.moveDragAdorner({ x: clientX, y: clientY });\n    };\n\n    private createDragVisuals = (event: DragEvent) => {\n        // copy the node being dragged, and add effects\n        this.adorner = this.document.createElement(\"div\");\n        this.adorner.style.left = event.clientX + \"px\";\n        this.adorner.style.top = event.clientY + \"px\";\n        this.adorner.classList.add(DraggableDirective.adornerClass);\n        if (this.adornerDragClass) {\n            this.adorner.classList.add(this.adornerDragClass);\n        }\n        const adornerHalo = this.document.createElement(\"div\");\n        adornerHalo.classList.add(DraggableDirective.adornerHaloClass);\n        this.adorner.appendChild(adornerHalo);\n\n        // Safari shows the dragImage natively, so we don't have to fake it\n        if (!this.utilService.browser?.isSafari()) {\n            const copiedNode = (<any>event.currentTarget).cloneNode(true);\n            copiedNode.style.width =\n                this.elRef.nativeElement.offsetWidth + \"px\";\n            copiedNode.style.height =\n                this.elRef.nativeElement.offsetHeight + \"px\";\n            copiedNode.classList.add(DraggableDirective.draggingClass);\n            copiedNode.removeAttribute(\"draggable\");\n            this.adorner.appendChild(copiedNode);\n        }\n\n        // if there is a place to attach to, do it.  Otherwise, place it after the copied node\n\n        this.elRef.nativeElement.parentNode.appendChild(this.adorner);\n\n        // this should be the overlay that fades out the existing node\n        const dragSourceOverlay = this.document.createElement(\"div\");\n        dragSourceOverlay.classList.add(\n            DraggableDirective.dragsourceOverlayClass\n        );\n\n        // Fix for Google Chrome, appending of overlay in regular way cause unreasonable dispatch of \"dragend\" event\n        setTimeout(() => {\n            this.elRef.nativeElement.appendChild(dragSourceOverlay);\n        }, 0);\n\n        this.elRef.nativeElement.classList.add(\n            DraggableDirective.dragSourceClass\n        );\n\n        return dragSourceOverlay;\n    };\n\n    private setImageAndData(event: DragEvent) {\n        if (\n            (typeof DragEvent !== \"undefined\" && event instanceof DragEvent) ||\n            event.dataTransfer\n        ) {\n            if (event.dataTransfer?.setDragImage) {\n                if (this.utilService.browser?.isSafari()) {\n                    // Safari supports dragImage in a usable way\n                    event.dataTransfer.setDragImage(\n                        this.elRef.nativeElement,\n                        0,\n                        -10\n                    );\n                } else {\n                    // but other browsers don't so we have to disable it\n                    const emptyItem = this.document.createElement(\"div\");\n                    event.dataTransfer.setDragImage(emptyItem, 0, 0);\n                }\n            }\n\n            if (!event.dataTransfer) {\n                throw new Error(\"Event do not contain dataTransfer property\");\n            }\n            event.dataTransfer.dropEffect = \"copy\";\n\n            this.dragAndDropService.setDragPayload(this.payload, event);\n        }\n    }\n\n    private autoScroll(clientX: number, clientY: number) {\n        if (!clientX || !clientY) {\n            return;\n        }\n\n        if (!this.document.defaultView) {\n            throw new Error(\"Document does not contain defaultView property\");\n        }\n        const verticalDistPercentage =\n            (clientY / this.document.defaultView.innerHeight) * 100;\n        const horizontalDistPercentage =\n            (clientX / this.document.defaultView.innerWidth) * 100;\n        const topScrollBoundary = scrollConstants.verticalScrollPercentage;\n        const bottomScrollBoundary =\n            100 - scrollConstants.verticalScrollPercentage;\n        const leftScrollBoundary = scrollConstants.horizontalScrollPercentage;\n        const rightScrollBoundary =\n            100 - scrollConstants.horizontalScrollPercentage;\n\n        let newX = this.document.defaultView.pageXOffset;\n        let newY = this.document.defaultView.pageYOffset;\n\n        let scrollNeeded = false;\n        if (verticalDistPercentage < topScrollBoundary) {\n            const throttleDistance =\n                (topScrollBoundary - verticalDistPercentage) *\n                scrollConstants.accelerationFactor;\n            newY = newY - throttleDistance;\n            scrollNeeded = true;\n        }\n        if (verticalDistPercentage > bottomScrollBoundary) {\n            const throttleDistance =\n                (verticalDistPercentage - bottomScrollBoundary) *\n                scrollConstants.accelerationFactor;\n            newY = newY + throttleDistance;\n            scrollNeeded = true;\n        }\n        if (horizontalDistPercentage < leftScrollBoundary) {\n            const throttleDistance =\n                (leftScrollBoundary - horizontalDistPercentage) *\n                scrollConstants.accelerationFactor;\n            newX = newX - throttleDistance;\n            scrollNeeded = true;\n        }\n        if (horizontalDistPercentage > rightScrollBoundary) {\n            const throttleDistance =\n                (horizontalDistPercentage - rightScrollBoundary) *\n                scrollConstants.accelerationFactor;\n            newX = newX + throttleDistance;\n            scrollNeeded = true;\n        }\n        if (scrollNeeded) {\n            this.document.defaultView.scrollTo(newX, newY);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n} from \"@angular/core\";\nimport _isNil from \"lodash/isNil\";\nimport throttle from \"lodash/throttle\";\nimport { Subscription } from \"rxjs\";\n\nimport { DragAndDropService } from \"./drag-and-drop.service\";\nimport { scrollConstants } from \"./dragdrop.constants\";\nimport {\n    IDragEvent,\n    IDragPayload,\n    IDragState,\n    IDropEvent,\n    IDropValidator,\n} from \"./public-api\";\n\n/**\n * Directive that provides behavior of droppable zone for an element\n *\n *  __Usage:__\n *\n * Bind this directive to an element that will be a zone for dropping elements there.\n *\n *        `<div nuiDroppable>Some content</div>`\n *\n * Make sure that this zone has some content, because droppable directive doesn't set any height\n * to the element. This won't work:\n *\n *        `<div nuiDroppable></div>`\n *\n * To subscribe to an event `dragOver, dragEnter, dragLeave, dropSuccess` just transmit an attribute\n *\n *         `<div nuiDroppable (dropSuccess)=\"onDropObject($event)\"></div>`\n *\n * And `onDropObject` method will look like that:\n *\n *         `public onDropObject(dropEvent: INuiDropEvent) {\n *\n *              const extractedData = dropEvent.payload; //some data that you passed to draggable directive\n *\n *              const actualEvent = dropEvent.event; // an HTML 5 event (native)\n *\n *          };`\n * If you want to validate if data can be dropped you can set validator.\n * By default if you don't specify it all drags will be accepted.\n *\n *          `<div nuiDroppable [validator]=\"validator\"></div>`\n *\n * Validator is an object that should implement IDropValidator interface.\n *\n *          `interface IDropValidator {\n *              isValidDropTarget(payload: any, isExternal?: boolean): boolean;\n *          };`\n * Payload is an dragged payload, and isExternal will be set to true if source of drag is NOT nui-draggable (it can be some other document, excel file etc.)\n *\n * You can also specify css classes that will be set:\n *\n * `dragOverClass` - will set this class when drag is over and validator returns true or there is no validator\n *\n * `invalidDragOverClass` - will set this class when drag is over and validator returns false\n *\n * `dropIndicatorClass` - will set this class when you start dragging something that can be dropped on this nui-droppable\n */\n/**\n * <example-url>./../examples/index.html#/dragdrop</example-url>\n */\n\n/** @ignore */\n@Directive({\n    selector: \"[nuiDroppable]\",\n    standalone: false,\n})\nexport class DroppableDirective implements OnInit, OnDestroy {\n    @Input() dragOverClass = \"nui-drag--over\";\n    @Input() invalidDragOverClass: string;\n    @Input() dropIndicatorClass: string;\n    @Input() dropValidator: IDropValidator;\n\n    @Output() dragOver = new EventEmitter<DragEvent>();\n    @Output() dragEnter = new EventEmitter<DragEvent>();\n    @Output() dragLeave = new EventEmitter<DragEvent>();\n    @Output() dropSuccess = new EventEmitter<IDropEvent>();\n\n    private dragElements: Array<HTMLElement> = [];\n\n    private onDragStateChangedSubscription: Subscription;\n\n    private dragThrottle = throttle(\n        (dragEvent: any) => {\n            this.dragOver.emit(dragEvent);\n        },\n        scrollConstants.checkIntervalInMs,\n        { trailing: false }\n    );\n\n    @HostListener(\"dragenter\", [\"$event\"])\n    onDragEnter(event: IDragEvent): void {\n        const payload = this.dragAndDropService.getDragPayload(event);\n        if (this.validateDrop(payload) && this.dragElements.length === 0) {\n            this.elRef.nativeElement.classList.remove(this.dropIndicatorClass);\n            this.elRef.nativeElement.classList.add(this.dragOverClass);\n            this.dragEnter.emit(event);\n        } else if (\n            this.dragElements.length === 0 &&\n            this.invalidDragOverClass\n        ) {\n            this.elRef.nativeElement.classList.add(this.invalidDragOverClass);\n        }\n        this.dragElements.push(<HTMLElement>event.target);\n        event.preventDefault();\n    }\n\n    @HostListener(\"dragover\", [\"$event\"])\n    onDragOver(event: IDragEvent): void {\n        const payload = this.dragAndDropService.getDragPayload(event);\n        if (this.validateDrop(payload)) {\n            this.dragThrottle(event);\n        }\n        event.preventDefault();\n    }\n\n    @HostListener(\"dragleave\", [\"$event\"])\n    onDragLeave(event: IDragEvent): void {\n        const payload = this.dragAndDropService.getDragPayload(event);\n        this.dragElements = this.dragElements.filter(\n            (el) => el !== event.target\n        );\n        if (this.validateDrop(payload) && this.dragElements.length === 0) {\n            this.elRef.nativeElement.classList.remove(this.dragOverClass);\n            if (!payload?.isExternal) {\n                // dropIndicatorClass shouldn't be added if dragged item comes from outside of the browser - there is no easy way to remove it later.\n                this.elRef.nativeElement.classList.add(this.dropIndicatorClass);\n            }\n            this.dragLeave.emit(event);\n        } else if (\n            this.dragElements.length === 0 &&\n            this.invalidDragOverClass\n        ) {\n            this.elRef.nativeElement.classList.remove(\n                this.invalidDragOverClass\n            );\n        }\n    }\n\n    @HostListener(\"drop\", [\"$event\"])\n    onDrop(event: IDragEvent): boolean {\n        const payload = this.dragAndDropService.getDragPayload(event);\n        event.preventDefault();\n        if (this.validateDrop(payload)) {\n            this.dragElements = [];\n            if (\n                (typeof DragEvent !== \"undefined\" &&\n                    event instanceof DragEvent) ||\n                (<any>event).dataTransfer\n            ) {\n                this.dropSuccess.emit({ event, payload: payload.data });\n            }\n            this.elRef.nativeElement.classList.remove(this.dragOverClass);\n        } else if (!_isNil(this.invalidDragOverClass)) {\n            this.elRef.nativeElement.classList.remove(\n                this.invalidDragOverClass\n            );\n        }\n        this.dragAndDropService.resetPayload();\n        event.stopPropagation();\n        return false;\n    }\n\n    constructor(\n        private elRef: ElementRef,\n        private dragAndDropService: DragAndDropService\n    ) {}\n    public ngOnInit(): void {\n        this.onDragStateChangedSubscription =\n            this.dragAndDropService.onDragStateChanged.subscribe(\n                (item: IDragState) => {\n                    if (\n                        !_isNil(this.dropIndicatorClass) &&\n                        this.validateDrop({\n                            data: item.payload,\n                            isExternal: false,\n                        })\n                    ) {\n                        if (item.isInProgress) {\n                            this.elRef.nativeElement.classList.add(\n                                this.dropIndicatorClass\n                            );\n                        } else {\n                            this.elRef.nativeElement.classList.remove(\n                                this.dropIndicatorClass\n                            );\n                        }\n                    }\n                }\n            );\n    }\n\n    private validateDrop(payload: IDragPayload) {\n        if (!this.dropValidator) {\n            return true; // if there is no drop validator specified drop is always valid\n        }\n        return this.dropValidator.isValidDropTarget(\n            payload.data,\n            payload.isExternal\n        );\n    }\n\n    public ngOnDestroy(): void {\n        if (!_isNil(this.onDragStateChangedSubscription)) {\n            this.onDragStateChangedSubscription.unsubscribe();\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    OnDestroy,\n    Output,\n} from \"@angular/core\";\nimport filter from \"lodash/filter\";\nimport forEach from \"lodash/forEach\";\n\n/** @ignore */\ninterface IResizeEventQueue {\n    events: any[];\n    add(event: Function): void;\n    call(): void;\n    remove(event: Function): void;\n}\n/** @ignore */\ninterface IResizeElement extends HTMLElement {\n    resizedAttached?: IResizeEventQueue;\n    resizeSensor?: any;\n}\n\n/**\n * Directive that provides resize event for any element\n *\n * __Usage:__\n *\n * In parent components use this to subscribe to resize event:\n *\n *       `@ViewChild(ResizeDirective) child: ResizeDirective;\n *\n *       public checkResize = () => {\n *\n *       this.child.elementResize.subscribe((event: any) => console.log(\"change\", event));\n *\n *       };`\n *\n * To remove resize event handler:\n *\n *       `@ViewChild(ResizeDirective) child: ResizeDirective;\n *\n *        this.child.removeResize()`\n *\n */\n/**\n * <example-url>./../examples/index.html#/resize</example-url>\n */\n/**\n * @ignore\n */\n@Directive({\n    selector: \"[nuiResize]\",\n    standalone: false,\n})\nexport class ResizeDirective implements AfterViewInit, OnDestroy {\n    /**\n     * Event to be triggered on element resize\n     */\n    @Output() public elementResize = new EventEmitter<boolean>();\n\n    /**\n     * Class for dimension change detection\n     * Using nested private class to prevent external class instantiation.\n     */\n    private resizeEventQueue = class implements IResizeEventQueue {\n        public events: any[] = [];\n\n        public add(event: Function) {\n            this.events.push(event);\n        }\n\n        public call() {\n            forEach(this.events, (event) => event.call());\n        }\n\n        public remove(event: Function) {\n            this.events = filter(\n                this.events,\n                (item: Function) => item !== event\n            );\n        }\n    };\n\n    constructor(private element: ElementRef) {}\n\n    public ngAfterViewInit(): void {\n        this.attachResizeEvent(this.element.nativeElement, this.resizeEmit);\n    }\n\n    public ngOnDestroy(): void {\n        this.elementResize.unsubscribe();\n        this.removeResize();\n    }\n\n    /**\n     * Removes resize listener from the element for public use. We could stop resize event\n     * listener by using this method in parent through @ViewChild\n     */\n    public removeResize(): void {\n        this.detachResizeEvent(this.element.nativeElement, this.resizeEmit);\n    }\n\n    /**\n     * Emits resize event\n     */\n    private resizeEmit = (): void => {\n        this.elementResize.emit(true);\n    };\n\n    /**\n     * Add resize event which will be done by default\n     */\n    private attachResizeEvent(\n        targetElement: IResizeElement,\n        resizeCallback: Function\n    ): void {\n        if (targetElement.resizedAttached) {\n            targetElement.resizedAttached.add(resizeCallback);\n            return;\n        }\n\n        targetElement.resizedAttached = new this.resizeEventQueue();\n        targetElement.resizedAttached.add(resizeCallback);\n\n        // This elements is hidden and helping to trigger scroll event when user resize element with nuiResize.\n        targetElement.resizeSensor = document.createElement(\"div\");\n        targetElement.resizeSensor.className = \"resize-sensor\";\n        const style =\n            \"position: absolute; left: 0; top: 0; right: 0; \" +\n            \"bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;\";\n        const styleChild =\n            \"position: absolute; left: 0; top: 0; transition: 0s;\";\n\n        targetElement.resizeSensor.style.cssText = style;\n        targetElement.resizeSensor.innerHTML = `<div class=\"resize-sensor-expand\" style=\"${style}\">\n                <div style=\"${styleChild}\"></div>\n              </div>\n              <div class=\"resize-sensor-shrink\" style=\"${style}\">\n                <div style=\"${styleChild} width: 200%; height: 200%\"></div>\n              </div>`;\n\n        targetElement.appendChild(targetElement.resizeSensor);\n\n        if (targetElement.resizeSensor.offsetParent !== targetElement) {\n            targetElement.style.position = \"relative\";\n        }\n\n        const expand = targetElement.resizeSensor.childNodes[0];\n        const expandChild = expand.childNodes[1];\n        const shrink = targetElement.resizeSensor.childNodes[2];\n        let lastWidth = targetElement.offsetWidth;\n        let lastHeight = targetElement.offsetHeight;\n        let dirty: boolean;\n        let rafId: number;\n        let newWidth: number;\n        let newHeight: number;\n\n        function reset(): void {\n            expandChild.style.width = \"100000px\";\n            expandChild.style.height = \"100000px\";\n\n            expand.scrollLeft = 100000;\n            expand.scrollTop = 100000;\n\n            shrink.scrollLeft = 100000;\n            shrink.scrollTop = 100000;\n        }\n\n        reset();\n\n        function onResized(): void {\n            rafId = 0;\n\n            if (!dirty) {\n                return;\n            }\n\n            lastWidth = newWidth;\n            lastHeight = newHeight;\n\n            if (targetElement.resizedAttached) {\n                targetElement.resizedAttached.call();\n            }\n        }\n\n        function onScroll(): void {\n            newWidth = targetElement.offsetWidth;\n            newHeight = targetElement.offsetHeight;\n            dirty = newWidth !== lastWidth || newHeight !== lastHeight;\n\n            if (dirty && !rafId) {\n                rafId = requestAnimationFrame(onResized);\n            }\n\n            reset();\n        }\n\n        function addEvent(\n            element: IResizeElement,\n            event: string,\n            callback: EventListener\n        ): void {\n            element.addEventListener(event, callback);\n        }\n\n        addEvent(expand, \"scroll\", onScroll);\n        addEvent(shrink, \"scroll\", onScroll);\n    }\n\n    /**\n     * Removing resize listener from target element\n     */\n    private detachResizeEvent = (\n        targetElement: IResizeElement,\n        event: Function\n    ) => {\n        if (targetElement.resizedAttached && typeof event === \"function\") {\n            targetElement.resizedAttached.remove(event);\n        }\n        if (targetElement.contains(targetElement.resizeSensor)) {\n            targetElement.removeChild(targetElement.resizeSensor);\n        }\n\n        delete targetElement.resizeSensor;\n        delete targetElement.resizedAttached;\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const RESIZE_DEBOUNCE_TIME = 300;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    NgZone,\n    OnDestroy,\n    Output,\n} from \"@angular/core\";\nimport debounce from \"lodash/debounce\";\n\nimport { RESIZE_DEBOUNCE_TIME } from \"../../../constants/resize.constants\";\n\n/**\n * @ignore\n */\n@Directive({\n    selector: \"[nuiResizeObserver]\",\n    standalone: false,\n})\nexport class ResizeObserverDirective implements OnDestroy, AfterViewInit {\n    @Output()\n    public containerResize = new EventEmitter();\n    public resizeHandler: Function;\n    private _debounceTime = RESIZE_DEBOUNCE_TIME;\n    private resizeObserver?: ResizeObserver;\n\n    constructor(private _element: ElementRef, private ngZone: NgZone) {}\n\n    public set debounceTime(debounceTime: number) {\n        this._debounceTime = debounceTime;\n    }\n\n    public ngAfterViewInit(): void {\n        this.resizeHandler = debounce(\n            (entry) => this.containerResize.emit(entry),\n            this._debounceTime\n        );\n        this.resizeObserver = new ResizeObserver((entries) => {\n            entries.forEach((entry: ResizeObserverEntry) => {\n                this.ngZone.run(() => {\n                    this.resizeHandler(entry);\n                });\n            });\n        });\n        this.ngZone.runOutsideAngular(() => {\n            this.resizeObserver?.observe(<Element>this._element.nativeElement);\n        });\n    }\n\n    public ngOnDestroy(): void {\n        if (this.resizeObserver) {\n            this.resizeObserver.unobserve(<Element>this._element.nativeElement);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport enum ResizeDirection {\n    left = \"left\",\n    right = \"right\",\n    top = \"top\",\n    bottom = \"bottom\",\n}\n/** @ignore */\nexport enum ResizeUnit {\n    percent = \"%\",\n    pixel = \"px\",\n}\n/** @ignore */\nexport interface IResizeProperties {\n    appendDirection: \"left\" | \"right\" | \"top\" | \"bottom\";\n    borderToCalculate: \"left\" | \"right\" | \"top\" | \"bottom\";\n    cursor: \"ew-resize\" | \"ns-resize\";\n    sizeToSet: \"width\" | \"height\";\n    otherSizeProperty: \"width\" | \"height\";\n    nativeElementSizeProperty: \"offsetHeight\" | \"offsetWidth\";\n}\n/** @ignore */\nexport const resizeDirectionHelpers: { [key: string]: IResizeProperties } = {\n    right: {\n        appendDirection: \"left\",\n        borderToCalculate: \"right\",\n        cursor: \"ew-resize\",\n        sizeToSet: \"width\",\n        otherSizeProperty: \"height\",\n        nativeElementSizeProperty: \"offsetWidth\",\n    },\n    left: {\n        appendDirection: \"right\",\n        borderToCalculate: \"left\",\n        cursor: \"ew-resize\",\n        sizeToSet: \"width\",\n        otherSizeProperty: \"height\",\n        nativeElementSizeProperty: \"offsetWidth\",\n    },\n    top: {\n        appendDirection: \"bottom\",\n        borderToCalculate: \"top\",\n        cursor: \"ns-resize\",\n        sizeToSet: \"height\",\n        otherSizeProperty: \"width\",\n        nativeElementSizeProperty: \"offsetHeight\",\n    },\n    bottom: {\n        appendDirection: \"top\",\n        borderToCalculate: \"bottom\",\n        cursor: \"ns-resize\",\n        sizeToSet: \"height\",\n        otherSizeProperty: \"width\",\n        nativeElementSizeProperty: \"offsetHeight\",\n    },\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n} from \"@angular/core\";\nimport debounce from \"lodash/debounce\";\nimport isFunction from \"lodash/isFunction\";\nimport isUndefined from \"lodash/isUndefined\";\nimport { Subscription } from \"rxjs\";\n\nimport {\n    IResizeProperties,\n    ResizeDirection,\n    resizeDirectionHelpers,\n    ResizeUnit,\n} from \"./public-api\";\nimport { COMPLETE_RESIZE_EVENT } from \"../../../constants/event.constants\";\nimport { RESIZE_DEBOUNCE_TIME } from \"../../../constants/resize.constants\";\nimport { EventBusService } from \"../../../services/event-bus.service\";\nimport { UtilService } from \"../../../services/util.service\";\n\n/** @ignore */\nconst resizeClass = \"nui-resize-gutter\";\n\n/**\n * @ignore\n * <example-url>./../examples/index.html#/resizer</example-url>\n */\n@Directive({\n    selector: \"[nuiResizer]\",\n    standalone: false,\n})\nexport class ResizerDirective implements AfterViewInit, OnChanges, OnDestroy {\n    /**\n     * Direction in which element can be resizable. can be \"top\", \"right\", \"left\" and \"bottom\"\n     */\n    private _direction: ResizeDirection;\n\n    @Input() set resizerDirection(direction: ResizeDirection) {\n        this._direction = direction;\n        this.refreshStyle();\n    }\n\n    get resizerDirection(): ResizeDirection {\n        return this._direction;\n    }\n\n    /**\n     * Sets custom size of resizable element\n     */\n    protected _size: number = 16;\n\n    /**\n     * Disables element resizing\n     */\n    private _disabled: boolean = false;\n\n    @Input() set resizerDisabled(isDisabled: boolean) {\n        this._disabled = isDisabled;\n        if (this.resizeGutter) {\n            this.switchDisabledClasses();\n            if (!isDisabled) {\n                this.refreshStyle();\n            }\n        }\n    }\n\n    get resizerDisabled(): boolean {\n        return this._disabled;\n    }\n    /**\n     * Choose resize value of your element(pixel, percent). By default pixels are used.\n     */\n    @Input() public resizerValue: ResizeUnit = ResizeUnit.pixel;\n\n    /**\n     * Switch to mode in which resizer change parent's and sibling's flex-basis (layout-specific)\n     */\n    @Input() public isMultiple: boolean;\n\n    /**\n     * Emits new size of element on which directive was applied\n     */\n    @Output() public resizerSizeChanged = new EventEmitter<string>();\n\n    protected resizePropObj: IResizeProperties;\n    protected parentContainerNode: HTMLElement;\n    protected resizerSplit: HTMLElement;\n    protected targetElement: ElementRef;\n    protected resizeClass = resizeClass;\n    protected resizeGutter: HTMLElement;\n    protected offsetSize = this._size / 2;\n\n    private _resizeElement = document.createElement(\"div\");\n    private _oldSize: number = 0;\n    private _isDragging: boolean = false;\n    private _isFirstTimeInteracting: boolean = true;\n    private _isHovering = false;\n    private resizeObserver?: ResizeObserver;\n    private resizeSubscription: Subscription;\n    private eventSubscriptions: (() => void)[] = [];\n    private mouseUpUnlisten: () => void;\n    private mouseMoveUnlisten: () => void;\n    private sibling: any;\n\n    public constructor(\n        private elRef: ElementRef,\n        private renderer: Renderer2,\n        private utilService: UtilService,\n        private _element: ElementRef,\n        private ngZone: NgZone,\n        private eventBusService: EventBusService\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"resizerDirection\"] && this.resizeGutter) {\n            this.appendResizeElement();\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        // as derived class doesn't inherits lifecycle hooks,\n        // we can reassign targetElement there, in this case we just use directive's nativeElement\n        this.targetElement = this.elRef;\n        this.addSubscription();\n\n        if (!this.isAtTheBeginning()) {\n            this.renderer.appendChild(\n                this.targetElement.nativeElement,\n                this._resizeElement\n            );\n            this.resizeGutter =\n                this.targetElement.nativeElement.lastElementChild;\n        } else {\n            this.renderer.insertBefore(\n                this.targetElement.nativeElement,\n                this._resizeElement,\n                this.targetElement.nativeElement.firstElementChild\n            );\n            this.resizeGutter =\n                this.targetElement.nativeElement.firstElementChild;\n        }\n        this.appendResizeElement();\n        this.resizeGutter.className = this.resizeClass;\n        this.parentContainerNode =\n            this.targetElement.nativeElement.parentElement;\n        this.addResizeObserver();\n        this.appendEvents();\n        this.refreshStyle();\n    }\n\n    public ngOnDestroy(): void {\n        if (this.resizeObserver) {\n            this.resizeObserver.unobserve(\n                <Element>this.targetElement.nativeElement.parentElement\n            );\n        }\n        if (this.resizeSubscription) {\n            this.resizeSubscription.unsubscribe();\n        }\n        this.unlistenEvents();\n    }\n\n    protected addResizeObserver(): void {\n        const resizeHandler = debounce(\n            (entry) => this.refreshStyle(),\n            RESIZE_DEBOUNCE_TIME\n        );\n        this.resizeObserver = new ResizeObserver((entries) => {\n            entries.forEach((entry: ResizeObserverEntry) => {\n                this.ngZone.run(() => {\n                    if (!this.resizerDisabled) {\n                        resizeHandler(entry);\n                    }\n                });\n            });\n        });\n        this.ngZone.runOutsideAngular(() => {\n            this.resizeObserver?.observe(\n                <Element>this.targetElement.nativeElement.parentElement\n            );\n        });\n    }\n\n    protected addSubscription(): void {\n        this.resizeSubscription = this.eventBusService\n            .getStream(COMPLETE_RESIZE_EVENT)\n            .subscribe((resize) => this.refreshStyle());\n    }\n\n    protected onSizeChanged(newSize: string): void {\n        this.resizerSizeChanged.emit(newSize);\n    }\n\n    protected refreshStyle(): void {\n        if (this.resizeGutter && !this.resizerDisabled) {\n            // fix safari bug about gutter height when direction is horizontal\n            this.renderer.setStyle(\n                this.resizeGutter,\n                this.resizePropObj.sizeToSet,\n                `${this._size}px`\n            );\n            this.renderer.setStyle(\n                this.resizeGutter,\n                this.resizePropObj.otherSizeProperty,\n                \"100%\"\n            );\n            this.calculatePosition();\n            this.renderer.setStyle(\n                this.resizeGutter,\n                \"cursor\",\n                this.resizePropObj.cursor\n            );\n            this.switchDisabledClasses();\n        }\n    }\n\n    protected unlistenEvents(): void {\n        this.eventSubscriptions.forEach((unlistenFn) => {\n            if (isFunction(unlistenFn)) {\n                unlistenFn();\n            }\n        });\n    }\n\n    protected appendEvents(): void {\n        this.eventSubscriptions.push(\n            this.renderer.listen(\n                this.resizeGutter,\n                \"mouseenter\",\n                ($event: MouseEvent) => this.onMouseEnter($event)\n            )\n        );\n        this.eventSubscriptions.push(\n            this.renderer.listen(this.resizeGutter, \"mouseleave\", () =>\n                this.onMouseLeave()\n            )\n        );\n        this.eventSubscriptions.push(\n            this.renderer.listen(\n                this.resizeGutter,\n                \"mousedown\",\n                ($event: MouseEvent) => this.onMouseDown($event)\n            )\n        );\n    }\n\n    protected isResizeHorizontal(): boolean {\n        return (\n            this.resizerDirection === ResizeDirection.left ||\n            this.resizerDirection === ResizeDirection.right\n        );\n    }\n\n    protected isAtTheBeginning(): boolean {\n        return (\n            this.resizerDirection === ResizeDirection.left ||\n            this.resizerDirection === ResizeDirection.top\n        );\n    }\n\n    private switchDisabledClasses(): void {\n        this.resizerDisabled\n            ? this.renderer.addClass(\n                  this.resizeGutter,\n                  `${this.resizeClass}-disabled`\n              )\n            : this.renderer.removeClass(\n                  this.resizeGutter,\n                  `${this.resizeClass}-disabled`\n              );\n    }\n\n    private appendResizeElement() {\n        if (this.resizerSplit) {\n            this.renderer.removeChild(this.resizeGutter, this.resizerSplit);\n        }\n        this.resizerSplit = document.createElement(\"div\");\n        this.renderer.addClass(this.resizerSplit, `${this.resizeClass}__split`);\n        this.renderer.addClass(\n            this.resizerSplit,\n            `${this.resizeClass}__split-${\n                this.isResizeHorizontal() ? \"horizontal\" : \"vertical\"\n            }`\n        );\n        this.renderer.appendChild(this.resizeGutter, this.resizerSplit);\n        this.resizePropObj = resizeDirectionHelpers[this.resizerDirection];\n    }\n\n    private unlistenResizeEvents() {\n        if (isFunction(this.mouseMoveUnlisten) && !this._isHovering) {\n            this.mouseMoveUnlisten();\n        }\n        if (isFunction(this.mouseUpUnlisten)) {\n            this.mouseUpUnlisten();\n        }\n    }\n\n    // Registers mousemove\n    private onMouseEnter(event: MouseEvent) {\n        this._isHovering = true;\n        // Add hovering class only while mouse is not clicked\n        // \"which\" is supported by Safari\n        if (\n            (!isUndefined(event.buttons) && event.buttons === 0) ||\n            (!isUndefined(event.which) && event.which === 0)\n        ) {\n            this.renderer.addClass(\n                this.resizeGutter,\n                `${this.resizeClass}--hovering`\n            );\n            this.mouseMoveUnlisten = this.renderer.listen(\n                document,\n                \"mousemove\",\n                ($event: MouseEvent) => this.onMouseMove($event)\n            );\n        }\n    }\n\n    private onMouseLeave() {\n        this.renderer.removeClass(\n            this.resizeGutter,\n            `${this.resizeClass}--hovering`\n        );\n        if (!this._isDragging) {\n            this._isHovering = false;\n            this.unlistenResizeEvents();\n        }\n    }\n\n    private onMouseMove(event: MouseEvent): void {\n        // No need to update styles for resizer that we're not dragging\n        if (this._isFirstTimeInteracting && this._isDragging) {\n            this.refreshStyle();\n            this._isFirstTimeInteracting = false;\n        }\n        if (this._isDragging) {\n            this.applyNewSize(event);\n            this.calculatePosition();\n        }\n    }\n\n    // Registers mouseup\n    private onMouseDown(event: MouseEvent): void {\n        this.renderer.addClass(\n            this.resizeGutter,\n            `${this.resizeClass}--active`\n        );\n        // Cursor should be there until mouseUp.\n        this.renderer.setStyle(\n            document.documentElement,\n            \"cursor\",\n            this.resizePropObj.cursor\n        );\n        this._isDragging = true;\n        this._oldSize = this.isResizeHorizontal()\n            ? event.clientX\n            : event.clientY;\n        this.mouseUpUnlisten = this.renderer.listen(\n            document,\n            \"mouseup\",\n            ($event: MouseEvent) => this.onMouseUp($event)\n        );\n        event.preventDefault(); // This disables accidental text selection while resizingw\n    }\n\n    private onMouseUp(event: MouseEvent): void {\n        this.renderer.removeStyle(document.documentElement, \"cursor\");\n        this.renderer.removeClass(\n            this.resizeGutter,\n            `${this.resizeClass}--active`\n        );\n        this._isDragging = false;\n        this.eventBusService.getStream(COMPLETE_RESIZE_EVENT).next(event);\n    }\n\n    private calculatePosition() {\n        if (this.resizerDisabled) {\n            return;\n        }\n        const parentCoord =\n            this.parentContainerNode.getBoundingClientRect()[\n                this.resizePropObj.appendDirection\n            ];\n        const elementCoord =\n            this.targetElement.nativeElement.getBoundingClientRect()[\n                this.resizePropObj.borderToCalculate\n            ];\n        this.renderer.setStyle(\n            this.resizeGutter,\n            this.resizePropObj.appendDirection,\n            `${Math.abs(parentCoord - elementCoord) - this.offsetSize}px`\n        );\n    }\n\n    private applyNewSize(event: MouseEvent) {\n        this.sibling = this.targetElement.nativeElement.nextSibling;\n        if (!this._isDragging || this.resizerDisabled) {\n            return;\n        }\n        const newSize = this.isResizeHorizontal()\n            ? event.clientX\n            : event.clientY;\n        this.updateSize(newSize);\n    }\n\n    private updateSize(newSize: number) {\n        const updatedProp = this.isMultiple\n            ? \"flex-basis\"\n            : this.resizePropObj.sizeToSet;\n        const parentSize =\n            this.parentContainerNode[\n                this.resizePropObj.nativeElementSizeProperty\n            ];\n        const valueCoeff =\n            this.resizerValue === ResizeUnit.pixel ? 1 : 100 / parentSize;\n\n        // if width is already defined then use it without calculating\n        const nativeElSize = `${\n            this.calculateNativeElementSize(\n                newSize,\n                this.resizePropObj.nativeElementSizeProperty\n            ) * valueCoeff\n        }${this.resizerValue}`;\n        const resizerPosition = `${\n            this.targetElement.nativeElement[\n                this.resizePropObj.nativeElementSizeProperty\n            ] - this.offsetSize\n        }px`;\n        if (!this.isMultiple) {\n            this.renderer.setStyle(\n                this.targetElement.nativeElement,\n                updatedProp,\n                nativeElSize\n            );\n        } else {\n            const siblingSize = `${\n                this.calculateSiblingSize(\n                    newSize,\n                    this.resizePropObj.nativeElementSizeProperty\n                ) * valueCoeff\n            }${this.resizerValue}`;\n            if (this.parentContainerNode.children.length > 2) {\n                // These 2 should ALWAYS be together\n                this.renderer.setStyle(this.sibling, updatedProp, siblingSize);\n                this.renderer.setStyle(\n                    this.targetElement.nativeElement,\n                    updatedProp,\n                    nativeElSize\n                );\n            }\n        }\n        this.renderer.setStyle(\n            this.resizeGutter,\n            this.resizePropObj.appendDirection,\n            resizerPosition\n        );\n\n        this.onSizeChanged(nativeElSize);\n        this._oldSize = newSize;\n    }\n\n    private calculateNativeElementSize(\n        newSize: number,\n        updatedProp: string\n    ): number {\n        return this.isAtTheBeginning()\n            ? this.targetElement.nativeElement[updatedProp] -\n                  (newSize - this._oldSize)\n            : this.targetElement.nativeElement[updatedProp] +\n                  (newSize - this._oldSize);\n    }\n\n    private calculateSiblingSize(newSize: number, updatedProp: string): number {\n        return this.isAtTheBeginning()\n            ? this.sibling[updatedProp] + (newSize - this._oldSize)\n            : this.sibling[updatedProp] - (newSize - this._oldSize);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\n\n/**\n * <example-url>./../examples/index.html#/common/set-focus</example-url>\n *\n * Allows focus to be databound. Note: a \"tabindex\" property may be required.\n *\n * Under the hood directive calls element.focus() and element.blur() on data bound changes.\n * If host element is not a focusable HTML element (neither \\<input\\> nor \\<textarea\\>, e.g. \\<nui-textbox\\>),\n * directive tries to find an appropriate focusable one among children.\n *\n * @dynamic\n * @ignore\n */\n@Directive({\n    selector: \"[nuiSetFocus]\",\n    standalone: false,\n})\nexport class SetFocusDirective implements AfterViewInit, OnChanges {\n    private static readonly focusablesToCapture: string[] = [\n        \"input\",\n        \"textarea\",\n    ];\n    /**\n     * This property controls whether element is focused (true) or not (false).\n     */\n    @Input() public nuiSetFocus: boolean;\n\n    @Input() public preventScroll: boolean = false;\n    /**\n     * Event fired on extarnal focus changes (initiated from UI by user).\n     * Passed value indicates whether element gets focus (true) of lose it (false).\n     * Use it when you need to synchronize inner state of directive's 'nuiSetFocus' property and bound input property.\n     */\n    @Output() public focusChange = new EventEmitter<boolean>();\n\n    private focusableElement: HTMLElement;\n\n    constructor(\n        private el: ElementRef,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (!this.focusableElement || !changes[\"nuiSetFocus\"]) {\n            return;\n        }\n        if (changes[\"nuiSetFocus\"].currentValue) {\n            this.focusableElement.focus({ preventScroll: this.preventScroll });\n        } else {\n            this.focusableElement.blur();\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.focusableElement = this.getFirstFocusable(this.el.nativeElement);\n        this.focusableElement.addEventListener(\"focus\", this.onFocus);\n        this.focusableElement.addEventListener(\"blur\", this.onBlur);\n        if (this.nuiSetFocus) {\n            this.focusableElement.focus({ preventScroll: this.preventScroll });\n        }\n    }\n\n    private onBlur = () => {\n        if (this.document.activeElement !== this.focusableElement) {\n            if (this.nuiSetFocus) {\n                this.nuiSetFocus = false;\n                this.focusChange.emit(false);\n            }\n        }\n    };\n\n    private onFocus = () => {\n        if (this.document.activeElement === this.focusableElement) {\n            if (!this.nuiSetFocus) {\n                this.nuiSetFocus = true;\n                this.focusChange.emit(true);\n            }\n        }\n    };\n\n    private getFirstFocusable(element: HTMLElement): HTMLElement {\n        const tagName = element[\"tagName\"].toLowerCase();\n        let result: HTMLElement;\n        if (SetFocusDirective.focusablesToCapture.indexOf(tagName) !== -1) {\n            result = element;\n        } else {\n            const children = element.querySelectorAll(\n                SetFocusDirective.focusablesToCapture.join()\n            );\n            result = children.length ? <HTMLElement>children[0] : element;\n        }\n        return result;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport function uuid(prefix = \"\"): string {\n    let dt = new Date().getTime();\n    const id = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n        // eslint-disable-next-line\n        const r = (dt + Math.random() * 16) % 16 | 0;\n        dt = Math.floor(dt / 16);\n        // eslint-disable-next-line\n        return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\n    });\n    return `${prefix}_${id}`;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n} from \"@angular/core\";\nimport isFinite from \"lodash/isFinite\";\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { uuid } from \"../../../functions/uuid\";\n\nexport interface IBrokerValue {\n    id: string;\n    targetID: string;\n    targetValue: number;\n}\n\n/**\n * @ignore\n * PROTOTYPE for DONUT ZOOMING\n *\n * This directive allows to zoom it's element to fit the dimensions of parent element\n */\n@Directive({\n    selector: \"[nuiZoomContent]\",\n    standalone: false,\n})\nexport class ZoomContentDirective\n    implements OnDestroy, AfterViewInit, OnChanges\n{\n    private readonly destroy$ = new Subject<void>();\n\n    @HostBinding(\"style.zoom\")\n    public zoom = 1;\n\n    @HostBinding(\"style.padding\")\n    public scalePadding: string = \"0\";\n\n    // Zoom inputs\n    @Input() public zoomRatio = 0.9;\n    @Input() public minZoomDifference = 0.1;\n    @Input() public maxZoom: number;\n    @Input() public minZoom: number;\n    @Input() public useZoom: boolean = true;\n\n    // Scale inputs\n    @Input() public margin: number = 10;\n    @Input() public minScale: number = 0.1;\n    @Input() public maxScale: number;\n    @Input() public scaleIN$: BehaviorSubject<IBrokerValue>;\n    @Input() public scaleOUT$: BehaviorSubject<IBrokerValue>;\n\n    private readonly uuid = uuid();\n    private element: HTMLElement;\n    private parentElement: HTMLElement;\n    private elementRect: DOMRect;\n    private parentRect: DOMRect;\n    private latestDataFromBroker: IBrokerValue;\n\n    private resizeObserver: ResizeObserver;\n\n    constructor(\n        element: ElementRef,\n        private ngZone: NgZone,\n        private cdRef: ChangeDetectorRef\n    ) {\n        this.element = element.nativeElement;\n\n        if (!this.element.parentElement) {\n            // Note: is parentElement will be null resizeObserver will crash\n            throw new Error(\"Parent element is undefined\");\n        }\n\n        this.parentElement = this.element.parentElement;\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.scaleOUT$ && this.scaleOUT$) {\n            this.scaleIN$.pipe(takeUntil(this.destroy$)).subscribe((data) => {\n                this.latestDataFromBroker = { ...data };\n                this.element.style.transform = `scale(${data.targetValue})`;\n                this.checkScaleBoundaries(data.targetValue);\n            });\n        }\n        this.applyTransform();\n    }\n\n    public ngAfterViewInit(): void {\n        const resizeObserver = new ResizeObserver(() => this.onResize());\n        this.ngZone.runOutsideAngular(() => {\n            resizeObserver.observe(this.element);\n            resizeObserver.observe(this.parentElement);\n        });\n\n        this.resizeObserver = resizeObserver;\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n\n        if (this.resizeObserver) {\n            this.resizeObserver.unobserve(this.element);\n            this.resizeObserver.unobserve(this.parentElement);\n        }\n    }\n\n    public onResize(): void {\n        this.elementRect = this.element?.getBoundingClientRect();\n        this.parentRect = this.parentElement?.getBoundingClientRect();\n\n        if (!this.elementRect || !this.parentRect) {\n            return;\n        }\n\n        this.applyTransform();\n    }\n\n    private applyTransform(): void {\n        if (this.useZoom) {\n            this.applyZoom();\n        } else {\n            this.applyScale();\n        }\n    }\n\n    private applyZoom() {\n        const widthZoom = this.parentRect.width / this.elementRect.width;\n        const heightZoom = this.parentRect.height / this.elementRect.height;\n\n        let zoom = Math.min(widthZoom, heightZoom) * this.zoomRatio;\n        if (this.minZoom) {\n            zoom = Math.max(zoom, this.minZoom);\n        }\n        if (this.maxZoom) {\n            zoom = Math.min(zoom, this.maxZoom);\n        }\n\n        if (Math.abs(zoom - this.zoom) > this.minZoomDifference) {\n            this.zoom = zoom;\n            this.cdRef.detectChanges(); // running inside an angular zone doesn't always work\n        }\n    }\n\n    private applyScale() {\n        const parentSize = {\n            width: this.parentElement.offsetWidth - 2 * this.margin,\n            height: this.parentElement.offsetHeight - 2 * this.margin,\n        };\n\n        const scale = Math.min(\n            parentSize.width / this.element.offsetWidth,\n            parentSize.height / this.element.offsetHeight\n        );\n\n        this.scaleOUT$\n            ? this.scaleOUT$.next({\n                  ...this.latestDataFromBroker,\n                  targetID: this.uuid,\n                  targetValue: isFinite(scale) ? scale : 0,\n              })\n            : (this.element.style.transform = `scale(${scale})`);\n\n        this.checkScaleBoundaries(scale);\n    }\n\n    private checkScaleBoundaries(scale: number) {\n        if (scale < this.minScale) {\n            this.element.style.transform = `scale(${this.minScale})`;\n        }\n\n        if (this.maxScale && scale > this.maxScale) {\n            this.element.style.transform = `scale(${this.maxScale})`;\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n * @ignore\n */\nimport { CommonModule, DatePipe } from \"@angular/common\";\nimport { NgModule, Provider } from \"@angular/core\";\n// This is not technically used here, but it does pull in the type for $localize\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { LocalizeFn } from \"@angular/localize/init\";\n\nimport { imagesData as IMAGES_PRESET } from \"../constants/images\";\nimport { imagesPresetToken } from \"../constants/images.constants\";\nimport {\n    unitConversionConstants,\n    unitConversionToken,\n} from \"../constants/unit-conversion.constants\";\nimport { NUI_ENV_PROVIDER } from \"../environment\";\nimport { SelectorService } from \"../lib/selector/selector.service\";\nimport { HighlightPipe } from \"../pipes/highlight.pipe\";\nimport { LimitToPipe } from \"../pipes/limit-to.pipe\";\nimport { MapKeyValuePipe } from \"../pipes/map-key-value.pipe\";\nimport { UnitConversionPipe } from \"../pipes/unit-conversion.pipe\";\nimport { DomUtilService } from \"../services/dom-util.service\";\nimport { EdgeDetectionService } from \"../services/edge-detection.service\";\nimport { EventBusService } from \"../services/event-bus.service\";\nimport { EventPropagationService } from \"../services/event-propagation.service\";\nimport { HistoryStorage } from \"../services/history-storage\";\nimport { LoggerService } from \"../services/log-service\";\nimport { NotificationService } from \"../services/notification-service\";\nimport { PositionService } from \"../services/position.service\";\nimport { SearchService } from \"../services/search.service\";\nimport { TransientCacheService } from \"../services/transient-cache.service\";\nimport { UnitConversionService } from \"../services/unit-conversion.service\";\nimport { UtilService } from \"../services/util.service\";\nimport { ClickFilterDirective } from \"./directives/click-filter/click-filter.directive\";\nimport { ClickInterceptorDirective } from \"./directives/click-interceptor/click-interceptor.directive\";\nimport { ClipboardDirective } from \"./directives/clipboard/clipboard.directive\";\nimport { DragAndDropService } from \"./directives/dragdrop/drag-and-drop.service\";\nimport { DraggableDirective } from \"./directives/dragdrop/draggable.directive\";\nimport { DroppableDirective } from \"./directives/dragdrop/droppable.directive\";\nimport { ResizeDirective } from \"./directives/resize/resize.directive\";\nimport { ResizeObserverDirective } from \"./directives/resize-observer/resize-observer.directive\";\nimport { ResizerDirective } from \"./directives/resizer/resizer.directive\";\nimport { SetFocusDirective } from \"./directives/set-focus/set-focus.directive\";\nimport { ZoomContentDirective } from \"./directives/zoom-content/zoom-content.directive\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [CommonModule],\n    providers: [\n        DragAndDropService,\n        EventBusService,\n        NUI_ENV_PROVIDER,\n        UnitConversionService,\n        UtilService,\n        TransientCacheService,\n        SearchService,\n        DatePipe,\n        PositionService,\n        NotificationService,\n        EventPropagationService,\n        EdgeDetectionService,\n        LoggerService,\n        DomUtilService,\n        SelectorService,\n        HistoryStorage,\n        { provide: \"windowObject\", useValue: window },\n        {\n            provide: unitConversionToken,\n            useValue: unitConversionConstants,\n        } as Provider,\n        { provide: imagesPresetToken, useValue: IMAGES_PRESET } as Provider,\n    ],\n    declarations: [\n        ClickFilterDirective,\n        ClickInterceptorDirective,\n        ClipboardDirective,\n        DraggableDirective,\n        DroppableDirective,\n        ResizeDirective,\n        ResizeObserverDirective,\n        ResizerDirective,\n        SetFocusDirective,\n        LimitToPipe,\n        HighlightPipe,\n        UnitConversionPipe,\n        MapKeyValuePipe,\n        ZoomContentDirective,\n    ],\n    exports: [\n        CommonModule,\n        ClickFilterDirective,\n        ClickInterceptorDirective,\n        ClipboardDirective,\n        DraggableDirective,\n        DroppableDirective,\n        ResizeDirective,\n        ResizeObserverDirective,\n        ResizerDirective,\n        SetFocusDirective,\n        UnitConversionPipe,\n        HighlightPipe,\n        MapKeyValuePipe,\n        ZoomContentDirective,\n    ],\n})\nexport class NuiCommonModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { IconComponent } from \"./icon.component\";\nimport { IconService } from \"./icon.service\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, IconComponent],\n    exports: [IconComponent],\n    providers: [IconService],\n})\nexport class NuiIconModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ButtonComponent } from \"./button.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [ButtonComponent],\n    imports: [NuiCommonModule, NuiIconModule],\n    exports: [ButtonComponent],\n    providers: [],\n})\nexport class NuiButtonModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @deprecated */\nexport enum KEY_CODE {\n    BACKSPACE = 8,\n    TAB = 9,\n    ENTER = 13,\n    ESCAPE = 27,\n    SPACE = 32,\n    PAGE_UP = 33,\n    PAGE_DOWN = 34,\n    END = 35,\n    HOME = 36,\n    LEFT_ARROW = 37,\n    UP_ARROW = 38,\n    RIGHT_ARROW = 39,\n    DOWN_ARROW = 40,\n    DELETE = 46,\n    X = 88,\n    ASTERISK = 106,\n    PLUS = 107,\n    MINUS = 109,\n    TILDE = 192,\n}\n\nexport enum KEYBOARD_CODE {\n    ARROW_DOWN = \"ArrowDown\",\n    ARROW_LEFT = \"ArrowLeft\",\n    ARROW_RIGHT = \"ArrowRight\",\n    ARROW_UP = \"ArrowUp\",\n    BACKSPACE = \"Backspace\",\n    ENTER = \"Enter\",\n    END = \"End\",\n    ESCAPE = \"Escape\",\n    HOME = \"Home\",\n    PAGE_DOWN = \"PageDown\",\n    PAGE_UP = \"PageUp\",\n    SHIFT_LEFT = \"ShiftLeft\",\n    SHIFT_RIGHT = \"ShiftRight\",\n    SPACE = \"Space\",\n    TAB = \"Tab\",\n    DELETE = \"Delete\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n * An abstract class (you can call it interface) which allows formField component to access inner components.\n * If there is some element that implements NuiFormFieldControl provided inside, the form field will be able\n * to control isInErrorState of that control.\n * Textbox, combobox, select, timepicker and datepicker are using this.\n */\nexport abstract class NuiFormFieldControl {\n    /** Whether the control is in an error state. */\n    public isInErrorState: boolean;\n\n    // TODO: make this field required in v-next\n    /** Aria label to set on the tab-focusable item. */\n    public ariaLabel?: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnDestroy,\n    Output,\n    Renderer2,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Subscription } from \"rxjs\";\n\nimport { CheckboxChangeEvent, ICheckboxComponent } from \"./public-api\";\nimport {\n    CHECKBOX_KEYDOWN_EVENT,\n    DOCUMENT_CLICK_EVENT,\n} from \"../../constants/event.constants\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { EventBusService } from \"../../services/event-bus.service\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n@Component({\n    selector: \"nui-checkbox\",\n    templateUrl: \"./checkbox.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => CheckboxComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => CheckboxComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./checkbox.component.less\"],\n    // TODO: turn on the view envapsulation in the scope of NUI-5823\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        \"[class.nui-checkbox--hovered]\": \"hovered\",\n        \"[class.nui-checkbox--checked]\": \"checked\",\n    },\n    standalone: false,\n})\n\n/**\n * <nui-checkbox> provides the same functionality as a native\n * <input type=\"checkbox\"> enhanced with NUI styling.\n * <example-url>./../examples/index.html#/checkbox</example-url>\n */\nexport class CheckboxComponent\n    implements\n        AfterViewInit,\n        ICheckboxComponent,\n        ControlValueAccessor,\n        OnDestroy\n{\n    private _checked: boolean;\n    private _disabled: boolean;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public get ariaLabel(): string {\n        return this._ariaLabel;\n    }\n\n    // changing the value with regular @Input doesn't trigger change detection\n    // so we need to do that manually in the setter\n    public set ariaLabel(value: string) {\n        if (value !== this._ariaLabel) {\n            this._ariaLabel = value;\n            this.changeDetector.markForCheck();\n        }\n    }\n\n    /** Users ca specify the 'aria-labelledby' which will be set to the input element */\n    @Input() ariaLabelledby: string | null = null;\n\n    /** The 'aria-describedby' attribute is read after the element's label and field type. */\n    @Input() ariaDescribedby: string;\n\n    /**\n     * Sets \"name\" attribute for inner input element of nui-checkbox\n     */\n    @Input() public name: string;\n\n    /**\n     * Sets \"title\" attribute for nui-checkbox label\n     */\n    @Input() public title = \"\";\n\n    /**\n     * Sets \"value\" attribute for inner input element of nui-checkbox\n     */\n    @Input() public value: any;\n\n    /**\n     * Event that is fired when nui-checkbox is toggled\n     */\n    @Output() public valueChange = new EventEmitter<CheckboxChangeEvent>();\n\n    /**\n     * Used for changing nui-checkbox component styles when component is hovered\n     */\n    @Input() public hovered: boolean;\n\n    /**\n     * Sets \"checked\" attribute for inner input element of nui-checkbox\n     */\n    @Input()\n    public get checked(): boolean {\n        return this._checked;\n    }\n    public set checked(val: boolean) {\n        if (this._checked !== val) {\n            this.changeDetector.markForCheck();\n        }\n        this._checked = val;\n    }\n\n    /**\n     * Sets \"required\" attribute for inner input element of nui-checkbox\n     */\n    @Input() public required: boolean;\n\n    /**\n     * Sets nui-checkbox hint that is displayed below label\n     */\n    @Input() public hint: string;\n\n    /**\n     * Used for disabling of nui-checkbox\n     */\n    @Input()\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n    public set disabled(val: boolean) {\n        if (this._disabled !== val) {\n            this.changeDetector.markForCheck();\n        }\n        this._disabled = val;\n    }\n\n    /**\n     * Used for setting of nui-checkbox indeterminate state\n     */\n    @Input() public indeterminate: boolean;\n\n    /**\n     * Reference to the inner input checkbox html element\n     */\n    @ViewChild(\"inputViewContainer\", { read: ViewContainerRef })\n    public inputViewContainer: ViewContainerRef;\n\n    @ViewChild(\"checkboxContent\")\n    public checkboxContent: ElementRef;\n    @ViewChild(\"checkboxLabel\")\n    public checkboxLabel: ElementRef;\n\n    private rendererListener: Function;\n    private sub: Subscription;\n\n    private _ariaLabel: string = \"Checkbox\";\n\n    private keysAction = [KEYBOARD_CODE.SPACE, KEYBOARD_CODE.ENTER].map(String);\n\n    constructor(\n        private changeDetector: ChangeDetectorRef,\n        private eventBusService: EventBusService,\n        private renderer: Renderer2\n    ) {}\n\n    public ngAfterViewInit(): void {\n        this.rendererListener = this.renderer.listen(\n            this.checkboxLabel.nativeElement,\n            \"keydown\",\n            (event: KeyboardEvent) => {\n                this.eventBusService\n                    .getStream(CHECKBOX_KEYDOWN_EVENT)\n                    .next(event);\n            }\n        );\n\n        this.sub = this.eventBusService\n            .getStream(CHECKBOX_KEYDOWN_EVENT)\n            .subscribe((event) => {\n                if (event.target === this.checkboxLabel.nativeElement) {\n                    if (this.keysAction.includes(event.code)) {\n                        event.stopPropagation();\n                        event.preventDefault();\n                        if (!this.disabled) {\n                            this.handleKeyboardActions();\n                        }\n                    }\n                }\n            });\n    }\n\n    public getAriaChecked(): \"true\" | \"false\" | \"mixed\" {\n        if (this.checked) {\n            return \"true\";\n        }\n\n        return this.indeterminate ? \"mixed\" : \"false\";\n    }\n\n    /**\n     * Used for changing of css style when nui-checkbox is hovered\n     */\n    public hoverHandler(): void {\n        this.hovered = !this.hovered;\n    }\n\n    /**\n     * nui-checkbox check/uncheck state handler\n     * @param event Changed nui-checkbox component\n     */\n    public changeHandler(event: CheckboxChangeEvent): void {\n        this.valueChange.emit(event);\n        const checked = !!event.target?.checked;\n        this.onChange(checked);\n        this.onTouched();\n        this.writeValue(checked);\n    }\n\n    public onClick(event: MouseEvent): void {\n        event.stopPropagation();\n        this.eventBusService.getStream(DOCUMENT_CLICK_EVENT).next(event);\n    }\n\n    public onChange(value: any): void {}\n\n    public onTouched(): void {}\n\n    public writeValue(value: any): void {\n        this.checked = value;\n    }\n\n    public registerOnChange(fn: (value: boolean) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    public ngOnDestroy(): void {\n        if (this.rendererListener) {\n            this.rendererListener();\n        }\n        if (this.sub) {\n            this.sub.unsubscribe();\n        }\n    }\n\n    private handleKeyboardActions(): void {\n        if (this.indeterminate) {\n            this.inputViewContainer.element.nativeElement.checked = true;\n            this.indeterminate = false;\n        } else {\n            this.inputViewContainer.element.nativeElement.checked =\n                !this.inputViewContainer.element.nativeElement.checked;\n        }\n        this.inputViewContainer.element.nativeElement.dispatchEvent(\n            new Event(\"change\")\n        );\n    }\n}\n","<div class=\"nui-checkbox\">\n    <label\n        class=\"nui-checkbox__label\"\n        #checkboxLabel\n        [attr.aria-label]=\"ariaLabel || null\"\n        [attr.aria-labelledby]=\"ariaLabelledby\"\n        [attr.aria-describedby]=\"ariaDescribedby\"\n        [attr.tabindex]=\"!disabled ? 0 : -1\"\n        [title]=\"title\"\n        [class.nui-checkbox__translucent]=\"disabled\"\n        (mouseenter)=\"hoverHandler()\"\n        (mouseleave)=\"hoverHandler()\"\n    >\n        <div class=\"nui-checkbox__content\">\n            <input\n                #inputViewContainer\n                class=\"nui-checkbox__input\"\n                type=\"checkbox\"\n                [attr.aria-checked]=\"getAriaChecked()\"\n                [attr.name]=\"name\"\n                [value]=\"value\"\n                [checked]=\"checked\"\n                [disabled]=\"disabled\"\n                [required]=\"required\"\n                [indeterminate]=\"indeterminate\"\n                (click)=\"onClick($event)\"\n                (change)=\"changeHandler($event)\"\n            />\n            <div class=\"nui-checkbox__mark\">\n                <i class=\"nui-checkbox__glyph\"></i>\n            </div>\n            <div #checkboxContent class=\"nui-checkbox__transclude\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n        <div class=\"nui-help-hint\" *ngIf=\"hint\">{{ hint }}</div>\n    </label>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    Renderer2,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport _remove from \"lodash/remove\";\nimport { Subscription } from \"rxjs\";\n\nimport { CheckboxComponent } from \"./checkbox.component\";\nimport { CheckboxChangeEvent, ICheckboxComponent } from \"./public-api\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n@Component({\n    selector: \"nui-checkbox-group\",\n    templateUrl: \"./checkbox-group.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => CheckboxGroupComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => CheckboxGroupComponent),\n            multi: true,\n        },\n    ],\n    host: { role: \"group\" },\n    standalone: false,\n})\n/**\n * Component for combining of nui-checkbox components in to group\n * <example-url>./../examples/index.html#/checkbox-group</example-url>\n */\nexport class CheckboxGroupComponent\n    implements AfterViewInit, OnDestroy, ControlValueAccessor\n{\n    /**\n     * Sets \"name\" attribute for inner input element of nui-checkbox\n     */\n    @Input() public name: string;\n\n    /**\n     * Stores values from selected nui-checkboxes children components\n     */\n    @Input() public values: any[];\n\n    /**\n     * Is emitted when nui-checkbox is selected\n     */\n    @Output() public valuesChange = new EventEmitter<any[]>();\n\n    /**\n     * CheckboxGroupComponent children array from CheckboxComponent items\n     */\n    @ContentChildren(CheckboxComponent, { descendants: true })\n    private children: QueryList<CheckboxComponent>;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel = \"Checkbox Group\";\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabeledby = \"\";\n\n    private subscriptionsArray = new Array<Subscription>();\n    private disabled: boolean = false;\n\n    constructor(private renderer: Renderer2) {}\n\n    /**\n     * Subscribe to nui-checkbox-group children values change\n     */\n    public ngAfterViewInit(): void {\n        this.children.toArray().forEach((child: ICheckboxComponent) => {\n            this.renderer.setAttribute(\n                child.inputViewContainer.element.nativeElement,\n                \"name\",\n                this.name\n            );\n            this.subscriptionsArray.push(this.subscribeToCheckboxEvent(child));\n            setTimeout(() => {\n                child.checked = this.values.indexOf(child.value) > -1;\n                child.disabled = child.disabled || this.disabled;\n            });\n        });\n\n        this.children.changes.subscribe(\n            (checkboxComponentQueryList: QueryList<ICheckboxComponent>) => {\n                // verify that there are no observers on checkboxes as we are creating new.\n                this.subscriptionsArray.forEach((sub) => sub.unsubscribe());\n                checkboxComponentQueryList\n                    .toArray()\n                    .forEach((checkbox: ICheckboxComponent) => {\n                        this.renderer.setAttribute(\n                            checkbox.inputViewContainer.element.nativeElement,\n                            \"name\",\n                            this.name\n                        );\n                        this.subscriptionsArray.push(\n                            this.subscribeToCheckboxEvent(checkbox)\n                        );\n                        setTimeout(() => {\n                            checkbox.checked =\n                                this.values.indexOf(checkbox.value) > -1;\n                            checkbox.disabled =\n                                checkbox.disabled || this.disabled;\n                        });\n                    });\n            }\n        );\n    }\n\n    public onChange(value: any[]): void {}\n\n    public onTouched(): void {}\n\n    public writeValue(value: any): void {\n        this.values = value;\n    }\n\n    public registerOnChange(fn: (value: any[]) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        if (this.children) {\n            this.children\n                .toArray()\n                .forEach((child) => (child.disabled = this.disabled));\n        }\n    }\n\n    /**\n     * Unsubscribe from valuesChange event\n     */\n    public ngOnDestroy(): void {\n        this.subscriptionsArray.forEach((sub) => sub.unsubscribe());\n    }\n\n    private subscribeToCheckboxEvent(\n        checkbox: ICheckboxComponent\n    ): Subscription {\n        return checkbox.valueChange.subscribe((event: CheckboxChangeEvent) => {\n            if (event.target.checked) {\n                this.values = [...this.values, event.target.value];\n            } else {\n                _remove(this.values, (x: any) => x === event.target.value);\n            }\n            this.valuesChange.emit(this.values);\n            this.onChange(this.values);\n            this.onTouched();\n            this.writeValue(this.values);\n        });\n    }\n}\n","<div\n    class=\"nui-checkbox-group\"\n    [attr.aria-label]=\"ariaLabel || null\"\n    [attr.aria-labeledby]=\"ariaLabeledby || null\"\n>\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { CheckboxGroupComponent } from \"./checkbox-group.component\";\nimport { CheckboxComponent } from \"./checkbox.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [CheckboxComponent, CheckboxGroupComponent],\n    imports: [NuiCommonModule],\n    exports: [CheckboxComponent, CheckboxGroupComponent],\n    providers: [],\n})\nexport class NuiCheckboxModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    HostBinding,\n    Input,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { DividerSize } from \"./public-api\";\n\n// <example-url>./../examples/index.html#/divider</example-url>\n\n/** @ignore */\n@Component({\n    selector: \"nui-divider\",\n    template: \"\",\n    host: {\n        class: \"nui-divider\",\n        role: \"separator\",\n    },\n    styleUrls: [\"./divider.component.less\"],\n    encapsulation: ViewEncapsulation.Emulated,\n    standalone: false,\n})\nexport class DividerComponent {\n    /**\n     * Defines if divider is vertical.\n     */\n    @Input() isVertical: boolean;\n\n    /**\n     * Defines divider's margins.\n     */\n    @Input() size: DividerSize;\n\n    @HostBinding(\"class.nui-divider--vertical\")\n    public get isVerticalDivider(): boolean {\n        return this.isVertical;\n    }\n\n    @HostBinding(\"class.nui-divider--horizontal\")\n    public get isHorizontalDivider(): boolean {\n        return !this.isVertical;\n    }\n\n    @HostBinding(\"class.nui-divider--no-margin\")\n    public get isNoMargins(): boolean {\n        return this.size === \"no-margin\";\n    }\n\n    @HostBinding(\"class.xs\") public get isExtraSmall(): boolean {\n        return this.size === \"extra-small\";\n    }\n\n    @HostBinding(\"class.sm\") public get isSmall(): boolean {\n        return this.size === \"small\";\n    }\n\n    @HostBinding(\"class.md\") public get isMedium(): boolean {\n        return this.size === \"medium\";\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { DividerComponent } from \"./divider.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [DividerComponent],\n    imports: [NuiCommonModule],\n    exports: [DividerComponent],\n    providers: [],\n})\nexport class NuiDividerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkDropList } from \"@angular/cdk/drag-drop\";\nimport { Component, EventEmitter, Output, ViewChild } from \"@angular/core\";\n\n// import {DraggableComponent} from \"./draggable.component\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-droppable\",\n    templateUrl: \"./droppable.component.html\",\n    styleUrls: [\"./droppable.component.less\"],\n    standalone: false,\n})\nexport class DroppableComponent {\n    // @Input() dragSource: DraggableComponent;\n\n    @Output() dragOver = new EventEmitter<DragEvent>();\n    @Output() dragEnter = new EventEmitter<DragEvent>();\n    @Output() dragLeave = new EventEmitter<DragEvent>();\n    @Output() dropSuccess = new EventEmitter<any>();\n\n    @ViewChild(CdkDropList, { static: true }) dropList: CdkDropList;\n\n    public onDrop(event: any): void {\n        if (event.container !== event.previousContainer) {\n            this.dropSuccess.emit(event.item.data);\n        }\n    }\n}\n","<div cdkDropList (cdkDropListDropped)=\"onDrop($event)\">\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkDrag, CdkDropList } from \"@angular/cdk/drag-drop\";\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewChild,\n} from \"@angular/core\";\n\nimport { DroppableComponent } from \"./droppable.component\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-draggable\",\n    templateUrl: \"./draggable.component.html\",\n    styleUrls: [\"./draggable.component.less\"],\n    standalone: false,\n})\nexport class DraggableComponent implements OnInit {\n    @Input() payload: any;\n    @Input() dropTarget: DroppableComponent;\n    @Input() dragHandle: boolean = false;\n    @Input() dragPreview: TemplateRef<any>;\n    @Output() dragStart = new EventEmitter();\n    @Output() dragEnd = new EventEmitter();\n\n    @ViewChild(CdkDropList, { static: true }) dropList: CdkDropList;\n    @ViewChild(CdkDrag, { static: true }) dragElement: CdkDrag;\n\n    constructor() {}\n\n    public ngOnInit(): void {\n        this.dragElement.dropContainer = this.dropTarget.dropList;\n    }\n}\n","<div cdkDropList [cdkDropListConnectedTo]=\"[dropTarget.dropList]\">\n    <div\n        cdkDrag\n        [cdkDragData]=\"payload\"\n        [class.cdk-drag-with-handle]=\"dragHandle\"\n    >\n        <svg\n            *ngIf=\"dragHandle\"\n            cdkDragHandle\n            width=\"24px\"\n            fill=\"currentColor\"\n            viewBox=\"0 0 24 24\"\n        >\n            <path\n                d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\"\n            ></path>\n            <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n        </svg>\n\n        <ng-content></ng-content>\n\n        <ng-container *ngIf=\"dragPreview\">\n            <div *cdkDragPreview>\n                <ng-container *ngTemplateOutlet=\"dragPreview\"></ng-container>\n            </div>\n        </ng-container>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { NgModule } from \"@angular/core\";\n\nimport { DraggableComponent } from \"./draggable.component\";\nimport { DroppableComponent } from \"./droppable.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, DragDropModule],\n    declarations: [DraggableComponent, DroppableComponent],\n    exports: [DragDropModule, DraggableComponent, DroppableComponent],\n    providers: [],\n})\nexport class NuiDragDropModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    animate,\n    AnimationEvent,\n    state,\n    style,\n    transition,\n    trigger,\n} from \"@angular/animations\";\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { Subject, Subscription } from \"rxjs\";\n\n// <example-url>./../examples/index.html#/message</example-url>\n@Component({\n    selector: \"nui-message\",\n    templateUrl: \"./message.component.html\",\n    animations: [\n        trigger(\"dismiss\", [\n            state(\"initial\", style({})),\n            state(\"dismissed\", style({\n                opacity: 0,\n            })),\n            transition(\"initial <=> dismissed\", animate(`0.3s linear`)),\n        ]),\n    ],\n    styleUrls: [\"./message.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { \"[attr.role]\": \"role\" },\n    standalone: false,\n})\nexport class MessageComponent implements OnInit, OnDestroy {\n    public static ICON_MAP: { [id: string]: string } = {\n        ok: \"severity_ok\",\n        warning: \"severity_warning\",\n        critical: \"severity_critical\",\n        info: \"severity_info\",\n    };\n    public static UNKNOWN_ICON = \"severity_unknown\";\n\n    @HostBinding(\"class.d-none\") isHidden: boolean = false;\n\n    @Input() public type: null | \"ok\" | \"info\" | \"critical\" | \"warning\";\n    @Input() public allowDismiss: boolean = true;\n    @Input() public manualControl: Subject<boolean>;\n\n    /**\n     * emits value when user closed message by clicking (x) button\n     */\n    @Output() public dismiss = new EventEmitter();\n\n    public dismissState: \"initial\" | \"dismissed\" = \"initial\";\n    private dismissSubscription: Subscription;\n\n    get role(): string {\n        return this.type === \"ok\" || this.type === \"info\" ? \"status\" : \"alert\";\n    }\n\n    constructor(private element: ElementRef, private renderer: Renderer2) {}\n\n    public ngOnInit(): void {\n        if (this.manualControl) {\n            this.dismissSubscription = this.manualControl.subscribe(\n                (shown: boolean) => {\n                    this.dismissState = shown ? \"initial\" : \"dismissed\";\n                }\n            );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.dismiss.complete();\n        if (this.dismissSubscription) {\n            this.dismissSubscription.unsubscribe();\n        }\n    }\n\n    public dismissMessage(): void {\n        this.dismissState = \"dismissed\";\n        this.dismiss.emit();\n    }\n\n    public animationFinished(event: AnimationEvent): void {\n        if (event.toState === \"dismissed\") {\n            if (this.manualControl) {\n                this.isHidden = true;\n            } else {\n                this.renderer.removeChild(\n                    this.element.nativeElement.parentNode,\n                    this.element.nativeElement\n                );\n            }\n        }\n    }\n\n    public animationStart(event: AnimationEvent): void {\n        if (event.fromState === \"dismissed\") {\n            this.isHidden = false;\n        }\n    }\n\n    public get messageClass(): string {\n        return this.type ? `nui-message-${this.type.toLowerCase()}` : \"\";\n    }\n\n    public get icon(): string {\n        return (\n            MessageComponent.ICON_MAP[this.type ?? \"\"] ||\n            MessageComponent.UNKNOWN_ICON\n        );\n    }\n}\n","<div\n    [@dismiss]=\"dismissState\"\n    (@dismiss.done)=\"animationFinished($event)\"\n    (@dismiss.start)=\"animationStart($event)\"\n    class=\"nui-flex-container nui-flex--nowrap nui-message {{ messageClass }}\"\n    [ngClass]=\"{ 'nui-message-allow-dismiss': allowDismiss }\"\n>\n    <nui-icon class=\"nui-message-icon\" [icon]=\"icon\"></nui-icon>\n\n    <div class=\"nui-message-content\">\n        <span class=\"nui-message-content-text\">\n            <ng-content></ng-content>\n        </span>\n    </div>\n\n    <div class=\"nui-message-dismiss-button\" *ngIf=\"allowDismiss\">\n        <button\n            nui-button\n            type=\"button\"\n            displayStyle=\"action\"\n            size=\"default\"\n            icon=\"close\"\n            (click)=\"dismissMessage()\"\n        ></button>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { MessageComponent } from \"./message.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../../lib/button/button.module\";\nimport { NuiIconModule } from \"../../lib/icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [MessageComponent],\n    imports: [NuiCommonModule, NuiIconModule, NuiButtonModule],\n    exports: [MessageComponent],\n    providers: [],\n})\nexport class NuiMessageModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    ViewEncapsulation,\n    afterNextRender,\n    computed,\n    effect,\n    inject,\n    input,\n} from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\n\nimport { IImagesPresetItem } from \"./public-api\";\nimport { imagesPresetToken } from \"../../constants/images.constants\";\nimport { computeA11yForGraphic } from \"../../functions/a11y-graphics.util\";\nimport { LoggerService } from \"../../services/log-service\";\nimport { UtilService } from \"../../services/util.service\";\n\n/**\n * <example-url>./../examples/index.html#/image</example-url>\n */\n@Component({\n    selector: \"nui-image\",\n    standalone: true,\n    templateUrl: \"./image.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\"./image.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        \"[attr.role]\": \"computedRole()\",\n        \"[attr.aria-hidden]\": \"computedAriaHidden()\",\n        \"[attr.aria-label]\": \"computedAriaLabel()\",\n    },\n})\nexport class ImageComponent {\n    /**\n     * Image name from nui image preset or external source\n     */\n    public image = input<any>();\n\n    /**\n     * Sets aria-label text or alt for image from external source\n     */\n    public description = input<string>();\n\n    /**\n     * Available values are: 'left' and 'right'\n     */\n    public float = input<string>();\n    /**\n     * Available values are: 'centered', 'small', 'large'\n     */\n    public margin = input<string>();\n    /**\n     * 'True' will apply 30% opacity to the image\n     */\n    public isWatermark = input<boolean>();\n    /**\n     * Sets the width of the container parent image\n     */\n    public width = input<string>(\"auto\");\n    /**\n     * Sets the height of the container parent image\n     */\n    public height = input<string>(\"auto\");\n    /**\n     * When set to true sets the hardcoded width and height of the svg to 100% to fill the parent container\n     */\n    public autoFill = input<boolean>();\n    /**\n     * Optional ARIA role override. Constrained to 'img' | 'presentation' | null.\n     * If omitted, role is inferred from presence of alt/label.\n     */\n    public role = input<\"img\" | \"presentation\" | null>();\n\n    public imageName = computed<string | null>(() => {\n        const img = this.image();\n        if (img && typeof img === \"object\" && \"name\" in img) {\n            return (img as any).name ?? null;\n        }\n        const fromPreset = this.getImage(img as string);\n        return fromPreset?.name ?? null;\n    });\n\n    public hasAlt = computed<boolean>(() => {\n        const img = this.image();\n        const hasCode = !!(img && typeof img === \"object\" && typeof (img as any).code === \"string\");\n        return !hasCode;\n    });\n\n    public imageTemplate = computed<SafeHtml>(() => {\n        const img = this.image();\n        let html = \"\";\n        if (img && typeof img === \"object\" && typeof (img as any).code === \"string\") {\n            html = (img as any).code;\n        } else if (typeof img === \"string\") {\n            const fromPreset = this.getImage(img);\n            if (fromPreset?.code) {\n                html = fromPreset.code;\n            } else {\n                html = `<img src=\"${img}\" alt=\"${this.description()}\">`;\n            }\n        }\n        return this.domSanitizer.bypassSecurityTrustHtml(html);\n    });\n\n    private a11y = computed(() =>\n        computeA11yForGraphic({\n            decorative: false,\n            explicitRole: this.role(),\n            label: this.description() || this.imageName() || null,\n            hasAlt: this.hasAlt(),\n            statusParts: undefined,\n        })\n    );\n\n    private logger = inject(LoggerService);\n    private utilService = inject(UtilService);\n    private changeDetector = inject(ChangeDetectorRef);\n    private images = inject<Array<IImagesPresetItem>>(imagesPresetToken);\n    private domSanitizer = inject(DomSanitizer);\n    private el = inject(ElementRef);\n\n    public computedRole = computed(() => this.a11y().role);\n    public computedAriaHidden = computed(() => this.a11y().ariaHidden);\n    public computedAriaLabel = computed(() => this.a11y().ariaLabel);\n\n    constructor() {\n        effect(() => {\n            const h = this.height();\n            const w = this.width();\n            [h, w].forEach((item) => {\n                if (item !== undefined && !this.isImageSizeValid(item)) {\n                    this.logger.error(\n                        \"Image size should be specified in 'px', '%', or 'auto\"\n                    );\n                }\n            });\n        });\n\n        afterNextRender(() => {\n            if (this.autoFill()) {\n                const svg = this.el.nativeElement.querySelector(\"svg\");\n                if (svg) {\n                    svg.setAttribute(\"width\", \"100%\");\n                    svg.setAttribute(\"height\", \"100%\");\n                } else {\n                    console.warn(\n                        \"Can't apply 'autoFill' to nui-image, because it is only applicable to SVG type of images\"\n                    );\n                }\n            }\n\n            // Fix bug for Safari with wrong alignment of floated SVG images\n            if (this.float() && !this.width() && this.utilService.browser?.isSafari()) {\n                const svg = this.el.nativeElement.querySelector(\"svg\");\n                if (svg) {\n                    (this.el.nativeElement as HTMLElement).style.width = svg.width.baseVal.value + \"px\";\n                    this.changeDetector.detectChanges();\n                }\n            }\n        });\n    }\n\n    private getImage = (imageName: string): IImagesPresetItem | undefined =>\n        this.images.find((img) => img.name === imageName);\n\n    private isImageSizeValid(value: string): boolean {\n        return (\n            !isNaN(parseFloat(value)) &&\n            (value.includes(\"px\") || value.includes(\"%\") || value.includes(\"auto\"))\n        );\n    }\n}\n","<div\n    class=\"nui-image nui-image__hidden\"\n    [innerHTML]=\"imageTemplate()\"\n    [style.height]=\"height()\"\n    [style.width]=\"width()\"\n    [class.nui-image__left]=\"float() === 'left'\"\n    [class.nui-image__right]=\"float() === 'right'\"\n    [class.nui-image__margin-centered]=\"margin() === 'centered'\"\n    [class.nui-image__margin-small]=\"margin() === 'small'\"\n    [class.nui-image__margin-large]=\"margin() === 'large'\"\n    [class.nui-image__watermarked]=\"isWatermark()\"\n></div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ImageComponent } from \"./image.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, ImageComponent],\n    exports: [ImageComponent],\n    providers: [],\n})\nexport class NuiImageModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { IOption } from \"./types\";\nimport { OverlayContainerType } from \"./types\";\n\nexport const OVERLAY_ITEM = new InjectionToken<IOption>(\"OVERLAY_ITEM\");\nexport const OVERLAY_CONTAINER = new InjectionToken<OverlayContainerType>(\n    \"OVERLAY_CONTAINER\"\n);\nexport const OVERLAY_WITH_POPUP_STYLES_CLASS = \"with-popup-styles\";\nexport const OVERLAY_ARROW_SIZE = 12.72;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Highlightable } from \"@angular/cdk/a11y\";\nimport { ScrollStrategy } from \"@angular/cdk/overlay\";\nimport { ElementRef } from \"@angular/core\";\n\n/** CSS class for the shared container that all overlays will be attached to */\nexport const OVERLAY_CONTAINER_CLASS = \"nui-overlay-container\";\n\n/** CSS class that will be attached to the overlay panel. */\nexport const OVERLAY_PANEL_CLASS = \"nui-overlay-panel\";\n\nexport const OVERLAY_DEFAULT_PRIORITY = 10;\n\nexport type ScrollStrategyAccessor = () => ScrollStrategy;\n\nexport enum OverlayPlacement {\n    Left = \"left\",\n    Right = \"right\",\n    Top = \"top\",\n    Bottom = \"bottom\",\n    Custom = \"custom\",\n}\n\nexport enum OverlayPosition {\n    topLeft = \"top-left\",\n    topRight = \"top-right\",\n    bottomLeft = \"bottom-left\",\n    bottomRight = \"bottom-right\",\n    centerLeft = \"center-left\",\n    centerRight = \"center-right\",\n    centerTop = \"center-top\",\n    centerBottom = \"center-bottom\",\n    leftTop = \"left-top\",\n    leftBottom = \"left-bottom\",\n    rightTop = \"right-top\",\n    rightBottom = \"right-bottom\",\n}\n\nexport type OverlayContainerType = ElementRef<HTMLElement> | string;\n\nexport interface IOverlayComponent {\n    showing: boolean;\n    toggle: () => void;\n}\n\nexport interface IOptionValueObject {\n    /** Please use \"id\" if you want to distinguish same options in different Group Sections */\n    id?: string;\n    [key: string]: any;\n}\n\nexport type OptionValueType = IOptionValueObject | string | null;\n\nexport interface IOption extends Highlightable {\n    scrollIntoView: (options?: ScrollIntoViewOptions) => void;\n    element: ElementRef<HTMLElement>;\n    outfiltered?: boolean;\n    isDisabled?: boolean;\n}\n\nexport interface IOverlayPositionServiceConfig {\n    arrowSize?: number;\n    arrowPadding?: number;\n}\n\nexport interface IResizeConfig {\n    updateSize?: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable } from \"@angular/core\";\nimport _isNull from \"lodash/isNull\";\n\nimport { OVERLAY_CONTAINER_CLASS, OVERLAY_DEFAULT_PRIORITY } from \"./types\";\n\nconst PRIORITY_ATTRIBUTE = \"priority\";\n\n/** @dynamic */\n@Injectable({ providedIn: \"root\" })\nexport class OverlayContainerService {\n    constructor(@Inject(DOCUMENT) private document: Document) {}\n\n    /**\n     * Create a shared container to be used by all overlays if needed\n     *\n     * @param elementOrSelector - specifies the container where the overlay will be created\n     * @param priority          - used for rendering overlays above or below others\n     *                            (lower values will be rendered below higher priority values)\n     */\n    public getOverlayContainer(\n        elementOrSelector: Element | string = this.document.body,\n        priority: number = OVERLAY_DEFAULT_PRIORITY\n    ): HTMLElement {\n        // eslint-disable-next-line no-undef-init\n        let elementFromSelector: HTMLElement | undefined = undefined;\n\n        if (typeof elementOrSelector === \"string\") {\n            const result: HTMLElement | null =\n                this.document.querySelector<HTMLElement>(elementOrSelector);\n            elementFromSelector = !_isNull(result) ? result : undefined;\n\n            if (!elementFromSelector) {\n                throw new Error(\n                    `Specified overlay container '${\n                        elementOrSelector || \"body\"\n                    }' was not found in the DOM.`\n                );\n            }\n        }\n\n        // according priority to custom container selector provided by user.\n        const targetContainer: HTMLElement =\n            elementFromSelector ??\n            <HTMLElement>elementOrSelector ??\n            this.document.body;\n        const sharedContainer = this.createSharedContainer(targetContainer);\n\n        let overlayContainer: HTMLElement | undefined;\n\n        const overlayPriorityClass = \"overlay-container-priority\";\n        const desiredPriorityClass = priority.toString().padStart(3, \"0\");\n        let lastPriorityDomEl: HTMLElement | undefined;\n\n        let overlays: NodeListOf<HTMLElement>;\n\n        if (targetContainer === this.document.body) {\n            overlays = this.document.querySelectorAll(\n                `body > .cdk-overlay-container > .${overlayPriorityClass}`\n            );\n        } else {\n            overlays = sharedContainer.querySelectorAll(\n                `.${overlayPriorityClass}`\n            );\n        }\n\n        // loop through all our priorities in case we have any\n        for (let i = 0; i < overlays.length; i++) {\n            lastPriorityDomEl = overlays[i];\n\n            if (\n                lastPriorityDomEl.getAttribute(PRIORITY_ATTRIBUTE) ===\n                desiredPriorityClass\n            ) {\n                // we already have our priority container\n                overlayContainer = lastPriorityDomEl;\n            }\n\n            // we need to stop if our priority is higher than the desired priority\n            if (\n                (lastPriorityDomEl.getAttribute(PRIORITY_ATTRIBUTE) ?? \"\") >\n                desiredPriorityClass\n            ) {\n                break;\n            }\n        }\n\n        if (!overlayContainer) {\n            const div: HTMLElement = this.document.createElement(\"div\");\n            div.classList.add(overlayPriorityClass);\n            div.setAttribute(PRIORITY_ATTRIBUTE, desiredPriorityClass);\n\n            if (!lastPriorityDomEl) {\n                // create our priority element in case our shared container just got created\n                // and we don't have any priorities yet\n                overlayContainer = sharedContainer.appendChild(div);\n            } else {\n                // create our priory element before or after the last priority DOM element\n                // depending on the desired priority\n                overlayContainer = lastPriorityDomEl.insertAdjacentElement(\n                    (lastPriorityDomEl.getAttribute(PRIORITY_ATTRIBUTE) ?? \"\") >\n                        desiredPriorityClass\n                        ? \"beforebegin\"\n                        : \"afterend\",\n                    div\n                ) as HTMLElement;\n            }\n        }\n\n        return overlayContainer;\n    }\n\n    private createSharedContainer(targetContainer: Element): Element {\n        let sharedContainer: Element | undefined;\n\n        if (targetContainer === this.document.body) {\n            // create shared container only if it doesn't exist already\n            sharedContainer =\n                targetContainer.querySelector(\n                    `body > .${OVERLAY_CONTAINER_CLASS}`\n                ) ?? undefined;\n        } else {\n            // create shared container only if it doesn't exist already\n            sharedContainer =\n                targetContainer.querySelector(`.${OVERLAY_CONTAINER_CLASS}`) ??\n                undefined;\n        }\n\n        if (!sharedContainer) {\n            sharedContainer = this.document.createElement(\"div\");\n            sharedContainer.classList.add(\n                OVERLAY_CONTAINER_CLASS,\n                \"cdk-overlay-container\"\n            );\n            targetContainer.appendChild(sharedContainer);\n        }\n\n        return sharedContainer;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n * Alternative to OverlayContainer that supports custom container\n *\n * Should be provided in the root component.\n */\nimport { OverlayContainer } from \"@angular/cdk/overlay\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable, OnDestroy } from \"@angular/core\";\n\nimport { OverlayContainerService } from \"./overlay-container.service\";\n\n/** @dynamic */\n@Injectable()\nexport class OverlayCustomContainer\n    extends OverlayContainer\n    implements OnDestroy\n{\n    constructor(\n        @Inject(DOCUMENT) document: Document,\n        platform: Platform,\n        private overlayService: OverlayContainerService\n    ) {\n        super(document, platform);\n    }\n\n    public setContainer(element: Element): void {\n        this._containerElement =\n            this.overlayService.getOverlayContainer(element);\n    }\n\n    public ngOnDestroy(): void {\n        // Overriding default destroy to prevent unwanted cleanup\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ConnectedOverlayPositionChange,\n    ConnectedPosition,\n    FlexibleConnectedPositionStrategy,\n    OverlayRef,\n} from \"@angular/cdk/overlay\";\nimport { Injectable } from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\nimport { Subscription } from \"rxjs\";\n\nimport { OVERLAY_ARROW_SIZE } from \"./constants\";\nimport {\n    IOverlayPositionServiceConfig,\n    OverlayPlacement,\n    OverlayPosition,\n} from \"./types\";\n\nenum OverlayPanelClass {\n    overlayCenterTop = \"overlay-center-top\",\n    overlayTopLeft = \"overlay-top-left\",\n    overlayTopRight = \"overlay-top-right\",\n    overlayCenterBottom = \"overlay-center-bottom\",\n    overlayBottomRight = \"overlay-bottom-right\",\n    overlayBottomLeft = \"overlay-bottom-left\",\n    overlayCenterLeft = \"overlay-center-left\",\n    overlayLeftTop = \"overlay-left-top\",\n    overlayLeftBottom = \"overlay-left-bottom\",\n    overlayCenterRight = \"overlay-center-right\",\n    overlayRightTop = \"overlay-right-top\",\n    overlayRightBottom = \"overlay-right-bottom\",\n}\n\n@Injectable()\nexport class OverlayPositionService {\n    private overlayPositions: Record<OverlayPosition, ConnectedPosition>;\n\n    private arrowSize: number;\n    private arrowPadding: number;\n    public config: IOverlayPositionServiceConfig;\n\n    public setOverlayPositionConfig(\n        config?: IOverlayPositionServiceConfig\n    ): void {\n        this.arrowSize = !isNil(config?.arrowSize)\n            ? <number>config?.arrowSize\n            : OVERLAY_ARROW_SIZE;\n        this.arrowPadding = !isNil(config?.arrowPadding)\n            ? <number>config?.arrowPadding\n            : 0;\n        this.overlayPositions = getOverlayPositions();\n    }\n\n    public updateOffsetOnPositionChanges(\n        positionStrategy: FlexibleConnectedPositionStrategy,\n        getOverlayRef: () => OverlayRef\n    ): Subscription {\n        return positionStrategy.positionChanges.subscribe(\n            (connectedPosition: ConnectedOverlayPositionChange) => {\n                const overlayRefElement = getOverlayRef().overlayElement;\n                const panelClass = connectedPosition.connectionPair.panelClass;\n                if (!panelClass) {\n                    return;\n                }\n                this.setOverlayOffset(panelClass, overlayRefElement);\n            }\n        );\n    }\n\n    private setOverlayOffset(\n        panelClass: string | string[],\n        overlayRefElement: HTMLElement\n    ) {\n        if (Array.isArray(panelClass)) {\n            panelClass = this.getOverlayPositionPanelClass(panelClass);\n        }\n\n        if (!panelClass) {\n            return;\n        }\n\n        overlayRefElement.style.marginLeft = \"\";\n        overlayRefElement.style.marginTop = \"\";\n        overlayRefElement.style.marginBottom = \"\";\n        overlayRefElement.style.marginRight = \"\";\n\n        switch (panelClass) {\n            case OverlayPanelClass.overlayCenterTop:\n                overlayRefElement.style.marginBottom = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayTopLeft:\n                overlayRefElement.style.marginRight =\n                    2 * this.arrowPadding + \"px\";\n                overlayRefElement.style.marginBottom = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayTopRight:\n                overlayRefElement.style.marginLeft =\n                    2 * this.arrowPadding + \"px\";\n                overlayRefElement.style.marginBottom = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayCenterBottom:\n                overlayRefElement.style.marginTop = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayBottomRight:\n                overlayRefElement.style.marginLeft =\n                    2 * this.arrowPadding + \"px\";\n                overlayRefElement.style.marginTop = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayBottomLeft:\n                overlayRefElement.style.marginRight =\n                    2 * this.arrowPadding + \"px\";\n                overlayRefElement.style.marginTop = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayCenterLeft:\n                overlayRefElement.style.marginRight = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayLeftTop:\n                overlayRefElement.style.marginRight = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayLeftBottom:\n                overlayRefElement.style.marginRight = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayCenterRight:\n                overlayRefElement.style.marginLeft = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayRightTop:\n                overlayRefElement.style.marginLeft = this.arrowSize + \"px\";\n                break;\n            case OverlayPanelClass.overlayRightBottom:\n                overlayRefElement.style.marginLeft = this.arrowSize + \"px\";\n                break;\n        }\n    }\n\n    public getPossiblePositionsForPlacement(\n        placement: OverlayPlacement\n    ): ConnectedPosition[] {\n        const possiblePositions: ConnectedPosition[] = [];\n\n        // add positions for the requested placement\n        possiblePositions.push(...this.getPositionsForPlacement(placement));\n\n        // add positions for the opposite placement in case the requested placement\n        // would be rendered outside the screen\n        switch (placement) {\n            case OverlayPlacement.Left:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(OverlayPlacement.Right),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Top),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Bottom)\n                );\n                break;\n            case OverlayPlacement.Right:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(OverlayPlacement.Left),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Top),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Bottom)\n                );\n                break;\n            case OverlayPlacement.Top:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(OverlayPlacement.Bottom),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Left),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Right)\n                );\n                break;\n            case OverlayPlacement.Bottom:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(OverlayPlacement.Top),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Left),\n                    ...this.getPositionsForPlacement(OverlayPlacement.Right)\n                );\n                break;\n        }\n\n        return possiblePositions;\n    }\n\n    private getOverlayPositionPanelClass(panelClass: string[]): string {\n        let result;\n        for (const panelClassKey in OverlayPanelClass) {\n            if (OverlayPanelClass.hasOwnProperty(panelClassKey)) {\n                result = panelClass.find((i) => i === panelClassKey);\n            }\n        }\n        return result || \"\";\n    }\n\n    /**\n     * Returns all possible positions for a placement\n     * Eg: left => [OVERLAY_POSITIONS[centerLeft], OVERLAY_POSITIONS[topLeft], OVERLAY_POSITIONS[bottomLeft]]\n     *\n     * @param placement\n     * @returns ConnectedPosition[]\n     */\n    private getPositionsForPlacement(\n        placement: OverlayPlacement\n    ): ConnectedPosition[] {\n        let possiblePositionNames: OverlayPosition[] = [];\n        switch (placement) {\n            case OverlayPlacement.Left:\n                possiblePositionNames = [\n                    OverlayPosition.centerLeft,\n                    OverlayPosition.leftTop,\n                    OverlayPosition.leftBottom,\n                ];\n                break;\n\n            case OverlayPlacement.Right:\n                possiblePositionNames = [\n                    OverlayPosition.centerRight,\n                    OverlayPosition.rightTop,\n                    OverlayPosition.rightBottom,\n                ];\n                break;\n\n            case OverlayPlacement.Top:\n                possiblePositionNames = [\n                    OverlayPosition.centerTop,\n                    OverlayPosition.topLeft,\n                    OverlayPosition.topRight,\n                ];\n                break;\n\n            case OverlayPlacement.Bottom:\n                possiblePositionNames = [\n                    OverlayPosition.centerBottom,\n                    OverlayPosition.bottomLeft,\n                    OverlayPosition.bottomRight,\n                ];\n                break;\n\n            case OverlayPlacement.Custom:\n                throw new Error(`Custom position should be handled by user`);\n        }\n\n        return possiblePositionNames.map(\n            (positionName: OverlayPosition) =>\n                this.overlayPositions[positionName]\n        );\n    }\n}\n\nexport function getOverlayPositions(): Record<\n    OverlayPosition,\n    ConnectedPosition\n> {\n    return {\n        // TOP\n        [OverlayPosition.centerTop]: {\n            panelClass: \"overlay-center-top\",\n            originX: \"center\",\n            originY: \"top\",\n            overlayX: \"center\",\n            overlayY: \"bottom\",\n        },\n        [OverlayPosition.topLeft]: {\n            panelClass: \"overlay-top-left\",\n            originX: \"end\",\n            originY: \"top\",\n            overlayX: \"end\",\n            overlayY: \"bottom\",\n        },\n        [OverlayPosition.topRight]: {\n            panelClass: \"overlay-top-right\",\n            originX: \"start\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        },\n        // BOTTOM\n        [OverlayPosition.centerBottom]: {\n            panelClass: \"overlay-center-bottom\",\n            originX: \"center\",\n            originY: \"bottom\",\n            overlayX: \"center\",\n            overlayY: \"top\",\n        },\n        [OverlayPosition.bottomRight]: {\n            panelClass: \"overlay-bottom-right\",\n            originX: \"start\",\n            originY: \"bottom\",\n            overlayX: \"start\",\n            overlayY: \"top\",\n        },\n        [OverlayPosition.bottomLeft]: {\n            panelClass: \"overlay-bottom-left\",\n            originX: \"end\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        },\n        // LEFT\n        [OverlayPosition.centerLeft]: {\n            panelClass: \"overlay-center-left\",\n            originX: \"start\",\n            originY: \"center\",\n            overlayX: \"end\",\n            overlayY: \"center\",\n        },\n        [OverlayPosition.leftTop]: {\n            panelClass: \"overlay-left-top\",\n            originX: \"start\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"bottom\",\n        },\n        [OverlayPosition.leftBottom]: {\n            panelClass: \"overlay-left-bottom\",\n            originX: \"start\",\n            originY: \"top\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        },\n        // RIGHT\n        [OverlayPosition.centerRight]: {\n            panelClass: \"overlay-center-right\",\n            originX: \"end\",\n            originY: \"center\",\n            overlayX: \"start\",\n            overlayY: \"center\",\n        },\n        [OverlayPosition.rightTop]: {\n            panelClass: \"overlay-right-top\",\n            originX: \"end\",\n            originY: \"bottom\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        },\n        [OverlayPosition.rightBottom]: {\n            panelClass: \"overlay-right-bottom\",\n            originX: \"end\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"top\",\n        },\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Overlay,\n    OverlayConfig,\n    OverlayContainer,\n    OverlayRef,\n    OverlaySizeConfig,\n} from \"@angular/cdk/overlay\";\nimport { Portal } from \"@angular/cdk/portal\";\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable, OnDestroy, Optional } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\n\nimport { OVERLAY_CONTAINER } from \"./constants\";\nimport { OverlayCustomContainer } from \"./overlay-custom-container\";\nimport { OverlayContainerType, OVERLAY_PANEL_CLASS } from \"./types\";\n\n/* @dynamic */\n/**\n * @ignore\n */\n@Injectable()\nexport class OverlayService implements OnDestroy {\n    // inputs\n    public contentTemplate: Portal<any>; // double check the type\n    public customContainer: OverlayContainerType;\n\n    // props/outputs\n    public showing = false;\n    public show$: Subject<void> = new Subject<void>();\n    public hide$: Subject<void> = new Subject<void>();\n\n    public get overlayConfig(): OverlayConfig {\n        if (!this._overlayConfig) {\n            this.defineOverlayConfig();\n        }\n        return this._overlayConfig;\n    }\n    public set overlayConfig(value: OverlayConfig) {\n        this._overlayConfig = value;\n    }\n    private _overlayConfig: OverlayConfig;\n    private overlayRef: OverlayRef;\n\n    constructor(\n        protected overlay: Overlay,\n        protected overlayContainer: OverlayContainer,\n        @Inject(DOCUMENT) protected document: Document,\n        @Optional()\n        @Inject(OVERLAY_CONTAINER)\n        private customContainerInjection: OverlayContainerType\n    ) {}\n\n    public createOverlay(): void {\n        this.appendToContainer();\n        this.overlayRef = this.overlay.create(this.overlayConfig);\n        this.overlayRef.attach(this.contentTemplate);\n        this.overlayRef.addPanelClass(OVERLAY_PANEL_CLASS);\n    }\n\n    public show(): void {\n        if (this.showing) {\n            return;\n        }\n        this.createOverlay();\n\n        this.showing = true;\n        this.show$.next();\n    }\n\n    public hide(): void {\n        if (!this.showing) {\n            return;\n        }\n        this.disposeOverlayRef();\n\n        this.showing = false;\n        this.hide$.next();\n    }\n\n    public getOverlayRef(): OverlayRef {\n        return this.overlayRef;\n    }\n\n    public updateSize(size: OverlaySizeConfig): void {\n        this.overlayRef?.updateSize(size);\n    }\n\n    public ngOnDestroy(): void {\n        this.show$.complete();\n        this.hide$.complete();\n    }\n\n    private defineOverlayConfig(): void {\n        const positionStrategy = this.overlay\n            .position()\n            .global()\n            .centerHorizontally()\n            .centerVertically();\n        const scrollStrategy = this.overlay.scrollStrategies.reposition();\n\n        this._overlayConfig = new OverlayConfig({\n            positionStrategy,\n            scrollStrategy,\n            hasBackdrop: false,\n            disposeOnNavigation: true,\n            backdropClass: \"cdk-overlay-transparent-backdrop\",\n        });\n    }\n\n    private disposeOverlayRef() {\n        if (this.overlayRef?.hasAttached()) {\n            this.overlayRef.dispose();\n        }\n    }\n\n    private appendToContainer(): void {\n        let container: HTMLElement | undefined;\n        const customContainer =\n            this.customContainer || this.customContainerInjection; // input is a priority\n\n        if (customContainer) {\n            container =\n                typeof customContainer === \"string\"\n                    ? this.document.querySelector<HTMLElement>(\n                          customContainer\n                      ) ?? undefined\n                    : customContainer.nativeElement;\n\n            if (!container) {\n                console.warn(\n                    `Specified container is not found: ${customContainer}. \\nAppending to body.`\n                );\n                container = this.document.body;\n            }\n        } else {\n            container = this.document.body;\n        }\n\n        (this.overlayContainer as OverlayCustomContainer).setContainer(\n            container\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Overlay,\n    OverlayConfig,\n    OverlayContainer,\n    OverlayRef,\n    OverlaySizeConfig,\n} from \"@angular/cdk/overlay\";\nimport { CdkPortal } from \"@angular/cdk/portal\";\nimport {\n    AfterContentChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport set from \"lodash/set\";\nimport some from \"lodash/some\";\nimport { Observable, Subject, Subscription } from \"rxjs\";\nimport { filter, takeUntil } from \"rxjs/operators\";\n\nimport { DOCUMENT_CLICK_EVENT } from \"../../../constants/event.constants\";\nimport { EventBusService } from \"../../../services/event-bus.service\";\nimport { OverlayCustomContainer } from \"../overlay-custom-container\";\nimport { OverlayPositionService } from \"../overlay-position.service\";\nimport { OverlayService } from \"../overlay.service\";\nimport { IOverlayComponent, OverlayContainerType } from \"../types\";\n\nexport const POPUP_V2_VIEWPORT_MARGINS_DEFAULT = 30;\n\nconst isMouseEvent = (event: Event): event is MouseEvent =>\n    event instanceof MouseEvent;\n\n// <example-url>./../examples/index.html#/overlay</example-url>\n\n/* @dynamic */\n@Component({\n    selector: \"nui-overlay\",\n    template: ` <ng-template cdk-portal>\n        <div\n            id=\"nui-overlay\"\n            class=\"nui-overlay\"\n            [attr.role]=\"roleAttr || null\"\n            [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n            [ngClass]=\"{ empty: empty$ | async }\"\n        >\n            <ng-content></ng-content>\n        </div>\n    </ng-template>`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        Overlay,\n        OverlayService,\n        OverlayPositionService,\n        { provide: OverlayContainer, useClass: OverlayCustomContainer },\n    ],\n    styleUrls: [\"overlay.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class OverlayComponent\n    implements\n        OnDestroy,\n        IOverlayComponent,\n        AfterContentChecked,\n        AfterViewInit,\n        OnChanges\n{\n    /** Sets overlay config in accordance with [Material CDK]{@link https://material.angular.io/cdk/overlay/api#OverlayConfig} */\n    @Input() public overlayConfig: OverlayConfig;\n\n    /** Element to which the Popup is attached */\n    @Input() public toggleReference: HTMLElement;\n\n    /** Popup viewport margins */\n    @Input() viewportMargin: number;\n\n    /** Sets custom container for CDK Overlay. Selector OR ElementRef */\n    @Input() customContainer: OverlayContainerType;\n\n    /** Sets the role attribute */\n    @Input() roleAttr: string;\n\n    /** Sets the aria-labelledby attribute for accessibility */\n    @Input() ariaLabelledBy?: string;\n\n    /** Emits MouseEvent when click occurs outside Select/Combobox */\n    @Output() public readonly clickOutside = new EventEmitter<MouseEvent>();\n\n    /** The place where the Popup will be attached */\n    @ViewChild(CdkPortal)\n    public contentTemplate: CdkPortal;\n\n    /** Emits on the Popup show */\n    public readonly show$: Subject<void>;\n\n    /** Emits on the Popup hide */\n    public readonly hide$: Subject<void>;\n\n    /** Emits when content of the Popup is empty */\n    public readonly empty$ = new Subject<boolean>();\n\n    /** Indicates open/close state */\n    public get showing(): boolean {\n        return this.overlayService?.showing;\n    }\n\n    private positionStrategySubscription: Subscription;\n\n    constructor(\n        public overlayPositionService: OverlayPositionService,\n        protected overlayService: OverlayService,\n        protected cdkOverlay: Overlay,\n        private eventBusService: EventBusService\n    ) {\n        this.show$ = this.overlayService.show$;\n        this.hide$ = this.overlayService.hide$;\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        const overlayPropsToMap = [\"toggleReference\", \"customContainer\"];\n\n        if (changes) {\n            overlayPropsToMap.forEach((key) => {\n                if (changes[key]) {\n                    set(this.overlayService, key, changes[key].currentValue);\n                }\n            });\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.overlayService.contentTemplate = this.contentTemplate;\n    }\n\n    public ngAfterContentChecked(): void {\n        this.empty$.next(this.isPopupContentEmpty());\n    }\n\n    public ngOnDestroy(): void {\n        this.overlayService.ngOnDestroy();\n    }\n\n    /** Shows Popup */\n    public show(): void {\n        this.setOverlayConfig();\n        this.overlayService.show();\n        this.handleOutsideClicks();\n\n        setTimeout(() => this.empty$.next(this.isPopupContentEmpty())); // timeout to get the height of rendered content items\n    }\n\n    /** Hides Popup */\n    public hide(): void {\n        this.overlayService.hide();\n        this.positionStrategySubscription?.unsubscribe();\n    }\n\n    /** Toggles Popup */\n    public toggle(): void {\n        this.overlayService.showing ? this.hide() : this.show();\n    }\n\n    public getOverlayRef(): OverlayRef {\n        return this.overlayService.getOverlayRef();\n    }\n\n    public updateSize(size: OverlaySizeConfig): void {\n        this.overlayService.updateSize(size);\n    }\n\n    /** Stream of clicks outside. */\n    private overlayClickOutside(): Observable<MouseEvent> {\n        return this.eventBusService.getStream(DOCUMENT_CLICK_EVENT).pipe(\n            filter(isMouseEvent),\n            filter((event) => {\n                const clickTarget = event.target as HTMLElement;\n                const notOrigin = !some(\n                    event.composedPath(),\n                    (p) => p === this.toggleReference\n                ); // the toggle elem\n                const notOverlay =\n                    this.overlayService\n                        .getOverlayRef()\n                        ?.overlayElement?.contains(clickTarget) === false; // the popup\n\n                return notOrigin && notOverlay;\n            })\n        );\n    }\n\n    private handleOutsideClicks() {\n        const clicksOutsideStream$ = this.overlayConfig?.hasBackdrop\n            ? this.overlayService.getOverlayRef().backdropClick()\n            : this.overlayClickOutside();\n\n        clicksOutsideStream$\n            .pipe(takeUntil(this.hide$))\n            .subscribe((v) => this.clickOutside.emit(v));\n    }\n\n    private setOverlayConfig(): void {\n        const overlayConfig = this.overlayService.overlayConfig;\n\n        const positionStrategy = this.cdkOverlay\n            .position()\n            .flexibleConnectedTo(this.toggleReference)\n            .withPush(false)\n            .withViewportMargin(\n                this.viewportMargin || POPUP_V2_VIEWPORT_MARGINS_DEFAULT\n            )\n            .withPositions([\n                {\n                    originX: \"start\",\n                    originY: \"bottom\",\n                    overlayX: \"start\",\n                    overlayY: \"top\",\n                },\n                {\n                    originX: \"start\",\n                    originY: \"top\",\n                    overlayX: \"start\",\n                    overlayY: \"bottom\",\n                },\n            ]);\n\n        this.positionStrategySubscription =\n            this.overlayPositionService.updateOffsetOnPositionChanges(\n                positionStrategy,\n                () => this.getOverlayRef()\n            );\n\n        this.overlayService.overlayConfig = {\n            ...overlayConfig,\n            positionStrategy,\n            ...this.overlayConfig,\n        };\n    }\n\n    private getContentHeight(): number {\n        const lastElementChild =\n            this.overlayService.getOverlayRef()?.hostElement?.lastElementChild;\n\n        // to maintain current signature we will return 0 to avoid unnecessary undefined/null checks\n        return lastElementChild?.clientHeight || 0;\n    }\n\n    private isPopupContentEmpty(): boolean {\n        return this.getContentHeight() <= 10; // 10 is for 5 + 5 paddings\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    Output,\n} from \"@angular/core\";\n\n/** @ignore */\n@Directive({\n    selector: \"[nuiPopupToggle]\",\n    standalone: false,\n})\nexport class PopupToggleDirective {\n    /** sets disable state and which prevents emitting toggle */\n    @Input() isDisabled: boolean;\n    /** sets disable state and which prevents emitting toggle (for using it on textbox component) */\n    @Input() disabled: boolean;\n\n    @Output() toggle = new EventEmitter();\n\n    /**\n     * Whether the toggle should react to keyboard events (Enter/Space)\n     */\n    @Input() toggleOnKey: boolean = true;\n\n    constructor(public host: ElementRef) {}\n\n    @HostListener(\"click\", [\"$event\"])\n    public handleElementFocus(event: Event): void {\n        if (!this.isDisabled && !this.disabled) {\n            this.toggle.emit(event);\n        }\n    }\n\n    @HostListener(\"keydown\", [\"$event\"])\n    public handleKeydown(event: KeyboardEvent): void {\n        if (this.isDisabled || this.disabled || !this.toggleOnKey || event.defaultPrevented) {\n            return;\n        }\n        if (event.key === \" \" || event.key === \"Enter\") {\n            event.preventDefault();\n            this.toggle.emit(event);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ConnectedPosition,\n    Overlay,\n    OverlayConfig,\n} from \"@angular/cdk/overlay\";\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { DOCUMENT_CLICK_EVENT } from \"../../constants/event.constants\";\nimport { EventBusService } from \"../../services/event-bus.service\";\nimport { OVERLAY_WITH_POPUP_STYLES_CLASS } from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\nimport { PopupToggleDirective } from \"../popup/popup-toggle.directive\";\n\nconst POPUP_V2 = \"nui-overlay\";\nconst POPUP_VISIBLE = \"visible\";\nconst ADAPTER_OVERLAY_CONFIG: OverlayConfig = {\n    panelClass: [\"popup-adapter-overlay\", OVERLAY_WITH_POPUP_STYLES_CLASS],\n};\n\n/** @dynamic */\n@Component({\n    selector: \"nui-popup\",\n    templateUrl: \"./popup-adapter.component.html\",\n    styleUrls: [\"./popup-adapter.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: \"nui-popup\",\n        role: \"dialog\",\n        \"[attr.aria-label]\": \"ariaLabel\",\n    },\n    standalone: false,\n})\nexport class PopupComponent\n    implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n    @ContentChild(PopupToggleDirective)\n    public popupToggle: PopupToggleDirective;\n\n    @Input() public width: string = \"auto\";\n    @Input() public get overlayConfig(): OverlayConfig {\n        return this._overlayConfig;\n    }\n    public set overlayConfig(value: OverlayConfig) {\n        this._overlayConfig = {\n            ...ADAPTER_OVERLAY_CONFIG,\n            ...value,\n        };\n    }\n    @Input() public contextClass: string;\n    @Input() public directionTop: boolean;\n    @Input() public directionRight: boolean;\n    @Input() public manualOpenControl: Subject<MouseEvent>;\n    @Input() public appendToBody: boolean = false;\n    @Input() public baseElementSelector: string;\n    @Input() public isHostToggleRef: boolean;\n    @Input() public ariaLabel: string = \"Popup\";\n\n    @Input() set isOpen(open: boolean) {\n        if (this.isContentInitialized) {\n            this.isOpenHandler(open);\n            return;\n        }\n        setTimeout(() => this.isOpenHandler(open));\n    }\n    get isOpen(): boolean {\n        return !!this.popup?.showing;\n    }\n\n    @Output()\n    public opened = new EventEmitter<boolean>();\n\n    @ViewChild(\"popupArea\", { static: true }) popupArea: ElementRef;\n    @ViewChild(OverlayComponent) popup: OverlayComponent;\n\n    public popupAreaContainer: ElementRef;\n    public popupAreaContent: ElementRef;\n    public toggleReference: HTMLElement;\n    public customContainer?: ElementRef;\n\n    @Input()\n    public set visible(value: boolean) {\n        this._visible = value;\n        if (value) {\n            this.popup.getOverlayRef().addPanelClass(POPUP_VISIBLE);\n            return;\n        }\n        this.popup.getOverlayRef().removePanelClass(POPUP_VISIBLE);\n    }\n    public get visible(): boolean {\n        return Boolean(this._visible);\n    }\n\n    private _visible: boolean;\n    private _overlayConfig: OverlayConfig = ADAPTER_OVERLAY_CONFIG;\n    private isContentInitialized: boolean;\n    private readonly destroy$ = new Subject<void>();\n    private lastEventType: string;\n\n    constructor(\n        private overlay: Overlay,\n        private cdRef: ChangeDetectorRef,\n        private eventBusService: EventBusService,\n        private host: ElementRef,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.appendToBody) {\n            if (changes.appendToBody?.currentValue === false) {\n                this.customContainer = this.popupArea;\n            } else {\n                this.customContainer = undefined;\n            }\n        }\n\n        if (changes.width) {\n            this.overlayConfig = { ...this.overlayConfig, width: this.width };\n        }\n\n        if (changes.directionTop || changes.directionRight) {\n            this.overlayConfig = {\n                ...this.overlayConfig,\n                positionStrategy: this.getPositionStrategy(),\n            };\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this.isContentInitialized = true;\n        this.initToggleRef();\n\n        this.overlayConfig = {\n            ...this.overlayConfig,\n            positionStrategy: this.getPositionStrategy(),\n        };\n\n        if (this.popupToggle) {\n            this.popupToggle.toggle.subscribe((e: Event) =>\n                this.toggleOpened(e)\n            );\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.overlayConfig = { ...this.overlayConfig, width: this.width };\n\n        if (this.manualOpenControl) {\n            this.manualOpenControl.subscribe((e: Event) =>\n                this.toggleOpened(e)\n            );\n        }\n\n        if (!this.appendToBody) {\n            this.customContainer = this.popupArea;\n        }\n\n        this.eventBusService\n            .getStream(DOCUMENT_CLICK_EVENT)\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((event: Event) => {\n                const isToggle =\n                    this.popupToggle && event\n                        ? (\n                              this.popupToggle.host.nativeElement as HTMLElement\n                          ).contains(event.target as HTMLElement)\n                        : false;\n                if (this.isOpen && !isToggle) {\n                    this.closePopup();\n                }\n            });\n\n        this.cdRef.detectChanges();\n    }\n\n    public toggleOpened(event: Event): void {\n        let emit = true;\n        if (event) {\n            if (this.lastEventType === \"focusin\" && event.type === \"focusin\") {\n                if (this.isOpen) {\n                    emit = true;\n                }\n            }\n            // since click triggers focusin event, we need to prevent popup from closing\n            // when focus on the input is gained via click\n            if (this.lastEventType === \"focusin\" && event.type === \"click\") {\n                emit = false;\n            }\n\n            // if popup is already closed, prevent it from opening on focusout\n            if (event.type === \"focusout\" && !this.isOpen) {\n                emit = false;\n            }\n\n            this.lastEventType = event.type;\n        }\n        if (emit) {\n            this.toggle();\n        }\n    }\n\n    public closePopup(): void {\n        this.hide();\n    }\n\n    public ngOnDestroy(): void {\n        if (this.isOpen) {\n            this.hide();\n        }\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    private getPopupConnectedPosition(): ConnectedPosition[] {\n        const leftBottom: ConnectedPosition = {\n            originX: \"start\",\n            originY: \"bottom\",\n            overlayX: \"start\",\n            overlayY: \"top\",\n        };\n        const topRight: ConnectedPosition = {\n            originX: \"start\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        };\n        const topLeft: ConnectedPosition = {\n            originX: \"end\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        };\n        const bottomRight: ConnectedPosition = {\n            originX: \"end\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        };\n        const bottomLeft: ConnectedPosition = {\n            originX: \"end\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        };\n        const rightTop: ConnectedPosition = {\n            originX: \"end\",\n            originY: \"top\",\n            overlayX: \"end\",\n            overlayY: \"bottom\",\n        };\n\n        if (this.directionTop && this.directionRight) {\n            return [rightTop];\n        }\n\n        if (this.directionTop) {\n            return [topRight, topLeft];\n        }\n\n        if (this.directionRight) {\n            return [bottomRight, bottomLeft];\n        }\n\n        return [\n            leftBottom,\n            topRight,\n            topLeft,\n            bottomRight,\n            bottomLeft,\n            rightTop,\n        ];\n    }\n\n    private getPositionStrategy() {\n        const defaultViewportMargin = 0;\n\n        return this.overlay\n            .position()\n            .flexibleConnectedTo(this.toggleReference)\n            .withPush(false)\n            .withViewportMargin(defaultViewportMargin)\n            .withPositions(this.getPopupConnectedPosition());\n    }\n\n    private isOpenHandler(open: boolean): void {\n        open ? this.show() : this.hide();\n    }\n\n    private show(): void {\n        if (!this.toggleReference) {\n            return;\n        }\n\n        this.initToggleRef();\n        this.popup.show();\n\n        const overlayContainer = this.popup.getOverlayRef().overlayElement;\n\n        this.popupAreaContent = new ElementRef(overlayContainer);\n        this.popupAreaContainer = new ElementRef(\n            overlayContainer.querySelector(`.${POPUP_V2}`)\n        );\n\n        if (this.contextClass) {\n            this.contextClass.split(\" \").forEach((contextClass) => {\n                this.popupAreaContainer.nativeElement.classList.add(\n                    contextClass\n                );\n            });\n        }\n\n        this.visible = true;\n        this.opened.emit(this.popup.showing);\n    }\n\n    private hide(): void {\n        this.visible = false;\n        setTimeout(() => {\n            this.popup.hide();\n            this.opened.emit(this.popup.showing);\n        });\n    }\n\n    private toggle(): void {\n        this.popup.showing ? this.hide() : this.show();\n        this.popup.getOverlayRef().updatePosition();\n    }\n\n    private initToggleRef(): void {\n        if (this.isHostToggleRef) {\n            this.toggleReference = this.host.nativeElement;\n            return;\n        }\n        this.toggleReference = this.popupToggle\n            ? this.popupToggle.host.nativeElement\n            : this.document.querySelector(this.baseElementSelector);\n    }\n}\n","<div\n    nuiClickInterceptor\n    class=\"nui-popup-container\"\n    [class.nui-popup--opened]=\"isOpen\"\n>\n    <div class=\"nui-popup__content\">\n        <ng-content></ng-content>\n    </div>\n    <div #popupArea></div>\n\n    <nui-overlay\n        [toggleReference]=\"toggleReference\"\n        [overlayConfig]=\"overlayConfig\"\n        [customContainer]=\"customContainer\"\n    >\n        <div class=\"nui-popup__area\">\n            <div class=\"nui-popup__area--container\">\n                <ng-content select=\"[popupAreaContent]\"></ng-content>\n            </div>\n        </div>\n    </nui-overlay>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-menu-group\",\n    template: `\n        <ng-container *ngIf=\"header\">\n            <div\n                class=\"nui-menu-item nui-menu-item--header\"\n                (click)=\"stopClickPropagation($event)\"\n            >\n                {{ header }}\n            </div>\n        </ng-container>\n        <ng-content></ng-content>\n        <div\n            (click)=\"stopClickPropagation($event)\"\n            class=\"nui-menu-group-divider--container\"\n        >\n            <nui-divider size=\"extra-small\"></nui-divider>\n        </div>\n    `,\n    styleUrls: [\"./menu-group.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"group\" },\n    standalone: false,\n})\nexport class MenuGroupComponent {\n    @Input() header?: string;\n\n    public stopClickPropagation(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Highlightable } from \"@angular/cdk/a11y\";\nimport {\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnChanges,\n    Optional,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\n\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\n\n/**\n * @ignore\n */\n\n/**\n * Base class for menu items. Adds styles to host element\n */\n@Directive()\nexport abstract class MenuItemBaseComponent\n    implements OnChanges, Highlightable\n{\n    /**\n     * Disables action, link and option components\n     */\n    @Input() public disabled?: boolean;\n\n    @HostBinding(\"class.nui-menu-item\") public setDefaultClass = true;\n\n    @HostBinding(\"class.nui-menu-item--disabled\")\n    public setDisabledClass: boolean;\n\n    @HostBinding(\"class.nui-menu-item--active\") get active(): boolean {\n        return this.isActive;\n    }\n\n    @Output() public actionDone = new EventEmitter<boolean | undefined>();\n\n    public isActive: boolean;\n\n    abstract menuItem: ElementRef;\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        private cd: ChangeDetectorRef\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        const disabled =\n            (changes[\"disabled\"] && changes[\"disabled\"].currentValue) || false;\n\n        this.setDisabledClass = disabled;\n    }\n\n    public setActive(val: boolean): void {\n        this.isActive = val;\n    }\n\n    public setActiveStyles(): void {\n        this.cd.markForCheck();\n        this.isActive = true;\n    }\n\n    public setInactiveStyles(): void {\n        this.cd.markForCheck();\n        this.isActive = false;\n    }\n\n    abstract doAction(event?: any): void;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ElementRef, QueryList } from \"@angular/core\";\n\nimport { MenuGroupComponent } from \"./menu-item/menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"./menu-item/menu-item/menu-item-base\";\n\nexport enum MenuActionType {\n    destructive = \"destructive\",\n    default = \"default\",\n}\n\nexport interface IMenuItem {\n    // input json data used this interface\n    checked?: boolean;\n    disabled?: boolean;\n    title: any;\n    value?: any; // used for selector value, allowing its title to be i18n\n    itemType?: string;\n    url?: string;\n    action?: Function;\n    itemClass?: MenuActionType;\n    isSelected?: boolean;\n    icon?: string;\n    displayFormat?: string;\n}\n\nexport interface IMenuGroup {\n    itemsSource: IMenuItem[];\n    header?: string;\n}\n\nexport interface IPopupActiveOptions {\n    scrollContainer: ElementRef;\n    menuItemHeight: number;\n    activeOptionIndex: number;\n    menuItems: QueryList<MenuItemBaseComponent>;\n    menuGroups: QueryList<MenuGroupComponent>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    Input,\n    Optional,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { MenuActionType } from \"../../public-api\";\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item-base\";\n\n/**\n * @ignore\n */\n\n/**\n * Menu item component which is needed to perform action on click event\n */\n@Component({\n    selector: \"nui-menu-action\",\n    template: `\n        <a\n            class=\"nui-menu-item__action nui-menu-item__link\"\n            href=\"#\"\n            role=\"button\"\n            (click)=\"handleClick($event)\"\n            (keydown.enter)=\"handleClick($event)\"\n            (keydown.space)=\"handleClick($event)\"\n            [ngClass]=\"'nui-menu-item__action-' + type\"\n            #menuAction\n            tabindex=\"-1\"\n            title\n        >\n            <nui-icon\n                *ngIf=\"icon\"\n                [icon]=\"icon\"\n                [iconColor]=\"getIconColor()\"\n            ></nui-icon>\n            <ng-content></ng-content>\n        </a>\n    `,\n    providers: [\n        {\n            provide: MenuItemBaseComponent,\n            useExisting: forwardRef(() => MenuActionComponent),\n        },\n    ],\n    styleUrls: [\"./menu-action.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"menuitem\" },\n    standalone: false,\n})\nexport class MenuActionComponent extends MenuItemBaseComponent {\n    /**\n     * Adds icon by specified icon name\n     */\n    @Input() public icon: string;\n\n    @Input() public type: MenuActionType;\n\n    @ViewChild(\"menuAction\") menuItem: ElementRef;\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        cd: ChangeDetectorRef\n    ) {\n        super(group, cd);\n\n        this.disabled = false;\n    }\n\n    public handleClick(event: MouseEvent): void {\n        event.preventDefault();\n        if (this.disabled) {\n            event.stopPropagation();\n        } else {\n            this.actionDone.emit();\n        }\n    }\n\n    public getIconColor(): string {\n        return this.type === \"destructive\" ? \"red\" : \"\";\n    }\n\n    public doAction(event: any): void {\n        this.handleClick(event);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    Input,\n    Optional,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { MenuItemBaseComponent } from \"./menu-item-base\";\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\n\n/**\n * @ignore\n */\n\n/**\n * Represents default menu item if type of menu-item is not set.\n */\n@Component({\n    selector: \"nui-menu-item\",\n    template: `\n        <span\n            class=\"nui-menu-item__default\"\n            (click)=\"handleClick($event)\"\n            (keydown.enter)=\"handleClick($event)\"\n            (keydown.space)=\"handleClick($event)\"\n            #menuItemDefault\n            tabindex=\"0\"\n            title\n        >\n            <ng-content></ng-content>\n        </span>\n    `,\n    styleUrls: [\"./menu-item.less\"],\n    providers: [\n        {\n            provide: MenuItemBaseComponent,\n            useExisting: forwardRef(() => MenuItemComponent),\n        },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"menuitem\" },\n    standalone: false,\n})\nexport class MenuItemComponent extends MenuItemBaseComponent {\n    @ViewChild(\"menuItemDefault\", { static: true }) menuItem: ElementRef;\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        cd: ChangeDetectorRef\n    ) {\n        super(group, cd);\n\n        this.disabled = false;\n    }\n\n    public handleClick(event: MouseEvent): void {\n        event.preventDefault();\n        if (this.disabled) {\n            event.stopPropagation();\n        }\n        this.actionDone.emit();\n    }\n\n    public doAction(event: any): void {\n        this.handleClick(event);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { DOCUMENT } from \"@angular/common\";\nimport { ElementRef, Injectable, OnDestroy, QueryList, Renderer2, Inject } from \"@angular/core\";\nimport isNull from \"lodash/isNull\";\nimport { Subject, Subscription } from \"rxjs\";\n\nimport { PopupComponent } from \"../popup-adapter/popup-adapter.component\";\nimport { MenuActionComponent } from \"./menu-item/menu-action/menu-action.component\";\nimport { MenuGroupComponent } from \"./menu-item/menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"./menu-item/menu-item/menu-item-base\";\nimport { MenuItemComponent } from \"./menu-item/menu-item/menu-item.component\";\nimport { MenuPopupComponent } from \"./menu-popup/menu-popup.component\";\nimport { IPopupActiveOptions } from \"./public-api\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\n\n@Injectable()\nexport class MenuKeyControlService implements OnDestroy {\n    public popup: PopupComponent;\n    public menuGroups: QueryList<MenuGroupComponent>;\n    public menuItems: QueryList<MenuItemBaseComponent>;\n    public menuToggle: ElementRef;\n    public menuPopup: MenuPopupComponent;\n    public menuOpenListener: Subject<void>;\n    public keyControlItemsSource: boolean = false;\n    public keyboardEventsManager: ActiveDescendantKeyManager<MenuItemBaseComponent>;\n    public menuOpenListenerSubscription: Subscription;\n    private keyboardEventsSubscription: Subscription;\n    private _scrollContainer: ElementRef;\n    private pendingInitialActivation: \"first\" | \"last\" | null = null;\n\n    public set scrollContainer(container: ElementRef) {\n        this._scrollContainer = container;\n    }\n\n    public get scrollContainer(): ElementRef<any> {\n        return this._scrollContainer || this.popup?.popupAreaContainer;\n    }\n\n    constructor(\n        private live: LiveAnnouncer,\n        private renderer: Renderer2,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    public initKeyboardManager(): void {\n        // Guard: For itemsSource menus, menuPopup must be available first\n        // MenuPopup is only rendered when menu is opened, so we need to defer initialization\n        if (this.keyControlItemsSource && !this.menuPopup) {\n            return;\n        }\n\n        // Initialize keyboard manager\n        this.keyboardEventsManager = this.keyControlItemsSource\n            ? new ActiveDescendantKeyManager(\n                  this.menuPopup.menuItems\n              ).withVerticalOrientation()\n            : new ActiveDescendantKeyManager(\n                  this.menuItems\n              ).withVerticalOrientation();\n\n        if (this.keyboardEventsSubscription) {\n            this.keyboardEventsSubscription.unsubscribe();\n        }\n\n        this.initKeyManagerHandlers();\n\n        // when opening menu key 'focus' should disappear from items\n        if (this.menuOpenListener) {\n            this.menuOpenListenerSubscription = this.menuOpenListener.subscribe(\n                () => {\n                    // Use timeout to ensure DOM is ready\n                    setTimeout(() => {\n                        this.activatePendingItem();\n                    }, 0);\n\n                    this.live.announce(`\n                    ${\n                        this.keyControlItemsSource\n                            ? this.menuPopup?.menuItems?.length || 0\n                            : this.menuItems?.length || 0\n                    } menu items available.`);\n                }\n            );\n        }\n    }\n\n    public handleKeydown(event: KeyboardEvent): void {\n        this.popup.isOpen\n            ? this.handleOpenKeyDown(event)\n            : this.handleClosedKeyDown(event);\n    }\n\n    public setActiveItem(index: number): void {\n        this.keyboardEventsManager.setActiveItem(index);\n    }\n\n    public getActiveItemIndex(): number | null {\n        return this.keyboardEventsManager.activeItemIndex;\n    }\n\n    private activatePendingItem(): void {\n        if (this.pendingInitialActivation === \"first\") {\n            this.keyboardEventsManager.setFirstItemActive();\n        } else if (this.pendingInitialActivation === \"last\") {\n            this.keyboardEventsManager.setLastItemActive();\n        } else {\n            this.keyboardEventsManager.setActiveItem(-1);\n        }\n        this.pendingInitialActivation = null;\n    }\n\n    private initKeyManagerHandlers(): void {\n        this.keyboardEventsSubscription =\n            this.keyboardEventsManager.change.subscribe((activeIndex) => {\n                // when the navigation item changes, we get new activeIndex\n                if (this.popup.isOpen && this.hasActiveItem()) {\n                    this.scrollActiveOptionIntoView({\n                        scrollContainer:\n                            this.scrollContainer ||\n                            this.popup.popupAreaContainer,\n                        menuItemHeight:\n                            this.keyboardEventsManager.activeItem?.menuItem\n                                .nativeElement.offsetHeight,\n                        activeOptionIndex: activeIndex,\n                        menuGroups: this.menuGroups,\n                        menuItems: this.menuItems,\n                    });\n                }\n            });\n    }\n\n    private shouldCloseOnEnter(): boolean {\n        const activeItem = this.keyboardEventsManager.activeItem;\n        return (\n            activeItem instanceof MenuActionComponent ||\n            activeItem instanceof MenuItemComponent\n        );\n    }\n\n    private hasActiveItem(): boolean {\n        if (\n            isNull(this.keyboardEventsManager.activeItem) ||\n            isNull(this.keyboardEventsManager.activeItemIndex)\n        ) {\n            return false;\n        }\n        return (\n            this.keyboardEventsManager.activeItem &&\n            this.keyboardEventsManager.activeItemIndex >= 0\n        );\n    }\n\n    private handleOpenKeyDown(event: KeyboardEvent): void {\n        if (\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_UP\n        ) {\n            // passing the event to key manager so we get a change fired\n            this.keyboardEventsManager.onKeydown(event);\n            this.announceCurrentItem();\n        }\n        if (\n            event.code === KEYBOARD_CODE.PAGE_UP ||\n            event.code === KEYBOARD_CODE.HOME ||\n            (event.metaKey && event.code === KEYBOARD_CODE.ARROW_UP)\n        ) {\n            event.preventDefault();\n            this.keyboardEventsManager.onKeydown(event);\n            this.keyboardEventsManager.setFirstItemActive();\n            this.announceCurrentItem();\n        }\n        if (\n            event.code === KEYBOARD_CODE.PAGE_DOWN ||\n            event.code === KEYBOARD_CODE.END ||\n            (event.metaKey && event.code === KEYBOARD_CODE.ARROW_DOWN)\n        ) {\n            event.preventDefault();\n            this.keyboardEventsManager.onKeydown(event);\n            this.keyboardEventsManager.setLastItemActive();\n            this.announceCurrentItem();\n        }\n\n        // This keeps the active item visible within the visible area of the menu popup. In case there are disabled items in the list,\n        // this scrolls down to the nearest enabled item. Otherwise, the active item will \"jump over\" the disabled items and remain\n        // outside of the visible edge of the list.\n        this.keyboardEventsManager.activeItem?.menuItem?.nativeElement?.scrollIntoView(\n            { block: \"nearest\" }\n        );\n\n        // prevent closing on enter\n        if (!this.hasActiveItem() && event.code === KEYBOARD_CODE.ENTER) {\n            event.preventDefault();\n        }\n\n        if (\n            this.hasActiveItem() &&\n            (event.code === KEYBOARD_CODE.ENTER ||\n                event.code === KEYBOARD_CODE.SPACE)\n        ) {\n            // perform action in menu item(select, switch, check etc).\n            this.keyboardEventsManager.activeItem?.doAction(event);\n            // closing items only if they are MenuAction or MenuItem, others should not close popup\n            if (!this.shouldCloseOnEnter()) {\n                event.preventDefault();\n                return;\n            }\n            this.popup.toggleOpened(event);\n        }\n        if (\n            event.code === KEYBOARD_CODE.TAB ||\n            event.code === KEYBOARD_CODE.ESCAPE\n        ) {\n            this.popup.toggleOpened(event);\n        }\n    }\n\n    private handleClosedKeyDown(event: KeyboardEvent): void {\n        // prevent opening on enter and prevent scrolling page on key down/key up when focused\n        if (this.shouldBePrevented(event)) {\n            event.preventDefault();\n        }\n\n        if (\n            event.code === KEYBOARD_CODE.ENTER ||\n            event.code === KEYBOARD_CODE.SPACE ||\n            event.code === KEYBOARD_CODE.ARROW_DOWN\n        ) {\n            this.pendingInitialActivation = \"first\";\n            this.popup.toggleOpened(event);\n        }\n\n        if (event.code === KEYBOARD_CODE.ARROW_UP) {\n            this.pendingInitialActivation = \"last\";\n            this.popup.toggleOpened(event);\n        }\n    }\n\n    private shouldBePrevented(event: KeyboardEvent) {\n        return (\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_UP ||\n            event.code === KEYBOARD_CODE.ENTER ||\n            event.code === KEYBOARD_CODE.SPACE\n        );\n    }\n\n    // functions to scroll items into view for ActiveDescendantKeyManager\n    private countGroupLabelsBeforeOption(\n        optionIndex: number,\n        options: QueryList<MenuItemBaseComponent>,\n        optionGroups: QueryList<MenuGroupComponent>\n    ): number {\n        if (optionGroups.length) {\n            const optionsArray = options.toArray();\n            const groups = optionGroups.toArray();\n            let groupCounter = 0;\n\n            for (let i = 0; i < optionIndex + 1; i++) {\n                if (\n                    optionsArray[i].group &&\n                    optionsArray[i].group === groups[groupCounter]\n                ) {\n                    groupCounter++;\n                }\n            }\n\n            return groupCounter;\n        }\n        return 0;\n    }\n\n    private getOptionScrollPosition(\n        optionIndex: number,\n        optionHeight: number,\n        currentScrollPosition: number,\n        panelHeight: number\n    ): number {\n        const optionOffset = optionIndex * optionHeight;\n\n        if (optionOffset < currentScrollPosition) {\n            return optionOffset;\n        }\n\n        if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n            return Math.max(0, optionOffset - panelHeight + optionHeight);\n        }\n\n        return currentScrollPosition;\n    }\n\n    private scrollActiveOptionIntoView(options: IPopupActiveOptions): void {\n        const activeOptionIndex = options.activeOptionIndex || 0;\n        const labelCount = this.countGroupLabelsBeforeOption(\n            activeOptionIndex,\n            options.menuItems,\n            options.menuGroups\n        );\n\n        options.scrollContainer.nativeElement.scrollTop =\n            this.getOptionScrollPosition(\n                activeOptionIndex + labelCount,\n                options.menuItemHeight + 4,\n                options.scrollContainer.nativeElement.scrollTop,\n                300\n            );\n    }\n\n    private announceCurrentItem() {\n        this.live.announce(\n            `Active item ${this.keyboardEventsManager?.activeItem?.menuItem.nativeElement.innerText}.`\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.keyboardEventsSubscription?.unsubscribe();\n        this.menuOpenListenerSubscription?.unsubscribe();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    Input,\n    Optional,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item-base\";\n\n/**\n * @ignore\n */\n\n/**\n * Represents menu link item of nui-menu component with additional bindings and style\n */\n@Component({\n    selector: \"nui-menu-link\",\n    template: `\n        <a\n            class=\"nui-menu-item__link\"\n            role=\"menuitem\"\n            [href]=\"url\"\n            [target]=\"target\"\n            (click)=\"handleClick($event)\"\n            #menuLink\n            title\n        >\n            <nui-icon *ngIf=\"icon\" [icon]=\"icon\"></nui-icon>\n            <ng-content></ng-content>\n        </a>\n    `,\n    providers: [\n        {\n            provide: MenuItemBaseComponent,\n            useExisting: forwardRef(() => MenuLinkComponent),\n        },\n    ],\n    styleUrls: [\"./menu-link.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"none\" },\n    standalone: false,\n})\nexport class MenuLinkComponent extends MenuItemBaseComponent {\n    /**\n     * Sets inner \"href\" attribute of anchor tag\n     */\n    @Input() public url: string;\n    /**\n     * Sets inner \"target\" attribute of anchor tag\n     */\n    @Input() public target = \"\";\n    /**\n     * Adds icon by specified icon name\n     */\n    @Input() public icon: string;\n    @ViewChild(\"menuLink\") menuItem: ElementRef;\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        cd: ChangeDetectorRef\n    ) {\n        super(group, cd);\n\n        this.disabled = false;\n    }\n\n    public handleClick(event: MouseEvent): void {\n        if (this.disabled) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n        this.actionDone.emit();\n    }\n\n    public doAction(): void {\n        this.menuItem.nativeElement.click();\n        this.actionDone.emit();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    HostListener,\n    Input,\n    Optional,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item-base\";\n\n/**\n * @ignore\n */\n\n/**\n * Menu item component with check/uncheck option,\n * use (change) event to get state of this item\n */\n@Component({\n    selector: \"nui-menu-option\",\n    template: `\n        <div class=\"nui-menu-item__option\" #menuOption tabindex=\"-1\" title>\n            <nui-checkbox\n                class=\"nui-menu-item__checkbox\"\n                [attr.tabindex]=\"-1\"\n                role=\"presentation\"\n                [name]=\"name\"\n                [value]=\"value\"\n                [checked]=\"checked\"\n                [disabled]=\"disabled\"\n            >\n                <ng-content></ng-content>\n            </nui-checkbox>\n        </div>\n    `,\n    styleUrls: [\"./menu-option.component.less\"],\n    providers: [\n        {\n            provide: MenuItemBaseComponent,\n            useExisting: forwardRef(() => MenuOptionComponent),\n        },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"menuitemcheckbox\" },\n    standalone: false,\n})\nexport class MenuOptionComponent extends MenuItemBaseComponent {\n    /**\n     * Sets inner input \"name\" attribute\n     */\n    @Input() public name: string;\n    /**\n     * Sets inner input \"value\" attribute\n     */\n    @Input() public value: string;\n    /**\n     * Is needed to predefine item state, sets nui-checkbox [checked] property\n     */\n    @Input() public checked: boolean;\n\n    @ViewChild(\"menuOption\") menuItem: ElementRef;\n\n    @HostListener(\"click\", [\"$event\"])\n    public stopPropagationOfClick(event: MouseEvent): void {\n        event.stopPropagation();\n        if (!this.disabled) {\n            event.preventDefault();\n            this.checked = !this.checked;\n            this.actionDone.emit(this.checked);\n        }\n    }\n\n    @HostBinding(\"class.checked\")\n    public get checkedClass(): boolean {\n        return this.checked;\n    }\n\n    @HostBinding(\"attr.aria-checked\")\n    public get ariaChecked(): string {\n        return `${!!this.checked}`;\n    }\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        cd: ChangeDetectorRef\n    ) {\n        super(group, cd);\n\n        this.name = \"\";\n        this.value = \"\";\n        this.checked = false;\n\n        // Is needed to predefine item state, sets nui-checkbox [disabled] property\n        this.disabled = false;\n    }\n\n    public doAction(): void {\n        this.checked = !this.checked;\n        this.actionDone.emit(this.checked);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnInit,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\nlet switchLabelCounter = 0;\n\n/**\n * <example-url>./../examples/index.html#/switch</example-url>\n */\n@Component({\n    selector: \"nui-switch\",\n    templateUrl: \"./switch.component.html\",\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => SwitchComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => SwitchComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./switch.component.less\"],\n    encapsulation: ViewEncapsulation.Emulated,\n    standalone: false,\n})\nexport class SwitchComponent implements OnInit, ControlValueAccessor {\n    @Input() public value: boolean;\n    @Input() public disabled: boolean;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel?: string;\n\n    /**\n     * Label element id used to dynamically compute accessible name.\n     */\n    public readonly labelId = `nui-switch-label-${switchLabelCounter++}`;\n\n    @Output() valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    toggle(): void {\n        if (this.disabled) {\n            return;\n        }\n\n        const toggledValue = !this.value;\n        this.valueChange.emit(toggledValue);\n\n        // this is here because of a bug in reactive forms,\n        // that causes the UI not to update when a value is updated on the FormControl\n        // https://github.com/angular/angular/issues/13792\n        this.value = toggledValue;\n\n        this.onChange(toggledValue);\n        this.onTouched();\n    }\n\n    onChange(value: any): void {}\n\n    onTouched(): void {}\n\n    writeValue(value: any): void {\n        if (value !== undefined) {\n            this.value = !!value;\n        }\n    }\n\n    registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    public ngOnInit(): void {\n        this.value = !!this.value;\n    }\n}\n","<div\n    class=\"nui-switch\"\n    [class.nui-switched]=\"value\"\n    [class.nui-disabled]=\"disabled\"\n    [attr.disabled]=\"disabled\"\n>\n    <div class=\"nui-switch__container\">\n        <div\n            class=\"nui-switch__bar\"\n            (click)=\"toggle()\"\n            (keyup.enter)=\"toggle()\"\n            (keyup.space)=\"toggle()\"\n            tabindex=\"{{ disabled ? -1 : 0 }}\"\n            role=\"checkbox\"\n            [attr.aria-checked]=\"value\"\n            [attr.aria-label]=\"ariaLabel || null\"\n            [attr.aria-labelledby]=\"ariaLabel ? null : labelId\"\n        >\n            <div class=\"nui-switch__on\">\n                <svg\n                    aria-hidden=\"true\"\n                    class=\"nui-switch__svg\"\n                    viewBox=\"0 0 7.1 6.7\"\n                >\n                    <polyline\n                        class=\"nui-switch__icon-on\"\n                        points=\"0.6,2.9 3.2,4.8 7.2,1.0 \"\n                    />\n                </svg>\n            </div>\n            <div class=\"nui-switch__thumb\">\n                <svg\n                    aria-hidden=\"true\"\n                    class=\"nui-switch__svg\"\n                    viewBox=\"0 0 7.1 6.7\"\n                ></svg>\n            </div>\n        </div>\n        <label class=\"nui-switch__label\" [attr.id]=\"labelId\">\n            <ng-content></ng-content>\n        </label>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    HostListener,\n    Input,\n    Optional,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { MenuGroupComponent } from \"../menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item-base\";\n\n/**\n * @ignore\n */\n\n/**\n * Menu item component with check/uncheck option,\n * use (change) event to get state of this item\n */\n@Component({\n    selector: \"nui-menu-switch\",\n    template: `\n        <div\n            class=\"nui-menu-item__switch\"\n            #menuSwitch\n            tabindex=\"-1\"\n            title\n        >\n            <nui-switch\n                [value]=\"checked\"\n                [disabled]=\"disabled\"\n                role=\"presentation\"\n                tabindex=\"-1\">\n                <ng-content></ng-content>\n            </nui-switch>\n        </div>\n    `,\n    providers: [\n        {\n            provide: MenuItemBaseComponent,\n            useExisting: forwardRef(() => MenuSwitchComponent),\n        },\n    ],\n    styleUrls: [\"./menu-switch.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        role: \"menuitemcheckbox\",\n        \"[attr.aria-checked]\": \"checked\",\n    },\n    standalone: false,\n})\nexport class MenuSwitchComponent extends MenuItemBaseComponent {\n    /**\n     * Is needed to predefine item state, sets nui-checkbox [checked] property\n     */\n    @Input() public checked: boolean;\n\n    @Input() public disabled: boolean;\n    @ViewChild(\"menuSwitch\") menuItem: ElementRef;\n\n    @HostListener(\"click\", [\"$event\"])\n    public stopPropagationOfClick(event: MouseEvent): void {\n        event.stopPropagation();\n        if (!this.disabled) {\n            event.preventDefault();\n            this.checked = !this.checked;\n            this.actionDone.emit(this.checked);\n        }\n    }\n\n    @HostBinding(\"class.checked\")\n    public get checkedClass(): boolean {\n        return this.checked;\n    }\n\n    constructor(\n        @Optional() readonly group: MenuGroupComponent,\n        cd: ChangeDetectorRef\n    ) {\n        super(group, cd);\n        this.checked = false;\n\n        // Is needed to predefine item state, sets nui-switch [disabled] property\n        this.disabled = false;\n    }\n\n    public doAction(): void {\n        this.checked = !this.checked;\n        this.actionDone.emit(this.checked);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    QueryList,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isFunction from \"lodash/isFunction\";\nimport moment from \"moment/moment\";\n\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item/menu-item-base\";\nimport { IMenuGroup, IMenuItem } from \"../public-api\";\n\n/**\n * @ignore\n */\n\n/**\n * Examples: <example-url>./../../../demo/index.html#/menu</example-url><br />\n * \"nui-menu\" provides simple dropdown menu option with custom items:\n * \"nui-header\", \"nui-divider\", \"nui-action\", \"nui-link\", \"nui-option\"\n */\n@Component({\n    selector: \"nui-menu-popup\",\n    host: {\n        class: \"nui-menu-popup\",\n        role: \"menu\",\n    },\n    templateUrl: \"./menu-popup.component.html\",\n    styleUrls: [\"./menu-popup.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class MenuPopupComponent {\n    @Input() public itemsSource: IMenuGroup[];\n    @Input() public size?: string;\n    @ViewChildren(MenuItemBaseComponent)\n    menuItems: QueryList<MenuItemBaseComponent>;\n\n    @HostBinding(\"class.nui-menu-popup--sm\")\n    public get smCssClass(): boolean {\n        return this.size === \"small\";\n    }\n\n    @HostBinding(\"class.nui-menu-popup--lg\")\n    public get lgCssClass(): boolean {\n        return this.size === \"large\";\n    }\n\n    @Output() public menuItemClicked? = new EventEmitter<IMenuItem>();\n\n    public handleClick(item: IMenuItem): void {\n        if (!item.disabled) {\n            this.menuItemClicked?.emit(item);\n            if (_isFunction(item.action)) {\n                item.action();\n            }\n        }\n    }\n\n    public getDisplayValue(item: IMenuItem): string {\n        return item.displayFormat\n            ? moment(item.title).format(item.displayFormat)\n            : item.title;\n    }\n\n    public stopClickPropagation(event: MouseEvent): void {\n        event.stopImmediatePropagation();\n    }\n}\n","<ng-template ngFor let-group [ngForOf]=\"itemsSource\" let-last=\"last\">\n    <div\n        class=\"nui-menu-item nui-menu-item--header\"\n        *ngIf=\"group.header\"\n        (click)=\"stopClickPropagation($event)\"\n    >\n        {{ group.header }}\n    </div>\n    <ng-template ngFor let-item [ngForOf]=\"group.itemsSource\">\n        <ng-container [ngSwitch]=\"item.itemType\">\n            <ng-container *ngSwitchCase=\"'action'\">\n                <nui-menu-action\n                    [disabled]=\"item.disabled\"\n                    [icon]=\"item.icon\"\n                    *ngIf=\"!item.removed\"\n                    [hidden]=\"item.hidden\"\n                    [type]=\"item.itemClass\"\n                    (click)=\"handleClick(item)\"\n                >\n                    <ng-container>\n                        {{ getDisplayValue(item) }}\n                    </ng-container>\n                </nui-menu-action>\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'link'\">\n                <nui-menu-link\n                    [disabled]=\"item.disabled\"\n                    [url]=\"item.url\"\n                    [target]=\"item.target\"\n                    [icon]=\"item.icon\"\n                    *ngIf=\"!item.removed\"\n                    [hidden]=\"item.hidden\"\n                    (click)=\"handleClick(item)\"\n                >\n                    <ng-container>\n                        {{ getDisplayValue(item) }}\n                    </ng-container>\n                </nui-menu-link>\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'option'\">\n                <nui-menu-option\n                    [disabled]=\"item.disabled\"\n                    [checked]=\"item.checked\"\n                    (click)=\"handleClick(item)\"\n                >\n                    <ng-container>\n                        {{ getDisplayValue(item) }}\n                    </ng-container>\n                </nui-menu-option>\n            </ng-container>\n            <ng-container *ngSwitchCase=\"'switch'\">\n                <nui-menu-switch\n                    [disabled]=\"item.disabled\"\n                    [checked]=\"item.checked\"\n                    (click)=\"handleClick(item)\"\n                >\n                    <ng-container>\n                        {{ getDisplayValue(item) }}\n                    </ng-container>\n                </nui-menu-switch>\n            </ng-container>\n            <ng-container *ngSwitchDefault>\n                <nui-menu-item\n                    [ngClass]=\"{ 'nui-menu-item--selected': item.isSelected }\"\n                    (actionDone)=\"handleClick(item)\"\n                >\n                    {{ getDisplayValue(item) }}\n                </nui-menu-item>\n            </ng-container>\n        </ng-container>\n    </ng-template>\n    <div\n        *ngIf=\"!last\"\n        class=\"nui-menu-popup-divider--container\"\n        (click)=\"stopClickPropagation($event)\"\n    >\n        <nui-divider size=\"extra-small\"></nui-divider>\n    </div>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { FocusMonitor, FocusOrigin } from \"@angular/cdk/a11y\";\nimport {\n    AfterViewInit,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport { Subject, Subscription } from \"rxjs\";\n\nimport { ButtonSizeType } from \"../../../lib/button/public-api\";\nimport { PopupComponent } from \"../../popup-adapter/popup-adapter.component\";\nimport { MenuGroupComponent } from \"../menu-item/menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../menu-item/menu-item/menu-item-base\";\nimport { MenuKeyControlService } from \"../menu-key-control.service\";\nimport { MenuPopupComponent } from \"../menu-popup/menu-popup.component\";\nimport { IMenuGroup } from \"../public-api\";\n\n/**\n * Examples: <example-url>./../examples/index.html#/menu</example-url><br />\n * \"nui-menu\" provides simple dropdown menu option with custom items:\n * \"nui-header\", \"nui-divider\", \"nui-action\", \"nui-link\", \"nui-option\"\n */\n@Component({\n    selector: \"nui-menu\",\n    host: {\n        class: \"nui-menu\",\n        \"[attr.aria-label]\": \"title || ariaLabel\",\n    },\n    templateUrl: \"./menu.component.html\",\n    styleUrls: [\"./menu.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [MenuKeyControlService],\n    standalone: false,\n})\nexport class MenuComponent implements AfterViewInit, OnChanges, OnDestroy {\n    public iconSize = \"\";\n    public iconColor = \"\";\n    @Input() public widthOfPopup: string;\n    @Input() public contextClass: string;\n    /**\n     * Should dropdown be appended to body or not\n     */\n    @Input() public appendToBody: boolean;\n    /**\n     * sets aria-label for menu button\n     */\n    @Input() public ariaLabel: string;\n    /**\n     * sets title/name for menu button\n     */\n    @Input() public title: string;\n    /**\n     * sets size of menu button and caret icon\n     * (take a look on nui-button possible sizes)\n     */\n    @Input() public size?: ButtonSizeType;\n    /**\n     * sets styles for menu button\n     * (take a look on nui-button possible styles)\n     */\n    @Input() public displayStyle?: string;\n    /**\n     * Disables menu and prevents it from opening\n     */\n    @Input() public isDisabled: boolean;\n    /**\n     * adds additional icon at the left of menu button\n     * (take a look on nui-icon possible values)\n     */\n    @Input() public icon = \"caret-down\";\n    /**\n     *Value to be used as menu items data.\n     */\n    @Input() public itemsSource?: IMenuGroup[];\n    /**\n     * Event emitted when menu is blurred.\n     */\n    @Output() public blurred = new EventEmitter();\n\n    public menuOpenStream = new Subject<void>();\n    // Only menu that resolves *ngIf on <ng-content> with these menuItems can correctly get ContentChildren\n    @ContentChildren(MenuItemBaseComponent, { descendants: true })\n    public menuItems: QueryList<MenuItemBaseComponent>;\n    @ContentChildren(MenuGroupComponent)\n    public menuGroups: QueryList<MenuGroupComponent>;\n    @ViewChild(PopupComponent) public popup: PopupComponent;\n    @ViewChild(MenuPopupComponent) menuPopup: MenuPopupComponent;\n    @ViewChild(\"menuToggle\", { read: ElementRef }) menuToggle: ElementRef;\n\n    public readonly menuTriggerId = _uniqueId(\"nui-menu-trigger-\");\n    public readonly popupContentId = _uniqueId(\"nui-menu-content-\");\n\n    private menuKeyControlListeners: Function[] = [];\n    private focusMonitorSubscription: Subscription;\n    constructor(\n        private keyControlService: MenuKeyControlService,\n        private renderer: Renderer2,\n        private focusMonitor: FocusMonitor\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"size\"]) {\n            // Empty string sets the default size of an icon 16x16 defined by .nui-icon class\n            this.iconSize = this.size === ButtonSizeType.compact ? \"small\" : \"\";\n        }\n\n        if (changes[\"displayStyle\"]) {\n            this.iconColor = this.displayStyle === \"primary\" ? \"white\" : \"\";\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        // setting data for key-control service\n        this.setKeyboardManagerServiceData();\n        // initializing key-control manager\n        this.keyControlService.initKeyboardManager();\n        // listening to events for key-control\n        this.menuKeyControlListeners.push(\n            this.renderer.listen(\n                this.menuToggle.nativeElement,\n                \"keydown\",\n                (event: KeyboardEvent) => {\n                    if (!this.popup.popupToggle.disabled) {\n                        this.keyControlService.handleKeydown(event);\n                    }\n                }\n            )\n        );\n        // Monitor focus changes for accessibility purposes\n        // The FocusMonitor tracks how the element was focused (mouse, keyboard, touch, programmatically)\n        // For keyboard accessibility, we only monitor focus but don't auto-open the menu\n        // Menu opening is handled by specific key events (ENTER, SPACE, ARROW_DOWN, ARROW_UP) in the keyboard service\n        this.focusMonitorSubscription = this.focusMonitor\n            .monitor(this.menuToggle)\n            .subscribe((origin: FocusOrigin) => {\n                // We track focus origin for accessibility purposes but don't auto-open menu\n                // TAB key should only move focus, not open menu (violates WCAG 2.1 guidelines)\n                // Menu opens only on explicit activation keys: ENTER, SPACE, ARROW_DOWN, ARROW_UP\n            });\n    }\n\n    public isMenuCompact(): boolean {\n        return this.size === \"compact\";\n    }\n\n    public isTitlePresent(): boolean {\n        return !_isEmpty(this.title);\n    }\n\n    public onBlur(event: any): void {\n        this.blurred.emit(event);\n    }\n\n    public onMenuOpen(): void {\n        this.menuOpenStream.next();\n    }\n\n    public isJustified(): boolean {\n        return this.contextClass?.includes(\"nui-select--justified\");\n    }\n\n    private setKeyboardManagerServiceData(): void {\n        this.keyControlService.menuGroups = this.menuGroups;\n        this.keyControlService.menuItems = this.menuItems;\n        this.keyControlService.popup = this.popup;\n        this.keyControlService.menuToggle = this.menuToggle;\n        this.keyControlService.keyControlItemsSource = !!this.itemsSource;\n        this.keyControlService.menuPopup = this.menuPopup;\n        this.keyControlService.menuOpenListener = this.menuOpenStream;\n    }\n\n    public ngOnDestroy(): void {\n        this.menuKeyControlListeners.forEach((listener) => listener());\n        this.focusMonitorSubscription.unsubscribe();\n        this.focusMonitor.stopMonitoring(this.menuToggle);\n    }\n}\n","<nui-popup\n    [class.nui-menu--compact]=\"isMenuCompact()\"\n    (opened)=\"onMenuOpen()\"\n    [appendToBody]=\"appendToBody\"\n    [width]=\"widthOfPopup\"\n    [contextClass]=\"contextClass + ' nui-menu-popup-host'\"\n>\n    <button\n        #menuToggle\n        nui-button\n        nuiPopupToggle\n        [toggleOnKey]=\"false\"\n        [disabled]=\"isDisabled\"\n        [attr.aria-expanded]=\"popup?.isOpen ? 'true' : 'false'\"\n        [attr.aria-controls]=\"popup?.isOpen ? popupContentId : null\"\n        aria-haspopup=\"menu\"\n        type=\"button\"\n        (blur)=\"onBlur($event)\"\n        [displayStyle]=\"displayStyle\"\n        [size]=\"size\"\n        [icon]=\"icon\"\n        [iconRight]=\"isTitlePresent()\"\n        class=\"menu-button no-shadow\"\n        [isEmpty]=\"!isTitlePresent()\"\n        [ariaLabel]=\"title || ariaLabel || 'Menu'\"\n    >\n        <span>{{ title }}</span>\n    </button>\n    <div popupAreaContent [id]=\"popupContentId\" role=\"menu\">\n        @if (itemsSource) {\n        <nui-menu-popup\n            [itemsSource]=\"itemsSource\"\n            [size]=\"size\"\n        ></nui-menu-popup>\n        } @else {\n            <ng-content></ng-content>\n        }\n    </div>\n</nui-popup>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    NgZone,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { take } from \"rxjs/operators\";\n\nimport { EdgeDetectionService } from \"../../services/edge-detection.service\";\nimport { PositionService } from \"../../services/position.service\";\n\n/**\n * @ignore\n * @deprecated in v11 - Use PopupComponent instead - Removal: NUI-5796\n */\n@Component({\n    selector: \"nui-popup-container\",\n    template: `\n        <div\n            class=\"nui-popup-container nui-popup--opened nui-popup--detached\"\n            [style.left.px]=\"left\"\n            [style.top.px]=\"top\"\n        >\n            <ng-content></ng-content>\n        </div>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class PopupContainerComponent implements AfterViewInit {\n    public hostElement: HTMLElement;\n    public top: number;\n    public left: number;\n\n    constructor(\n        private elRef: ElementRef,\n        private zone: NgZone,\n        private positionService: PositionService,\n        private edgeDetector: EdgeDetectionService\n    ) {}\n\n    public ngAfterViewInit(): void {\n        const position = this.setPosition(\n            this.elRef.nativeElement,\n            this.hostElement\n        );\n        this.zone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(() => {\n                // To be sure, that change detection mechanism was invoked and placement was updated\n                this.zone.run(() => {\n                    this.top = position.top;\n                    this.left = position.left;\n                });\n            });\n    }\n\n    public setPosition(\n        popup: HTMLElement,\n        popupTrigger: HTMLElement\n    ): { top: number; left: number } {\n        // Element with dimensions\n        const popupArea = <HTMLElement>popup.querySelector(\".nui-popup__area\");\n        const placement = this.getValidPopupPlacement();\n        return this.positionService.getPosition(\n            popupTrigger,\n            popupArea,\n            `${placement.vertical}-${placement.horizontal}`,\n            true\n        );\n    }\n\n    private getValidPopupPlacement() {\n        const popupArea =\n            this.elRef.nativeElement.querySelector(\".nui-popup__area\");\n        const canBe = this.edgeDetector.canBe(this.hostElement, popupArea);\n        return {\n            vertical: canBe?.placed.bottom ? \"bottom\" : \"top\",\n            horizontal: canBe?.aligned.right ? \"right\" : \"left\",\n        };\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class PopupContainerService {\n    get parent(): any {\n        return this._parent;\n    }\n\n    set parent(value: any) {\n        this._parent = value;\n    }\n\n    private _parent: any;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    ApplicationRef,\n    ChangeDetectorRef,\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    ContentChild,\n    ElementRef,\n    EmbeddedViewRef,\n    EventEmitter,\n    Injector,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport { filter, Subject, Subscription } from \"rxjs\";\n\nimport { PopupContainerComponent } from \"./popup-container.component\";\nimport { PopupContainerService } from \"./popup-container.service\";\nimport { PopupToggleDirective } from \"./popup-toggle.directive\";\nimport { DOCUMENT_CLICK_EVENT } from \"../../constants/event.constants\";\nimport { EdgeDetectionService } from \"../../services/edge-detection.service\";\nimport { EventBusService } from \"../../services/event-bus.service\";\nimport { LoggerService } from \"../../services/log-service\";\n\nconst isMouseEvent = (event: Event): event is MouseEvent =>\n    event instanceof MouseEvent;\n\n// <example-url>./../examples/index.html#/popup</example-url>\n/**\n * @deprecated in v11 - Use PopupComponent instead - Removal: NUI-5796\n */\n/**\n * __Name :__\n * NUI Pop-up component.\n *\n * __Usage :__\n * Component represents basic functionality for dropdowns, popups, etc.\n * May be used directly. Use \"nuiPopupToggle\" attribute inside any layer of content\n * to define element that will toggle popover. Use \"popupAreaContent\" attribute inside\n * 1st layer of content to define \"popup area\". DO NOT USE \"opened\" WITH \"nuiPopupToggle\".\n * IT IS NEEDED TO CHOOSE ONE.\n */\n@Component({\n    selector: \"nui-popup-deprecated\",\n    host: {\n        class: \"nui-popup\",\n        role: \"dialog\",\n        \"[attr.aria-label]\": \"ariaLabel\",\n    },\n    template: `\n        <div\n            class=\"nui-popup-container\"\n            [class.nui-popup--opened]=\"isOpen\"\n            nuiClickInterceptor\n        >\n            <div class=\"nui-popup__content\">\n                <ng-content></ng-content>\n            </div>\n            <div\n                #popupArea\n                class=\"nui-popup__area {{ contextClass }}\"\n                [style.width]=\"width\"\n                [class.nui-popup__area--visible]=\"visible\"\n                [class.nui-popup__area--top]=\"_directionTop && !appendToBody\"\n                [class.nui-popup__area--right]=\"\n                    _directionRight && !appendToBody\n                \"\n            >\n                <div\n                    #popupAreaContainer\n                    tabindex=\"-1\"\n                    class=\"nui-popup__area--container\"\n                >\n                    <ng-content select=\"[popupAreaContent]\"></ng-content>\n                </div>\n            </div>\n        </div>\n    `,\n    styleUrls: [\"./popup.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class PopupDeprecatedComponent\n    implements AfterContentInit, OnDestroy, OnInit\n{\n    @Input() width: string;\n    /**\n     * If additional styles should be applied to popup\n     */\n    @Input() contextClass: string;\n    /**\n     * Allows popup box to be attached to document.body\n     */\n    @Input()\n    public appendToBody: boolean;\n    @Input()\n    public isOpen = false;\n    @Input()\n    public manualOpenControl: Subject<MouseEvent>;\n    /**\n     * Defines in which direction popup area will be opened.\n     */\n    @Input()\n    public directionTop: boolean;\n    /**\n     * Parent css element class used determining of popup direction to top.\n     */\n    @Input()\n    public directionRight: boolean;\n    /**\n     * Parent css element class used determining of popup direction to right.\n     */\n    @Input()\n    public baseElementSelector: string;\n\n    @Input()\n    public ariaLabel: string = \"Popup\";\n\n    @Output()\n    public opened = new EventEmitter<boolean>();\n\n    @ContentChild(PopupToggleDirective)\n    public popupToggle: PopupToggleDirective;\n    @ViewChild(\"popupAreaContainer\")\n    public popupAreaContainer: ElementRef;\n\n    @ViewChild(\"popupArea\", { static: true })\n    public popupAreaContent: ElementRef;\n\n    private popupSubscriptions: Subscription[] = [];\n    private lastEventType: string;\n    private _popupInstance?: ComponentRef<PopupContainerComponent>;\n\n    public get popupInstance():\n        | ComponentRef<PopupContainerComponent>\n        | undefined {\n        return this._popupInstance;\n    }\n    /** @ignore */\n    public _directionRight: boolean;\n    /** @ignore */\n    public _directionTop: boolean;\n    /**\n     * switches visibility of popup area\n     */\n    public visible = false;\n\n    constructor(\n        private elementRef: ElementRef,\n        private edgeDetector: EdgeDetectionService,\n        private changeDetectorRef: ChangeDetectorRef,\n        private eventBusService: EventBusService,\n        private componentFactoryResolver: ComponentFactoryResolver,\n        private injector: Injector,\n        private appRef: ApplicationRef,\n        private logger: LoggerService,\n        @Optional() private popupContainer: PopupContainerService\n    ) {\n        this.logger.warn(\n            \"<nui-popup-deprecated> is deprecated as of Nova v11. Please use <nui-popup> instead.\"\n        );\n    }\n\n    public ngOnInit(): void {\n        if (this.manualOpenControl) {\n            this.popupSubscriptions.push(\n                this.manualOpenControl.subscribe((event) => {\n                    this.toggleOpened(event);\n                })\n            );\n        }\n        this.popupSubscriptions.push(\n            this.eventBusService\n                .getStream(DOCUMENT_CLICK_EVENT)\n                .pipe(filter(isMouseEvent))\n                .subscribe((event: MouseEvent) => {\n                    if (this.isOpen) {\n                        this.closePopup(event);\n                    }\n                })\n        );\n\n        // This is needed to make the isOpen @Input work.\n        this.visible = this.isOpen;\n    }\n\n    public ngAfterContentInit(): void {\n        this.setPopupPosition();\n\n        if (!this.popupToggle) {\n            return;\n        }\n\n        this.popupSubscriptions.push(\n            this.popupToggle.toggle.subscribe((event: Event) => {\n                this.toggleOpened(event);\n            })\n        );\n    }\n\n    public toggleOpened(event: Event): void {\n        this.visible = false;\n        let emit = true;\n        if (event) {\n            // since click triggers focusin event, we need to prevent popup from closing\n            // when focus on the input is gained via click\n            if (this.lastEventType === \"focusin\" && event.type === \"click\") {\n                emit = false;\n            }\n\n            // if popup is already closed, prevent it from opening on focusout\n            if (event.type === \"focusout\" && !this.isOpen) {\n                emit = false;\n            }\n\n            this.lastEventType = event.type;\n        }\n        if (emit) {\n            this.isOpen = !this.isOpen;\n            this.changeDetectorRef.detectChanges();\n            this.changeDetectorRef.detach();\n            if (this.isOpen) {\n                if (!this._popupInstance && this.appendToBody) {\n                    const popupContainerFactory =\n                        this.componentFactoryResolver.resolveComponentFactory(\n                            PopupContainerComponent\n                        );\n                    this._popupInstance = popupContainerFactory.create(\n                        this.injector,\n                        [[this.popupAreaContent.nativeElement]]\n                    );\n                    this._popupInstance.instance.hostElement =\n                        this.popupToggle.host.nativeElement;\n                    this.appRef.attachView(this._popupInstance.hostView);\n                    const hostElement = (\n                        this._popupInstance.hostView as EmbeddedViewRef<any>\n                    ).rootNodes[0] as HTMLElement;\n                    if (this.popupContainer?.parent) {\n                        hostElement.setAttribute(\n                            \"parent\",\n                            this.popupContainer.parent.constructor.name\n                        );\n                    }\n                    document.body.appendChild(hostElement);\n                } else {\n                    this.setPopupPosition();\n                }\n\n                this.visible = true;\n                this.changeDetectorRef.detectChanges();\n                this.changeDetectorRef.detach();\n                // If closed, remove popup instance from DOM if there's one\n            } else if (this._popupInstance && this.appendToBody) {\n                this.deletePopupInstance();\n            }\n\n            this.opened.emit(this.isOpen);\n        }\n    }\n\n    public closePopup(event?: MouseEvent): void {\n        const isToggle =\n            this.popupToggle && event\n                ? (this.popupToggle.host.nativeElement as HTMLElement).contains(\n                      event.target as HTMLElement\n                  )\n                : false;\n\n        if (!isToggle) {\n            this.deletePopupInstance();\n            this.isOpen = false;\n            this.visible = false;\n            this.opened.emit(this.isOpen);\n            this.changeDetectorRef.detectChanges();\n            this.changeDetectorRef.detach();\n        }\n    }\n\n    private setPopupPosition() {\n        let parentEl: HTMLElement | undefined;\n        if (!this.baseElementSelector && !this.popupToggle) {\n            return;\n        }\n\n        if (this.popupToggle) {\n            parentEl = this.popupToggle.host.nativeElement;\n        } else {\n            parentEl =\n                document.querySelector<HTMLElement>(this.baseElementSelector) ??\n                undefined;\n        }\n\n        if (!parentEl) {\n            return;\n        }\n\n        const canBe = this.edgeDetector.canBe(\n            <HTMLElement>parentEl,\n            this.popupAreaContent.nativeElement\n        );\n        this._directionTop = _isUndefined(this.directionTop)\n            ? !canBe?.placed.bottom\n            : this.directionTop;\n        this._directionRight = _isUndefined(this.directionRight)\n            ? !canBe?.aligned.left\n            : this.directionRight;\n    }\n\n    private deletePopupInstance() {\n        if (this._popupInstance) {\n            this.appRef.detachView(this._popupInstance.hostView);\n            this._popupInstance.destroy();\n            this._popupInstance = undefined;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.popupSubscriptions.forEach((subscription) =>\n            subscription.unsubscribe()\n        );\n        this.deletePopupInstance();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { OverlayComponent } from \"./overlay-component/overlay.component\";\nimport { OverlayPositionService } from \"./overlay-position.service\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [OverlayComponent],\n    exports: [OverlayComponent],\n    imports: [OverlayModule, PortalModule, CommonModule],\n    providers: [OverlayPositionService],\n})\nexport class NuiOverlayModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { IOptionedComponent } from \"./types\";\n\n// Will be renamed in scope of the NUI-5797\nexport const NUI_SELECT_V2_OPTION_PARENT_COMPONENT =\n    new InjectionToken<IOptionedComponent>(\n        \"NUI_SELECT_V2_OPTION_PARENT_COMPONENT\"\n    );\nexport const ANNOUNCER_OPEN_MESSAGE_SUFFIX = \"options available\";\nexport const ANNOUNCER_CLOSE_MESSAGE = \"Dropdown closed\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Highlightable } from \"@angular/cdk/a11y\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    Input,\n} from \"@angular/core\";\n\nimport { OVERLAY_ITEM } from \"../constants\";\nimport { IOption } from \"../types\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-overlay-item\",\n    template: `<ng-content></ng-content>`,\n    styleUrls: [\"./overlay-item.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        {\n            provide: OVERLAY_ITEM,\n            useExisting: forwardRef(() => OverlayItemComponent),\n        },\n    ],\n    standalone: false,\n})\nexport class OverlayItemComponent implements Highlightable, IOption {\n    /** Whether the Item is active */\n    @HostBinding(\"class.active\")\n    public active: boolean = false;\n\n    /** Whether the Item is disabled */\n    @Input()\n    @HostBinding(\"class.disabled\")\n    public isDisabled: boolean = false;\n\n    constructor(public element: ElementRef<HTMLElement>) {}\n\n    /** Applies active class */\n    public setActiveStyles(): void {\n        this.active = true;\n    }\n\n    /** Removes active class */\n    public setInactiveStyles(): void {\n        this.active = false;\n    }\n\n    /** Scrolls to the Item inside scrollable container  */\n    public scrollIntoView(options?: ScrollIntoViewOptions): void {\n        this.element.nativeElement.scrollIntoView(options || true);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Highlightable } from \"@angular/cdk/a11y\";\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    HostListener,\n    Inject,\n    Input,\n    Optional,\n} from \"@angular/core\";\n\nimport { OVERLAY_ITEM } from \"../../overlay/constants\";\nimport { OverlayItemComponent } from \"../../overlay/overlay-item/overlay-item.component\";\nimport { IOption, OptionValueType } from \"../../overlay/types\";\nimport { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from \"../constants\";\nimport { IOptionedComponent } from \"../types\";\n\n/**\n * @ignore\n * Will be renamed in scope of the NUI-5797\n */\n@Component({\n    selector: \"nui-select-v2-option\",\n    template: `<ng-content></ng-content>`,\n    styleUrls: [\"./select-v2-option.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: \"nui-select-v2-option\",\n        role: \"option\",\n    },\n    providers: [\n        {\n            provide: OVERLAY_ITEM,\n            useExisting: forwardRef(() => SelectV2OptionComponent),\n        },\n    ],\n    standalone: false,\n})\nexport class SelectV2OptionComponent\n    extends OverlayItemComponent\n    implements Highlightable, IOption\n{\n    /** Sets value */\n    @Input() public value: OptionValueType;\n\n    /** Datasource index. Used to track correct items for virtual scroll */\n    @Input() public index: number;\n\n    /** Used to pass context for the custom template */\n    @Input() public displayValueContext: any;\n\n    /** Whether the Option outfiltered */\n    @HostBinding(\"class.hidden\")\n    @Input()\n    public outfiltered: boolean = false;\n\n    /** Whether the Option selected */\n    @HostBinding(\"class.selected\")\n    public get selected(): boolean | undefined {\n        if (!this.select.multiselect && this.select?.selectedOptions[0]) {\n            return !isNaN(this.index)\n                ? this.select.selectedOptions[0]?.index === this.index\n                : this.select.selectedOptions[0] === this;\n        }\n    }\n\n    private select: IOptionedComponent;\n\n    constructor(\n        @Optional()\n        @Inject(NUI_SELECT_V2_OPTION_PARENT_COMPONENT)\n        parent: IOptionedComponent,\n        public element: ElementRef<HTMLElement>\n    ) {\n        super(element);\n        this.select = parent;\n    }\n\n    /** Handles Mouse click */\n    @HostListener(\"click\", [\"$event\"])\n    public onClick(event: UIEvent): void {\n        event.preventDefault();\n        event.stopPropagation();\n        if (this.isDisabled) {\n            return;\n        }\n        this.select.selectOption(this);\n    }\n\n    /** Gets value displayed in the Option */\n    public get viewValue(): string {\n        return (this.element.nativeElement.textContent || \"\").trim();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { Injectable, QueryList } from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\n\nimport {\n    ANNOUNCER_CLOSE_MESSAGE,\n    ANNOUNCER_OPEN_MESSAGE_SUFFIX,\n} from \"./constants\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { IOption, IOverlayComponent } from \"../overlay/types\";\n\n@Injectable()\nexport class OptionKeyControlService<T extends IOption> {\n    public popup: IOverlayComponent;\n    public optionItems: QueryList<T>;\n\n    private keyboardEventsManager: ActiveDescendantKeyManager<T>;\n\n    constructor(public liveAnnouncer: LiveAnnouncer) {}\n\n    public initKeyboardManager(): void {\n        this.keyboardEventsManager = new ActiveDescendantKeyManager(\n            this.optionItems\n        ).withVerticalOrientation();\n    }\n\n    public handleKeydown(event: KeyboardEvent): void {\n        this.popup.showing\n            ? this.handleOpenKeyDown(event)\n            : this.handleClosedKeyDown(event);\n    }\n\n    public setActiveItem(option: T): void {\n        this.keyboardEventsManager?.setActiveItem(option);\n    }\n\n    public resetActiveItem(): void {\n        this.keyboardEventsManager.setActiveItem(-1);\n    }\n\n    public setFirstItemActive(): void {\n        this.keyboardEventsManager?.setFirstItemActive();\n    }\n\n    public getActiveItemIndex(): number | null {\n        return this.keyboardEventsManager.activeItemIndex;\n    }\n\n    public setSkipPredicate(predicate: (option: T) => boolean): void {\n        this.keyboardEventsManager.skipPredicate(predicate);\n    }\n\n    public scrollToActiveItem(options: ScrollIntoViewOptions): void {\n        if (this.keyboardEventsManager.activeItem) {\n            // setTimeout is necessary because scrolling to the selected item should occur only when overlay rendered\n            setTimeout(() => {\n                this.keyboardEventsManager.activeItem?.scrollIntoView(options);\n            });\n        }\n    }\n\n    private hasActiveItem(): boolean {\n        if (isNil(this.keyboardEventsManager.activeItemIndex)) {\n            throw new Error(\"ActiveItemIndex is not defined\");\n        }\n        return Boolean(\n            this.keyboardEventsManager.activeItem &&\n                this.keyboardEventsManager.activeItemIndex >= 0\n        );\n    }\n\n    private handleOpenKeyDown(event: KeyboardEvent): void {\n        switch (event.code) {\n            case KEYBOARD_CODE.ARROW_DOWN:\n            case KEYBOARD_CODE.ARROW_UP:\n                this.keyboardEventsManager.onKeydown(event);\n                this.announceNavigatedOption();\n                break;\n            case KEYBOARD_CODE.PAGE_UP:\n                event.preventDefault();\n                this.keyboardEventsManager.onKeydown(event);\n                this.keyboardEventsManager.setFirstItemActive();\n                break;\n            case KEYBOARD_CODE.PAGE_DOWN:\n                event.preventDefault();\n                this.keyboardEventsManager.onKeydown(event);\n                this.keyboardEventsManager.setLastItemActive();\n                break;\n        }\n\n        this.scrollToActiveItem({ block: \"nearest\" });\n\n        // prevent closing on enter\n        if (!this.hasActiveItem() && event.code === KEYBOARD_CODE.ENTER) {\n            event.preventDefault();\n        }\n\n        if (this.hasActiveItem() && event.code === KEYBOARD_CODE.ENTER) {\n            if (!this.keyboardEventsManager.activeItem) {\n                throw new Error(\"ActiveItem is not defined\");\n            }\n\n            // perform action in menu item(select, switch, check etc).\n            this.keyboardEventsManager.activeItem.element.nativeElement.click();\n        }\n\n        if (\n            event.code === KEYBOARD_CODE.TAB ||\n            event.code === KEYBOARD_CODE.ESCAPE\n        ) {\n            this.popup.toggle();\n            this.announceDropdown(this.popup.showing);\n        }\n    }\n\n    private handleClosedKeyDown(event: KeyboardEvent): void {\n        // prevent opening on enter and prevent scrolling page on key down/key up when focused\n        if (this.shouldBePrevented(event)) {\n            event.preventDefault();\n        }\n\n        if (event.code === KEYBOARD_CODE.ARROW_DOWN) {\n            this.popup.toggle();\n            this.scrollToActiveItem({ block: \"center\" });\n        }\n    }\n\n    private shouldBePrevented(event: KeyboardEvent) {\n        return (\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_UP ||\n            event.code === KEYBOARD_CODE.ENTER\n        );\n    }\n\n    private announceNavigatedOption(): void {\n        const activeItem = this.keyboardEventsManager.activeItem;\n\n        if (activeItem) {\n            this.liveAnnouncer.announce((activeItem as any).value);\n        }\n    }\n\n    private announceDropdown(open: boolean) {\n        const message = open\n            ? `${this.optionItems.length} ${ANNOUNCER_OPEN_MESSAGE_SUFFIX}`\n            : ANNOUNCER_CLOSE_MESSAGE;\n\n        this.liveAnnouncer.announce(message);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayRef } from \"@angular/cdk/overlay\";\nimport some from \"lodash/some\";\n\nimport { OverlayComponent } from \"./overlay-component/overlay.component\";\nimport { IResizeConfig } from \"./types\";\n\nexport class OverlayUtilitiesService {\n    private overlayComponent: OverlayComponent;\n\n    public setPopupComponent(\n        overlayComponent: OverlayComponent\n    ): OverlayUtilitiesService {\n        this.overlayComponent = overlayComponent;\n        return this;\n    }\n\n    // might be heavy, think about another way to handle that\n    public getResizeObserver(config?: IResizeConfig): ResizeObserver {\n        // We need the overlay to keep track of the width and height of its toggle reference in order to follow it's dimensions.\n        // Derived from NUI-4744\n        const toggleRefResizeObserver$ = new ResizeObserver(\n            (entries: ResizeObserverEntry[]) => {\n                // We need to use requestAnimationFrame here to avoid a common 'ResizeObserver loop limit exceeded' error.\n                // This error means that ResizeObserver was not able to deliver all observations within a single animation frame.\n                // This error is not breaking for the component, and can be ignored, though it breaks unit tests heavily.\n                // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n                window.requestAnimationFrame(() => {\n                    if (!Array.isArray(entries) || !entries.length) {\n                        return;\n                    }\n\n                    entries.forEach((entry: ResizeObserverEntry) => {\n                        this.overlayComponent.getOverlayRef()?.updatePosition();\n                        if (!(config && config.updateSize === false)) {\n                            this.overlayComponent.getOverlayRef()?.updateSize({\n                                width: entry.target.getBoundingClientRect()\n                                    .width,\n                            });\n                        }\n                    });\n                });\n            }\n        );\n        return toggleRefResizeObserver$;\n    }\n\n    public syncWidth(): void {\n        const overlayRef = this.getOverlayRef();\n        if (!overlayRef) {\n            return;\n        }\n\n        if (this.isOverlayWidthConfigured) {\n            return;\n        }\n\n        const refRect =\n            this.overlayComponent.toggleReference.getBoundingClientRect();\n        const popupWidth = refRect.width;\n        this.overlayComponent.getOverlayRef().updateSize({ width: popupWidth });\n    }\n\n    private getOverlayRef(): OverlayRef {\n        return this.overlayComponent?.getOverlayRef();\n    }\n\n    private get isOverlayWidthConfigured(): boolean {\n        return (\n            this.overlayComponent.overlayConfig &&\n            some([\n                this.overlayComponent.overlayConfig.width,\n                this.overlayComponent.overlayConfig.minWidth,\n                this.overlayComponent.overlayConfig.maxWidth,\n            ])\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { OverlayConfig } from \"@angular/cdk/overlay\";\nimport { CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectorRef,\n    ContentChild,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChild,\n} from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\nimport includes from \"lodash/includes\";\nimport isEqual from \"lodash/isEqual\";\nimport isUndefined from \"lodash/isUndefined\";\nimport last from \"lodash/last\";\nimport pull from \"lodash/pull\";\nimport { Observable, Subject } from \"rxjs\";\nimport { delay, takeUntil, tap } from \"rxjs/operators\";\n\nimport {\n    ANNOUNCER_CLOSE_MESSAGE,\n    ANNOUNCER_OPEN_MESSAGE_SUFFIX,\n} from \"./constants\";\nimport { SelectV2OptionComponent } from \"./option/select-v2-option.component\";\nimport { OptionKeyControlService } from \"./option-key-control.service\";\nimport { InputValueTypes, IOptionedComponent } from \"./types\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport {\n    OVERLAY_ITEM,\n    OVERLAY_WITH_POPUP_STYLES_CLASS,\n} from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\nimport { OverlayUtilitiesService } from \"../overlay/overlay-utilities.service\";\nimport {\n    IOption,\n    OptionValueType,\n    OverlayContainerType,\n} from \"../overlay/types\";\n\nconst DEFAULT_SELECT_OVERLAY_CONFIG: OverlayConfig = {\n    panelClass: OVERLAY_WITH_POPUP_STYLES_CLASS,\n};\n\nconst V_SCROLL_HEIGHT_BUFFER = 10;\n\n// Will be renamed in scope of the NUI-5797\n@Directive()\nexport abstract class BaseSelectV2\n    implements\n        AfterViewInit,\n        AfterContentInit,\n        ControlValueAccessor,\n        IOptionedComponent,\n        OnDestroy,\n        OnChanges\n{\n    private static _counter = 0;\n\n    /** Value used as a placeholder for the select. */\n    @Input() public placeholder: string = \"\";\n\n    /** Sets margin in px for the Dropdown relatively the container where the Dropdown appended to */\n    @Input() public popupViewportMargin: number;\n\n    /** Sets the Overlay Config in accordance with [Material CDK]{@link https://material.angular.io/cdk/overlay/api#OverlayConfig} */\n    @Input()\n    public get overlayConfig(): OverlayConfig {\n        return this._overlayConfig;\n    }\n    public set overlayConfig(value: OverlayConfig) {\n        this._overlayConfig = {\n            ...DEFAULT_SELECT_OVERLAY_CONFIG,\n            ...value,\n        };\n    }\n    private _overlayConfig: OverlayConfig = DEFAULT_SELECT_OVERLAY_CONFIG;\n\n    /** Whether the multi-select mode */\n    @Input() public multiselect: boolean;\n\n    /** Whether the Dropdown controls manually */\n    @Input() public manualDropdownControl: boolean = false;\n\n    /** Sets value of the Select/Combobox */\n    @Input() public value: OptionValueType | OptionValueType[] | null;\n\n    /** Sets custom container for CDK Overlay. Selector OR ElementRef */\n    @Input() public dropdownCustomContainer: OverlayContainerType;\n\n    /** Sets whether an overlay must sync it's width with the width of the toggle reference */\n    @Input() public syncWidth: boolean = true;\n\n    /** Whether the Select/Combobox disabled */\n    @HostBinding(\"class.disabled\")\n    @Input()\n    public isDisabled = false;\n\n    /** Input to apply error state styles */\n    @HostBinding(\"class.has-error\")\n    @Input()\n    public isInErrorState: boolean;\n\n    private allowedKeys = [\n        KEYBOARD_CODE.ARROW_UP,\n        KEYBOARD_CODE.ARROW_DOWN,\n        KEYBOARD_CODE.ENTER,\n    ].map(String);\n\n    /** Input to set aria label text */\n    @Input() public get ariaLabel(): string {\n        return this._ariaLabel;\n    }\n\n    // changing the value with regular @Input doesn't trigger change detection\n    // so we need to do that manually in the setter\n    public set ariaLabel(value: string) {\n        if (value !== this._ariaLabel) {\n            this._ariaLabel = value;\n            this.cdRef.markForCheck();\n        }\n    }\n\n    /** Corresponds to the Textbox of the Combobox */\n    @ViewChild(\"input\", { static: false }) inputElement: ElementRef;\n\n    @ContentChild(CdkVirtualScrollViewport)\n    cdkVirtualScroll: CdkVirtualScrollViewport;\n\n    /** Corresponds to the Options listed in the Dropdown */\n    @ContentChildren(forwardRef(() => SelectV2OptionComponent), {\n        descendants: true,\n    })\n    public options: QueryList<SelectV2OptionComponent>;\n\n    /** Corresponds to the All Items listed in the Dropdown */\n    @ContentChildren(forwardRef(() => OVERLAY_ITEM), { descendants: true })\n    public allPopupItems: QueryList<IOption>;\n\n    /** Gets options from the model */\n    public get selectedOptions(): SelectV2OptionComponent[] {\n        return this._selectedOptions;\n    }\n    /** Sets options to the model */\n    public set selectedOptions(options: SelectV2OptionComponent[]) {\n        this._selectedOptions = options;\n        const value = this.getValueFromOptions(options);\n        this.value = value;\n        this.onChange(value);\n        this.valueSelected.emit(value);\n    }\n\n    /** Name of the icon which indicates open/close state of the Dropdown */\n    public caretIcon = \"caret-down\";\n\n    @ViewChild(OverlayComponent)\n    public dropdown: OverlayComponent;\n    protected popupUtilities: OverlayUtilitiesService =\n        new OverlayUtilitiesService();\n    protected destroy$: Subject<void> = new Subject<void>();\n    protected mouseDown: boolean;\n    private _selectedOptions: SelectV2OptionComponent[] = [];\n\n    private _ariaLabel: string = \"\";\n\n    /** Unique ID for the trigger element, used for aria-labelledby on the overlay */\n    public readonly triggerId = `nui-select-trigger-${BaseSelectV2._counter++}`;\n    private virtualScrollResizeObserver: ResizeObserver;\n\n    /** Emits value which has been selected */\n    @Output() public valueSelected = new EventEmitter<\n        OptionValueType | OptionValueType[] | null\n    >();\n\n    /** Emits value which has been changed */\n    @Output() public valueChanged = new EventEmitter<InputValueTypes>();\n\n    /** Emits MouseEvent when click occurs outside Select/Combobox */\n    @Output() public clickOutsideDropdown = new EventEmitter<MouseEvent>();\n\n    protected constructor(\n        protected optionKeyControlService: OptionKeyControlService<IOption>,\n        protected cdRef: ChangeDetectorRef,\n        public elRef: ElementRef<HTMLElement>,\n        public liveAnnouncer: LiveAnnouncer\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.value) {\n            this.handleValueChange(changes.value?.currentValue);\n        }\n\n        if (changes.dropdownCustomContainer && this.dropdown) {\n            this.defineDropdownContainer();\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this.handleValueChange(this.value);\n    }\n\n    public ngAfterViewInit(): void {\n        this.initClosingOnClicksOutside();\n        this.initOnTouch();\n        if (this.syncWidth) {\n            this.initPopupUtilities();\n        }\n        this.initKeyboardManager();\n        this.defineDropdownContainer();\n        this.adjustDropdownOnVScrollResize();\n    }\n\n    /** `View -> model callback called when value changes` */\n    public onChange: (value: any) => void = (): void => {};\n\n    /** `View -> model callback called when autocomplete has been touched` */\n    public onTouched = (): void => {};\n\n    /** Handles mousedown event */\n    @HostListener(\"mousedown\")\n    public onMouseDown(): void {\n        this.mouseDown = true;\n    }\n\n    /** Handles mouseup event */\n    @HostListener(\"mouseup\", [\"$event.target\"])\n    public onMouseUp(target: HTMLElement): void {\n        this.mouseDown = false;\n        if (!this.manualDropdownControl) {\n            this.toggleDropdown();\n        }\n    }\n\n    /**\n     * Handles focusin event.\n     * To avoid triggering showDropdown() on MouseClick. We need to open dropdown only on TAB (SHIFT + TAB) action.\n     */\n    @HostListener(\"focusin\")\n    public onFocusIn(): void {\n        if (this.isOpenOnFocus()) {\n            this.showDropdown();\n            this.announceDropdown(true);\n        }\n    }\n\n    @HostListener(\"window:resize\")\n    public onWindowResize(): void {\n        this.popupUtilities.syncWidth();\n    }\n\n    /** Handles keydown event */\n    public onKeyDown(event: KeyboardEvent): void {\n        if (!this.manualDropdownControl) {\n            this.optionKeyControlService.handleKeydown(event);\n        }\n\n        if (\n            this.manualDropdownControl &&\n            this.dropdown.showing &&\n            this.isAllowedKeyOnManualDropdown(event)\n        ) {\n            this.optionKeyControlService.handleKeydown(event);\n        }\n    }\n\n    /** Shows dropdown */\n    public showDropdown(): void {\n        if (this.isDisabled) {\n            return;\n        }\n\n        this.dropdown.show();\n        this.setActiveItemOnDropdown();\n        this.scrollToOption();\n        this.announceDropdown(true);\n    }\n\n    /** Hides dropdown */\n    public hideDropdown(): void {\n        if (!this.isDisabled) {\n            this.dropdown.hide();\n            this.announceDropdown(false);\n        }\n    }\n\n    /** Toggles dropdown */\n    public toggleDropdown(): void {\n        if (this.isDisabled) {\n            return;\n        }\n\n        this.dropdown.toggle();\n        this.announceDropdown(this.dropdown.showing);\n\n        this.setActiveItemOnDropdown();\n        this.scrollToOption();\n\n        if (this.cdkVirtualScroll) {\n            this.cdkVirtualScroll.checkViewportSize();\n        }\n    }\n\n    /** Selects specific option and set its value to the model */\n    public selectOption(option: SelectV2OptionComponent): void {\n        if (\n            includes(this.selectedOptions, option) &&\n            !this.manualDropdownControl\n        ) {\n            this.hideDropdown();\n            return;\n        }\n\n        this.selectedOptions = this.multiselect\n            ? this.selectedOptions.concat(option)\n            : [option];\n        this.optionKeyControlService.setActiveItem(option);\n\n        if (!this.manualDropdownControl) {\n            this.hideDropdown();\n        }\n    }\n\n    /** Removes selected options or passed option if multi-select mode enabled */\n    public removeSelected(option?: SelectV2OptionComponent): void {\n        if (!this.multiselect) {\n            return;\n        }\n\n        this.selectedOptions = option ? pull(this.selectedOptions, option) : [];\n    }\n\n    public registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: any): void {\n        this.onTouched = fn;\n    }\n\n    /** Handles disabled state */\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n    }\n\n    /** Sets value to the model */\n    public writeValue(value: OptionValueType | OptionValueType[]): void {\n        this.handleValueChange(value);\n    }\n\n    /** Returns last selected Option */\n    public getLastSelectedOption(): SelectV2OptionComponent | undefined {\n        return last(this.selectedOptions);\n    }\n\n    /** Returns state of the Dropdown */\n    public get isDropdownOpen(): boolean {\n        return this.dropdown?.showing;\n    }\n\n    /**\n     * Calls to ngOnDestroy do not automatically get propagated to base classes.\n     * This can lead to memory leaks.\n     * This is a safe guard for preventing memory leaks in derived classes.\n     */\n    public ngOnDestroy(): void {\n        if (this.dropdown?.showing) {\n            this.dropdown.hide();\n        }\n        this.destroy$.next();\n        this.destroy$.complete();\n\n        if (this.virtualScrollResizeObserver) {\n            this.virtualScrollResizeObserver.unobserve(\n                this.cdkVirtualScroll.elementRef.nativeElement\n            );\n        }\n    }\n\n    protected getValueFromOptions(\n        options = this.selectedOptions\n    ): OptionValueType | OptionValueType[] | null {\n        return this.multiselect\n            ? options.map((o) => o.value)\n            : options[0]?.value || \"\";\n    }\n\n    protected handleValueChange(\n        value: OptionValueType | OptionValueType[] | null\n    ): void {\n        if (isUndefined(value)) {\n            this.value = \"\";\n            this._selectedOptions = [];\n            this.setActiveItemOnDropdown();\n            return;\n        }\n\n        this.value = value;\n\n        if (this.multiselect && Array.isArray(value)) {\n            // Using type assertion to avoid compilation error, undefined elements are filtered but compiler do not infer the type properly\n            this._selectedOptions = <SelectV2OptionComponent[]>(\n                value\n                    .map((v) =>\n                        this.options?.find((option) => isEqual(option.value, v))\n                    )\n                    .filter((_) => _)\n            );\n            // removes 'undefined' elements out of the array if any\n            this._selectedOptions.forEach(\n                (option) => (option.outfiltered = true)\n            );\n        } else {\n            const modelValue: OptionValueType = value;\n            const selectedValue = this.options?.find((option) =>\n                isEqual(option.value, modelValue)\n            );\n            this._selectedOptions = selectedValue ? [selectedValue] : [];\n        }\n\n        // TODO: Change to the line below to emit the input value 'this.inputElement?.nativeElement?.value' in the scope of the NUI-6131\n        this.valueChanged.emit();\n        this.setActiveItemOnDropdown();\n    }\n\n    protected optionsChanged(): Observable<QueryList<IOption>> {\n        return this.allPopupItems.changes.pipe(\n            takeUntil(this.destroy$),\n            delay(0), // because we handle options as list of COMPONENTS, so we need to wait till next check\n            tap(() => {\n                this.handleValueChange(this.value);\n                this.validateValueWithSelectedOptions();\n                this.optionKeyControlService.setFirstItemActive();\n            })\n        );\n    }\n\n    private validateValueWithSelectedOptions() {\n        const selectedOptionValues = this.selectedOptions.map(\n            (option) => option.value\n        );\n        const valuePropToCompare = !isUndefined(this.value)\n            ? this.multiselect\n                ? this.value\n                : [this.value]\n            : [];\n\n        if (!isEqual(selectedOptionValues, valuePropToCompare)) {\n            this.value = this.multiselect\n                ? selectedOptionValues\n                : selectedOptionValues[0];\n            this.onChange(this.value);\n            console.warn(\n                \"Options changed, no correspondent 'value' found. Current value: \",\n                this.value,\n                \"Previous value: \",\n                valuePropToCompare\n            );\n        }\n    }\n\n    private scrollToOption() {\n        // setTimeout is necessary because scrolling to the selected item should occur only when overlay rendered\n        if (!isUndefined(this.value) && !this.multiselect) {\n            setTimeout(() =>\n                this.selectedOptions[0]?.scrollIntoView({ block: \"center\" })\n            );\n        }\n    }\n\n    private initKeyboardManager() {\n        this.optionKeyControlService.optionItems = this.allPopupItems;\n        this.optionKeyControlService.popup = this.dropdown;\n        this.optionKeyControlService.initKeyboardManager();\n        this.optionKeyControlService.setSkipPredicate(\n            (option: IOption) => !!(option.outfiltered || option.isDisabled)\n        );\n    }\n\n    private setActiveItemOnDropdown(): void {\n        let selectedValue;\n        if (!this.multiselect) {\n            selectedValue = this.options?.find((option) =>\n                isEqual(option.value, this.value)\n            );\n        }\n        selectedValue && !this.multiselect\n            ? this.optionKeyControlService.setActiveItem(\n                  this.selectedOptions[0]\n              )\n            : this.optionKeyControlService.setFirstItemActive();\n    }\n\n    private initClosingOnClicksOutside() {\n        this.dropdown.clickOutside\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((v) => {\n                if (!this.manualDropdownControl) {\n                    this.hideDropdown();\n                }\n                this.clickOutsideDropdown.emit(v);\n            });\n    }\n\n    private initOnTouch() {\n        this.dropdown.hide$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.onTouched();\n            this.cdRef.markForCheck(); // so caret icon will update properly\n        });\n    }\n\n    private isAllowedKeyOnManualDropdown(event: KeyboardEvent): boolean {\n        return this.allowedKeys.includes(event.code);\n    }\n\n    private defineDropdownContainer(): void {\n        this.dropdown.customContainer = this.dropdownCustomContainer;\n    }\n\n    private initPopupUtilities() {\n        const resizeObserver = this.popupUtilities\n            .setPopupComponent(this.dropdown)\n            .getResizeObserver();\n\n        this.dropdown.show$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.popupUtilities.syncWidth();\n            resizeObserver.observe(this.elRef.nativeElement);\n        });\n\n        this.dropdown.hide$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            resizeObserver.unobserve(this.elRef.nativeElement);\n        });\n    }\n\n    /**\n     * This helps to dynamically set minHeight for overlay to avoid issues with double\n     * scroll. Overlay minHeight should be bigger than cdkVirtualScroll container.\n     */\n    private adjustDropdownOnVScrollResize(): void {\n        if (!this.cdkVirtualScroll) {\n            return;\n        }\n\n        const element = this.cdkVirtualScroll.elementRef.nativeElement;\n        const height = parseInt(element.style.height, 10);\n        const minHeight = Number.isNaN(height)\n            ? 0\n            : height + V_SCROLL_HEIGHT_BUFFER;\n\n        this.dropdown.overlayConfig = {\n            ...this.overlayConfig,\n            ...{ minHeight },\n        };\n        this.virtualScrollResizeObserver = new ResizeObserver((entries) => {\n            for (const entry of entries) {\n                const content = entry.contentRect;\n                const minHeight = content.height\n                    ? content.height + V_SCROLL_HEIGHT_BUFFER\n                    : 0;\n\n                this.dropdown.updateSize({ minHeight });\n            }\n        });\n\n        this.virtualScrollResizeObserver.observe(element);\n    }\n\n    private isOpenOnFocus(): boolean {\n        return (\n            !this.mouseDown &&\n            !this.manualDropdownControl &&\n            document.activeElement === this.inputElement.nativeElement\n        );\n    }\n\n    private announceDropdown(open: boolean): void {\n        if (open) {\n            this.liveAnnouncer.announce(\n                `${this.options.length} ${ANNOUNCER_OPEN_MESSAGE_SUFFIX}`\n            );\n\n            return;\n        }\n\n        const msg = this.value\n            ? `${this.value} selected ${ANNOUNCER_CLOSE_MESSAGE}`\n            : ANNOUNCER_CLOSE_MESSAGE;\n\n        this.liveAnnouncer.announce(msg);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Highlightable } from \"@angular/cdk/a11y\";\nimport {\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n} from \"@angular/core\";\n\n@Directive({\n    selector: \"[nuiMarkAsSelectedItem]\",\n    standalone: false,\n})\nexport class MarkAsSelectedItemDirective implements Highlightable {\n    @HostBinding(\"class.active\") private isActive: boolean = false;\n\n    constructor(public elRef: ElementRef, private cdRef: ChangeDetectorRef) {}\n\n    public setActiveStyles(): void {\n        this.isActive = true;\n        this.cdRef.markForCheck();\n    }\n\n    public setInactiveStyles(): void {\n        this.isActive = false;\n        this.cdRef.markForCheck();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ActiveDescendantKeyManager, LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { Injectable, QueryList } from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\n\nimport { ComboboxV2Component } from \"./combobox-v2/combobox-v2.component\";\nimport { MarkAsSelectedItemDirective } from \"./mark-as-selected-item.directive\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\n\n@Injectable()\nexport class SelectedItemsKeyControlService {\n    private selectedItems: QueryList<MarkAsSelectedItemDirective>;\n    private selectedItemsKeyManager: ActiveDescendantKeyManager<any>;\n    private activeSelectedItemIndex?: number;\n    private combobox: ComboboxV2Component;\n    private inputElement: HTMLInputElement;\n\n    constructor(public liveAnnouncer: LiveAnnouncer) {}\n\n    public initSelectedItemsKeyManager(\n        elems: QueryList<MarkAsSelectedItemDirective>,\n        combobox: ComboboxV2Component\n    ): void {\n        this.combobox = combobox;\n        this.inputElement = combobox.inputElement?.nativeElement;\n        this.selectedItems = elems;\n\n        this.selectedItemsKeyManager = new ActiveDescendantKeyManager(elems)\n            .withHorizontalOrientation(\"ltr\")\n            .withWrap();\n\n        if (\n            !isNil(this.activeSelectedItemIndex) &&\n            this.activeSelectedItemIndex >= 0 &&\n            Number.isInteger(this.activeSelectedItemIndex)\n        ) {\n            setTimeout(() =>\n                this.selectedItemsKeyManager.setActiveItem(\n                    this.activeSelectedItemIndex\n                )\n            );\n        }\n    }\n\n    public onKeydown(event: KeyboardEvent): void {\n        const caretPosition = (event.target as HTMLInputElement).selectionStart;\n        const isKeyAllowed =\n            this.isBackspace(event) || this.isLeftOrRightArrow(event);\n\n        if (\n            caretPosition !== 0 ||\n            (!this.activeItem && this.isRightArrow(event))\n        ) {\n            return;\n        }\n\n        if (!isKeyAllowed) {\n            this.deactivateSelectedItems();\n            return;\n        }\n\n        if (!this.combobox.manualDropdownControl && !this.activeItem) {\n            this.combobox.hideDropdown();\n        }\n\n        if (\n            this.isLeftArrow(event) &&\n            this.activeItem !== this.selectedItems.first\n        ) {\n            this.selectedItemsKeyManager.onKeydown(event);\n            this.liveAnnouncer.announce(`${this.getActiveItemTitle} selected`);\n            return;\n        }\n\n        if (this.isRightArrow(event) && this.activeItem) {\n            this.handleRightArrow(event);\n            return;\n        }\n\n        if (this.isBackspace(event)) {\n            this.handleBackspace();\n            return;\n        }\n    }\n\n    public setLastItemActive(): void {\n        this.selectedItemsKeyManager.setLastItemActive();\n    }\n\n    public isSelectedItemsActive(): boolean {\n        return Boolean(this.activeItem);\n    }\n\n    public deactivateSelectedItems(): void {\n        this.selectedItemsKeyManager.setActiveItem(-1);\n        this.activeSelectedItemIndex = undefined;\n    }\n\n    private handleBackspace(): void {\n        if (this.activeItem) {\n            this.deselectItem();\n            return;\n        }\n\n        if (!this.activeItem) {\n            this.setLastItemActive();\n            return;\n        }\n    }\n\n    private handleRightArrow(event: KeyboardEvent): void {\n        const isLastSelectedItemActive =\n            this.activeItem === this.selectedItems.last;\n\n        if (isLastSelectedItemActive) {\n            this.selectedItemsKeyManager.onKeydown(event);\n            this.deactivateSelectedItems();\n\n            if (!this.combobox.manualDropdownControl) {\n                this.combobox.showDropdown();\n            }\n\n            return;\n        }\n\n        this.selectedItemsKeyManager.onKeydown(event);\n        this.liveAnnouncer.announce(`${this.getActiveItemTitle} selected`);\n    }\n\n    private calculateActiveSelectedItemIndex(): void {\n        if (isNil(this.selectedItemsKeyManager.activeItemIndex)) {\n            throw new Error(\"ActiveItemIndex is not defined\");\n        }\n\n        const previousItemIndex =\n            this.selectedItemsKeyManager.activeItemIndex - 1;\n\n        if (previousItemIndex >= 0) {\n            this.activeSelectedItemIndex = previousItemIndex;\n            return;\n        }\n\n        if (previousItemIndex === -1 && this.selectedItems.length > 1) {\n            this.activeSelectedItemIndex = 0;\n            return;\n        }\n\n        if (previousItemIndex === -1 && this.selectedItems.length) {\n            this.activeSelectedItemIndex = undefined;\n            return;\n        }\n\n        if (previousItemIndex >= 0 && this.selectedItems.length === 0) {\n            this.activeSelectedItemIndex = undefined;\n            return;\n        }\n    }\n\n    private isBackspace(event: KeyboardEvent): boolean {\n        return event.code === KEYBOARD_CODE.BACKSPACE;\n    }\n\n    private isLeftOrRightArrow(event: KeyboardEvent) {\n        return this.isLeftArrow(event) || this.isRightArrow(event);\n    }\n\n    private isRightArrow(event: KeyboardEvent) {\n        return event.code === KEYBOARD_CODE.ARROW_RIGHT;\n    }\n\n    private isLeftArrow(event: KeyboardEvent) {\n        return event.code === KEYBOARD_CODE.ARROW_LEFT;\n    }\n\n    private get activeItem() {\n        return this.selectedItemsKeyManager.activeItem;\n    }\n\n    private deselectItem(): void {\n        if (!isNil(this.selectedItemsKeyManager.activeItemIndex)) {\n            this.calculateActiveSelectedItemIndex();\n            this.combobox.deselectItem(\n                this.selectedItemsKeyManager.activeItemIndex\n            );\n            this.liveAnnouncer.announce(`${this.getActiveItemTitle} removed`);\n        }\n    }\n\n    private get getActiveItemTitle(): string {\n        return this.activeItem?.cdRef.context.item.label || \"\";\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    animate,\n    state,\n    style,\n    transition,\n    trigger,\n} from \"@angular/animations\";\n\ntype KnownAnimationEventStates = \"void\" | true | false;\n\nexport interface TypedAnimationEvent\n    extends Omit<AnimationEvent, \"toState\" | \"fromState\"> {\n    toState: KnownAnimationEventStates;\n    fromState: KnownAnimationEventStates;\n}\n\nexport const fadeIn = [\n    // boring fade-in/fade-out opacity animation.\n    trigger(\"fadeIn\", [\n        // anything other than true is hidden\n        state(\"*\", style({ opacity: 0 })),\n        state(\"true\", style({ opacity: 1 })),\n\n        transition(\"* <=> *\", animate(\".2s ease-in-out\")),\n    ]),\n];\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ConnectedPosition,\n    FlexibleConnectedPositionStrategy,\n    Overlay,\n    OverlayConfig,\n    ScrollDispatcher,\n} from \"@angular/cdk/overlay\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    ViewChild,\n} from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { skip, take, takeUntil } from \"rxjs/operators\";\n\nimport { fadeIn, TypedAnimationEvent } from \"../../animations/fadeIn\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\n\n/** CSS class that will be attached to the overlay panel. */\nexport const TOOLTIP_PANEL_CLASS = \"nui-tooltip-panel\";\nconst ANIMATION_DELAY = 200; // ms\n/**\n * Internal component that wraps the tooltip\"s content.\n */\n\n/** @ignore */\n@Component({\n    selector: \"nui-tooltip-component\",\n    styleUrls: [\"./tooltip.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    animations: [fadeIn],\n    host: {\n        \"(body:click)\": \"this._handleBodyInteraction()\",\n        \"aria-hidden\": \"true\",\n        role: \"tooltip\",\n    },\n    template: `\n        <nui-overlay\n            [toggleReference]=\"toggleReference.nativeElement\"\n            [overlayConfig]=\"overlayConfig\"\n        >\n            <div\n                class=\"nui-tooltip-body with-nui-overlay nui-text-small\"\n                [@fadeIn]=\"_visibility\"\n                (@fadeIn.start)=\"_animationStart()\"\n                (@fadeIn.done)=\"_animationDone($event)\"\n            >\n                {{ message }}\n            </div>\n        </nui-overlay>\n    `,\n    standalone: false,\n})\nexport class TooltipComponent implements OnDestroy, OnInit {\n    /** Message to display in the tooltip */\n    public get message(): string {\n        return this._message;\n    }\n\n    public set message(value: string) {\n        this._message = value;\n        this._markForCheck();\n        this.ngZone.onMicrotaskEmpty\n            .asObservable()\n            .pipe(take(1), takeUntil(this.destroy$))\n            .subscribe(() => {\n                this.overlayComponent?.getOverlayRef()?.updatePosition();\n            });\n    }\n\n    private _message: string;\n    public possiblePositions: ConnectedPosition[];\n\n    /** Property watched by the animation framework to show or hide the tooltip */\n    _visibility: boolean = false;\n\n    public overlayConfig: OverlayConfig;\n    public toggleReference: ElementRef<HTMLElement>;\n\n    @ViewChild(OverlayComponent, { static: true })\n    private overlayComponent: OverlayComponent;\n\n    /** Whether interactions on the page should close the tooltip */\n    private _closeOnInteraction: boolean = false;\n\n    /** Subject for notifying that the tooltip has been hidden from the view */\n    private readonly _onHide = new Subject<void>();\n    private readonly destroy$ = new Subject<void>();\n    private hiding$ = new BehaviorSubject<boolean>(false);\n\n    constructor(\n        private _changeDetectorRef: ChangeDetectorRef,\n        private scrollDispatcher: ScrollDispatcher,\n        private ngZone: NgZone,\n        protected overlay: Overlay\n    ) {}\n\n    public ngOnInit(): void {\n        this.updatePopupOverlayConfig();\n    }\n\n    public updatePossiblePositions(positions: ConnectedPosition[]): void {\n        this.possiblePositions = positions;\n        const positionStrategy = this.overlayComponent\n            .getOverlayRef()\n            .getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n        positionStrategy.withPositions(this.possiblePositions);\n    }\n\n    /**\n     * Shows the tooltip with an animation originating from the provided origin\n     */\n    show(): void {\n        if (this.hiding$.value) {\n            this.hiding$\n                .pipe(\n                    // open after \"hide\" in case hide is already in process (animation)\n                    skip(1), // skip behavior subject 1st emit\n                    take(1)\n                )\n                .subscribe((v) => this._show());\n        } else {\n            this._show();\n        }\n    }\n\n    private _show() {\n        this.overlayComponent.show();\n        // Body interactions should cancel the tooltip if there is a delay in showing.\n        this._closeOnInteraction = true;\n        this._visibility = true;\n        this._markForCheck();\n    }\n\n    /**\n     * Begins the animation to hide the tooltip after the provided delay in ms.\n     */\n    hide(): void {\n        this._visibility = false;\n        // Mark for check so if any parent component has set the\n        // ChangeDetectionStrategy to OnPush it will be checked anyways\n        this._markForCheck();\n        this.hiding$.next(true);\n        setTimeout(() => {\n            this.overlayComponent.hide();\n            this.hiding$.next(false);\n        }, ANIMATION_DELAY);\n    }\n\n    /** Returns an observable that notifies when the tooltip has been hidden from view. */\n    afterHidden(): Observable<void> {\n        return this._onHide.asObservable();\n    }\n\n    /** Whether the tooltip is being displayed. */\n    isVisible(): boolean {\n        return this._visibility === true;\n    }\n\n    public ngOnDestroy(): void {\n        this.overlayComponent.hide();\n        this._onHide.complete();\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    _animationStart(): void {\n        this._closeOnInteraction = false;\n    }\n\n    _animationDone(event: TypedAnimationEvent): void {\n        this._closeOnInteraction = true;\n\n        // Note: If from state is void (this case can happen in some environments and that causes the tooltip to disappear instantly)\n        // Note: We should check if the tooltip is coming from a valid state before handling event\n        if (event.fromState === \"void\") {\n            return;\n        }\n\n        // Note: We don't really understand why do we need this check\n        if (this.isVisible()) {\n            return;\n        }\n\n        // Note: If the current animation is already transitioning in false state\n        if (event.toState !== false) {\n            return;\n        }\n\n        this._onHide.next();\n    }\n\n    _handleBodyInteraction(): void {\n        if (this._closeOnInteraction) {\n            this.hide();\n        }\n    }\n\n    /**\n     * Marks that the tooltip needs to be checked in the next change detection run.\n     * Mainly used for rendering the initial text before positioning a tooltip, which\n     * can be problematic in components with OnPush change detection.\n     */\n    _markForCheck(): void {\n        this._changeDetectorRef.markForCheck();\n    }\n\n    // this is initial overlay cfg that may me improved, didn't touch it not to break anything,- + added positions\n    private updatePopupOverlayConfig() {\n        const scrollableAncestors =\n            this.scrollDispatcher.getAncestorScrollContainers(\n                this.toggleReference\n            );\n\n        // Create connected position strategy that listens for scroll events to reposition.\n        const strategy = this.overlay\n            .position()\n            .flexibleConnectedTo(this.toggleReference)\n            .withTransformOriginOn(\".nui-tooltip\")\n            .withFlexibleDimensions(false)\n            .withViewportMargin(8)\n            .withScrollableContainers(scrollableAncestors)\n            .withPositions(this.possiblePositions);\n\n        strategy.positionChanges\n            .pipe(skip(1), takeUntil(this.destroy$))\n            .subscribe((change) => {\n                if (\n                    change.scrollableViewProperties.isOverlayClipped &&\n                    this.isVisible()\n                ) {\n                    // After position changes occur and the overlay is clipped by\n                    // a parent scrollable then close the tooltip.\n                    this.ngZone.run(() => this.hide());\n                }\n            });\n        this.overlayConfig = {\n            positionStrategy: strategy,\n            panelClass: TOOLTIP_PANEL_CLASS,\n            scrollStrategy: this.overlay.scrollStrategies.reposition({\n                autoClose: true,\n            }),\n        };\n        this._markForCheck();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AriaDescriber, FocusMonitor } from \"@angular/cdk/a11y\";\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport { hasModifierKey } from \"@angular/cdk/keycodes\";\nimport {\n    Directive,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewContainerRef,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { TooltipPosition } from \"./public-api\";\nimport { TooltipComponent } from \"./tooltip.component\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { OverlayPositionService } from \"../overlay/overlay-position.service\";\nimport { OverlayPlacement } from \"../overlay/types\";\n\n/**\n * <example-url>./../examples/index.html#/tooltip</example-url>\n *\n * @dynamic\n */\n\n@Directive({\n    selector: \"[nuiTooltip]\",\n    exportAs: \"nuiTooltip\",\n    host: {\n        \"(longpress)\": \"show()\",\n        \"(keydown)\": \"_handleKeydown($event)\",\n        \"(touchend)\": \"_handleTouchend()\",\n    },\n    providers: [OverlayPositionService],\n    standalone: false,\n})\nexport class TooltipDirective implements OnDestroy {\n    _tooltipInstance?: TooltipComponent;\n\n    private _position: TooltipPosition = \"top\";\n    private _disabled: boolean = false;\n    private _ellipsis: boolean = false;\n\n    /** Allows the user to define the position of the tooltip relative to the parent element */\n    @Input(\"tooltipPlacement\")\n    get position(): TooltipPosition {\n        return this._position;\n    }\n    set position(value: TooltipPosition) {\n        if (value !== this._position) {\n            this._position = value;\n            this.updateOverlayPositions();\n        }\n    }\n\n    /** Disables the display of the tooltip. */\n    @Input(\"nuiTooltipDisabled\")\n    get disabled(): boolean {\n        return this._disabled;\n    }\n    set disabled(value: boolean) {\n        this._disabled = coerceBooleanProperty(value);\n\n        // If tooltip is disabled, hide immediately.\n        if (this._disabled) {\n            this.hide();\n        }\n    }\n\n    /** Determines whether the tooltip should be displayed when the content is overflowing. By default is `false`. */\n    @Input(\"nuiTooltipEllipsis\")\n    get ellipsis(): boolean {\n        return this._ellipsis;\n    }\n    set ellipsis(value: boolean) {\n        this._ellipsis = coerceBooleanProperty(value);\n    }\n\n    private _message = \"\";\n\n    /** The message to be displayed in the tooltip */\n    @Input(\"nuiTooltip\")\n    get message(): string {\n        return this._message;\n    }\n    set message(value: string) {\n        this._ariaDescriber.removeDescription(\n            this._elementRef.nativeElement,\n            this._message\n        );\n\n        // If the message is not a string (e.g. number), convert it to a string and trim it.\n        this._message = value != null ? `${value}`.trim() : \"\";\n\n        if (!this._message && this._isTooltipVisible()) {\n            this.hide();\n        } else {\n            this._updateTooltipMessage();\n            this._ariaDescriber.describe(\n                this._elementRef.nativeElement,\n                this.message\n            );\n        }\n    }\n\n    private _manualListeners = new Map<\n        string,\n        EventListenerOrEventListenerObject\n    >();\n\n    /** Emits when the component is destroyed. */\n    private readonly _destroyed = new Subject<void>();\n\n    constructor(\n        private _elementRef: ElementRef<HTMLElement>,\n        private _viewContainerRef: ViewContainerRef,\n        private _ngZone: NgZone,\n        private _ariaDescriber: AriaDescriber,\n        private _focusMonitor: FocusMonitor,\n        private overlayPositionService: OverlayPositionService\n    ) {\n        this.overlayPositionService.setOverlayPositionConfig({\n            arrowSize: 10,\n            arrowPadding: 0,\n        });\n        const element: HTMLElement = _elementRef.nativeElement;\n\n        this._manualListeners\n            .set(\"mouseenter\", () => this.show())\n            .set(\"mouseleave\", () => this.hide());\n\n        this._manualListeners.forEach((listener, event) =>\n            element.addEventListener(event, listener)\n        );\n\n        _focusMonitor\n            .monitor(_elementRef)\n            .pipe(takeUntil(this._destroyed))\n            .subscribe((origin) => {\n                // Note that the focus monitor runs outside the Angular zone.\n                if (!origin) {\n                    _ngZone.run(() => this.hide());\n                } else if (origin === \"keyboard\") {\n                    _ngZone.run(() => this.show());\n                }\n            });\n    }\n\n    /**\n     * Dispose the tooltip when destroyed.\n     */\n    public ngOnDestroy(): void {\n        if (this._tooltipInstance) {\n            this._tooltipInstance = undefined;\n        }\n\n        // Clean up the event listeners set in the constructor\n        this._manualListeners.forEach((listener, event) => {\n            this._elementRef.nativeElement.removeEventListener(event, listener);\n        });\n        this._manualListeners.clear();\n\n        this._destroyed.next();\n        this._destroyed.complete();\n\n        this._ariaDescriber.removeDescription(\n            this._elementRef.nativeElement,\n            this.message\n        );\n        this._focusMonitor.stopMonitoring(this._elementRef);\n    }\n\n    /** Shows the tooltip if not disabled or empty */\n    show(): void {\n        if (!this.canShowTooltip()) {\n            return;\n        }\n\n        if (!this._tooltipInstance) {\n            this.createTooltipComponent();\n            this._updateTooltipMessage();\n\n            // wait till overlay view init\n            setTimeout(() => {\n                // added this check here, because of the manual-trigger-example in docs.\n                // \"Disabled\" attribute is set after 1st \"show\" is triggered and it should hide the tooltip.\n                // That's why inside setTimeout operation there's one more check if it's disabled.\n                if (!this.canShowTooltip()) {\n                    return;\n                }\n                this._tooltipInstance?.show();\n            });\n        } else {\n            this._tooltipInstance?.show();\n        }\n    }\n\n    /**\n     * Checks if the content is overflowing.\n     * The content is considered overflowing if its scroll width is greater than its client width plus 1.\n     */\n    isOverflowing(): boolean {\n        return (\n            this._elementRef.nativeElement.scrollWidth >\n            this._elementRef.nativeElement.clientWidth + 1\n        );\n    }\n\n    /** Hides the tooltip */\n    hide(): void {\n        // without setTimeout, sometimes 'hide' is called before 'show', because show has setTimeout for it's own reasons.\n        setTimeout(() => this._tooltipInstance?.hide());\n    }\n\n    /** Shows/hides the tooltip */\n    toggle(): void {\n        this._isTooltipVisible() ? this.hide() : this.show();\n    }\n\n    /** Returns true if the tooltip is currently visible to the user */\n    _isTooltipVisible(): boolean {\n        return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n    }\n\n    /** Handles the keydown events on the host element. */\n    _handleKeydown(e: KeyboardEvent): void {\n        if (\n            this._isTooltipVisible() &&\n            e.code === KEYBOARD_CODE.ESCAPE &&\n            !hasModifierKey(e)\n        ) {\n            e.preventDefault();\n            e.stopPropagation();\n            this.hide();\n        }\n    }\n\n    /** Handles the touchend events on the host element. */\n    _handleTouchend(): void {\n        this.hide();\n    }\n\n    private createTooltipComponent() {\n        const tooltipComponentRef =\n            this._viewContainerRef.createComponent(TooltipComponent);\n        this._tooltipInstance = tooltipComponentRef.instance;\n        this._tooltipInstance.toggleReference = this._elementRef;\n        this._tooltipInstance.possiblePositions =\n            this.overlayPositionService.getPossiblePositionsForPlacement(\n                this.position as OverlayPlacement\n            );\n    }\n\n    private updateOverlayPositions() {\n        if (!this._tooltipInstance) {\n            return;\n        }\n\n        const possiblePositions =\n            this.overlayPositionService.getPossiblePositionsForPlacement(\n                this.position as OverlayPlacement\n            );\n        this._tooltipInstance.updatePossiblePositions(possiblePositions);\n    }\n\n    /** Updates the tooltip message and repositions the overlay according to the new message length */\n    private _updateTooltipMessage() {\n        if (this._tooltipInstance) {\n            this._tooltipInstance.message = this.message;\n        }\n    }\n\n    private canShowTooltip() {\n        const canShow = !(\n            this.disabled ||\n            !this.message ||\n            this._isTooltipVisible()\n        );\n\n        if (this.ellipsis) {\n            return canShow && this.isOverflowing();\n        }\n\n        return canShow;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport includes from \"lodash/includes\";\nimport isEqual from \"lodash/isEqual\";\n\nimport { NuiFormFieldControl } from \"../../form-field/public-api\";\nimport { IOptionValueObject, OptionValueType } from \"../../overlay/types\";\nimport { BaseSelectV2 } from \"../base-select-v2\";\nimport { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from \"../constants\";\nimport { MarkAsSelectedItemDirective } from \"../mark-as-selected-item.directive\";\nimport { SelectV2OptionComponent } from \"../option/select-v2-option.component\";\nimport { OptionKeyControlService } from \"../option-key-control.service\";\nimport { SelectedItemsKeyControlService } from \"../selected-items-key-control.service\";\nimport { InputValueTypes } from \"../types\";\n\n// <example-url>./../examples/index.html#/combobox-v2</example-url>\n\n@Component({\n    selector: \"nui-combobox-v2\",\n    templateUrl: \"combobox-v2.component.html\",\n    styleUrls: [\"combobox-v2.component.less\"],\n    providers: [\n        OptionKeyControlService,\n        SelectedItemsKeyControlService,\n        {\n            provide: NUI_SELECT_V2_OPTION_PARENT_COMPONENT,\n            useExisting: ComboboxV2Component,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ComboboxV2Component),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => ComboboxV2Component),\n            multi: true,\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: \"nui-combobox-v2\",\n        role: \"combobox\",\n        \"[attr.aria-expanded]\": \"isDropdownOpen || false\",\n        \"aria-haspopup\": \"listbox\",\n        \"aria-owns\": \"nui-overlay\",\n    },\n    standalone: false,\n})\n\n// Will be renamed in scope of the NUI-5797\nexport class ComboboxV2Component\n    extends BaseSelectV2\n    implements AfterContentInit, OnDestroy, OnChanges, AfterViewInit\n{\n    /** Function that maps an Option's control value to its display value */\n    @Input() public displayWith: ((value: any) => string) | null = null;\n\n    /** Whether the control for removing value enabled */\n    @Input() public isRemoveValueEnabled: boolean = true;\n\n    /** Whether to populate the remainder of the text being typed */\n    @Input() public isTypeaheadEnabled: boolean = true;\n\n    /** Emits event whether options are presented after filtering */\n    @Output() public searchEmpty = new EventEmitter<boolean>(false);\n\n    /** Emits event whether the typed text is unique among presented options */\n    @Output() public canCreateOption = new EventEmitter<boolean>(false);\n\n    /** Grabs and init keyboard navigation service for the \"Selected Items\" */\n    @ContentChildren(MarkAsSelectedItemDirective, { descendants: true })\n    set selectedItems(elems: QueryList<MarkAsSelectedItemDirective>) {\n        this.selectedItemsKeyControlService.initSelectedItemsKeyManager(\n            elems,\n            this\n        );\n    }\n\n    /** Value of the Combobox Input */\n    public inputValue: string | number;\n\n    /** Text of the Clear Button tooltip */\n    public clearValueButtonTooltip: string;\n\n    constructor(\n        elRef: ElementRef,\n        optionKeyControlService: OptionKeyControlService<SelectV2OptionComponent>,\n        cdRef: ChangeDetectorRef,\n        private selectedItemsKeyControlService: SelectedItemsKeyControlService,\n        public liveAnnouncer: LiveAnnouncer\n    ) {\n        super(optionKeyControlService, cdRef, elRef, liveAnnouncer);\n    }\n\n    public ngAfterContentInit(): void {\n        this.clearValueButtonTooltip = this.multiselect\n            ? $localize`Remove all`\n            : $localize`Remove`;\n        // applying changes to content immediately after it was initialized (checked)\n        // causes \"Expression has changed after it was checked\" error\n        setTimeout(() => {\n            super.ngAfterContentInit();\n\n            if (!this.multiselect) {\n                this.setInputValue(this.getLastSelectedOption()?.value);\n            }\n\n            this.cdRef.markForCheck();\n        });\n\n        // options may be received after value changes, that's why\n        // we check \"selectedOptions\" to be set per \"value\" again in \"handleValueChange\"\n        this.optionsChanged().subscribe(() => {\n            this.filterItems(this.inputValue.toString());\n            // We need the active option to always stay visible during the options filtering.\n            this.optionKeyControlService.scrollToActiveItem({\n                block: \"start\",\n                behavior: \"smooth\",\n            });\n            this.cdRef.markForCheck();\n        });\n    }\n\n    public ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n        if (!this.multiselect) {\n            this.dropdown.hide$.subscribe(() => {\n                const lastSelectedOption = this.getLastSelectedOption();\n                if (lastSelectedOption) {\n                    this.setInputValue(lastSelectedOption.value);\n                    this.filterItems(this.inputValue.toString());\n                    this.cdRef.markForCheck();\n                }\n            });\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n    }\n\n    /** Handles behavior on mouseup event */\n    public onMouseUp(target: HTMLElement): void {\n        this.mouseDown = false;\n        if (!this.manualDropdownControl) {\n            if (\n                target !== this.inputElement.nativeElement &&\n                !this.dropdown.showing\n            ) {\n                this.inputElement.nativeElement.focus();\n                return;\n            }\n            this.toggleDropdown();\n        }\n    }\n\n    /** Handles behavior on keydown event */\n    public onKeyDown(event: KeyboardEvent): void {\n        super.onKeyDown(event);\n        this.selectedItemsKeyControlService.onKeydown(event);\n\n        if (this.selectedItemsKeyControlService.isSelectedItemsActive()) {\n            this.optionKeyControlService.resetActiveItem();\n        } else if (this.optionKeyControlService.getActiveItemIndex() === -1) {\n            this.optionKeyControlService.setFirstItemActive();\n        }\n    }\n\n    /** Toggles dropdown and removes focus from Selected Items */\n    public toggleDropdown(): void {\n        super.toggleDropdown();\n        this.selectedItemsKeyControlService.deactivateSelectedItems();\n    }\n\n    /** Selects specific option and set its value to the model */\n    public selectOption(option: SelectV2OptionComponent): void {\n        if (option.outfiltered || option.isDisabled) {\n            return;\n        }\n\n        super.selectOption(option);\n\n        this.setInputValue(option.value);\n        this.filterItems();\n\n        if (this.multiselect) {\n            this.optionKeyControlService.setFirstItemActive();\n        }\n\n        this.cdRef.markForCheck();\n    }\n\n    /**\n     * @param  {OptionValueType} item   Deselect using value\n     * @param  {number} item            Deselect using index in multiselect values array\n     * Deselects item from Selected Items by index or value\n     */\n    public deselectItem(item: OptionValueType | number): void {\n        let option: SelectV2OptionComponent | undefined;\n\n        if (typeof item === \"number\" && this.multiselect) {\n            const value = (this.value as Array<IOptionValueObject>)[\n                item as number\n            ];\n            option = this.options.find((o) => isEqual(o.value, value));\n        } else {\n            option = this.options.find((o) => isEqual(o.value, item));\n        }\n\n        if (option) {\n            this.removeSelected(option);\n            this.filterItems();\n            this.optionKeyControlService.setFirstItemActive();\n        }\n    }\n\n    /** Handles behavior on Input value change */\n    public handleInput(inputValue: InputValueTypes): void {\n        if (!inputValue && !this.multiselect) {\n            this.clearValue();\n            return;\n        }\n\n        this.filterItems(inputValue.toString());\n\n        if (!this.manualDropdownControl) {\n            this.showDropdown();\n        }\n\n        this.valueChanged.emit(inputValue);\n    }\n\n    /** Selects text in Input */\n    public selectTextInInput(): void {\n        if (!this.isDropdownOpen) {\n            return;\n        }\n        setTimeout(() => this.inputElement.nativeElement.select());\n    }\n\n    /** Sets value to the model */\n    public writeValue(value: OptionValueType | OptionValueType[]): void {\n        super.writeValue(value);\n        this.setInputValue(value);\n        this.cdRef.markForCheck();\n    }\n\n    /** Clears up Combobox to the initial value */\n    public clearValue(event?: Event, keepDropdown?: boolean): void {\n        if (!this.isDisabled) {\n            this.selectedOptions = [];\n            this.onTouched();\n            this.setInputValue(\"\");\n            this.removeSelected();\n            event?.stopPropagation(); // To avoid triggering dropdown open/close\n            this.filterItems();\n            this.optionKeyControlService.setFirstItemActive();\n\n            if (!keepDropdown && !this.manualDropdownControl) {\n                this.dropdown.hide();\n            }\n        }\n    }\n\n    /*\n     * Calls to ngOnDestroy do not automatically get propagated to base classes.\n     * This can lead to memory leaks.\n     * This is a safe guard for preventing memory leaks in derived classes.\n     */\n    public ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    protected handleValueChange(\n        value: OptionValueType | OptionValueType[] | null\n    ): void {\n        if (this.multiselect) {\n            this.selectedOptions.forEach(\n                (selectedOption) => (selectedOption.outfiltered = false)\n            );\n        }\n        super.handleValueChange(value);\n    }\n\n    private setInputValue(value: any): void {\n        const inputValueToSet = this.multiselect ? \"\" : value;\n        const toDisplay = this.displayWith\n            ? this.displayWith(inputValueToSet)\n            : inputValueToSet;\n        // Simply falling back to an empty string if the display value is falsy does not work properly.\n        // The display value can also be the number zero and shouldn't fall back to an empty string.\n        this.inputValue = toDisplay || \"\";\n        this.valueChanged.emit(this.inputValue);\n    }\n\n    private filterItems(searchValue?: InputValueTypes) {\n        if (this.isTypeaheadEnabled) {\n            let filterValue = searchValue?.toString().toLowerCase() || \"\";\n\n            if (!this.multiselect) {\n                // if inputValue is the same as selectedOption, search for \"\" to display all the options\n                filterValue =\n                    this.getLastSelectedOption()?.viewValue.toLowerCase() ===\n                    filterValue\n                        ? \"\"\n                        : filterValue;\n            }\n\n            this.options.forEach((option) => {\n                const optionName = option.viewValue.toLowerCase();\n                option.outfiltered = !includes(optionName, filterValue);\n            });\n\n            if (this.multiselect) {\n                this.selectedOptions.forEach(\n                    (selectedOption) => (selectedOption.outfiltered = true)\n                );\n            }\n\n            this.emitSearchResults();\n        }\n    }\n\n    private emitSearchResults(): void {\n        const allOutfiltered = !this.options.some(\n            (option) => !option.outfiltered\n        );\n        this.searchEmpty.emit(allOutfiltered);\n        this.canCreateOption.emit(this.isInputValueUnique());\n    }\n\n    private isInputValueUnique(): boolean {\n        const optionName = (option: SelectV2OptionComponent) =>\n            option?.viewValue.toLowerCase();\n        const inputValue = this.inputValue.toString().toLowerCase();\n\n        return Boolean(\n            this.inputValue &&\n                !this.options.find(\n                    (option) => optionName(option) === inputValue\n                )\n        );\n    }\n}\n","<div\n    class=\"w-100 d-flex flex-wrap align-items-center pt-2\"\n    [attr.role]=\"multiselect && selectedOptions.length ? 'list' : null\"\n>\n    <ng-content select=\"[selectedItems]\"></ng-content>\n\n    <input\n        class=\"nui-combobox-v2__input pb-2\"\n        type=\"text\"\n        [id]=\"triggerId\"\n        [attr.aria-label]=\"ariaLabel || 'input'\"\n        [class.has-error]=\"isInErrorState\"\n        [disabled]=\"isDisabled\"\n        [(ngModel)]=\"inputValue\"\n        [placeholder]=\"placeholder\"\n        (input)=\"handleInput(input.value)\"\n        (keydown)=\"onKeyDown($event)\"\n        (click)=\"selectTextInInput()\"\n        #input\n    />\n</div>\n<button\n    tabindex=\"0\"\n    *ngIf=\"isRemoveValueEnabled && (selectedOptions[0] || inputValue)\"\n    nui-button\n    class=\"nui-combobox-v2__remove-value action\"\n    (click)=\"clearValue($event)\"\n    [isEmpty]=\"true\"\n    icon=\"remove\"\n    type=\"button\"\n    [ariaLabel]=\"'Remove selected value'\"\n    [nuiTooltip]=\"clearValueButtonTooltip\"\n    [class.disabled]=\"isDisabled\"\n    [disabled]=\"isDisabled\"\n></button>\n<button\n    tabindex=\"-1\"\n    class=\"nui-combobox-v2__toggle action\"\n    nui-button\n    type=\"button\"\n    [isEmpty]=\"true\"\n    icon=\"caret-down\"\n    [ariaLabel]=\"'Toggle dropdown menu'\"\n    [class.rotate]=\"isDropdownOpen\"\n    [class.disabled]=\"isDisabled\"\n    [disabled]=\"isDisabled\"\n    (click)=\"selectTextInInput()\"\n></button>\n<nui-overlay\n    roleAttr=\"listbox\"\n    [ariaLabelledBy]=\"triggerId\"\n    [toggleReference]=\"elRef.nativeElement\"\n    [viewportMargin]=\"popupViewportMargin\"\n    [overlayConfig]=\"overlayConfig\"\n>\n    <ng-content></ng-content>\n</nui-overlay>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Directive,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n} from \"@angular/core\";\nimport escape from \"lodash/escape\";\nimport isUndefined from \"lodash/isUndefined\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { HighlightPipe } from \"../../../pipes/highlight.pipe\";\nimport { ComboboxV2Component } from \"../combobox-v2/combobox-v2.component\";\nimport { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from \"../constants\";\nimport { InputValueTypes } from \"../types\";\n\n/**\n * @ignore\n *  Will be renamed in scope of the NUI-5797\n */\n@Directive({\n    selector: \"[nuiComboboxV2OptionHighlight]\",\n    providers: [HighlightPipe],\n    standalone: false,\n})\nexport class ComboboxV2OptionHighlightDirective\n    implements OnChanges, OnInit, OnDestroy\n{\n    /** Part of the text to be highlighted */\n    @Input(\"nuiComboboxV2OptionHighlight\") public value: string;\n\n    private readonly destroy$ = new Subject<void>();\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        @Inject(NUI_SELECT_V2_OPTION_PARENT_COMPONENT)\n        private combobox: ComboboxV2Component,\n        private highlightPipe: HighlightPipe\n    ) {}\n\n    public ngOnInit(): void {\n        this.updateHTML(this.combobox.inputValue);\n\n        this.combobox.valueChanged\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(this.updateHTML.bind(this));\n\n        this.combobox.valueSelected\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(() => this.updateHTML());\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.value) {\n            this.updateHTML(this.combobox.inputValue);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    private updateHTML(highlighted?: InputValueTypes): void {\n        const isHighlightNecessary =\n            highlighted &&\n            this.combobox.getLastSelectedOption()?.viewValue !== highlighted;\n\n        this.el.nativeElement.innerHTML = (\n            isHighlightNecessary && !isUndefined(highlighted)\n                ? this.highlightPipe.transform(\n                      this.value,\n                      highlighted.toString()\n                  )\n                : escape(this.value)\n        ) as string;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChildren,\n    forwardRef,\n    HostBinding,\n    Inject,\n    OnDestroy,\n    Optional,\n    QueryList,\n} from \"@angular/core\";\nimport every from \"lodash/every\";\nimport { merge, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from \"../constants\";\nimport { SelectV2OptionComponent } from \"../option/select-v2-option.component\";\nimport { IOptionedComponent } from \"../types\";\n\n/**\n * @ignore\n * Will be renamed in scope of the NUI-5797\n */\n@Component({\n    selector: \"nui-select-v2-option-group\",\n    template: \"<ng-content></ng-content>\",\n    styleUrls: [\"./select-v2-option-group.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { role: \"group\" },\n    standalone: false,\n})\nexport class SelectV2OptionGroupComponent\n    implements AfterContentInit, OnDestroy\n{\n    /** Whether the Option Group outfiltered */\n    @HostBinding(\"class.hidden\")\n    public outfiltered: boolean = false;\n\n    @ContentChildren(forwardRef(() => SelectV2OptionComponent))\n    private options: QueryList<SelectV2OptionComponent>;\n    private select: IOptionedComponent;\n    private onDestroy$ = new Subject<void>();\n\n    constructor(\n        @Optional()\n        @Inject(NUI_SELECT_V2_OPTION_PARENT_COMPONENT)\n        parent: IOptionedComponent\n    ) {\n        this.select = parent;\n    }\n\n    public ngAfterContentInit(): void {\n        if (this.select.isTypeaheadEnabled) {\n            merge([this.select.valueChanged, this.select.valueSelected])\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(() => {\n                    this.outfiltered = every(\n                        this.options.toArray(),\n                        (option: SelectV2OptionComponent) => option.outfiltered\n                    );\n                });\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface BreadcrumbItem {\n    title: string;\n    routerState: string;\n    url?: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface IBusyConfig {\n    busy: boolean;\n    showProgress?: boolean;\n    message?: string;\n    percent?: number;\n    helpText?: string;\n    cancelText?: string;\n    allowCancel?: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { EventEmitter, ViewContainerRef } from \"@angular/core\";\n\nexport interface ICheckboxComponent {\n    name: string;\n    title: string;\n    value: any;\n    valueChange: EventEmitter<CheckboxChangeEvent>;\n    hovered: boolean;\n    checked: boolean;\n    required: boolean;\n    hint: string;\n    disabled: boolean;\n    indeterminate: boolean;\n    inputViewContainer: ViewContainerRef;\n    hoverHandler(): void;\n    changeHandler(event: CheckboxChangeEvent): void;\n}\n/** @ignore */\nexport class CheckboxChangeEvent {\n    public target: ICheckboxComponent;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface IChipsItemsSource {\n    flatItems?: IChipsItem[];\n    groupedItems?: IChipsGroup[];\n}\n\nexport interface IChipsItem {\n    id?: string;\n    label: string;\n    customClass?: string | string[] | Set<string> | { [klass: string]: any };\n}\n\nexport interface IChipsGroup {\n    id?: string;\n    label: string;\n    items: IChipsItem[];\n    customClass?: string | string[] | Set<string> | { [klass: string]: any };\n}\n\nexport interface IChipRemoved {\n    item: IChipsItem;\n    group?: IChipsGroup;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Moment } from \"moment/moment\";\n/** @ignore */\nexport const datePickerDefaults: IDatePickerConfig = {\n    locale: \"en\",\n    datepickerMode: \"day\",\n    startingDay: 0,\n    yearRange: 20,\n    minMode: \"day\",\n    maxMode: \"year\",\n    showWeeks: false,\n    dateFormat: \"DD MMM YYYY\",\n    formatDay: \"D\",\n    formatMonth: \"MMM\",\n    formatYear: \"YYYY\",\n    formatDayHeader: \"dd\",\n    formatDayTitle: \"MMMM YYYY\",\n    formatMonthTitle: \"YYYY\",\n    onlyCurrentMonth: false,\n    inline: false,\n    isDisabled: false,\n    isInErrorState: false,\n};\n/** @ignore */\nexport interface IDatePickerConfig {\n    locale: string;\n    datepickerMode: string;\n    startingDay: number;\n    yearRange: number;\n    minMode: string;\n    maxMode: string;\n    showWeeks: boolean;\n    dateFormat: string;\n    formatDay: string;\n    formatMonth: string;\n    formatYear: string;\n    formatDayHeader: string;\n    formatDayTitle: string;\n    formatMonthTitle: string;\n    onlyCurrentMonth: boolean;\n    inline: boolean;\n    isDisabled: boolean;\n    isInErrorState: boolean;\n    dateDisabled?: IDatePickerDisabledDate[];\n}\n/** @ignore */\nexport interface IDatePickerDisabledDate {\n    date: Moment;\n    mode: string;\n}\n/** @ignore */\nexport const datePickerDateFormats = [\n    \"D MMM YY\",\n    \"D MMM YYYY\",\n    \"DD MMM YY\",\n    \"DD MMM YYYY\",\n    \"Do MMM YY\",\n    \"Do MMM YYYY\",\n\n    \"MMM D, YY\",\n    \"MMM D, YYYY\",\n    \"MMM DD, YY\",\n    \"MMM DD, YYYY\",\n    \"MMM Do, YY\",\n    \"MMM Do, YYYY\",\n\n    \"M/D/YY\",\n    \"M/D/YYYY\",\n    \"MM/DD/YY\",\n    \"MM/DD/YYYY\",\n\n    \"M-D-YY\",\n    \"M-D-YYYY\",\n    \"MM-DD-YY\",\n    \"MM-DD-YYYY\",\n\n    \"M D YY\",\n    \"M D YYYY\",\n    \"MM DD YY\",\n    \"MM DD YYYY\",\n\n    \"M.D.YY\",\n    \"M.D.YYYY\",\n    \"MM.DD.YY\",\n    \"MM.DD.YYYY\",\n];\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkDrag, CdkDragStart, CdkDropList } from \"@angular/cdk/drag-drop\";\nimport {\n    AfterContentInit,\n    ContentChildren,\n    Directive,\n    ElementRef,\n    Input,\n    OnDestroy,\n    QueryList,\n    Renderer2,\n} from \"@angular/core\";\nimport { combineLatest, fromEvent, merge, Observable, of, Subject } from \"rxjs\";\nimport {\n    distinctUntilChanged,\n    map,\n    mapTo,\n    shareReplay,\n    startWith,\n    switchMap,\n    takeUntil,\n    tap,\n} from \"rxjs/operators\";\n\n@Directive({\n    selector: \"[cdkDropList][nuiDndDropTarget]\",\n    exportAs: \"nuiDndDropTarget\",\n    host: {\n        // Setting proper highlight state class on host container,\n        // to let the user customize drop zone only via css\n        \"[class.nui-dnd-dropzone]\": \"true\",\n        \"[class.nui-dnd-dropzone--active]\": \"isDropZoneActive\",\n        \"[class.nui-dnd-dropzone--drop-allowed]\": \"isDropZoneActive && canLastDragItemBeDropped\",\n        \"[class.nui-dnd-dropzone--drop-not-allowed]\": \"isDropZoneActive && canLastDragItemBeDropped === false\",\n    },\n    standalone: false,\n})\nexport class DndDropTargetDirective implements AfterContentInit, OnDestroy {\n    @ContentChildren(CdkDrag, { descendants: true })\n    draggables: QueryList<CdkDrag>;\n\n    @Input() canBeDropped: (item: any, dropListRef?: CdkDropList) => boolean;\n\n    public showDropZone$: Observable<boolean>;\n    public canLastDragItemBeDropped$: Observable<boolean>;\n\n    private itemDragStarted$ = new Subject<CdkDrag>();\n    private readonly _destroy$ = new Subject<void>();\n\n    // true when the drag has started\n    public get isDropZoneActive(): boolean {\n        // Using cdk default isReceiving and isDragging (When the item is assigned without drop to dropList,\n        // isReceiving returns false, and we replace it with isDragging to maintain the expected behavior.)\n        return (\n            this.targetDropList._dropListRef.isReceiving() ||\n            this.targetDropList._dropListRef.isDragging()\n        );\n    }\n\n    private _canLastDragItemBeDropped: boolean;\n\n    // and also available for consumer to be able to use it without async\n    public get canLastDragItemBeDropped(): boolean {\n        return this._canLastDragItemBeDropped;\n    }\n\n    // canDrop primitive value is used for the host element class binding\n    constructor(\n        private targetDropList: CdkDropList,\n        private renderer: Renderer2,\n        hostElement: ElementRef\n    ) {\n        const mouseEnter$: Observable<unknown> = fromEvent(\n            hostElement.nativeElement,\n            \"mouseenter\"\n        );\n        // Cdk bug fix: When an item is dragged outside of the container but not into another container,\n        // the placeholder is not removed. So, to fix this, we're removing the placeholder if the user's mouse\n        // cursor leaves the container.\n        const mouseLeave$: Observable<unknown> = fromEvent(\n            hostElement.nativeElement,\n            \"mouseleave\"\n        );\n\n        // Events streams for switching the drop zone state.\n        const showDropZoneTrigger$: Observable<unknown> = merge(\n            mouseEnter$,\n            this.itemDragStarted$,\n            this.targetDropList.entered\n        );\n        const hideDropZoneTrigger$: Observable<unknown> = merge(\n            mouseLeave$,\n            this.targetDropList.dropped,\n            this.targetDropList.exited\n        );\n\n        // Main placeholder stream that decides to show/hide drop zone\n        this.showDropZone$ = merge(\n            showDropZoneTrigger$.pipe(mapTo(true)),\n            hideDropZoneTrigger$.pipe(mapTo(false))\n        ).pipe(distinctUntilChanged(), shareReplay());\n\n        // Merging observables to obtain reliable draggedItem reference\n        const draggedItem$: Observable<CdkDrag> = merge(\n            this.targetDropList.entered.pipe(map((event) => event.item)),\n            this.itemDragStarted$\n        ).pipe(shareReplay());\n\n        // Drop zone state stream used to return the result of the predicate provided by user.\n        // Here we're taking the current moving item in case the drop zone is active to be able to execute the callback.\n        this.canLastDragItemBeDropped$ = combineLatest([\n            this.showDropZone$,\n            draggedItem$,\n        ]).pipe(\n            switchMap(([showDropZone, drag]) => {\n                const canBeDropped = showDropZone\n                    ? this.canBeDropped?.(drag.data, this.targetDropList) ??\n                      true\n                    : false;\n                this._canLastDragItemBeDropped = canBeDropped;\n                return of(canBeDropped);\n            }),\n            distinctUntilChanged(),\n            shareReplay()\n        );\n\n        // If consumer will not subscribe in the template to canDrop$ we should set proper classes anyway.\n        // That's why we're subscribing also here, the number of observables will remain the same because of shareReplay\n        this.canLastDragItemBeDropped$\n            .pipe(takeUntil(this._destroy$))\n            .subscribe();\n    }\n\n    public ngAfterContentInit(): void {\n        // Using this to provide current draggable item reference that is needed for predicate validation\n        // cdkDropList is not throwing any event on dragStart, then we should subscribe to dragStartEventEmitter from item\n        this.draggables.changes\n            .pipe(\n                startWith(this.draggables.toArray()),\n                switchMap((items: CdkDrag[]) =>\n                    merge(...items.map((drag: CdkDrag) => drag.started))\n                ),\n                tap((item: CdkDragStart) =>\n                    this.itemDragStarted$.next(item.source)\n                ),\n                takeUntil(this._destroy$)\n            )\n            .subscribe();\n    }\n\n    public ngOnDestroy(): void {\n        this._destroy$.next();\n        this._destroy$.complete();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { DndDropTargetDirective } from \"./dnd-drop-target.directive\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [DndDropTargetDirective],\n    imports: [NuiCommonModule],\n    exports: [DndDropTargetDirective],\n})\nexport class NuiDndModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./dnd.module\";\nexport * from \"./dnd-drop-target.directive\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injector } from \"@angular/core\";\n\nexport type SeverityLevels = \"critical\" | \"warning\" | \"info\";\nexport type ConfirmationDialogButtons = \"confirm\" | \"dismiss\";\n\nexport enum NuiDialogEvent {\n    EscapeKey = \"ESC\",\n    BackdropClick = \"BACKDROP_CLICK\",\n}\n\nexport interface IDialogOptions {\n    /**\n     * Whether a backdrop element should be created for a given modal (true by default).\n     * Alternatively, specify 'static' for a backdrop, which doesn't close the modal on click.\n     */\n    backdrop?: boolean | \"static\";\n\n    /**\n     * Function called when a modal will be dismissed.\n     * If this function returns false, the modal is not dismissed.\n     */\n    beforeDismiss?: (reason?: string) => boolean;\n\n    /**\n     * An element to which to attach newly opened modal windows.\n     */\n    container?: string;\n\n    /**\n     * Injector to use for modal content.\n     */\n    injector?: Injector;\n\n    /**\n     * Whether to close the modal when escape key is pressed (true by default).\n     */\n    keyboard?: boolean;\n\n    /**\n     * Size of a new modal window. The \"md\" size is used by default, so there is no need to specify it explicitly\n     */\n    size?: \"sm\" | \"lg\";\n\n    /**\n     * Custom class to append to the modal window.\n     */\n    windowClass?: string;\n\n    /**\n     * Temporary solution to display the dialog inside the cdk overlay container\n     */\n    useOverlay?: boolean;\n}\n\nexport interface IConfirmationDialogOptions extends IDialogOptions {\n    /**\n     * Title of the confirmation dialog\n     */\n    title?: string;\n\n    /**\n     * Confirmation message\n     */\n    message: string;\n\n    /**\n     * Confirmation button text\n     */\n    confirmText?: string;\n\n    /**\n     * Dismiss button text\n     */\n    dismissText?: string;\n    /**\n     * Pass severity into confirmation dialog's header\n     */\n    severity?: SeverityLevels;\n\n    /**\n     * Choose which confirmation dialog button to focus by default.\n     */\n    setFocus?: ConfirmationDialogButtons;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport type DividerSize = \"no-margin\" | \"extra-small\" | \"small\" | \"medium\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport enum SrlcStage {\n    preAlpha = \"Under Development\",\n    alpha = \"Alpha\",\n    beta = \"Beta\",\n    ga = \"Production Ready\", // General availability\n    support = \"Deprecated\",\n    eol = \"Not Supported\", // End-of-life\n}\n\n/** @ignore */\nexport interface ISrlcDetails {\n    stage: SrlcStage;\n    version?: string;\n    eolDate?: Date;\n    hideIndicator?: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./srlc-indicator/public-api\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface IImagesPresetItem {\n    svgFile: string;\n    name: string;\n    brushType: string;\n    code: string;\n}\n\nexport type ImageFloat = \"left\" | \"right\";\nexport type ImageMargin = \"centered\" | \"small\" | \"large\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport type ILayoutElementDirection = \"row\" | \"column\";\n/** @ignore */\nexport type ISheetType = \"separate\" | \"joined\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface IPaginatorItem {\n    title: string;\n    value?: any;\n    page?: number;\n    iconName?: string;\n    pageRows?: number[][];\n    style?: string;\n    action?: (event: any) => boolean;\n    popupWidth?: number;\n    useVirtualScroll?: boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport enum PanelModes {\n    static = \"static\",\n    collapsible = \"collapsible\",\n    closable = \"closable\",\n    hoverable = \"hoverable\",\n}\n\nexport enum PanelStates {\n    opened = \"opened\",\n    collapsed = \"collapsed\",\n}\n\nexport enum SizeParameters {\n    width = \"width\",\n    height = \"height\",\n}\n\nexport enum PanelBackgroundColor {\n    colorBgLight = \"color-bg-light\",\n    colorBgSecondary = \"color-bg-secondary\",\n    colorBgTransparent = \"color-bg-transparent\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport type PopoverPlacement = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type PopoverTrigger =\n    | \"click\"\n    | \"mouseenter\"\n    | \"mouseleave\"\n    | \"focus\"\n    | \"blur\"\n    | \"openPopoverSubject\";\nexport enum PopoverOverlayPosition {\n    leftTop = \"left-top\",\n    leftBottom = \"left-bottom\",\n    rightTop = \"right-top\",\n    rightBottom = \"right-bottom\",\n    topLeft = \"top-left\",\n    topRight = \"top-right\",\n    bottomLeft = \"bottom-left\",\n    bottomRight = \"bottom-right\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./types\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface ISelectChangedEvent<T> {\n    oldValue: T;\n    newValue: T;\n}\nexport interface ISelectGroup {\n    header?: string;\n    items: any[];\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Observable } from \"rxjs\";\n\nimport { SelectV2OptionComponent } from \"./option/select-v2-option.component\";\n\nexport interface IOptionedComponent {\n    multiselect?: boolean;\n    valueChanged?: Observable<InputValueTypes>;\n    valueSelected?: Observable<any>;\n    isTypeaheadEnabled?: boolean;\n    selectedOptions: SelectV2OptionComponent[];\n    selectOption(option: SelectV2OptionComponent): void;\n}\n\nexport type InputValueTypes = number | string;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport enum SpinnerSize {\n    Small = \"small\",\n    Large = \"large\",\n}\n\nexport enum ButtonIcon {\n    small = \"close-small\",\n    large = \"close\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    CdkVirtualScrollViewport,\n    VirtualScrollStrategy,\n} from \"@angular/cdk/scrolling\";\nimport { Observable, Subject } from \"rxjs\";\nimport { distinctUntilChanged } from \"rxjs/operators\";\n\nexport class TableVirtualScrollLinearStrategy implements VirtualScrollStrategy {\n    private readonly indexChange = new Subject<number>();\n\n    private viewport?: CdkVirtualScrollViewport;\n\n    /** The size of the items in the virtually scrolling list. */\n    private rowCount?: number;\n\n    public scrolledIndexChange: Observable<number>;\n\n    constructor(private rowHeight: number) {\n        // giving a contact point, so user can do some stuff of \"scrolling\" (changing the range)\n        this.scrolledIndexChange = this.indexChange\n            .asObservable()\n            .pipe(distinctUntilChanged());\n    }\n\n    public attach(viewport: CdkVirtualScrollViewport): void {\n        this.viewport = viewport;\n    }\n\n    public detach(): void {\n        this.indexChange.complete();\n        this.viewport = undefined;\n    }\n\n    public onContentScrolled(): void {\n        if (this.viewport) {\n            this.updateContent(this.viewport);\n        }\n    }\n\n    public onDataLengthChanged(): void {\n        if (this.viewport) {\n            this.updateContent(this.viewport);\n        }\n    }\n\n    public onContentRendered(): void {}\n\n    public onRenderedOffsetChanged(): void {}\n\n    public scrollToIndex(index: number, behavior: ScrollBehavior): void {}\n\n    /**\n     * Sets the size of the items in the virtually scrolling list.\n     * @param length\n     */\n    public setDataLength(length: number): void {\n        this.rowCount = length;\n        this.updateViewportDataLength(length);\n        this.onDataLengthChanged();\n    }\n\n    /**\n     * Sets scroll height.\n     * @param rowHeight\n     */\n    public setRowHeight(rowHeight: number): void {\n        this.rowHeight = rowHeight;\n        if (this.viewport) {\n            this.updateContent(this.viewport);\n        }\n    }\n\n    /**\n     * Updates content and emits updated indexes.\n     * @param viewport\n     */\n    private updateContent(viewport: CdkVirtualScrollViewport) {\n        if (!viewport) {\n            return;\n        }\n\n        const rowCount = this.rowCount || 0;\n        const renderedRange = viewport.getRenderedRange();\n        const newRange = { ...renderedRange };\n        const viewportSize = viewport.getViewportSize();\n        const scrollOffset = viewport.measureScrollOffset() || 0;\n        let firstVisibleIndex = scrollOffset / this.rowHeight || 0;\n\n        // If user scrolls to the bottom of the list and data changes to a smaller list\n        // We have to recalculate the first visible index based on new data length and viewport size.\n        const maxVisibleItems = Math.ceil(viewportSize / this.rowHeight);\n\n        // We have to recalculate the first visible index based on new data length and viewport size.\n        firstVisibleIndex = Math.max(\n            0,\n            Math.min(firstVisibleIndex, rowCount - maxVisibleItems)\n        );\n        // We must update scroll offset to handle start/end buffers\n        // Current range must also be adjusted to cover the new position (bottom of new list).\n        newRange.start = Math.floor(firstVisibleIndex);\n\n        newRange.end = Math.max(\n            0,\n            Math.min(rowCount, newRange.start + maxVisibleItems)\n        );\n\n        viewport.setRenderedRange(newRange);\n        this.indexChange.next(Math.floor(firstVisibleIndex));\n    }\n\n    private updateViewportDataLength(rowCount: number): void {\n        if (!this.viewport) {\n            return;\n        }\n        // Note: Updating _dataLength property of cdk-viewport to maintain default functionalities (getDataLength())\n        // of the cdk-viewport also with the table. Originally this property is updated by\n        // the VirtualFor listener while we're using it unconventionally we should take care of this property ourselves\n        // Ref: https://github.com/angular/components/blob/9.2.x/src/cdk/scrolling/virtual-scroll-viewport.ts#L227\n        this.viewport[\"_dataLength\"] = rowCount;\n    }\n}\n\n/**\n * @deprecated in v11 - Use TableVirtualScrollLinearStrategy instead - Removal: NUI-5796\n */\nexport class TableVirtualScrollStrategy implements VirtualScrollStrategy {\n    private readonly indexChange = new Subject<number>();\n\n    private viewport: CdkVirtualScrollViewport;\n\n    public scrolledIndexChange: Observable<number>;\n\n    /** Buffer for items before needing to render more items. */\n    private bufferSize = 5;\n\n    /** The size of the items in the virtually scrolling list. */\n    private itemsSize = 0;\n\n    private _maxItems: number;\n\n    public set maxItems(maxItems: number) {\n        this._maxItems = isNaN(maxItems) ? 10 : +maxItems;\n    }\n\n    public get maxItems(): number {\n        return this._maxItems;\n    }\n\n    constructor(private rowHeight: number, private headerOffset: number) {\n        // giving a contact point, so user can do some stuff of \"scrolling\" (changing the range)\n        this.scrolledIndexChange = this.indexChange\n            .asObservable()\n            .pipe(distinctUntilChanged());\n    }\n\n    public attach(viewport: CdkVirtualScrollViewport): void {\n        this.viewport = viewport;\n        this.viewport.setTotalContentSize(this.maxItems * this.rowHeight);\n    }\n\n    public detach(): void {\n        this.indexChange.complete();\n        // @ts-ignore: Keeping previous behavior\n        this.viewport = null;\n    }\n\n    public onContentScrolled(): void {\n        this.updateContent(this.viewport);\n    }\n\n    public onDataLengthChanged(): void {\n        if (this.viewport) {\n            this.updateContent(this.viewport);\n        }\n    }\n\n    public onContentRendered(): void {}\n\n    public onRenderedOffsetChanged(): void {}\n\n    public scrollToIndex(index: number, behavior: ScrollBehavior): void {}\n\n    /**\n     * Sets the size of the items in the virtually scrolling list.\n     * @param length\n     */\n    public setDataLength(length: number): void {\n        this.itemsSize = length;\n        this.onDataLengthChanged();\n    }\n\n    /**\n     * Sets scroll height.\n     * @param rowHeight\n     * @param headerOffset\n     */\n    public setScrollHeight(rowHeight: number, headerOffset: number): void {\n        this.rowHeight = rowHeight;\n        this.headerOffset = headerOffset;\n        this.updateContent(this.viewport);\n    }\n\n    /**\n     * Updates content and emits updated indexes.\n     * @param viewport\n     */\n    private updateContent(viewport: CdkVirtualScrollViewport) {\n        if (viewport) {\n            // Measuring the new scroll index.\n            const newIndex = Math.max(\n                0,\n                Math.round(viewport.measureScrollOffset() / this.rowHeight)\n            );\n\n            const start = newIndex;\n            const end = newIndex + this.maxItems;\n\n            viewport.setRenderedRange({ start, end });\n\n            this.indexChange.next(newIndex);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    VirtualScrollStrategy,\n    VIRTUAL_SCROLL_STRATEGY,\n} from \"@angular/cdk/scrolling\";\nimport { Directive, forwardRef, Input, OnChanges } from \"@angular/core\";\n\nimport {\n    TableVirtualScrollLinearStrategy,\n    // eslint-disable-next-line import/no-deprecated\n    TableVirtualScrollStrategy,\n} from \"./table-virtual-scroll-strategy\";\nimport { ComponentChanges } from \"../../../types\";\n\nexport const DEFAULT_TABLE_HEADER_OFFSET = 40;\nexport const TABLE_ROW_HEIGHT = 24;\n\nexport function complexScrollStrategyFactory(\n    scroll: TableVirtualScrollDirective | TableVirtualScrollLinearDirective\n): VirtualScrollStrategy {\n    return scroll.scrollStrategy;\n}\n\n@Directive({\n    selector: \"[tableVirtualScroll]:not([offset])\",\n    providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useFactory: complexScrollStrategyFactory,\n            deps: [forwardRef(() => TableVirtualScrollLinearDirective)],\n        },\n    ],\n    standalone: false,\n})\nexport class TableVirtualScrollLinearDirective implements OnChanges {\n    /** Height of table row. */\n    @Input() rowHeight: number = TABLE_ROW_HEIGHT;\n\n    /** Number of rows loaded into memory */\n    @Input() rowCount: number;\n\n    // Converting parameters to numbers here to avoid inputs become strings in case user sets rowHeight and offset\n    // without square brackets in the template\n    public scrollStrategy = new TableVirtualScrollLinearStrategy(\n        +this.rowHeight\n    );\n\n    public ngOnChanges(\n        changes: ComponentChanges<TableVirtualScrollLinearDirective>\n    ): void {\n        this.scrollStrategy.setRowHeight(+this.rowHeight);\n\n        if (changes.rowCount) {\n            this.updateDataLength(this.rowCount);\n        }\n    }\n\n    /**\n     * Updates the size of the items in the virtually scrolling list.\n     * @param length\n     */\n    public updateDataLength(length: number): void {\n        this.scrollStrategy.setDataLength(length);\n    }\n}\n\n/**\n * @deprecated in v11 - Use tableVirtualScroll with 'rowCount' attribute instead of 'offset' attribute - Removal: NUI-5796\n */\n@Directive({\n    selector: \"[tableVirtualScroll]:not([rowCount])\",\n    providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useFactory: complexScrollStrategyFactory,\n            deps: [forwardRef(() => TableVirtualScrollDirective)],\n        },\n    ],\n    standalone: false,\n})\nexport class TableVirtualScrollDirective implements OnChanges {\n    /** Height of table row. */\n    @Input() rowHeight: number = TABLE_ROW_HEIGHT;\n\n    /**  Space to be saved for the header. Will be assigned to headerOffset value inside custom strategy */\n    @Input() offset: number = DEFAULT_TABLE_HEADER_OFFSET;\n\n    // Converting parameters to numbers here to avoid inputs become strings in case user sets rowHeight and offset\n    // without square brackets in the template\n    // eslint-disable-next-line import/no-deprecated\n    public scrollStrategy = new TableVirtualScrollStrategy(\n        +this.rowHeight,\n        +this.offset\n    );\n\n    public ngOnChanges(): void {\n        this.scrollStrategy.setScrollHeight(+this.rowHeight, +this.offset);\n    }\n\n    /**\n     * Updates the size of the items in the virtually scrolling list.\n     * @param length\n     */\n    public updateDataLength(length: number): void {\n        this.scrollStrategy.setDataLength(length);\n    }\n\n    public setMaxItems(maxItems: number): void {\n        this.scrollStrategy.maxItems = maxItems;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n * Marker class for indicating that an element is intended to have a fixed width\n */\nexport const FIXED_WIDTH_CLASS = \"nui-fixed-width\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport type TableAlignmentOptions = \"right\" | \"left\" | \"center\";\nexport type RowHeightOptions = \"default\" | \"compact\" | \"tiny\";\nexport type ColumnTypes = \"icon\";\nexport type NonResizableColumnTypes = \"icon\";\nexport interface ClickableRowOptions {\n    clickableSelectors: string[];\n    ignoredSelectors: string[];\n}\nexport enum TableSelectionMode {\n    None = \"none\",\n    Single = \"single\",\n    Radio = \"radio\",\n    Multi = \"multi\",\n}\n\nexport interface ITableSelectionConfigEnabled {\n    enabled: true;\n    selectionMode: Exclude<TableSelectionMode, TableSelectionMode.None>;\n}\n\nexport interface ITableSelectionConfigDisabled {\n    enabled: false;\n    selectionMode: TableSelectionMode.None;\n}\n\n// we want to prevent the following combination:\n// enabled: true and selectionMode: \"none\"\nexport type TableSelectionConfig =\n    | ITableSelectionConfigEnabled\n    | ITableSelectionConfigDisabled;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    forwardRef,\n    Inject,\n    Injectable,\n    NgZone,\n    TrackByFunction,\n} from \"@angular/core\";\nimport _includes from \"lodash/includes\";\nimport _isNil from \"lodash/isNil\";\nimport _isNumber from \"lodash/isNumber\";\nimport { Subject } from \"rxjs\";\n\nimport { TableResizePhase } from \"./table-resizer/table-resizer.directive\";\nimport { TableSelectionMode } from \"./types\";\nimport { ISelection, ISelectorState } from \"../../services/public-api\";\nimport { SelectionType } from \"../selector/public-api\";\nimport { SelectorService } from \"../selector/selector.service\";\nimport { ISortedItem, SorterDirection } from \"../sorter/public-api\";\n\nexport const enum AlignmentClasses {\n    RIGHT = \"align-right\",\n    LEFT = \"align-left\",\n    CENTER = \"align-center\",\n}\n\nexport const enum DropAlignment {\n    left = \"left\",\n    right = \"right\",\n}\n\nexport interface ColumnWidthInfo {\n    width: number;\n    autoCalculated?: boolean;\n}\n\nexport interface ITableState {\n    columnAlignments: { [key: string]: string };\n    columnsWidths: {\n        [key: string]: ColumnWidthInfo;\n    };\n    columns: string[];\n    sortedColumn?: ISortedItem;\n    widthCalculationPerformed: boolean;\n    columnsTypes: string[];\n}\n\nexport interface DraggedOverCell {\n    cellIndex: number;\n    dropAlignment: DropAlignment;\n}\n\nexport interface TableCellEdgeHighlight {\n    columnIndex: number;\n    side: DropAlignment;\n    eventPhase: TableResizePhase;\n}\n\nexport interface ColumnType {\n    columnName: string;\n    columnType: string;\n}\n\nexport interface ITableSortingState {\n    sortingIcon?: string;\n    isColumnSorted: boolean;\n}\n\n/** @ignore */\nconst MIN_COLUMN_WIDTH_PX = 46;\n/** @ignore */\nconst ICON_CELL_WIDTH_PX = 40;\n/** @ignore */\nconst SELECTABLE_CELL_WIDTH_PX = 75;\n\n/** @ignore */\nconst DEFAULT_TRACK_BY: TrackByFunction<any> = (i, d) => d;\n\n@Injectable()\nexport class TableStateHandlerService {\n    public tableParentWidth: number;\n    public columnsState = new Subject<string[]>();\n    public sortingState = new Subject<ISortedItem>();\n    public draggedOverCell = new Subject<DraggedOverCell | undefined>();\n    public shouldHighlightEdge = new Subject<TableCellEdgeHighlight>();\n    public dataSourceChanged = new Subject<Array<any>>();\n    public selectionChanged = new Subject<ISelection>();\n    public selectableChanged = new Subject<boolean>();\n    public selectionModeChanged = new Subject<TableSelectionMode>();\n    public columnWidthSubject = new Subject<void>();\n    public stickyHeaderChangedSubject = new Subject<void>();\n\n    private _reorderable: boolean;\n    private _sortable: boolean;\n    private _resizable: boolean;\n    private _dragCellIndex: number;\n    private _draggedOverCellIndex: number;\n    private _newCellIndex: number;\n    private _dropCellOffsetX: number;\n    private _dropCellWidth: number;\n    private _dragOverDirection: string;\n    private _selectable: boolean;\n    private _selectionMode: TableSelectionMode;\n    // Note: Used to tell to the SelectorService to skip pagination logic\n    private _hasVirtualScroll: boolean;\n    private _totalItems: number;\n    private _dataSource: any[];\n    private _selection: ISelection = {\n        isAllPages: false,\n        include: [],\n        exclude: [],\n    };\n    public _trackBy: TrackByFunction<any>;\n\n    protected state: ITableState = {\n        columnAlignments: {},\n        columns: [],\n        columnsWidths: {},\n        widthCalculationPerformed: false,\n        columnsTypes: [],\n    };\n\n    protected sortIcons: { [key: string]: string } = {\n        asc: \"triangle-up\",\n        desc: \"triangle-down\",\n    };\n\n    constructor(\n        protected zone: NgZone,\n        @Inject(forwardRef(() => SelectorService))\n        protected selectorService: SelectorService\n    ) {}\n\n    /**\n     * Used to sync directives and components in table to apply additional styles and logic\n     */\n    set sortable(isSortable: boolean) {\n        this._sortable = isSortable;\n    }\n\n    get sortable(): boolean {\n        return this._sortable;\n    }\n\n    set dragCellIndex(cellIndex: number) {\n        this._dragCellIndex = cellIndex;\n    }\n\n    get dragCellIndex(): number {\n        return this._dragCellIndex;\n    }\n\n    set draggedOverCellIndex(cellIndex: number) {\n        this._draggedOverCellIndex = cellIndex;\n    }\n\n    get draggedOverCellIndex(): number {\n        return this._draggedOverCellIndex;\n    }\n\n    set newCellIndex(cellIndex: number) {\n        this._newCellIndex = cellIndex;\n    }\n\n    get newCellIndex(): number {\n        return this._newCellIndex;\n    }\n\n    set dropCellOffsetX(cellIndex: number) {\n        this._dropCellOffsetX = cellIndex;\n    }\n\n    get dropCellOffsetX(): number {\n        return this._dropCellOffsetX;\n    }\n\n    set dropCellWidth(cellIndex: number) {\n        this._dropCellWidth = cellIndex;\n    }\n\n    get dropCellWidth(): number {\n        return this._dropCellWidth;\n    }\n\n    set dragOverDirection(cellIndex: string) {\n        this._dragOverDirection = cellIndex;\n    }\n\n    get dragOverDirection(): string {\n        return this._dragOverDirection;\n    }\n\n    set reorderable(isDraggable: boolean) {\n        this._reorderable = isDraggable;\n    }\n\n    get reorderable(): boolean {\n        return this._reorderable;\n    }\n\n    set resizable(isResizable: boolean) {\n        this._resizable = isResizable;\n    }\n\n    get resizable(): boolean {\n        return this._resizable;\n    }\n\n    set tableColumns(columns: string[]) {\n        this.state.columns = columns;\n    }\n\n    get tableColumns(): string[] {\n        return this.state.columns;\n    }\n\n    set columnType(column: ColumnType) {\n        const columnIndex = this.state.columns.indexOf(column.columnName);\n        this.state.columnsTypes[columnIndex] = column.columnType;\n    }\n\n    get columnsTypes(): string[] {\n        return this.state.columnsTypes;\n    }\n\n    set sortedColumn(columnToSort: ISortedItem) {\n        this.state.sortedColumn = columnToSort;\n    }\n\n    set selectable(isSelectable: boolean) {\n        if (isSelectable !== this._selectable) {\n            this.selectableChanged.next(isSelectable);\n        }\n        this._selectable = isSelectable;\n    }\n\n    get selectable(): boolean {\n        return this._selectable;\n    }\n\n    set selectionMode(mode: TableSelectionMode) {\n        if (mode !== this._selectionMode) {\n            this.selectionModeChanged.next(mode);\n        }\n        this._selectionMode = mode;\n    }\n\n    get selectionMode(): TableSelectionMode {\n        return this._selectionMode;\n    }\n\n    get hasVirtualScroll(): boolean {\n        return this._hasVirtualScroll;\n    }\n\n    set hasVirtualScroll(value: boolean) {\n        this._hasVirtualScroll = value;\n    }\n\n    set totalItems(paginationTotal: number) {\n        this._totalItems = paginationTotal;\n    }\n\n    get totalItems(): number {\n        return this._totalItems;\n    }\n\n    set dataSource(dataSource: any[]) {\n        this._dataSource = dataSource;\n    }\n\n    get dataSource(): any[] {\n        return this._dataSource;\n    }\n\n    set selection(selection: ISelection) {\n        this._selection = selection;\n    }\n\n    get selection(): ISelection {\n        return this._selection;\n    }\n\n    get trackBy(): TrackByFunction<any> {\n        return this._trackBy || DEFAULT_TRACK_BY;\n    }\n\n    set trackBy(value: TrackByFunction<any>) {\n        this._trackBy = value;\n    }\n\n    get selectionEnabled(): boolean {\n        return (\n            this.selectable ||\n            (this.selectionMode &&\n                this.selectionMode !== TableSelectionMode.None)\n        );\n    }\n\n    /**\n     * Gets the width of the specified column\n     *\n     * @param column The id for the column being queried\n     *\n     * @returns The state's column width\n     */\n    public getColumnWidth(column: string): number {\n        if (!this.state.widthCalculationPerformed) {\n            this.calculateWidthsOfColumns();\n        }\n        return this.state.columnsWidths[column].width;\n    }\n\n    /**\n     * Updates the width of the specified column,\n     * then broadcasts that a width change has occurred to all listeners of columnWidthSubject\n     *\n     * @param column The id for the column\n     * @param width The new width of the column\n     *\n     */\n    public setColumnWidth(column: string, width: number): void {\n        this.state.columnsWidths[column] = { width };\n        this.columnWidthSubject.next();\n    }\n\n    /**\n     * Returns the current alignment direction for the queried column\n     *\n     * @param column The id of the column\n     *\n     * @returns The current alignment direction\n     */\n    public getAlignment(column: string): string {\n        return this.state.columnAlignments[column];\n    }\n\n    /**\n     * Updates the specified column's alignment with the given alignment direction\n     *\n     * @param column the id for the column that is being updated\n     * @param alignment the new alignment direction\n     *\n     */\n    public setAlignment(\n        column: string,\n        alignment: string = AlignmentClasses.LEFT\n    ): void {\n        this.state.columnAlignments[column] =\n            alignment || this.state.columnAlignments[column];\n    }\n\n    /**\n     * Determines the alignment for a column based on the type of the provided value.\n     * Returns AlignmentClasses.RIGHT if the value given is a number; otherwise, returns 'undefined'.\n     *\n     * @param value The data for a given column\n     *\n     * @returns The alignment direction for that column\n     */\n    public defineAlignment(value: any): string | undefined {\n        if (_isNumber(value)) {\n            return AlignmentClasses.RIGHT;\n        }\n    }\n\n    /**\n     * Updates the state's columnWidths for each column and sets the state's widthCalculationPerformed property\n     * to true once the calculation is complete\n     */\n    public calculateWidthsOfColumns(): void {\n        // Apply width of 40px for non-resizable columns of type \"icon\"\n        this.state.columns\n            .filter((columnName) => {\n                const columnIndex = this.state.columns.indexOf(columnName);\n                return this.state.columnsTypes[columnIndex] === \"icon\";\n            })\n            .forEach((column) => {\n                this.state.columnsWidths[column] = {\n                    width: ICON_CELL_WIDTH_PX,\n                };\n            });\n\n        // \"selectable\" adding one more column with 75px width which is not in the \"this.state.columns\", so we need take it to the consideration\n        const accumulator =\n            this.resizable && this.selectable ? SELECTABLE_CELL_WIDTH_PX : 0;\n        const userColumnsWidths = this.state.columns\n            .filter((columnName) => this.state.columnsWidths[columnName])\n            .reduce(\n                (total, curr) => total + this.state.columnsWidths[curr].width,\n                accumulator\n            );\n        const widthConsideringUserInputs =\n            userColumnsWidths > this.tableParentWidth\n                ? 0\n                : this.tableParentWidth - userColumnsWidths - 1;\n        const columnsToCalculateWidth = this.state.columns.filter(\n            (columnName) => !this.state.columnsWidths[columnName]\n        ).length;\n        const calculatedWidth = Math.floor(\n            widthConsideringUserInputs / columnsToCalculateWidth\n        );\n        const widthOfColumn =\n            calculatedWidth > MIN_COLUMN_WIDTH_PX\n                ? calculatedWidth\n                : MIN_COLUMN_WIDTH_PX;\n\n        this.state.columns\n            .filter((columnName) => !this.state.columnsWidths[columnName])\n            .forEach((column) => {\n                // There is a case when sum of columns can exceed width of parent\n                // Then width of other columns should be set to min width\n                this.state.columnsWidths[column] = { width: widthOfColumn };\n            });\n\n        this.state.widthCalculationPerformed = true;\n    }\n\n    /**\n     * Updates the state's sortedColumn and sortedColumn.direction properties and then broadcasts the\n     *  state object to all listeners of sortingState\n     *\n     * @param sortCellIndex the index of the column to sort by\n     */\n    public sortColumn(sortCellIndex: number): void {\n        const newSortedColumn = this.state.columns[sortCellIndex];\n        const prevSortedColumn =\n            this.state.sortedColumn && this.state.sortedColumn.sortBy;\n        const prevSortDirection =\n            this.state.sortedColumn && this.state.sortedColumn.direction;\n\n        let newSortDirection = SorterDirection.original;\n\n        if (newSortedColumn === prevSortedColumn) {\n            newSortDirection =\n                prevSortDirection === SorterDirection.ascending\n                    ? SorterDirection.descending\n                    : SorterDirection.ascending;\n        } else {\n            newSortDirection = SorterDirection.ascending;\n        }\n\n        this.state.sortedColumn = {\n            sortBy: newSortedColumn,\n            direction: newSortDirection,\n        };\n\n        this.sortingState.next(this.state.sortedColumn);\n    }\n\n    /**\n     * Updates the state's column order and broadcasts the state's columns to all listeners of columnsState\n     *\n     * @param dragCellIndex\n     * @param newCellIndex\n     */\n    public reorderColumns(dragCellIndex: number, newCellIndex: number): void {\n        const dragCellValue = this.state.columns[dragCellIndex];\n        this.state.columns.splice(dragCellIndex, 1);\n        this.state.columns.splice(newCellIndex, 0, dragCellValue);\n        this.columnsState.next(this.state.columns);\n    }\n\n    /**\n     * Checks to see if there has been any change in the column's order\n     * If there was it calls reorderColumns to update the state's column order\n     */\n    public reorderColumnsOnDrop(): void {\n        this.getNewCellIndex();\n\n        if (\n            !_isNil(this.newCellIndex) &&\n            this.newCellIndex !== this.dragCellIndex &&\n            this.dragCellIndex !== this.draggedOverCellIndex\n        ) {\n            this.reorderColumns(this.dragCellIndex, this.newCellIndex);\n        }\n    }\n\n    /**\n     * Updates the newCellIndex property if the current value is different from draggedOverCellIndex\n     */\n    public getNewCellIndex(): void {\n        if (this.dragCellIndex !== this.draggedOverCellIndex) {\n            this.newCellIndex =\n                this.dragCellIndex < this.draggedOverCellIndex\n                    ? this.dropCellOffsetX < this.dropCellWidth / 2\n                        ? this.draggedOverCellIndex - 1\n                        : this.draggedOverCellIndex\n                    : this.dropCellOffsetX < this.dropCellWidth / 2\n                    ? this.draggedOverCellIndex\n                    : this.draggedOverCellIndex + 1;\n        }\n    }\n\n    /**\n     * Finds the index for the column that the event happened to\n     *\n     * @param event\n     *\n     * @returns The column index\n     */\n    public getTargetElementCellIndex(event: DragEvent): number {\n        // When we have selectable table we need to decrease index of event.target.id by one because we added new column to html but not adding column to\n        // this.state.columns. Because of that cellIndex in event will be greater than index in this.state.columns by one.\n        const cellIndex = parseInt((event.target as any).cellIndex, 10);\n        return this.selectable ? cellIndex - 1 : cellIndex;\n    }\n\n    /**\n     * Returns the DropAlignment direction for the recently dragged column\n     *\n     * @returns The drop alignment direction\n     */\n    public getDropCellAlignment(): DropAlignment {\n        return this.dragCellIndex < this.draggedOverCellIndex\n            ? this.newCellIndex < this.draggedOverCellIndex\n                ? DropAlignment.left\n                : DropAlignment.right\n            : this.newCellIndex > this.draggedOverCellIndex\n            ? DropAlignment.right\n            : DropAlignment.left;\n    }\n\n    /**\n     * Checks to see if the recent drag event changed the order of the columns\n     * then broadcasts the results to all listeners of draggedOverCell\n     */\n    public emitDraggedOverCell(): void {\n        this.zone.run(() => {\n            if (\n                this.dragCellIndex !== this.draggedOverCellIndex &&\n                this.dragCellIndex !== this.newCellIndex\n            ) {\n                this.draggedOverCell.next(<DraggedOverCell>{\n                    cellIndex: this.draggedOverCellIndex,\n                    dropAlignment: this.getDropCellAlignment(),\n                });\n            } else {\n                this.draggedOverCell.next(undefined);\n            }\n        });\n    }\n\n    /**\n     * Broadcasts the given resize information to all listeners of shouldHighlightEdge\n     *\n     * @param columnIndex\n     * @param eventPhase\n     */\n    public emitResizeEvent(\n        columnIndex: number,\n        eventPhase: TableResizePhase\n    ): void {\n        this.shouldHighlightEdge.next({\n            columnIndex,\n            side: DropAlignment.right,\n            eventPhase,\n        });\n    }\n\n    /**\n     * Updates the draggedOverCellIndex\n     *\n     * @param event\n     */\n    public setDraggedOverCell(event: DragEvent): void {\n        const dropCellOffsetX: number = event.offsetX;\n        const dropCellWidth: number = (event.target as HTMLElement).clientWidth;\n        const dragOverDirection: string =\n            dropCellOffsetX < dropCellWidth / 2 ? \"left-right\" : \"right-left\";\n        const draggedOverCellIndex: number =\n            this.getTargetElementCellIndex(event);\n\n        const draggedOverCellChanged: boolean =\n            _isNil(this.dragOverDirection) ||\n            _isNil(this.draggedOverCellIndex) ||\n            draggedOverCellIndex !== this.draggedOverCellIndex ||\n            dragOverDirection !== this.dragOverDirection;\n\n        if (draggedOverCellChanged) {\n            this.dropCellOffsetX = dropCellOffsetX;\n            this.dropCellWidth = dropCellWidth;\n            this.dragOverDirection = dragOverDirection;\n            this.draggedOverCellIndex = draggedOverCellIndex;\n            this.getNewCellIndex();\n            this.emitDraggedOverCell();\n        }\n    }\n\n    /**\n     * Updates the dataSource property and broadcasts the change to all listeners of dataSourceChanged\n     *\n     * @param dataSource\n     */\n    public changeDataSource(dataSource: any[]): void {\n        this.dataSource = dataSource;\n        this.dataSourceChanged.next(dataSource);\n    }\n\n    /**\n     * Returns an array of the selected items\n     *\n     * @returns An array of all currently selected items\n     */\n    public getSelectedItems(): any[] {\n        const trackedItems = this.dataSource.map((d) => this.trackBy(d?.id, d));\n        return this.selectorService.getSelectedItems(\n            this.selection,\n            trackedItems\n        );\n    }\n\n    /**\n     * Returns the current state of the selector\n     *\n     * @returns\n     */\n    public getSelectorState(): ISelectorState {\n        return this.selectorService.getSelectorState(\n            this.selection,\n            this.dataSource.length,\n            this.getSelectedItems().length,\n            this.totalItems,\n            this.selection.include.length,\n            this.hasVirtualScroll\n        );\n    }\n\n    /**\n     * Updates the selection type and returns a new selection object based on that new selection type\n     *\n     * @param selectorValue\n     *\n     * @returns The newly applied selection\n     */\n    public applySelector(selectorValue: SelectionType): ISelection {\n        return this.selectorService.applySelector(\n            this.selection,\n            this.dataSource,\n            selectorValue,\n            this.totalItems,\n            this.trackBy,\n            this.hasVirtualScroll\n        );\n    }\n\n    /**\n     * Updates the selection object to either include or exclude the row based on the current selection\n     *  type and the row's current selection state\n     * Then the selection object is broadcast to all listeners of selectionChanged\n     *\n     * @param rowObject\n     */\n    public handleRowSelect(rowObject: object): void {\n        switch (this._selectionMode) {\n            case TableSelectionMode.Single:\n            case TableSelectionMode.Radio:\n                this.handleRowSelectSingle(rowObject);\n                break;\n            case TableSelectionMode.Multi:\n                this.handleRowSelectMulti(rowObject);\n                break;\n            default:\n                console.error(\"Unknown table selection mode.\");\n        }\n    }\n\n    private handleRowSelectSingle(rowObject: object): void {\n        const rowObjectTrackBy = this.trackBy(\n            (<{ id: number }>rowObject)?.id,\n            rowObject\n        );\n        this.selection = {\n            isAllPages: false,\n            exclude: [],\n            include: [rowObjectTrackBy],\n        };\n\n        this.selectionChanged.next(this.selection);\n    }\n\n    private handleRowSelectMulti(rowObject: object): void {\n        const excludedRows = this.selection.exclude;\n        const includedRows = this.selection.include;\n\n        const rowObjectTrackBy = this.trackBy(\n            (<{ id: number }>rowObject)?.id,\n            rowObject\n        );\n\n        if (this.selection.isAllPages) {\n            if (!_includes(excludedRows, rowObjectTrackBy)) {\n                excludedRows.push(rowObjectTrackBy);\n            } else {\n                excludedRows.splice(excludedRows.indexOf(rowObjectTrackBy), 1);\n            }\n        } else {\n            if (!_includes(includedRows, rowObjectTrackBy)) {\n                includedRows.push(rowObjectTrackBy);\n            } else {\n                includedRows.splice(includedRows.indexOf(rowObjectTrackBy), 1);\n            }\n        }\n\n        this.selectionChanged.next(this.selection);\n    }\n\n    /**\n     * Returns the current sorting state of the specified cell index\n     *\n     * @param cellIndex\n     *\n     * @returns The current sorting state\n     */\n    public getSortingState(cellIndex: number): ITableSortingState {\n        if (this.state.sortedColumn) {\n            return {\n                sortingIcon: this.sortIcons[this.state.sortedColumn.direction],\n                // comparing column index with index of sorted column\n                isColumnSorted:\n                    cellIndex ===\n                        this.state.columns.indexOf(\n                            this.state.sortedColumn.sortBy\n                        ) && this.sortable,\n            };\n        }\n        return {\n            sortingIcon: undefined,\n            isColumnSorted: false,\n        };\n    }\n\n    /**\n     * Broadcasts to all listeners of stickyHeaderChangedSubject that a change has occurred\n     */\n    public applyStickyStyles(): void {\n        this.stickyHeaderChangedSubject.next();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport {\n    _DisposeViewRepeaterStrategy,\n    _VIEW_REPEATER_STRATEGY,\n    _ViewRepeater,\n} from \"@angular/cdk/collections\";\nimport { Platform } from \"@angular/cdk/platform\";\nimport { CdkVirtualForOf, ViewportRuler } from \"@angular/cdk/scrolling\";\nimport {\n    CDK_TABLE,\n    CdkTable,\n    RenderRow,\n    RowContext,\n    STICKY_POSITIONING_LISTENER,\n    StickyPositioningListener,\n} from \"@angular/cdk/table\";\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    Attribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Inject,\n    Input,\n    IterableDiffers,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    SkipSelf,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isEqual from \"lodash/isEqual\";\nimport _keys from \"lodash/keys\";\nimport { Subscription } from \"rxjs\";\n\nimport { TableStateHandlerService } from \"./table-state-handler.service\";\nimport { TableSelectionConfig, TableSelectionMode } from \"./types\";\nimport { IFilteringParticipants, ISelection } from \"../../services/public-api\";\nimport { ComponentChanges } from \"../../types\";\nimport { ISortedItem, SorterDirection } from \"../sorter/public-api\";\n\n// <example-url>./../examples/index.html#/table</example-url>\n\n/** @dynamic */\n@Component({\n    selector: \"nui-table, table[nui-table]\",\n    // We used to have our own template for the table but it broke with Angular release 10 so we are now using this even though it is intended to be private\n    // so we can be up to date with the CDK table template.\n    // CDK_TABLE_TEMPLATE export was removed in angular CDK 20 so we had to copy the template here - https://github.com/angular/components/pull/30956/files.\n    template: `\n        <ng-content select=\"caption\"/>\n        <ng-content select=\"colgroup, col\"/>\n\n        @if (_isServer) {\n          <ng-content/>\n        }\n\n        @if (_isNativeHtmlTable) {\n          <thead role=\"rowgroup\">\n            <ng-container headerRowOutlet/>\n          </thead>\n          <tbody role=\"rowgroup\">\n            <ng-container rowOutlet/>\n            <ng-container noDataRowOutlet/>\n          </tbody>\n          <tfoot role=\"rowgroup\">\n            <ng-container footerRowOutlet/>\n          </tfoot>\n        } @else {\n          <ng-container headerRowOutlet/>\n          <ng-container rowOutlet/>\n          <ng-container noDataRowOutlet/>\n          <ng-container footerRowOutlet/>\n        }\n  `,\n    exportAs: \"nuiTable\",\n    host: {\n        class: \"nui-table__table\",\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        TableStateHandlerService,\n        {\n            provide: _VIEW_REPEATER_STRATEGY,\n            useClass: _DisposeViewRepeaterStrategy,\n        },\n        { provide: CdkTable, useExisting: TableComponent },\n        { provide: CDK_TABLE, useExisting: TableComponent },\n    ],\n    styleUrls: [\"./table.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class TableComponent<T>\n    extends CdkTable<T>\n    implements OnInit, AfterViewInit, AfterContentInit, OnDestroy, OnChanges\n{\n    @Input() reorderable = false;\n    @Input() sortable = false;\n    @Input() resizable = false;\n    /**\n     * @deprecated Use selectionConfig instead.\n     */\n    @Input() selectable = false;\n    @Input() selectionConfig: TableSelectionConfig = {\n        enabled: false,\n        selectionMode: TableSelectionMode.None,\n    };\n    @Input() totalItems: number;\n\n    @Input()\n    get dataSource(): T[] {\n        return super.dataSource as any;\n    }\n\n    set dataSource(value: T[]) {\n        super.dataSource = value as any;\n    }\n\n    @Input() selection: ISelection;\n    @Input() sortedColumn: ISortedItem;\n    @Input() paginatorUsed: boolean = false;\n\n    @Output() columnsOrderChange: EventEmitter<Array<any>> = new EventEmitter();\n    @Output() sortOrderChanged: EventEmitter<ISortedItem> = new EventEmitter();\n    @Output() selectionChange: EventEmitter<ISelection> = new EventEmitter();\n    @Output() columnsWidthChange: EventEmitter<void> = new EventEmitter();\n\n    public sortDirection: SorterDirection;\n    public sortBy: string;\n    private tableColumnsSubscription: Subscription;\n    private tableSortingSubscription: Subscription;\n    private selectionChangedSubscription: Subscription;\n    private stickyChangedSubscription: Subscription;\n    private tableColumnsWidthSubscription: Subscription;\n    @HostBinding(\"class.nui-table__table-fixed\") layoutFixed = false;\n    @ContentChild(CdkVirtualForOf) public virtualFor?: CdkVirtualForOf<unknown>;\n\n    constructor(\n        protected _differs: IterableDiffers,\n        protected _changeDetectorRef: ChangeDetectorRef,\n        protected _elementRef: ElementRef<any>,\n        @Attribute(\"role\") role: string,\n        protected _dir: Directionality,\n        private tableStateHandlerService: TableStateHandlerService,\n        @Inject(DOCUMENT) private document: Document,\n        private platform: Platform,\n        @Inject(_VIEW_REPEATER_STRATEGY)\n        viewRepeater: _ViewRepeater<T, RenderRow<T>, RowContext<T>>,\n        viewportRuler: ViewportRuler,\n        @Optional()\n        @SkipSelf()\n        @Inject(STICKY_POSITIONING_LISTENER)\n        stickyPositioningListener: StickyPositioningListener\n    ) {\n        // The _ViewRepeater and _CoalescedStyleScheduler parameters were optional before Angular v12.\n        // They're included here for compatibility with Angular v12 and later.\n        super(\n            _differs,\n            _changeDetectorRef,\n            _elementRef,\n            role,\n            _dir,\n            document,\n            platform,\n            viewRepeater,\n            viewportRuler,\n            stickyPositioningListener\n        );\n    }\n\n    public getFilterComponents(): IFilteringParticipants {\n        return !this.sortable\n            ? {}\n            : {\n                  sorter: {\n                      componentInstance: {\n                          // mark this filter to be monitored by our datasource for any changes in order reset other filters(eg: pagination)\n                          // before any new search is performed\n                          detectFilterChanges: true,\n                          getFilters: () => ({\n                              type: \"sorter\",\n                              value: {\n                                  sortBy: this.sortBy,\n                                  direction: this.sortDirection,\n                              },\n                          }),\n                      },\n                  },\n              };\n    }\n\n    // using on changes hook for datasource because if we use pagination,\n    // datasource changes when we change page and rows should know about this\n    public ngOnChanges(changes: ComponentChanges<TableComponent<T>>): void {\n        if (changes.resizable) {\n            this.tableStateHandlerService.resizable =\n                changes.resizable.currentValue;\n            this.layoutFixed = changes.resizable.currentValue;\n        }\n        if (changes.reorderable) {\n            this.tableStateHandlerService.reorderable =\n                changes.reorderable.currentValue;\n        }\n        if (changes.sortable) {\n            this.tableStateHandlerService.sortable =\n                changes.sortable.currentValue;\n        }\n        if (changes.dataSource) {\n            this.onDataSourceChange(changes.dataSource.currentValue);\n        }\n        if (changes.selectable) {\n            this.changeSelectionMode(changes.selectable.currentValue);\n        }\n        if (changes.selectionConfig) {\n            this.tableStateHandlerService.selectionMode =\n                changes.selectionConfig.currentValue?.selectionMode;\n        }\n        if (changes.selection && !changes.selection.isFirstChange()) {\n            this.changeSelection(changes.selection.currentValue);\n        }\n        if (changes.sortedColumn && !changes.sortedColumn.isFirstChange()) {\n            this.handleSortedColumn(changes.sortedColumn.currentValue);\n        }\n        if (changes.trackBy) {\n            this.tableStateHandlerService.trackBy =\n                changes.trackBy.currentValue;\n        }\n    }\n\n    public ngOnInit(): void {\n        super.ngOnInit();\n        const dataSet = this.dataSource as Array<T>;\n        const firstRow: T = dataSet && dataSet[0];\n        const columns: string[] = _keys(firstRow);\n        this.tableStateHandlerService.tableColumns = columns;\n\n        columns.forEach((column) => {\n            const alignment = this.tableStateHandlerService.defineAlignment(\n                firstRow[column as keyof T]\n            );\n            this.tableStateHandlerService.setAlignment(column, alignment);\n        });\n\n        if (this.resizable) {\n            this.tableColumnsWidthSubscription =\n                this.tableStateHandlerService.columnWidthSubject.subscribe(\n                    () => {\n                        this.columnsWidthChange.emit();\n                    }\n                );\n            const parentWidth =\n                this._elementRef.nativeElement.parentElement.getBoundingClientRect().width ?\n                    this._elementRef.nativeElement.parentElement.getBoundingClientRect()\n                        .width : this._elementRef.nativeElement.parentElement.parentElement.getBoundingClientRect()\n                        .width;\n            this.layoutFixed = true;\n            this.tableStateHandlerService.tableParentWidth = parentWidth;\n        }\n\n        if (this.sortable) {\n            this.tableSortingSubscription =\n                this.tableStateHandlerService.sortingState.subscribe(\n                    (sortedColumn: ISortedItem) => {\n                        this.sortDirection = sortedColumn.direction;\n                        this.sortBy = sortedColumn.sortBy;\n\n                        // emit only if the data is really changed\n                        if (!_isEqual(sortedColumn, this.sortedColumn)) {\n                            this.sortOrderChanged.emit(sortedColumn);\n                        }\n                    }\n                );\n\n            if (this.sortedColumn) {\n                this.handleSortedColumn(this.sortedColumn);\n            }\n        }\n\n        if (this.reorderable) {\n            this.tableColumnsSubscription =\n                this.tableStateHandlerService.columnsState.subscribe(\n                    (tableColumns: string[]) => {\n                        this.columnsOrderChange.emit(tableColumns);\n                    }\n                );\n        }\n\n        if (this.selectable || this.selectionConfig?.enabled) {\n            this.stickyChangedSubscription =\n                this.tableStateHandlerService.stickyHeaderChangedSubject.subscribe(\n                    () => {\n                        // calling cdk method to update sticky styles\n                        this.updateStickyHeaderRowStyles();\n                    }\n                );\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        // moved this from ngOnInit since we might emit the selectionChange event\n        // before our component is actually ready and it might cause problems\n        // if we try to manually trigger change detection in a parent component\n        if (this.selectable || this.selectionConfig?.enabled) {\n            this.selectionChangedSubscription =\n                this.tableStateHandlerService.selectionChanged.subscribe(\n                    (selection: ISelection) => {\n                        this.selectionChange.emit(selection);\n                    }\n                );\n\n            if (this.selection) {\n                this.changeSelection(this.selection);\n            }\n        }\n    }\n\n    private changeSelection(selectedItems: ISelection) {\n        this.tableStateHandlerService.selection = selectedItems;\n        this.tableStateHandlerService.selectionChanged.next(\n            this.tableStateHandlerService.selection\n        );\n    }\n\n    // used for backwards compatibility\n    // default behavior was multi selection\n    private changeSelectionMode(selectable: boolean): void {\n        this.tableStateHandlerService.selectable = selectable;\n        if (selectable) {\n            this.tableStateHandlerService.selectionMode =\n                TableSelectionMode.Multi;\n            this.selectionConfig = {\n                ...this.selectionConfig,\n                enabled: true,\n                selectionMode: TableSelectionMode.Multi,\n            };\n        } else {\n            this.tableStateHandlerService.selectionMode =\n                TableSelectionMode.None;\n            this.selectionConfig = {\n                enabled: false,\n                selectionMode: TableSelectionMode.None,\n            };\n        }\n    }\n\n    private handleSortedColumn(sortedColumn: ISortedItem) {\n        this.tableStateHandlerService.sortedColumn = sortedColumn;\n        this.tableStateHandlerService.sortingState.next(sortedColumn);\n    }\n\n    private onDataSourceChange(ds: T[]) {\n        if (!ds) {\n            this.dataSource = [];\n        }\n        const changedDataSource = ds ? ds : [];\n        // if no totalItems specified, we assume that there is only one page\n        this.tableStateHandlerService.totalItems =\n            this.totalItems || changedDataSource.length;\n        this.tableStateHandlerService.changeDataSource(changedDataSource);\n    }\n\n    public ngOnDestroy(): void {\n        if (this.tableSortingSubscription) {\n            this.tableSortingSubscription.unsubscribe();\n        }\n\n        if (this.tableColumnsSubscription) {\n            this.tableColumnsSubscription.unsubscribe();\n        }\n\n        if (this.selectionChangedSubscription) {\n            this.selectionChangedSubscription.unsubscribe();\n        }\n\n        if (this.stickyChangedSubscription) {\n            this.stickyChangedSubscription.unsubscribe();\n        }\n        if (this.tableColumnsWidthSubscription) {\n            this.tableColumnsWidthSubscription.unsubscribe();\n        }\n        super.ngOnDestroy();\n    }\n\n    public ngAfterContentInit(): void {\n        // @ts-ignore: Call parent method in case cdk adds it later\n        super.ngAfterContentInit?.();\n        // Note: Identifying if table is using virtual scroll.\n        this.tableStateHandlerService.hasVirtualScroll = !!this.virtualFor && !this.paginatorUsed;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    CdkVirtualForOf,\n    CdkVirtualScrollViewport,\n} from \"@angular/cdk/scrolling\";\nimport {\n    AfterViewInit,\n    ContentChild,\n    Directive,\n    Input,\n    OnDestroy,\n    Renderer2,\n} from \"@angular/core\";\nimport isBoolean from \"lodash/isBoolean\";\nimport isEmpty from \"lodash/isEmpty\";\nimport { asyncScheduler, EMPTY, merge, Observable, Subject } from \"rxjs\";\nimport {\n    delay,\n    exhaustMap,\n    filter,\n    finalize,\n    map,\n    take,\n    takeUntil,\n    tap,\n    throttleTime,\n} from \"rxjs/operators\";\n\nimport { FIXED_WIDTH_CLASS } from \"../constants\";\nimport { TableComponent } from \"../table.component\";\n\nexport enum TableVirtualScrollHeaderPosition {\n    Native,\n    Sticky,\n}\n\n@Directive({\n    selector: \"cdk-virtual-scroll-viewport[tableStickyHeader]\",\n    host: {\n        \"[class.sticky-table-header]\": \"true\",\n        style: \"overflow-y:overlay\",\n    },\n    standalone: false,\n})\nexport class TableStickyHeaderDirective implements AfterViewInit, OnDestroy {\n    @ContentChild(TableComponent) public table: TableComponent<unknown>;\n    @ContentChild(CdkVirtualForOf) public virtualFor: CdkVirtualForOf<unknown>;\n\n    @Input()\n    public set tableStickyHeader(isSticky: boolean) {\n        if (!isBoolean(isSticky)) {\n            return;\n        }\n\n        this._sticky = isSticky;\n\n        // Note: We need to have all properties set\n        // before proceeding with table head movements.\n        if (!this.isInitialized) {\n            return;\n        }\n\n        this.updateHeadPosition(isSticky);\n    }\n\n    private _sticky: boolean = true;\n    private headPosition: TableVirtualScrollHeaderPosition;\n\n    private stickyHeadContainer?: HTMLElement; // Actual thead container\n    private headRef?: HTMLTableSectionElement;\n    private bodyRef?: HTMLTableSectionElement;\n    private tableElRef?: HTMLTableElement;\n    private userProvidedHeight: string;\n\n    private readonly unsubscribe$ = new Subject<void>();\n    private headResizeObserver: ResizeObserver;\n    // this is for keeping track of the original viewport height on head resize\n    private origViewportHeight: number;\n\n    private get viewportEl(): HTMLElement {\n        return this.viewport.elementRef.nativeElement;\n    }\n\n    private get isInitialized(): boolean {\n        return !!this.tableElRef;\n    }\n\n    constructor(\n        private renderer: Renderer2,\n        private viewport: CdkVirtualScrollViewport\n    ) {}\n\n    public ngAfterViewInit(): void {\n        this.assignRequiredProperties();\n        // TODO: Find a better way to identify when the table header are rendered properly\n        // Waiting for the next tick to let cdk table properly draw the table header\n        setTimeout(() => this.updateNativeHeaderPlaceholder());\n        this.updateHeadPosition(this._sticky);\n    }\n\n    public ngOnDestroy(): void {\n        this.unsubscribe$.next();\n        this.unsubscribe$.complete();\n\n        if (this.headResizeObserver) {\n            this.headResizeObserver.disconnect();\n        }\n    }\n\n    public setNative(): void {\n        if (this.headPosition === TableVirtualScrollHeaderPosition.Native) {\n            console.warn(\"Already in native mode\");\n            return;\n        }\n\n        // Note: Moving the thead back to the table\n        this.renderer.insertBefore(this.tableElRef, this.headRef, this.bodyRef);\n        // Note: Unsubscribing from potential subscriptions generated by stickyMode.\n        this.unsubscribe$.next();\n\n        // Note: Restoring user provided height\n        if (isEmpty(this.userProvidedHeight)) {\n            this.viewportEl.style.removeProperty(\"height\");\n        } else {\n            this.viewportEl.style.setProperty(\n                \"height\",\n                this.userProvidedHeight\n            );\n        }\n\n        this.headPosition = TableVirtualScrollHeaderPosition.Native;\n    }\n\n    public setSticky(): void {\n        if (this.headPosition === TableVirtualScrollHeaderPosition.Sticky) {\n            console.warn(\"Already in sticky mode\");\n            return;\n        }\n\n        if (!this.stickyHeadContainer) {\n            this.createStickyHeaderContainer();\n        }\n\n        // Note: Moving the table head into sticky container\n        this.renderer.appendChild(this.stickyHeadContainer, this.headRef);\n\n        this.syncHorizontalScroll();\n        this.syncColumnWidths();\n\n        // Note: While we're detaching header from CDK Viewport we have\n        // to recalculate viewport height to keep the same total height.\n        // The setTimeout is for skipping one tick to let the header get his height.\n        setTimeout(() => this.updateContainerToFitHead());\n        this.updateViewportHeightOnHeadResize();\n\n        this.headPosition = TableVirtualScrollHeaderPosition.Sticky;\n    }\n\n    public updateContainerToFitHead = (): void => {\n        if (this._sticky) {\n            this.origViewportHeight =\n                this.origViewportHeight || this.viewportEl?.offsetHeight;\n            const viewportComputedHeight: string = isEmpty(\n                this.userProvidedHeight\n            )\n                ? this.origViewportHeight + \"px\"\n                : this.userProvidedHeight;\n            this.viewportEl.style.setProperty(\n                \"height\",\n                `calc(${viewportComputedHeight} - ${\n                    this.headRef?.rows.item(0)?.offsetHeight ?? 0\n                }px)`,\n                \"important\"\n            );\n        }\n    };\n\n    public updateViewportHeightOnHeadResize(): void {\n        if (this.headResizeObserver) {\n            return;\n        }\n\n        // This resize observer is needed in case a parent element has a height of zero upon instantiation\n        // thereby prohibiting the header from having its intended height when its initially rendered.\n        if (this.headRef) {\n            this.headResizeObserver = new ResizeObserver(\n                (entries: ResizeObserverEntry[]) =>\n                    // We wrap this in requestAnimationFrame to avoid \"ResizeObserver loop limit exceeded\" error in unit tests\n                    // https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n                    window.requestAnimationFrame(() => {\n                        if (!Array.isArray(entries) || !entries.length) {\n                            return;\n                        }\n                        this.updateContainerToFitHead();\n                    })\n            );\n            this.headResizeObserver.observe(this.headRef);\n        }\n    }\n\n    public handleColumnsUpdate$: () => Observable<unknown> =\n        (): Observable<unknown> => {\n            if (this.table.resizable) {\n                return EMPTY;\n            }\n\n            // TODO: Perform a dirty check before starting assigning new values\n            // Note: Setting the width of stickyHeadContainer container to be able to simulate horizontal scroll of the sticky header\n            this.renderer.setStyle(\n                this.stickyHeadContainer,\n                \"width\",\n                `${this.viewport._contentWrapper.nativeElement.scrollWidth}px`\n            );\n\n            const headColumns: HTMLTableHeaderCellElement[] = Array.from(\n                this.stickyHeadContainer?.getElementsByTagName(\"th\") || []\n            );\n            const firstDataRowCells: HTMLTableDataCellElement[] = Array.from(\n                this.bodyRef?.rows.item(0)?.cells || []\n            );\n\n            // Note: If head columns are not in sync with data columns skip\n            if (headColumns.length !== firstDataRowCells.length) {\n                return EMPTY;\n            }\n\n            // TODO: Find a better way to pair placeholderHeader columns with header columns\n            firstDataRowCells.forEach(\n                (cell: HTMLTableDataCellElement, index: number) => {\n                    const fixedWidth =\n                        headColumns[index].classList.contains(\n                            FIXED_WIDTH_CLASS\n                        );\n                    if (!fixedWidth) {\n                        // Note: Assigning data cell width to the corresponding header column\n                        // (using the style width if specified; otherwise, falling back to the offsetWidth)\n                        headColumns[index].style.width =\n                            cell.style.width || `${cell.offsetWidth}px`;\n                    }\n                }\n            );\n\n            // update the header placeholder to match the updated column widths\n            this.updateNativeHeaderPlaceholder();\n\n            // Note: Returning empty observable to be able to create an execution queue\n            return EMPTY;\n        };\n\n    private assignRequiredProperties(): void {\n        this.tableElRef =\n            this.viewportEl.getElementsByTagName(\"table\").item(0) || undefined;\n        this.headRef =\n            this.viewportEl.getElementsByTagName(\"thead\").item(0) || undefined;\n        this.userProvidedHeight = this.viewportEl.style.height;\n        // Disable animation for resizable sticky header cells to prevent a lagging effect during width changes.\n        if (!this.table.resizable) {\n            Array.from(this.headRef?.getElementsByTagName(\"th\") || []).forEach(\n                (th) => th.classList.add(\"virtual-sticky\")\n            );\n        }\n        this.bodyRef =\n            this.viewportEl.getElementsByTagName(\"tbody\").item(0) || undefined;\n    }\n\n    private syncColumnWidths(): void {\n        const resize$ = new Subject<void>();\n        // Note: Passing the resize event to resize$ subject to be able\n        // to handle all the columnWidth update trigger in a single stream\n        const resizeObserver: ResizeObserver = new ResizeObserver(() => {\n            resize$.next();\n        });\n        resizeObserver.observe(this.viewportEl);\n        this.unsubscribe$\n            .pipe(\n                take(1),\n                tap(() => resize$.complete())\n            )\n            .subscribe();\n\n        const onResize$ = resize$.pipe(\n            // Note: Performing the resizeObserver cleanup\n            finalize(() => resizeObserver.disconnect())\n        );\n        const onScroll$ = this.viewport.elementScrolled().pipe(\n            // Note: Reducing the number of times function is invoked\n            // by scheduling the scroll events via trailing throttling\n            throttleTime(50, asyncScheduler, { trailing: true })\n        );\n        const tableColumnsUpdate$ = merge(\n            this.table.columnsOrderChange,\n            this.table.columnsWidthChange,\n            this.table._contentColumnDefs.changes\n        ).pipe(\n            // Note: Using delay(0) to grant some time to the table\n            // to update the rows and then proceed with the event\n            delay(0, asyncScheduler),\n            // Note: Reattaching native header on every columns changes\n            tap(() => this.updateNativeHeaderPlaceholder())\n        );\n\n        if (!this.virtualFor) {\n            throw new Error(\"Unable to find CdkVirtualForOf\");\n        }\n\n        const dataStream$ = this.virtualFor.dataStream.pipe(\n          // give CDK some time to render rows after a change\n          delay(0, asyncScheduler),\n          tap(() => this.updateNativeHeaderPlaceholder())\n        );\n\n        merge(\n            onScroll$,\n            onResize$,\n            tableColumnsUpdate$,\n            dataStream$\n        )\n            .pipe(\n                // Note: Preventing function to be invoked multiple times\n                // by merging new observable only if the previous one was completed\n                exhaustMap(this.handleColumnsUpdate$),\n                takeUntil(this.unsubscribe$)\n            )\n            .subscribe();\n    }\n\n    private syncHorizontalScroll(): void {\n        let previousScrollLeft: number = 0;\n\n        this.viewport\n            .elementScrolled()\n            .pipe(\n                map(() => this.viewportEl.scrollLeft),\n                // Note: Filtering out vertical scroll events\n                filter((scrollLeft) => scrollLeft !== previousScrollLeft),\n                tap((scrollLeft: number) => {\n                    previousScrollLeft = scrollLeft;\n                    // Note: Simulating horizontal scroll by assigning margin-left to be equal to scrolled distance\n                    this.renderer.setStyle(\n                        this.stickyHeadContainer,\n                        \"margin-left\",\n                        `-${scrollLeft}px`\n                    );\n                }),\n                takeUntil(this.unsubscribe$)\n            )\n            .subscribe();\n    }\n\n    private createStickyHeaderContainer(): void {\n        this.stickyHeadContainer = this.renderer.createElement(\"div\");\n\n        const wrapper: HTMLElement = this.renderer.createElement(\"div\");\n        this.renderer.appendChild(wrapper, this.stickyHeadContainer);\n        this.renderer.setStyle(wrapper, \"overflow-x\", `hidden`);\n        this.renderer.setStyle(wrapper, \"width\", `100%`);\n\n        // Assigning original table classes\n        const originalTableClasses: string[] = Array.from(\n            this.tableElRef?.classList || []\n        );\n        originalTableClasses.push(\"sticky-table-header-container\");\n        originalTableClasses.forEach((cssClass) =>\n            this.renderer.addClass(this.stickyHeadContainer, cssClass)\n        );\n\n        this.renderer.setAttribute(this.stickyHeadContainer, \"aria-hidden\", \"true\");\n\n        this.renderer.insertBefore(\n            this.viewportEl.parentElement,\n            wrapper,\n            this.viewportEl\n        );\n    }\n\n    private updateNativeHeaderPlaceholder(): void {\n        if (!this.headRef || !this.tableElRef || !this.bodyRef) {\n            throw new Error(\n                \"Can't append thead placeholder. TableRef, BodyRef or HeaderRef is undefined\"\n            );\n        }\n\n        const headPlaceholder =\n            this.tableElRef.getElementsByTagName(\"thead\")[0];\n        if (headPlaceholder) {\n            headPlaceholder.remove();\n        }\n\n        const theadPlaceholder: Node = this.headRef.cloneNode(true);\n\n        // Note: Collapsing the placeholder visually while keeping it in the table\n        // layout flow so column widths remain aligned with the sticky header above.\n        // visibility:collapse on <thead> hides the rows but still participates in\n        // the table column-width algorithm, unlike position:absolute (cdk-visually-hidden).\n        this.renderer.setStyle(theadPlaceholder, \"visibility\", \"collapse\");\n        // Note: Adding an identifier for the header placeholder to avoid confusion\n        this.renderer.addClass(theadPlaceholder, \"sticky-header-placeholder\");\n        // Note: Appending head placeholder to the table\n        this.renderer.insertBefore(\n            this.tableElRef,\n            theadPlaceholder,\n            this.bodyRef\n        );\n    }\n\n    private updateHeadPosition(isSticky: boolean): void {\n        if (!isSticky) {\n            this.setNative();\n            return;\n        }\n        this.setSticky();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n    The nameof operator obtains the name of a object member as a string constant\n*\nUSAGE EXAMPLE\n    console.log(nameof<Interface>(\"prop\")); // \"prop\"\n*/\nexport function nameof<T extends object>(\n    prop: Extract<keyof T, string>\n): string {\n    return prop;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ListRange } from \"@angular/cdk/collections\";\nimport { SlicePipe } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { nameof } from \"../../../functions/nameof\";\n\n@Pipe({\n    name: \"sliceRange\", pure: false,\n    standalone: false,\n})\nexport class SliceRangePipe implements PipeTransform {\n    slicePipe: SlicePipe = new SlicePipe();\n    transform(value: unknown[], range: ListRange): unknown[] {\n        if (\n            !range.hasOwnProperty(nameof<ListRange>(\"start\")) ||\n            !range.hasOwnProperty(nameof<ListRange>(\"end\"))\n        ) {\n            throw new Error(\"Invalid range provided\");\n        }\n\n        return this.slicePipe.transform(value, range.start, range.end);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./table-virtual-scroll/table-virtual-scroll.directive\";\nexport * from \"./table-virtual-scroll/table-sticky-header.directive\";\nexport * from \"./table-virtual-scroll/slice-range.pipe\";\nexport * from \"./constants\";\nexport * from \"./types\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Moment } from \"moment/moment\";\n\nexport interface IQuickPickPreset {\n    name: string;\n}\n\nexport interface ITimeFramePreset extends IQuickPickPreset {\n    name: string;\n    startDatetimePattern: any;\n    endDatetimePattern: any;\n}\n\nexport interface ITimeFramePresetDictionary {\n    [key: string]: ITimeFramePreset;\n}\n\nexport interface IQuickPickPresetDictionary {\n    [key: string]: IQuickPickPreset;\n}\n\nexport interface ITimeframe {\n    startDatetime: Moment;\n    endDatetime: Moment;\n    selectedPresetId?: string;\n    title?: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ComponentRef } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\n\nexport interface IToastService {\n    setConfig(config: IToastConfig, itemIdentificator?: string): void;\n    error(toastDeclaration: IToastDeclaration): IActiveToast;\n    info(toastDeclaration: IToastDeclaration): IActiveToast;\n    success(toastDeclaration: IToastDeclaration): IActiveToast;\n    warning(toastDeclaration: IToastDeclaration): IActiveToast;\n    clear(toastId?: number): void;\n    remove(toastId: number): boolean;\n}\n\nexport const enum ToastPositionClass {\n    TOP_CENTER = \"nui-toast--top-center\",\n    TOP_LEFT = \"nui-toast--top-left\",\n    TOP_RIGHT = \"nui-toast--top-right\",\n    TOP_FULL_WIDTH = \"nui-toast--top-full-width\",\n    BOTTOM_CENTER = \"nui-toast--bottom-center\",\n    BOTTOM_FULL_WIDTH = \"nui-toast--bottom-full-width\",\n    BOTTOM_RIGHT = \"nui-toast--bottom-right\",\n    BOTTOM_LEFT = \"nui-toast--bottom-left\",\n}\nexport interface IToastDeclaration {\n    title?: string;\n    message?: string;\n    options?: IToastConfig;\n    itemsToHighlight?: any[];\n}\n/**\n * __Description:__ Represents configuration set for toasts\n */\nexport interface IToastConfig {\n    /**\n     * toast time to live in milliseconds,\n     * default: 5000\n     */\n    timeOut?: number;\n    /**\n     * show toast close button,\n     * default: true\n     */\n    closeButton?: boolean;\n    /**\n     * toast time to live in milliseconds, after user hovers and removes cursor from toast,\n     * default: 2000\n     */\n    extendedTimeOut?: number;\n    /**\n     * show toast progress bar,\n     * default: true\n     */\n    progressBar?: boolean;\n    /**\n     * changes toast progress bar animation,\n     * default: decreasing\n     */\n    progressAnimation?: \"increasing\" | \"decreasing\";\n    /**\n     * render html in toast message (possibly unsafe),\n     * default: false\n     */\n    enableHtml?: boolean;\n    /**\n     * css class for toast component,\n     * default: \"nui-toast\"\n     */\n    toastClass?: string;\n    /**\n     * css class to set position for toast container,\n     * default: \"toast-top-right\"\n     */\n    positionClass?: ToastPositionClass | string;\n    /**\n     * clicking on toast dismisses it,\n     * default: true\n     */\n    clickToDismiss?: boolean;\n    /**\n     * prevents error message from close,\n     * default: false\n     */\n    stickyError?: boolean;\n    /**\n     * maximum number of opened toasts, toasts will be queued,\n     * zero is unlimited,\n     * default: 0\n     */\n    maxOpened?: number;\n    /**\n     * dismiss current toast when maximum number is reached,\n     * default: false\n     */\n    autoDismiss?: boolean;\n    /**\n     * new toast is placed on the top of the toasts stack,\n     * default: true\n     */\n    newestOnTop?: boolean;\n    /**\n     * prevent duplicating messages,\n     * default: false\n     */\n    preventDuplicates?: boolean;\n}\n\nexport interface IToastRef<T> {\n    /** The instance of component opened into the toast. */\n    componentInstance: T;\n    manualClose(): void;\n    manualClosed(): Observable<any>;\n    close(): void;\n    afterClosed(): Observable<any>;\n    isInactive(): boolean;\n    activate(): void;\n    afterActivate(): Observable<any>;\n}\n\nexport interface IActiveToast {\n    toastId?: number;\n    body?: string;\n    toastContainer?: ComponentRef<any>;\n    toastRef: IToastRef<any>;\n    onShown?: Observable<any>;\n    onHidden?: Observable<any>;\n    onClick?: Observable<any>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ToolbarItemComponent } from \"./toolbar-item.component\";\n\nexport enum ToolbarItemType {\n    secondary = \"secondary\",\n    primary = \"primary\",\n}\n\nexport interface IToolbarGroupContent {\n    items: ToolbarItemComponent[];\n    title?: string;\n}\n\nexport interface IToolbarSelectionState {\n    current: number;\n    total: number;\n}\n\nexport enum ToolbarItemDisplayStyle {\n    action = \"action\",\n    main = \"main\",\n    destructive = \"destructive\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { A11yModule } from \"@angular/cdk/a11y\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { TooltipComponent } from \"./tooltip.component\";\nimport { TooltipDirective } from \"./tooltip.directive\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\n\n/** @ignore */\n@NgModule({\n    imports: [A11yModule, CommonModule, OverlayModule, NuiOverlayModule],\n    exports: [TooltipDirective, TooltipComponent],\n    declarations: [TooltipDirective, TooltipComponent],\n})\nexport class NuiTooltipModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./tooltip.module\";\nexport * from \"./tooltip.directive\";\n\nexport type TooltipPosition = \"left\" | \"right\" | \"top\" | \"bottom\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\n/** @ignore */\n@Component({\n    selector: \"nui-validation-message\",\n    templateUrl: \"./validation-message.component.html\",\n    styleUrls: [\"./validation-message.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"alert\" },\n    standalone: false,\n})\nexport class ValidationMessageComponent {\n    /**\n     * Optional manual control of message visibility.\n     * This allows the form field to manually hide and show the message if needed.\n     * Typically, visibility is determined automatically by the validator specified in the \"for\" input.\n     * @type {boolean}\n     */\n    @Input() public show = false;\n    /**\n     * Pass the validator name to this input to allow the validator to control the visibility\n     * of the message based on the validation state of the associated form field.\n     * @type {string}\n     */\n    @Input() public for: string;\n}\n","<div class=\"nui-validation-message\" *ngIf=\"show\">\n    <nui-icon\n        icon=\"status_critical\"\n        iconSize=\"small\"\n        aria-hidden=\"true\"\n        class=\"nui-validation-message__icon\"\n    >\n    </nui-icon>\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, forwardRef } from \"@angular/core\";\n\nimport { ValidationMessageComponent } from \"../validation-message.component\";\n\n/**\n *\n * <h2>Required Modules</h2>\n *  <ul>\n *   <li>\n *      <code>NuiMessageModule</code>\n *   </li>\n *   <li>\n *      <code>NuiValidationMessageModule</code>\n *   </li>\n *  </ul>\n *\n */\n\n@Component({\n    selector: \"nui-custom-validation-message\",\n    template: `\n        <ng-container *ngIf=\"show\">\n            <ng-content></ng-content>\n        </ng-container>\n    `,\n    providers: [\n        {\n            provide: ValidationMessageComponent,\n            useExisting: forwardRef(() => CustomValidationMessageComponent),\n        },\n    ],\n    standalone: false,\n})\nexport class CustomValidationMessageComponent extends ValidationMessageComponent {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./validation-message.component\";\nexport * from \"./custom-validation-message/custom-validation-message.component\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { EventEmitter, TemplateRef } from \"@angular/core\";\n\nimport { IBusyConfig } from \"../busy/public-api\";\n\nexport interface IWizardSelectionEvent {\n    /** Index of the step now selected. */\n    selectedIndex: number;\n\n    /** Index of the step previously selected. */\n    previouslySelectedIndex?: number;\n\n    /** The step instance now selected. */\n    selectedStep: any;\n\n    /** The step instance previously selected. */\n    previouslySelectedStep?: any;\n}\n\nexport interface IWizardWaitEvent {\n    busyState: IBusyConfig;\n    allowStepChange: boolean;\n}\n\nexport interface IWizardStepComponent extends Record<string, any> {\n    title: string;\n    stepTemplate: TemplateRef<any>;\n    stepControl?: boolean;\n    shortTitle?: string;\n    description?: string;\n    nextText?: string;\n    disabled?: boolean;\n    hidden?: boolean;\n    enter?: EventEmitter<IWizardSelectionEvent | void>;\n    exit?: EventEmitter<IWizardSelectionEvent | void>;\n    next?: EventEmitter<IWizardSelectionEvent | void>;\n    valid?: EventEmitter<boolean>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\nimport { Injectable } from \"@angular/core\";\nimport { FormControl, FormGroupDirective, NgForm } from \"@angular/forms\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ErrorStateMatcher {\n    isErrorState(\n        control?: FormControl,\n        form?: FormGroupDirective | NgForm\n    ): boolean {\n        return !!(\n            control &&\n            control.invalid &&\n            (control.touched || (form && form.submitted))\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkStepperNext, CdkStepperPrevious } from \"@angular/cdk/stepper\";\nimport { Directive, Input } from \"@angular/core\";\n\n/** Button that moves to the next step in a stepper workflow.\n * @ignore\n */\n@Directive({\n    selector: \"button[nuiWizardNext]\",\n    host: { \"[type]\": \"type\" },\n    standalone: false,\n})\nexport class WizardStepperNextDirective extends CdkStepperNext {\n    @Input() declare type: string;\n}\n\n/** Button that moves to the previous step in a stepper workflow.\n * @ignore\n */\n@Directive({\n    selector: \"button[nuiWizardPrevious]\",\n    host: { \"[type]\": \"type\" },\n    standalone: false,\n})\nexport class WizardStepperPreviousDirective extends CdkStepperPrevious {\n    @Input() declare type: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n    selector: \"[nuiWizardStepFooter]\",\n    standalone: false,\n})\nexport class WizardStepFooterDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { FocusableOption, FocusMonitor } from \"@angular/cdk/a11y\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Input,\n    OnDestroy,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { WizardStepFooterDirective } from \"../wizard-step-footer.directive\";\n\n/** @ignore */\n@Component({\n    selector: \"wizard-footer\",\n    templateUrl: \"wizard-footer.component.html\",\n    styleUrls: [\"wizard-footer.component.less\"],\n    host: {\n        class: \"nui-wizard-footer\",\n        role: \"tab\",\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WizardFooterComponent\n    implements FocusableOption, AfterViewInit, OnDestroy\n{\n    /** Label of the given step. */\n    @Input() footer: WizardStepFooterDirective | string;\n\n    constructor(\n        private _focusMonitor: FocusMonitor,\n        private _elementRef: ElementRef<HTMLElement>\n    ) {}\n\n    public ngAfterViewInit(): void {\n        this._focusMonitor.monitor(this._elementRef, true);\n    }\n\n    public ngOnDestroy(): void {\n        this._focusMonitor.stopMonitoring(this._elementRef);\n    }\n\n    /** Focuses the step footer. */\n    focus(): void {\n        this._focusMonitor.focusVia(this._elementRef, \"program\");\n    }\n\n    /** Returns wizardStepFooter if the footer of the current step */\n    _templateFooter(): WizardStepFooterDirective | null {\n        return this.footer instanceof WizardStepFooterDirective\n            ? this.footer\n            : null;\n    }\n}\n","<ng-container\n    *ngIf=\"_templateFooter()\"\n    [ngTemplateOutlet]=\"_templateFooter()!.template\"\n></ng-container>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, TemplateRef } from \"@angular/core\";\n\n@Directive({\n    selector: \"[nuiWizardStepLabel]\",\n    standalone: false,\n})\nexport class WizardStepLabelDirective {\n    constructor(public template: TemplateRef<any>) {}\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    CdkStep,\n    CdkStepper,\n    StepperOptions,\n    STEPPER_GLOBAL_OPTIONS,\n} from \"@angular/cdk/stepper\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    forwardRef,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    SkipSelf,\n    TemplateRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { FormControl, FormGroupDirective, NgForm } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { ErrorStateMatcher } from \"../error-state-matcher.provider\";\nimport { WizardStepStateConfig } from \"../types\";\nimport { WizardStepFooterDirective } from \"../wizard-step-footer.directive\";\nimport { WizardStepLabelDirective } from \"../wizard-step-label.directive\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-wizard-step-v2\",\n    exportAs: \"nuiWizardStep\",\n    template: `\n        <ng-template>\n            <ng-content *ngIf=\"!template\"></ng-content>\n            <ng-container *ngIf=\"template\">\n                <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n            </ng-container>\n        </ng-template>\n    `,\n    providers: [\n        { provide: ErrorStateMatcher, useExisting: WizardStepV2Component },\n        { provide: CdkStep, useExisting: WizardStepV2Component },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WizardStepV2Component\n    extends CdkStep\n    implements OnInit, OnDestroy, ErrorStateMatcher\n{\n    @Input() template?: TemplateRef<any>;\n\n    @Input() stepStateConfig: Partial<WizardStepStateConfig>;\n\n    @Input() stepIndex: number;\n\n    /** Content for step label given by `<ng-template wizardStepLabel>`. */\n    @ContentChild(WizardStepLabelDirective)\n    declare stepLabel: WizardStepLabelDirective;\n\n    /** Content for footer given by `<ng-template wizardStepFooter>`. */\n    @ContentChild(WizardStepFooterDirective)\n    stepFooter: WizardStepFooterDirective;\n\n    private readonly destroy$ = new Subject<void>();\n\n    constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        @Inject(forwardRef(() => CdkStepper)) stepper: any,\n        @SkipSelf() private _errorStateMatcher: ErrorStateMatcher,\n        @Optional()\n        @Inject(STEPPER_GLOBAL_OPTIONS)\n        stepperOptions?: StepperOptions\n    ) {\n        super(stepper, stepperOptions);\n    }\n\n    public ngOnInit(): void {\n        this.onControlStatusChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    /** Custom error state matcher that additionally checks for validity of interacted form. */\n    public isErrorState(\n        control?: FormControl,\n        form?: FormGroupDirective | NgForm\n    ): boolean {\n        const originalErrorState = this._errorStateMatcher.isErrorState(\n            control,\n            form\n        );\n\n        // Custom error state checks for the validity of form that is not submitted or touched\n        // since user can trigger a form change by calling for another step without directly\n        // interacting with the current form.\n        const customErrorState = !!(control?.invalid && this.interacted);\n\n        return originalErrorState || customErrorState;\n    }\n\n    private onControlStatusChanges(): void {\n        if (this.stepControl) {\n            this.stepControl.statusChanges\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((status) => {\n                    if (status === \"INVALID\") {\n                        this.completed = false;\n                    }\n\n                    if (status === \"VALID\") {\n                        this.completed = true;\n                    }\n                });\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { IWizardConfig, WizardStepStateConfig } from \"../lib/wizard-v2/types\";\n\nexport const WIZARD_CONFIG = new InjectionToken<IWizardConfig>(\"wizard.conf\");\n\nexport const WIZARD_STEP_STATE_DEFAULT_CONFIG: WizardStepStateConfig = {\n    initial: {\n        icon: \"step\",\n        iconColor: \"gray\",\n    },\n    visited: {\n        icon: \"step-complete\",\n        iconColor: \"primary-blue\",\n    },\n    active: {\n        icon: \"step-active\",\n        iconColor: \"black\",\n    },\n    error: {\n        icon: \"step-active\",\n        iconColor: \"black\",\n    },\n};\n\nexport const WIZARD_CONFIG_DEFAULT: IWizardConfig = {\n    stepState: { ...WIZARD_STEP_STATE_DEFAULT_CONFIG },\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { FocusMonitor } from \"@angular/cdk/a11y\";\nimport { CdkStepHeader, StepState, STEP_STATE } from \"@angular/cdk/stepper\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Optional,\n    SimpleChanges,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport assign from \"lodash/assign\";\n\nimport {\n    WIZARD_CONFIG,\n    WIZARD_CONFIG_DEFAULT,\n} from \"../../../constants/wizard.constants\";\nimport { IWizardConfig, WizardStepStateConfig } from \"../types\";\nimport { WizardStepV2Component } from \"../wizard-step/wizard-step.component\";\nimport { WizardStepLabelDirective } from \"../wizard-step-label.directive\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-wizard-step-header\",\n    templateUrl: \"wizard-step-header.component.html\",\n    styleUrls: [\"wizard-step-header.component.less\"],\n    host: {\n        class: \"nui-wizard-step-header\",\n        \"[class.nui-wizard-step-header--selected]\": \"selected\",\n        \"[class.nui-wizard-step-header--optional]\": \"step.optional\",\n        \"[class.nui-wizard-step-header--completed]\": \"stepState === 'done'\",\n        role: \"tab\",\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WizardStepHeaderComponent\n    extends CdkStepHeader\n    implements AfterViewInit, OnDestroy, OnChanges\n{\n    /** State of the given step. */\n    public stepState: StepState;\n\n    /** Custom icon config received from the wizard step. Allows to customize state icons for a particular wizard step */\n    @Input() stepStateConfig: Partial<WizardStepStateConfig>;\n\n    /** Label of the given step. */\n    @Input() label: WizardStepLabelDirective | string;\n\n    /** Label that is rendered below optional steps. */\n    @Input() optionalLabel: string = $localize`Optional`;\n\n    /** Error message to display when there's an error. */\n    @Input() errorMessage: string;\n\n    /** Index of the given step. */\n    @Input() index: number;\n\n    /** Whether the given step is selected. */\n    @Input() selected: boolean;\n\n    /** Whether the given step label is active. */\n    @Input() active: boolean;\n\n    @Input() step: WizardStepV2Component;\n\n    public stepStateConfigMap: WizardStepStateConfig;\n\n    private wizardConfig: IWizardConfig = { ...WIZARD_CONFIG_DEFAULT };\n\n    constructor(\n        private _focusMonitor: FocusMonitor,\n        _elementRef: ElementRef<HTMLElement>,\n        @Optional()\n        @Inject(WIZARD_CONFIG)\n        public readonly config?: IWizardConfig\n    ) {\n        super(_elementRef);\n\n        if (this.config) {\n            this.updateStepStateConfig(this.config.stepState);\n        }\n\n        this.createStepStateConfigMap();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes?.stepStateConfig?.currentValue) {\n            this.updateStepStateConfig(changes?.stepStateConfig?.currentValue);\n            this.createStepStateConfigMap();\n        }\n\n        this.stepState = this.getStepState(this.step);\n    }\n\n    public ngAfterViewInit(): void {\n        this._focusMonitor.monitor(this._elementRef, true);\n    }\n\n    public ngOnDestroy(): void {\n        this._focusMonitor.stopMonitoring(this._elementRef);\n    }\n\n    /** Focuses the step header. */\n    public focus(): void {\n        this._focusMonitor.focusVia(this._elementRef, \"program\");\n    }\n\n    /** Returns string label of given step if it is a text label. */\n    public get stringLabel(): string | null {\n        return this.label instanceof WizardStepLabelDirective\n            ? null\n            : this.label;\n    }\n\n    /** Returns WizardStepLabel if the label of given step is a template label. */\n    public get templateLabel(): WizardStepLabelDirective | null {\n        return this.label instanceof WizardStepLabelDirective\n            ? this.label\n            : null;\n    }\n\n    private updateStepStateConfig(stepStateConfig: WizardStepStateConfig) {\n        this.wizardConfig.stepState = assign(\n            { ...this.wizardConfig.stepState },\n            stepStateConfig\n        );\n    }\n\n    private createStepStateConfigMap() {\n        this.stepStateConfigMap = {\n            [STEP_STATE.NUMBER]: this.wizardConfig.stepState?.initial,\n            [STEP_STATE.DONE]: this.wizardConfig.stepState?.visited,\n            [STEP_STATE.EDIT]: this.wizardConfig.stepState?.active,\n            [STEP_STATE.ERROR]: this.wizardConfig.stepState?.error,\n        };\n    }\n\n    private getStepState(step: WizardStepV2Component): StepState {\n        const isSelected = this.selected;\n\n        if (step.hasError && isSelected) {\n            return STEP_STATE.ERROR;\n        }\n\n        if (isSelected) {\n            return STEP_STATE.EDIT;\n        }\n\n        if (step.completed) {\n            return STEP_STATE.DONE;\n        }\n\n        return STEP_STATE.NUMBER;\n    }\n}\n","<div\n    class=\"nui-wizard-step-header__label\"\n    [nuiTooltip]=\"stringLabel ? stringLabel : ''\"\n    [class.nui-wizard-step-header__label--active]=\"step.completed\"\n    [class.nui-wizard-step-header__label--selected]=\"selected\"\n    [class.nui-wizard-step-header__label--error]=\"stepState === 'error'\"\n>\n    <!-- If there is a label template, use it. -->\n    <ng-container\n        *ngIf=\"templateLabel\"\n        [ngTemplateOutlet]=\"templateLabel?.template\"\n    ></ng-container>\n\n    <!-- If there is no label template, fall back to the text label. -->\n    <div class=\"nui-wizard-step-header__text-label\" *ngIf=\"stringLabel\">\n        {{ label }}\n    </div>\n\n    <div\n        class=\"nui-wizard-step-header__label--optional\"\n        *ngIf=\"step.optional && stepState !== 'error'\"\n    >\n        {{ optionalLabel }}\n    </div>\n    <div\n        class=\"nui-wizard-step-header__label--error\"\n        *ngIf=\"stepState === 'error'\"\n    >\n        {{ errorMessage }}\n    </div>\n</div>\n\n<div\n    class=\"nui-wizard-step-header-icon nui-step-header-icon-state--{{\n        stepState\n    }}\"\n>\n    <div class=\"nui-wizard-step-header-icon-container\">\n        <span class=\"nui-wizard-step-header-icon-content\">\n            <ng-container>\n                <nui-icon\n                    [icon]=\"stepStateConfigMap[stepState].icon\"\n                    [iconColor]=\"stepStateConfigMap[stepState].iconColor\"\n                ></nui-icon>\n            </ng-container>\n        </span>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AnimationEvent } from \"@angular/animations\";\nimport { BooleanInput } from \"@angular/cdk/coercion\";\nimport {\n    CdkStepper,\n    StepContentPositionState,\n    StepperSelectionEvent,\n} from \"@angular/cdk/stepper\";\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ContentChildren,\n    Directive,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChildren,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { distinctUntilChanged, startWith, takeUntil } from \"rxjs/operators\";\n\nimport { IWizardState } from \"./types\";\nimport { WizardStepV2Component } from \"./wizard-step/wizard-step.component\";\nimport { WizardStepHeaderComponent } from \"./wizard-step-header/wizard-step-header.component\";\n\n@Directive({\n    selector: \"[nuiWizard]\",\n    providers: [{ provide: CdkStepper, useExisting: WizardDirective }],\n    standalone: false,\n})\nexport class WizardDirective\n    extends CdkStepper\n    implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy\n{\n    static ngAcceptInputTypeEditable: BooleanInput = undefined;\n    static ngAcceptInputTypeOptional: BooleanInput = undefined;\n    static ngAcceptInputTypeCompleted: BooleanInput = undefined;\n    static ngAcceptInputTypeHasError: BooleanInput = undefined;\n\n    /** Override CdkStepper 'steps' property to use WizardStepV2Component instead of CdkStep */\n    readonly steps: QueryList<WizardStepV2Component> =\n        new QueryList<WizardStepV2Component>();\n\n    stepsArray: Array<WizardStepV2Component> = [];\n\n    /** Uniq labels ids */\n    public labelIds: string[];\n\n    /** Uniq step content ids */\n    public stepContentIds: string[];\n\n    /** Event emitted when the current step is done transitioning in. */\n    @Output() readonly animationDone: EventEmitter<void> =\n        new EventEmitter<void>();\n    /** Event emitted when the selected step has changed. */\n    @Output() readonly selectionChange =\n        new EventEmitter<StepperSelectionEvent>();\n\n    /** The state of the wizard */\n    @Input() state: IWizardState;\n\n    /** Emits the completed wizard state on component destroy */\n    @Output() readonly finished: EventEmitter<IWizardState> =\n        new EventEmitter<IWizardState>();\n\n    /** The list of step headers of the steps in the stepper. */\n    @ViewChildren(WizardStepHeaderComponent)\n    declare _stepHeader: QueryList<WizardStepHeaderComponent>;\n\n    /** Stream of animation `done` events when the body expands/collapses. */\n    _animationDone = new Subject<AnimationEvent>();\n\n    /** Steps that the stepper holds. */\n    @ContentChildren(WizardStepV2Component, { descendants: true })\n    declare _steps: QueryList<WizardStepV2Component>;\n\n    /** The step that is selected. */\n    @Input()\n    get selected(): WizardStepV2Component {\n        return this.steps.toArray()[\n            this.selectedIndex\n        ] as WizardStepV2Component;\n    }\n\n    set selected(step: WizardStepV2Component) {\n        this.selectedIndex = this.steps\n            ? this.steps.toArray().indexOf(step)\n            : -1;\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.state && changes.state.currentValue) {\n            this.state = changes.state.currentValue;\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this._steps.changes\n            .pipe(startWith(this._steps), takeUntil(this._destroyed))\n            .subscribe((steps: QueryList<WizardStepV2Component>) => {\n                this.steps.reset(\n                    steps.filter((step) => step._stepper === this)\n                );\n                this.stepsArray = this.steps.toArray();\n                this.steps.notifyOnChanges();\n                this.setIds();\n            });\n\n        this.steps.changes\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(() => this._stateChanged());\n\n        this._animationDone\n            .pipe(\n                // This needs a `distinctUntilChanged` in order to avoid emitting the same event twice due\n                // to a bug in animations where the `.done` callback gets invoked twice on some browsers.\n                // See https://github.com/angular/angular/issues/24084\n                distinctUntilChanged(\n                    (x, y) =>\n                        x.fromState === y.fromState && x.toState === y.toState\n                ),\n                takeUntil(this._destroyed)\n            )\n            .subscribe((event) => {\n                if ((event.toState as StepContentPositionState) === \"current\") {\n                    this.animationDone.emit();\n                }\n            });\n    }\n\n    public ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n\n        if (this.state?.finished) {\n            this.restore();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.finished.emit({\n            finished: this.allStepsCompleted,\n        });\n        super.ngOnDestroy();\n    }\n\n    public get allStepsCompleted(): boolean {\n        const completed: boolean = this.steps\n            .toArray()\n            .reduce(\n                (acc: boolean, step: WizardStepV2Component) =>\n                    acc && step.completed,\n                true\n            );\n\n        return completed;\n    }\n\n    // Restores the completed wizard to the last step\n    private restore(): void {\n        this.steps.toArray().forEach((step) => {\n            step.completed = true;\n\n            if (step === this.steps.last) {\n                step.select();\n            }\n        });\n\n        this[\"_changeDetectorRef\"].detectChanges();\n    }\n\n    private setIds(): void {\n        this.labelIds = this.stepsArray.map((step, index) =>\n            this._getStepLabelId(index)\n        );\n        this.stepContentIds = this.stepsArray.map((step, index) =>\n            this._getStepContentId(index)\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, ViewEncapsulation } from \"@angular/core\";\n\n/**\n * Internal component that wraps the overlay's content to render an arrow\n */\n\n/** @ignore */\n@Component({\n    selector: \"nui-overlay-arrow\",\n    template: `<div class=\"nui-overlay-arrow\"></div>`,\n    styleUrls: [\"./overlay-arrow.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class OverlayArrowComponent {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AnimationEvent } from \"@angular/animations\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostListener,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    TemplateRef,\n} from \"@angular/core\";\nimport _isBoolean from \"lodash/isBoolean\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { take } from \"rxjs/operators\";\n\nimport { IPopoverModalContext } from \"./popover-modal.service\";\nimport { PopoverPlacement } from \"./public-api\";\nimport { fadeIn } from \"../../animations/fadeIn\";\n\n/**\n * @ignore\n */\nexport type PopoverModalEvents =\n    | \"mouse-enter\"\n    | \"mouse-leave\"\n    | \"backdrop-click\"\n    | \"outside-click\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-popover-modal\",\n    templateUrl: \"./popover-modal.component.html\",\n    animations: [fadeIn],\n    host: { role: \"dialog\" },\n    standalone: false,\n})\nexport class PopoverModalComponent implements AfterViewInit, OnInit, OnDestroy {\n    /**\n     * Is backdrop used\n     */\n    @Input() backdrop: boolean;\n\n    /**\n     * Defines settings for popover\n     */\n    @Input() context: IPopoverModalContext;\n\n    /**\n     * Defines popover content\n     */\n    @Input() template: TemplateRef<string>;\n\n    /**\n     * Updates fadeIn property\n     */\n    @Input() displayChange: Subject<boolean>;\n\n    /**\n     * Popover hostElement\n     */\n    @Input() hostElement: any;\n\n    /**\n     * Defines if container has padding.\n     */\n    @Input() hasPadding: boolean;\n\n    /**\n     * Specifies whether the default width and height constraints are in effect for the popover\n     */\n    @Input() unlimited: boolean;\n\n    public placement: PopoverPlacement = \"right\";\n    public fadeIn = false;\n    public popoverBeforeHiddenSubject: Subject<void>;\n    public popoverAfterHiddenSubject: Subject<void>;\n    public popoverModalEventSubject: Subject<PopoverModalEvents>;\n\n    private popoverModalSubscriptions: Subscription[] = [];\n\n    @HostListener(\"click\", [\"$event\"])\n    onClick(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n\n    @HostListener(\"mouseenter\")\n    onMouseEnter(): void {\n        this.popoverModalEventSubject.next(\"mouse-enter\");\n    }\n\n    @HostListener(\"mouseleave\")\n    onMouseLeave(): void {\n        this.popoverModalEventSubject.next(\"mouse-leave\");\n    }\n\n    constructor(\n        public elRef: ElementRef,\n        private zone: NgZone,\n        private cdRef: ChangeDetectorRef\n    ) {}\n\n    public ngOnInit(): void {\n        const displayChangeSubscription = this.displayChange.subscribe(\n            (show: boolean) => {\n                if (!show) {\n                    this.popoverBeforeHiddenSubject.next();\n                    this.fadeIn = false;\n                    this.cdRef.markForCheck();\n                }\n            }\n        );\n\n        this.popoverModalSubscriptions.push(displayChangeSubscription);\n    }\n\n    public ngAfterViewInit(): void {\n        // To prevent from exception 'expression was changed after check'\n        const zoneSubscription = this.zone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(() => {\n                // To be sure, that change detection mechanism was invoked and placement was updated\n                this.zone.run(() => (this.fadeIn = true));\n            });\n        this.popoverModalSubscriptions.push(zoneSubscription);\n    }\n\n    public onAnimationEnd(event: AnimationEvent): void {\n        if (_isBoolean(event.fromState) && event.fromState) {\n            this.popoverAfterHiddenSubject.next();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.popoverModalSubscriptions.forEach((sub) => {\n            sub.unsubscribe();\n        });\n    }\n}\n","<div\n    class=\"nui-popover-container-animation fade\"\n    [@fadeIn]=\"fadeIn\"\n    (@fadeIn.done)=\"onAnimationEnd($event)\"\n>\n    <div\n        class=\"nui-popover-container\"\n        [ngClass]=\"['nui-popover-container--' + placement]\"\n        [class.unlimited]=\"unlimited\"\n    >\n        <div class=\"nui-popover-container__arrow arrow\"></div>\n        <div class=\"nui-popover-container__frame\">\n            <div\n                *ngIf=\"context.icon || context.title\"\n                class=\"nui-popover-container__header\"\n                [class.nui-popover-container__header--with-border]=\"\n                    context.title\n                \"\n            >\n                <div class=\"nui-popover-container__icon\" *ngIf=\"context.icon\">\n                    <nui-icon [icon]=\"context.icon\"></nui-icon>\n                </div>\n                <div\n                    *ngIf=\"context.title\"\n                    class=\"nui-popover-container__title\"\n                    [class.nui-popover-container__title--with-icon]=\"\n                        context.icon\n                    \"\n                    title=\"{{ context.title }}\"\n                >\n                    <span>{{ context.title }}</span>\n                </div>\n            </div>\n            <div\n                class=\"nui-popover-container__content\"\n                [class.noPadding]=\"!hasPadding\"\n            >\n                <ng-container [ngTemplateOutlet]=\"template\"></ng-container>\n            </div>\n        </div>\n    </div>\n    <nui-overlay-arrow></nui-overlay-arrow>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ConnectedPosition } from \"@angular/cdk/overlay\";\nimport { Injectable } from \"@angular/core\";\n\nimport { PopoverOverlayPosition, PopoverPlacement } from \"./public-api\";\nimport { OVERLAY_ARROW_SIZE } from \"../overlay/constants\";\n\nenum PopoverOverlayPlacement {\n    Left = \"left\",\n    Right = \"right\",\n    Top = \"top\",\n    Bottom = \"bottom\",\n}\n\nenum PanelClass {\n    overlayLeftTop = \"overlay-left-top\",\n    overlayLeftBottom = \"overlay-left-bottom\",\n    overlayRightTop = \"overlay-right-top\",\n    overlayRightBottom = \"overlay-right-bottom\",\n    overlayTopLeft = \"overlay-top-left\",\n    overlayTopRight = \"overlay-top-right\",\n    overlayBottomLeft = \"overlay-bottom-left\",\n    overlayBottomRight = \"overlay-bottom-right\",\n}\n\n@Injectable()\nexport class PopoverPositionService {\n    private readonly popoverPositions: Record<\n        PopoverOverlayPosition,\n        ConnectedPosition\n    >;\n\n    constructor() {\n        this.popoverPositions = getPopoverPositions();\n    }\n\n    public setPopoverOffset(\n        panelClass: string | string[],\n        elRefHeight: number,\n        overlayRefElement: HTMLElement\n    ): void {\n        const ARROW_SIZE = OVERLAY_ARROW_SIZE;\n        const popoverOffsetY = this.calculateOffsetY(elRefHeight);\n\n        if (Array.isArray(panelClass)) {\n            panelClass = this.getPopoverPositionPanelClass(panelClass);\n        }\n\n        if (!panelClass) {\n            return;\n        }\n\n        overlayRefElement.style.marginLeft = \"\";\n        overlayRefElement.style.marginTop = \"\";\n        overlayRefElement.style.marginBottom = \"\";\n        overlayRefElement.style.marginRight = \"\";\n\n        switch (panelClass) {\n            case PanelClass.overlayLeftTop:\n                overlayRefElement.style.marginRight = ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginBottom = -popoverOffsetY + \"px\";\n                break;\n            case PanelClass.overlayLeftBottom:\n                overlayRefElement.style.marginRight = ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginTop = -popoverOffsetY + \"px\";\n                break;\n            case PanelClass.overlayRightTop:\n                overlayRefElement.style.marginLeft = ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginBottom = -popoverOffsetY + \"px\";\n                break;\n            case PanelClass.overlayRightBottom:\n                overlayRefElement.style.marginLeft = ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginTop = -popoverOffsetY + \"px\";\n                break;\n            case PanelClass.overlayTopLeft:\n                overlayRefElement.style.marginRight = -2 * ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginBottom = ARROW_SIZE + \"px\";\n                break;\n            case PanelClass.overlayTopRight:\n                overlayRefElement.style.marginLeft = -2 * ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginBottom = ARROW_SIZE + \"px\";\n                break;\n            case PanelClass.overlayBottomLeft:\n                overlayRefElement.style.marginRight = -2 * ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginTop = ARROW_SIZE + \"px\";\n                break;\n            case PanelClass.overlayBottomRight:\n                overlayRefElement.style.marginLeft = -2 * ARROW_SIZE + \"px\";\n                overlayRefElement.style.marginTop = ARROW_SIZE + \"px\";\n                break;\n        }\n    }\n\n    public possiblePositionsForPlacement(\n        placement: PopoverPlacement\n    ): ConnectedPosition[] {\n        const possiblePositions: ConnectedPosition[] = [];\n\n        switch (placement) {\n            case PopoverOverlayPlacement.Left:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(\n                        PopoverOverlayPlacement.Left\n                    )\n                );\n                break;\n            case PopoverOverlayPlacement.Right:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(\n                        PopoverOverlayPlacement.Right\n                    )\n                );\n                break;\n            case PopoverOverlayPlacement.Top:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(\n                        PopoverOverlayPlacement.Top\n                    )\n                );\n                break;\n            case PopoverOverlayPlacement.Bottom:\n                possiblePositions.push(\n                    ...this.getPositionsForPlacement(\n                        PopoverOverlayPlacement.Bottom\n                    )\n                );\n                break;\n        }\n\n        return possiblePositions;\n    }\n\n    public getConnectedPositions(\n        positions: PopoverOverlayPosition[]\n    ): ConnectedPosition[] {\n        return positions.map(\n            (positionName: PopoverOverlayPosition) =>\n                this.popoverPositions[positionName]\n        );\n    }\n\n    /**\n     * Returns all possible positions for a placement\n     * Eg: left => [OVERLAY_POSITIONS[centerLeft], OVERLAY_POSITIONS[topLeft], OVERLAY_POSITIONS[bottomLeft]]\n     *\n     * @param placement\n     * @returns ConnectedPosition[]\n     */\n    private getPositionsForPlacement(\n        placement: PopoverOverlayPlacement\n    ): ConnectedPosition[] {\n        let possiblePositionNames: PopoverOverlayPosition[] = [];\n        switch (placement) {\n            case PopoverOverlayPlacement.Left:\n                possiblePositionNames = [\n                    PopoverOverlayPosition.leftBottom,\n                    PopoverOverlayPosition.leftTop,\n                    PopoverOverlayPosition.rightBottom,\n                    PopoverOverlayPosition.rightTop,\n                ];\n                break;\n\n            case PopoverOverlayPlacement.Right:\n                possiblePositionNames = [\n                    PopoverOverlayPosition.rightBottom,\n                    PopoverOverlayPosition.rightTop,\n                    PopoverOverlayPosition.leftBottom,\n                    PopoverOverlayPosition.leftTop,\n                ];\n                break;\n\n            case PopoverOverlayPlacement.Top:\n                possiblePositionNames = [\n                    PopoverOverlayPosition.topRight,\n                    PopoverOverlayPosition.topLeft,\n                    PopoverOverlayPosition.bottomRight,\n                    PopoverOverlayPosition.bottomLeft,\n                ];\n                break;\n\n            case PopoverOverlayPlacement.Bottom:\n                possiblePositionNames = [\n                    PopoverOverlayPosition.bottomRight,\n                    PopoverOverlayPosition.bottomLeft,\n                    PopoverOverlayPosition.topRight,\n                    PopoverOverlayPosition.topLeft,\n                ];\n                break;\n        }\n\n        return this.getConnectedPositions(possiblePositionNames);\n    }\n\n    private getPopoverPositionPanelClass(panelClass: string[]): string {\n        let result;\n        for (const panelClassKey in PanelClass) {\n            if (PanelClass.hasOwnProperty(panelClassKey)) {\n                result = panelClass.find((i) => i === panelClassKey);\n            }\n        }\n        return result || \"\";\n    }\n\n    private calculateOffsetY(elRefHeight: number): number {\n        const ARROW_CENTER_POSITION_PX = 20;\n        if (!elRefHeight) {\n            return 5;\n        }\n        return ARROW_CENTER_POSITION_PX - elRefHeight / 2;\n    }\n}\n\nexport function getPopoverPositions(): Record<\n    PopoverOverlayPosition,\n    ConnectedPosition\n> {\n    return {\n        [PopoverOverlayPosition.topLeft]: {\n            panelClass: \"overlay-top-left\",\n            originX: \"center\",\n            originY: \"top\",\n            overlayX: \"end\",\n            overlayY: \"bottom\",\n        },\n        [PopoverOverlayPosition.bottomLeft]: {\n            panelClass: \"overlay-bottom-left\",\n            originX: \"center\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        },\n        [PopoverOverlayPosition.topRight]: {\n            panelClass: \"overlay-top-right\",\n            originX: \"center\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        },\n        [PopoverOverlayPosition.bottomRight]: {\n            panelClass: \"overlay-bottom-right\",\n            originX: \"center\",\n            originY: \"bottom\",\n            overlayX: \"start\",\n            overlayY: \"top\",\n        },\n        [PopoverOverlayPosition.leftTop]: {\n            panelClass: \"overlay-left-top\",\n            originX: \"start\",\n            originY: \"bottom\",\n            overlayX: \"end\",\n            overlayY: \"bottom\",\n        },\n        [PopoverOverlayPosition.leftBottom]: {\n            panelClass: \"overlay-left-bottom\",\n            originX: \"start\",\n            originY: \"top\",\n            overlayX: \"end\",\n            overlayY: \"top\",\n        },\n        [PopoverOverlayPosition.rightTop]: {\n            panelClass: \"overlay-right-top\",\n            originX: \"end\",\n            originY: \"bottom\",\n            overlayX: \"start\",\n            overlayY: \"bottom\",\n        },\n        [PopoverOverlayPosition.rightBottom]: {\n            panelClass: \"overlay-right-bottom\",\n            originX: \"end\",\n            originY: \"top\",\n            overlayX: \"start\",\n            overlayY: \"top\",\n        },\n    };\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const popoverConstants = {\n    arrowOffset: 10, // corresponds to less variable @nui-space-sm\n    arrowBorderWidth: 9, // corresponds to less variable @popover-arrow-width\n    mouseLeaveDelay: 200,\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ConnectedOverlayPositionChange,\n    ConnectedPosition,\n    Overlay,\n    OverlayConfig,\n} from \"@angular/cdk/overlay\";\nimport {\n    ChangeDetectorRef,\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    ContentChild,\n    ElementRef,\n    EmbeddedViewRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _includes from \"lodash/includes\";\nimport _isNil from \"lodash/isNil\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport {\n    BehaviorSubject,\n    EMPTY,\n    merge,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    PopoverModalComponent,\n    PopoverModalEvents,\n} from \"./popover-modal.component\";\nimport { IPopoverModalContext } from \"./popover-modal.service\";\nimport { PopoverPositionService } from \"./popover-position.service\";\nimport {\n    PopoverOverlayPosition,\n    PopoverPlacement,\n    PopoverTrigger,\n} from \"./public-api\";\nimport {\n    CLOSE_POPOVER_EVENT,\n    DOCUMENT_CLICK_EVENT,\n} from \"../../constants/event.constants\";\nimport { popoverConstants } from \"../../constants/popover.constants\";\nimport { EventBusService } from \"../../services/event-bus.service\";\nimport { UtilService } from \"../../services/util.service\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\nimport { OverlayUtilitiesService } from \"../overlay/overlay-utilities.service\";\n\n// <example-url>./../examples/index.html#/popover</example-url>\n\n@Component({\n    selector: \"nui-popover\",\n    host: { class: \"nui-popover\" },\n    templateUrl: \"./popover.component.html\",\n    styleUrls: [\"./popover.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [PopoverPositionService],\n    standalone: false,\n})\nexport class PopoverComponent implements OnDestroy, OnInit, OnChanges {\n    public static getHostView(\n        componentInstance: ComponentRef<PopoverModalComponent>\n    ): HTMLElement {\n        return (componentInstance.hostView as EmbeddedViewRef<any>)\n            .rootNodes[0] as HTMLElement;\n    }\n\n    public displayed: boolean;\n    /**\n     * Popover listens to this stream and closes when the stream emits\n     */\n    @Input() closePopover: Subject<void>;\n    /**\n     * Popover listens to this stream and opens when the stream emits\n     */\n    @Input() openPopover: Subject<void>;\n    /**\n     * Should popover be disabled, which prevents it from showing\n     */\n    @Input() disabled: boolean = false;\n    /**\n     * Events that trigger the popover: 'click' | 'mouseenter' | 'mouseleave' | 'focus' | 'openPopoverSubject'\n     */\n    @Input() trigger: PopoverTrigger = \"mouseenter\";\n    /**\n     * TemplateRef instance that represents content of popover\n     */\n    @Input() template: TemplateRef<string>;\n    /**\n     * Placement of the popover: 'left' | 'right' | 'top' | 'bottom'\n     */\n    @Input() placement: PopoverPlacement = \"right\";\n    /**\n     * Title text of the popover. To prevent rendering of the popover's title section,\n     * simply leave this attribute unspecified.\n     */\n    @Input() popoverTitle: string;\n    /**\n     * Name of icon to display\n     */\n    @Input() icon: string;\n    /**\n     * Enable modal mode (dark background)\n     */\n    @Input() modal = false;\n    /**\n     * Container for the popover\n     */\n    @Input() container: HTMLElement;\n    /**\n     * Specify whether the popover body has any padding.\n     * Setting this to false will remove all padding from the popover body.\n     */\n    @Input() hasPadding = true;\n    /**\n     * Prevent closing popover when clicking itself.\n     */\n    @Input() preventClosing = false;\n    /**\n     * Specifies whether the default width and height constraints are in effect for the popover\n     */\n    @Input() unlimited = false;\n\n    /**\n     * Specifies the timeout in ms after which the tooltip is displayed\n     */\n    @Input() delay: number = 0;\n\n    /**\n     * Sets whether the overlay can grow after the initial open via flexible width/height.\n     */\n    @Input() withGrowAfterOpen: boolean = false;\n\n    @Input() popoverOverlayPosition: PopoverOverlayPosition[];\n\n    /**\n     * Emits an event upon display of the popover\n     */\n    @Output() shown = new EventEmitter<any>();\n    /**\n     * Emits an event upon disappearance of the popover\n     */\n    @Output() hidden = new EventEmitter<any>();\n\n    @ContentChild(TemplateRef) myTemplate: any;\n\n    @ViewChild(\"renderContainer\") renderContainer: TemplateRef<ElementRef>;\n\n    @ViewChild(\"modalContainer\", { read: ViewContainerRef })\n    modalContainer: ViewContainerRef;\n\n    @ViewChild(OverlayComponent) overlayComponent: OverlayComponent;\n\n    public overlayConfig: OverlayConfig = { width: \"auto\" };\n    public containerElementRef: ElementRef;\n\n    private popover?: ComponentRef<PopoverModalComponent>;\n    private position: any;\n    private arrowMarginTop: any;\n    // When this subject emits a value popover should be hidden\n    private popoverDisplaySubject: BehaviorSubject<boolean>;\n    // When hiding animation of popover starts this subject will trigger\n    private popoverBeforeHiddenSubject: Subject<void>;\n    // When hiding animation of popover ends this subject will trigger\n    private popoverAfterHiddenSubject: Subject<void>;\n    // Subject which is used by PopoverModalComponent to emit if something happened in PopoverModalComponent\n    private popoverModalEventSubject: Subject<PopoverModalEvents>;\n    private closePopoverSubscription: Subscription;\n    private openPopoverSubscription: Subscription;\n    private popoverModalSubscriptions: Array<Subscription>;\n    private popoverOpenedProgrammatically: boolean = false;\n    // See PopoverComponent.mouseLeaveResolver for details\n    private mouseLeaveTimeout?: NodeJS.Timeout;\n    private mouseEnterTimeout?: NodeJS.Timeout;\n    private hidingAnimationInProgress = false;\n    private positionStrategySubscriptions: Subscription[] = [];\n    private overlayUtilitiesService: OverlayUtilitiesService =\n        new OverlayUtilitiesService();\n    private resizeObserver: ResizeObserver;\n\n    @HostListener(\"click\", [\"$event\"])\n    public onClick(event: MouseEvent): void {\n        if (this.isTriggerPresent(\"click\") && this.popover) {\n            this.hidePopover();\n        } else {\n            this.onTrigger(\"click\");\n        }\n        this.eventBusService.getStream(DOCUMENT_CLICK_EVENT).next(event);\n        event.stopPropagation();\n    }\n\n    @HostListener(\"mouseenter\")\n    public onMouseEnter(): void {\n        this.onTrigger(\"mouseenter\");\n        this.mouseEnterResolver();\n    }\n\n    @HostListener(\"mouseleave\")\n    public onMouseLeave(): void {\n        this.onTrigger(\"mouseleave\");\n        this.mouseLeaveResolver();\n    }\n\n    @HostListener(\"focusin\")\n    public onFocusIn(): void {\n        this.onTrigger(\"focus\");\n    }\n\n    @HostListener(\"focusout\")\n    public onFocusOut(): void {\n        if (!this.closePopover) {\n            if (this.isTriggerPresent(\"focus\") && !this.preventClosing) {\n                this.hidePopover();\n            }\n        }\n    }\n\n    constructor(\n        public host: ElementRef,\n        private componentFactoryResolver: ComponentFactoryResolver,\n        private viewContainerRef: ViewContainerRef,\n        private overlay: Overlay,\n        private cdRef: ChangeDetectorRef,\n        private eventBusService: EventBusService,\n        private popoverPositionService: PopoverPositionService\n    ) {}\n\n    public ngOnInit(): void {\n        if (this.container) {\n            this.containerElementRef = new ElementRef(this.container);\n        }\n        if (this.modal) {\n            this.overlayConfig = {\n                ...this.overlayConfig,\n                backdropClass: \"modal-backdrop\",\n                hasBackdrop: true,\n            };\n        }\n        if (!this.overlayConfig?.positionStrategy) {\n            this.setPositionStrategy(this.placement);\n        }\n        if (this.openPopover && this.isTriggerPresent(\"openPopoverSubject\")) {\n            this.openPopoverSubscription = this.openPopover.subscribe(() => {\n                this.popoverOpenedProgrammatically = true;\n                this.showPopover();\n            });\n        }\n        this.overlayConfig = {\n            ...this.overlayConfig,\n            panelClass: \"nui-popover-overlay\",\n        };\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.placement) {\n            this.setPositionStrategy(changes.placement.currentValue);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.mouseEnterTimeout) {\n            clearTimeout(this.mouseEnterTimeout);\n            this.mouseEnterTimeout = undefined;\n        }\n\n        if (this.popover) {\n            this.cleanUp();\n        }\n\n        if (this.closePopoverSubscription) {\n            this.closePopoverSubscription.unsubscribe();\n        }\n\n        if (this.openPopoverSubscription) {\n            this.openPopoverSubscription.unsubscribe();\n        }\n\n        this.clearPositionStrategySubscriptions();\n    }\n\n    public onBackdropClick(): void {\n        if (this.modal) {\n            this.popoverModalEventSubject.next(\"backdrop-click\");\n        }\n    }\n\n    public showPopover(): void {\n        if (this.disabled) {\n            return;\n        }\n\n        if (!_isNil(this.popover)) {\n            this.cleanUp();\n        }\n\n        this.hidingAnimationInProgress = false;\n        const factory = this.componentFactoryResolver.resolveComponentFactory(\n            PopoverModalComponent\n        );\n        this.popover = this.modalContainer.createComponent(factory);\n        this.initializePopover();\n        this.setPositionStrategy(this.placement);\n        this.overlayComponent.show();\n        this.initializeResizeObserver();\n        this.shown.emit();\n        // Needs for proper initialization of content inside overlay\n        this.cdRef.detectChanges();\n    }\n\n    /**\n     * Updates the position of the popup based on its overlay's current position strategy.\n     * This method is currently used in Charts by the ChartPopoverComponent.\n     */\n    public updatePosition(): void {\n        this.overlayComponent?.getOverlayRef()?.updatePosition();\n    }\n\n    /**\n     * Resets the size of the popover.\n     */\n    public resetSize(): void {\n        // This is set to undefined so that angular cdk will set the height and width automatically\n        this.overlayComponent?.getOverlayRef()?.updateSize({\n            height: undefined,\n            width: undefined,\n        });\n    }\n\n    private onTrigger(triggerType: PopoverTrigger) {\n        if (this.isTriggerPresent(triggerType)) {\n            if (\n                this.delay > 0 &&\n                triggerType === \"mouseenter\" &&\n                this.isTriggerPresent(\"mouseenter\")\n            ) {\n                if (this.mouseEnterTimeout) {\n                    clearTimeout(this.mouseEnterTimeout);\n                }\n                this.mouseEnterTimeout = setTimeout(() => {\n                    this.activatePopover();\n                }, this.delay);\n            } else {\n                this.activatePopover();\n            }\n        }\n    }\n\n    private activatePopover() {\n        this.eventBusService.getStream(CLOSE_POPOVER_EVENT).next();\n        this.showPopover();\n    }\n\n    private initializePopover() {\n        this.popoverModalSubscriptions = [];\n        const closePopoverSubscription = merge(\n            (!this.preventClosing\n                ? this.eventBusService.getStream(CLOSE_POPOVER_EVENT)\n                : EMPTY) as Observable<void>,\n            this.closePopover || EMPTY\n        ).subscribe(() => {\n            this.hidePopover();\n        });\n\n        if (!this.popover) {\n            throw new Error(\"PopoverModalComponent is undefined\");\n        }\n\n        this.popover.instance.context = this.getContext();\n        this.popover.instance.template = this.template;\n        this.popover.instance.hostElement =\n            this.viewContainerRef.element.nativeElement;\n        this.popover.instance.unlimited = this.unlimited;\n        this.popover.instance.placement = this.placement;\n        this.popoverDisplaySubject = new BehaviorSubject<boolean>(true);\n        this.popoverBeforeHiddenSubject = new Subject<void>();\n        this.popoverAfterHiddenSubject = new Subject<void>();\n        this.popoverModalEventSubject = new Subject<PopoverModalEvents>();\n        this.popover.instance.popoverBeforeHiddenSubject =\n            this.popoverBeforeHiddenSubject;\n        this.popover.instance.popoverAfterHiddenSubject =\n            this.popoverAfterHiddenSubject;\n        this.popover.instance.popoverModalEventSubject =\n            this.popoverModalEventSubject;\n        const popoverBeforeHiddenSubscription =\n            this.popoverBeforeHiddenSubject.subscribe(() => {\n                this.hidingAnimationInProgress = true;\n            });\n        const popoverAfterHiddenSubscription =\n            this.popoverAfterHiddenSubject.subscribe(() => {\n                if (this.hidingAnimationInProgress) {\n                    this.cleanUp();\n                    this.hidingAnimationInProgress = false;\n                }\n            });\n\n        if (this.isTriggerPresent(\"click\") && !this.preventClosing) {\n            const documentClickSubscription = this.eventBusService\n                .getStream(DOCUMENT_CLICK_EVENT)\n                .subscribe((event: any) => {\n                    const popoverModalNativeElement =\n                        this.popover?.instance.elRef.nativeElement;\n                    const eventPath = UtilService.getEventPath(event);\n                    const clickInsidePopover = _includes(\n                        eventPath,\n                        popoverModalNativeElement\n                    );\n                    if (!clickInsidePopover) {\n                        this.popoverOpenedProgrammatically\n                            ? (this.popoverOpenedProgrammatically = false)\n                            : this.hidePopover();\n                    }\n                });\n            this.popoverModalSubscriptions.push(documentClickSubscription);\n        }\n        const popoverModalEventSubscription =\n            this.popoverModalEventSubject.subscribe(\n                (reason: PopoverModalEvents) => {\n                    switch (reason) {\n                        case \"backdrop-click\":\n                        case \"outside-click\":\n                            if (!this.preventClosing) {\n                                this.hidePopover();\n                            }\n                            break;\n                        case \"mouse-leave\":\n                            this.mouseLeaveResolver();\n                            break;\n                        case \"mouse-enter\":\n                            this.mouseEnterResolver();\n                            break;\n                    }\n                }\n            );\n        this.popoverModalSubscriptions.push(\n            popoverModalEventSubscription,\n            popoverBeforeHiddenSubscription,\n            popoverAfterHiddenSubscription,\n            closePopoverSubscription\n        );\n        this.popover.instance.displayChange = this.popoverDisplaySubject;\n        this.popover.instance.backdrop = this.modal;\n        this.popover.instance.hasPadding = _isUndefined(this.hasPadding)\n            ? true\n            : this.hasPadding;\n    }\n\n    private cleanUp() {\n        this.resizeObserver?.disconnect();\n        this.popoverModalSubscriptions.forEach((sub) => {\n            if (sub) {\n                sub.unsubscribe();\n            }\n        });\n        this.popover?.destroy();\n        this.overlayComponent.hide();\n        this.hidden.emit();\n        this.popover = undefined;\n    }\n\n    private hidePopover() {\n        if (!this.disabled) {\n            this.popoverDisplaySubject.next(false);\n        }\n    }\n\n    private getContext(): IPopoverModalContext {\n        return {\n            placement: this.placement,\n            arrowMarginTop: this.arrowMarginTop,\n            popoverPosition: this.position,\n            icon: this.getIcon(),\n            title: this.popoverTitle,\n        };\n    }\n\n    private mouseEnterResolver() {\n        if (this.mouseLeaveTimeout) {\n            clearTimeout(this.mouseLeaveTimeout);\n            this.mouseLeaveTimeout = undefined;\n        }\n    }\n\n    private mouseLeaveResolver() {\n        // if a cursor leaves both popover trigger and popover body - user has popoverConstants.mouseLeaveDelay ms\n        // to return cursor to these elements. In case of using hover trigger it helps to ensure that popover won't close\n        // when user moves their's cursor from popover trigger to popover body\n        if (this.isTriggerPresent(\"mouseenter\")) {\n            this.mouseLeaveTimeout = setTimeout(() => {\n                if (this.popover) {\n                    this.hidePopover();\n                    this.mouseLeaveTimeout = undefined;\n                }\n            }, popoverConstants.mouseLeaveDelay);\n\n            if (this.mouseEnterTimeout) {\n                clearTimeout(this.mouseEnterTimeout);\n                this.mouseEnterTimeout = undefined;\n            }\n        }\n    }\n\n    private isTriggerPresent(valueToCompare: string): boolean {\n        return this.trigger.split(\" \").indexOf(valueToCompare) !== -1;\n    }\n\n    private getIcon(): string {\n        return this.icon;\n    }\n\n    private setPositionStrategy(position: PopoverPlacement): void {\n        const positionStrategy = this.overlay\n            .position()\n            .flexibleConnectedTo(this.host.nativeElement)\n            .withPush(false)\n            .withViewportMargin(0)\n            .withGrowAfterOpen(this.withGrowAfterOpen)\n            .withPositions(this.getPopoverConnectedPosition(position));\n\n        const subscription = positionStrategy.positionChanges.subscribe(\n            (connectedPosition: ConnectedOverlayPositionChange) => {\n                const overlayRefElement =\n                    this.overlayComponent.getOverlayRef().overlayElement;\n                const elRefHeight = (\n                    this.host.nativeElement as HTMLElement\n                ).getBoundingClientRect().height;\n                const panelClass = connectedPosition.connectionPair.panelClass;\n                if (!panelClass) {\n                    return;\n                }\n                this.popoverPositionService.setPopoverOffset(\n                    panelClass,\n                    elRefHeight,\n                    overlayRefElement\n                );\n            }\n        );\n        this.positionStrategySubscriptions.push(subscription);\n\n        this.overlayConfig = { ...this.overlayConfig, positionStrategy };\n    }\n\n    private getPopoverConnectedPosition(\n        position: PopoverPlacement\n    ): ConnectedPosition[] {\n        this.popoverPositionService = new PopoverPositionService();\n\n        if (this.popoverOverlayPosition) {\n            return this.popoverPositionService.getConnectedPositions(\n                this.popoverOverlayPosition\n            );\n        }\n\n        return this.popoverPositionService.possiblePositionsForPlacement(\n            position\n        );\n    }\n\n    private clearPositionStrategySubscriptions() {\n        for (const sub of this.positionStrategySubscriptions) {\n            sub.unsubscribe();\n        }\n    }\n\n    private initializeResizeObserver(): void {\n        this.resizeObserver = this.overlayUtilitiesService\n            .setPopupComponent(this.overlayComponent)\n            .getResizeObserver();\n        this.resizeObserver.observe(\n            this.overlayComponent.getOverlayRef().overlayElement\n        );\n    }\n}\n","<ng-content></ng-content>\n<nui-overlay\n    [customContainer]=\"containerElementRef\"\n    [toggleReference]=\"host.nativeElement\"\n    [overlayConfig]=\"overlayConfig\"\n    (clickOutside)=\"onBackdropClick()\"\n>\n    <ng-template #modalContainer></ng-template>\n</nui-overlay>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, ElementRef, Input, TemplateRef } from \"@angular/core\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-wizard-overflow\",\n    templateUrl: \"./wizard-overflow.component.html\",\n    styleUrls: [\"./wizard-overflow.component.less\"],\n    standalone: false,\n})\nexport class WizardOverflowComponent {\n    public tooltipText: string = $localize` more steps are available`;\n\n    @Input() template: TemplateRef<any>;\n    @Input() value: number | string;\n    @Input() completed = false;\n\n    constructor(public el: ElementRef) {}\n}\n","<div class=\"nui-wizard-overflow\" [nuiTooltip]=\"'+' + value + tooltipText\" i18n>\n    <nui-popover\n        trigger=\"focus\"\n        tabindex=\"0\"\n        placement=\"bottom\"\n        [unlimited]=\"true\"\n        [template]=\"template\"\n    >\n        <div class=\"nui-tag\" [class.nui-tag--completed]=\"completed\">\n            {{ \"+\" + value }}\n        </div>\n    </nui-popover>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport { BooleanInput } from \"@angular/cdk/coercion\";\nimport { CdkStepper, StepperSelectionEvent } from \"@angular/cdk/stepper\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport last from \"lodash/last\";\nimport pull from \"lodash/pull\";\nimport without from \"lodash/without\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { WizardOverflowComponent } from \"../wizard-overflow/wizard-overflow.component\";\nimport { WizardStepV2Component } from \"../wizard-step/wizard-step.component\";\nimport { WizardStepHeaderComponent } from \"../wizard-step-header/wizard-step-header.component\";\nimport { WizardDirective } from \"../wizard.directive\";\n\n// <example-url>./../examples/index.html#/wizard-v2</example-url>\n@Component({\n    selector: \"nui-wizard-horizontal\",\n    exportAs: \"wizardHorizontal\",\n    templateUrl: \"wizard-horizontal.component.html\",\n    styleUrls: [\"../wizard.component.less\"],\n    host: {\n        class: \"nui-wizard-horizontal-layout\",\n        \"[class.nui-wizard-step-header__label-position--end]\": \"labelPosition == 'end'\",\n        \"[class.nui-wizard-step-header__label-position--top]\": \"labelPosition == 'top'\",\n        \"aria-orientation\": \"horizontal\",\n        role: \"tablist\",\n    },\n    providers: [\n        { provide: WizardDirective, useExisting: WizardHorizontalComponent },\n        { provide: CdkStepper, useExisting: WizardHorizontalComponent },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WizardHorizontalComponent\n    extends WizardDirective\n    implements OnInit, AfterViewInit, OnDestroy\n{\n    static ngAcceptInputTypeEditable: BooleanInput = undefined;\n    static ngAcceptInputTypeOptional: BooleanInput = undefined;\n    static ngAcceptInputTypeCompleted: BooleanInput = undefined;\n    static ngAcceptInputTypeHasError: BooleanInput = undefined;\n\n    public hasOverflow = false;\n    public isInResponsiveMode = false;\n    public allHeadersWidth: number = 0;\n    public visibleSteps: Array<WizardStepV2Component> = [];\n    public overflownStepsStart: Array<WizardStepV2Component> = [];\n    public overflownStepsEnd: Array<WizardStepV2Component> = [];\n\n    private headerResizeObserver: ResizeObserver;\n    private dynamicSteps: WizardStepV2Component[] = [];\n    private stepsCachedArray: WizardStepV2Component[] = [];\n    private dynamicStepWidthAdjustment: number = 0;\n    private headerPaddings: number = 0;\n    private stepHeaderWidth: number = 0;\n    private headerContainerWidth: number = 0;\n    private overflowComponentWidth: number = 0;\n\n    public get selectedIndex(): number {\n        return super.selectedIndex;\n    }\n    @Input()\n    public set selectedIndex(value: number) {\n        super.selectedIndex = value;\n    }\n\n    /** Whether the label should display in bottom or end position. */\n    @Input() labelPosition: \"top\" | \"end\" = \"top\";\n\n    @ViewChild(\"headerContainer\") public headerContainer: ElementRef;\n    @ViewChildren(\"stepHeaders\")\n    public stepHeaders: QueryList<WizardStepHeaderComponent>;\n    @ViewChildren(\"overflowComponent\")\n    public overflowComponents: QueryList<WizardOverflowComponent>;\n\n    constructor(\n        private dir: Directionality,\n        private cdRef: ChangeDetectorRef,\n        private el: ElementRef,\n        private zone: NgZone\n    ) {\n        super(dir, cdRef, el);\n    }\n\n    public ngOnInit(): void {\n        // Checking the validity of previous steps by default.\n        this.linear = true;\n    }\n\n    public ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n\n        this.stepsCachedArray = [...this.stepsArray];\n\n        // Initial checking if there is an overflow and determining some values we'll use in calculations later\n        this.checkHeadingsView();\n        this.cdRef.detectChanges();\n\n        this.overflowComponentWidth =\n            this.overflowComponents?.first?.el?.nativeElement?.getBoundingClientRect()\n                ?.width || 0;\n\n        // This handles how headers are processed during the resize process\n        this.headerResizeObserver = new ResizeObserver(\n            (entry: ResizeObserverEntry[]) => {\n                this.zone.run(() => {\n                    if (!this.hasOverflow) {\n                        this.checkHeadingsView();\n                    }\n                    this.onContainerResize(entry[0]);\n                    this.checkResponsiveMode();\n                    this.cdRef.markForCheck();\n                });\n            }\n        );\n\n        // Steps change event is triggered every time we navigate through the steps AND when dynamic steps are being added/removed (or anything else\n        // happens in the scope of the current step's view). We only need to rebuild the headers view if there are any changes connected with dynamic steps.\n        // Otherwise, we don't do anything. We also have to track whether any of the dynamic steps were added or not on every event run, because we don't\n        // know when exactly user will attempt to add a dynamic step. If this happens, we need to also adjust the width of all the header items with respect\n        // to the added step to properly track the overflow, as it can happen when the dynamic step is added.\n        this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n            this.checkDynamicSteps();\n\n            if (this.dynamicSteps.length) {\n                this.checkHeadingsView();\n            }\n\n            this.dynamicStepWidthAdjustment = this.stepsArray.includes(\n                this.dynamicSteps[0]\n            )\n                ? this.stepHeaderWidth\n                : 0;\n\n            // We keep the cached array intact to properly tack when dynamic steps are added. Multiple dynamic steps may be added,\n            // but we're only interested in the latest one, because the rest will be hidden under the overflow elements, if there is\n            // no room for them among the visible items\n            this.stepsCachedArray = [...this.stepsArray];\n        });\n\n        this.selectionChange\n            .pipe(takeUntil(this._destroyed))\n            .subscribe((event: StepperSelectionEvent) => {\n                // This describes the navigation between the headers in a visible and hidden areas in the responsive mode.\n                if (this.hasOverflow) {\n                    if (event.previouslySelectedIndex < event.selectedIndex) {\n                        if (this.overflownStepsEnd.length) {\n                            const selectedIndex =\n                                this.overflownStepsEnd.findIndex(\n                                    (item) =>\n                                        item ===\n                                        (event.selectedStep as WizardStepV2Component)\n                                );\n                            this.visibleSteps = this.visibleSteps.concat(\n                                this.overflownStepsEnd.splice(\n                                    0,\n                                    selectedIndex + 1\n                                )\n                            );\n                            this.overflownStepsStart =\n                                this.overflownStepsStart.concat(\n                                    this.visibleSteps.splice(\n                                        0,\n                                        selectedIndex + 1\n                                    )\n                                );\n                        }\n                    } else {\n                        if (this.overflownStepsStart.length) {\n                            const startPiece = this.overflownStepsStart.splice(\n                                event.selectedIndex,\n                                this.overflownStepsStart.length -\n                                    event.selectedIndex\n                            );\n                            this.visibleSteps = startPiece.concat(\n                                this.visibleSteps\n                            );\n                            this.overflownStepsEnd.splice(\n                                0,\n                                0,\n                                ...this.visibleSteps.splice(\n                                    this.visibleSteps.length -\n                                        startPiece.length,\n                                    startPiece.length\n                                )\n                            );\n                        }\n                    }\n                }\n            });\n\n        this.headerResizeObserver.observe(this.headerContainer.nativeElement);\n    }\n\n    public ngOnDestroy(): void {\n        super.ngOnDestroy();\n\n        this.headerResizeObserver.disconnect();\n    }\n\n    private handleOverflow(): void {\n        this.checkOverflow();\n\n        if (this.hasOverflow || this.isInResponsiveMode) {\n            const numberOfVisibleItems = this.numberOfVisibleItems;\n\n            if (!this.isInResponsiveMode) {\n                if (this.state?.finished) {\n                    this.visibleSteps = this.stepsArray.slice(\n                        -numberOfVisibleItems\n                    );\n                    this.overflownStepsStart = this.stepsArray.slice(\n                        0,\n                        -numberOfVisibleItems\n                    );\n\n                    // This covers an edge case with the saved wizard state. It can happen that the active element\n                    // appears inside the hidden list of items, when the dynamnic steps are re-added.\n                    // We make it visible again by retrieving it back to the visible items array\n                    if (this.overflownStepsStart.length) {\n                        while (!this.isCurrentStepVisible) {\n                            this.takeLastAddFirst(\n                                this.overflownStepsStart,\n                                this.visibleSteps\n                            );\n                            this.takeLastAddFirst(\n                                this.visibleSteps,\n                                this.overflownStepsEnd\n                            );\n                        }\n                    }\n                } else {\n                    this.visibleSteps = this.stepsArray.slice(\n                        0,\n                        numberOfVisibleItems\n                    );\n                    this.overflownStepsEnd =\n                        this.stepsArray.slice(numberOfVisibleItems);\n                }\n            } else {\n                this.handleDynamicHeaderChanges(numberOfVisibleItems);\n            }\n        }\n\n        this.checkResponsiveMode();\n    }\n\n    private get isCurrentStepVisible(): boolean {\n        return this.visibleSteps.includes(this.stepsArray[this.selectedIndex]);\n    }\n\n    private get numberOfVisibleItems(): number {\n        return (\n            Math.ceil(\n                (this.headerContainerWidth - this.headerPaddings * 2) /\n                    this.stepHeaderWidth\n            ) - 1\n        );\n    }\n\n    private handleDynamicHeaderChanges(visibleItemsNUmber: number): void {\n        const arr: WizardStepV2Component[] = [...this.stepsArray];\n\n        if (this.overflownStepsStart.length) {\n            arr.splice(0, this.overflownStepsStart.length);\n        }\n        this.visibleSteps = arr.slice(0, visibleItemsNUmber);\n        this.overflownStepsEnd = arr.slice(visibleItemsNUmber);\n\n        this.checkOverflow();\n        if (!this.hasOverflow && this.overflownStepsStart.length) {\n            this.visibleSteps.unshift(\n                this.overflownStepsStart.splice(\n                    this.overflownStepsStart.length - 1,\n                    1\n                )[0]\n            );\n        }\n    }\n\n    private checkDynamicSteps(): void {\n        if (this.stepsArray.length > this.stepsCachedArray.length) {\n            this.dynamicSteps = without(\n                this.stepsArray,\n                ...this.stepsCachedArray\n            );\n        }\n\n        if (this.stepsArray.length < this.stepsCachedArray.length) {\n            this.dynamicSteps = without(\n                this.stepsCachedArray,\n                ...this.stepsArray\n            );\n\n            // If there are no dynamic items left in the main array we need to clean up the visual items array\n            if (!this.stepsArray.includes(this.dynamicSteps[0])) {\n                pull(this.visibleSteps, ...this.dynamicSteps);\n            }\n        }\n\n        if (this.stepsArray.length === this.stepsCachedArray.length) {\n            this.dynamicSteps = [];\n        }\n    }\n\n    private checkHeadingsView(): void {\n        this.checkHeaderWidth();\n        this.checkHeaderPaddings();\n        this.getWidthsForCalculations();\n        this.handleOverflow();\n    }\n\n    private checkHeaderPaddings(): void {\n        if (!this.headerPaddings) {\n            this.headerPaddings = +getComputedStyle(\n                this.headerContainer.nativeElement\n            ).paddingLeft.slice(0, -2);\n        }\n    }\n\n    private checkHeaderWidth(): void {\n        if (!this.stepHeaderWidth) {\n            this.stepHeaderWidth =\n                this.stepHeaders.first?._elementRef?.nativeElement?.getBoundingClientRect()\n                    .width || 0;\n        }\n    }\n\n    private getWidthsForCalculations(): void {\n        this.headerContainerWidth =\n            this.headerContainer.nativeElement?.getBoundingClientRect().width;\n        this.allHeadersWidth = this.stepHeaderWidth * this.steps.length;\n    }\n\n    private checkOverflow(): void {\n        this.hasOverflow = this.allHeadersWidth > this.headerContainerWidth;\n    }\n\n    private checkResponsiveMode(): void {\n        this.isInResponsiveMode =\n            !!this.overflownStepsStart.length ||\n            !!this.overflownStepsEnd.length;\n    }\n\n    private takeLastAddFirst(source: Array<any>, target: Array<any>): void {\n        target.unshift(source.splice(-1, 1)[0]);\n    }\n\n    private takeFirstAddLast(source: Array<any>, target: Array<any>): void {\n        target.push(source.splice(0, 1)[0]);\n    }\n\n    private onContainerResize(entry: ResizeObserverEntry): void {\n        this.checkOverflow();\n\n        const newWidth = entry.contentRect.width;\n        const visibleStepsWidth =\n            this.visibleSteps.length * this.stepHeaderWidth;\n\n        if (\n            newWidth <\n            visibleStepsWidth +\n                this.overflowComponentWidth * 2 +\n                this.dynamicStepWidthAdjustment\n        ) {\n            if (this.visibleSteps[0] !== this.stepsArray[this.selectedIndex]) {\n                return this.takeFirstAddLast(\n                    this.visibleSteps,\n                    this.overflownStepsStart\n                );\n            }\n\n            if (\n                last(this.visibleSteps) !== this.stepsArray[this.selectedIndex]\n            ) {\n                return this.takeLastAddFirst(\n                    this.visibleSteps,\n                    this.overflownStepsEnd\n                );\n            }\n        }\n\n        if (\n            newWidth >\n            visibleStepsWidth +\n                this.stepHeaderWidth +\n                this.overflowComponentWidth * 2 +\n                this.dynamicStepWidthAdjustment\n        ) {\n            if (this.overflownStepsEnd.length) {\n                return this.takeFirstAddLast(\n                    this.overflownStepsEnd,\n                    this.visibleSteps\n                );\n            }\n\n            if (this.overflownStepsStart.length) {\n                return this.takeLastAddFirst(\n                    this.overflownStepsStart,\n                    this.visibleSteps\n                );\n            }\n        }\n    }\n}\n","<div class=\"nui-wizard-horizontal-header-container\" #headerContainer>\n    <!--  Left overflow container -->\n    <ng-container *ngIf=\"isInResponsiveMode && overflownStepsStart.length\">\n        <nui-wizard-overflow\n            #overflowComponent\n            class=\"overflow-left\"\n            [template]=\"overflowStart\"\n            [completed]=\"true\"\n            [value]=\"overflownStepsStart.length\"\n        >\n        </nui-wizard-overflow>\n\n        <ng-template #overflowStart>\n            <div *ngIf=\"overflownStepsStart.length\" class=\"pb-3\">\n                <strong>+{{ overflownStepsStart.length }} more steps</strong>\n            </div>\n            <div\n                class=\"nui-wizard-horizontal-header-wrapper\"\n                *ngFor=\"\n                    let step of overflownStepsStart;\n                    let i = index;\n                    let isFirst = first\n                \"\n            >\n                <ng-template\n                    *ngTemplateOutlet=\"\n                        stepHeaderWithLines;\n                        context: {\n                            $implicit: steps,\n                            step: step,\n                            i: i,\n                            isFirst: isFirst\n                        }\n                    \"\n                ></ng-template>\n            </div>\n        </ng-template>\n    </ng-container>\n\n    <!--  Visible items container -->\n    <div\n        class=\"nui-wizard-horizontal-header-wrapper\"\n        *ngFor=\"\n            let step of isInResponsiveMode ? visibleSteps : steps;\n            let i = index;\n            let isFirst = first\n        \"\n    >\n        <ng-template\n            *ngTemplateOutlet=\"\n                stepHeaderWithLines;\n                context: {\n                    $implicit: steps,\n                    step: step,\n                    i: overflownStepsStart.length + i,\n                    isFirst: isFirst\n                }\n            \"\n        ></ng-template>\n    </div>\n\n    <!--  Right overflow container -->\n    <ng-container *ngIf=\"isInResponsiveMode && overflownStepsEnd.length\">\n        <nui-wizard-overflow\n            #overflowComponent\n            class=\"overflow-right\"\n            [class.overflow-right-completed]=\"allStepsCompleted\"\n            [template]=\"overflowEnd\"\n            [completed]=\"allStepsCompleted\"\n            [value]=\"overflownStepsEnd.length\"\n        >\n        </nui-wizard-overflow>\n\n        <ng-template #overflowEnd>\n            <div *ngIf=\"overflownStepsEnd.length\" class=\"pb-3\">\n                <strong>+{{ overflownStepsEnd.length }} more steps</strong>\n            </div>\n            <div\n                class=\"nui-wizard-horizontal-header-wrapper\"\n                *ngFor=\"\n                    let step of overflownStepsEnd;\n                    let i = index;\n                    let isFirst = first\n                \"\n            >\n                <ng-template\n                    *ngTemplateOutlet=\"\n                        stepHeaderWithLines;\n                        context: {\n                            $implicit: steps,\n                            step: step,\n                            i:\n                                overflownStepsStart.length +\n                                visibleSteps.length +\n                                i,\n                            isFirst: isFirst\n                        }\n                    \"\n                ></ng-template>\n            </div>\n        </ng-template>\n    </ng-container>\n</div>\n\n<div class=\"nui-wizard-horizontal-content-container\">\n    <div\n        *ngFor=\"let step of steps; let i = index\"\n        class=\"nui-wizard-horizontal-content\"\n        role=\"tabpanel\"\n        [id]=\"stepContentIds[i]\"\n        [attr.aria-labelledby]=\"labelIds[i]\"\n        [attr.aria-expanded]=\"selectedIndex === i\"\n    >\n        <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n    </div>\n</div>\n<div\n    *ngIf=\"selected?.stepFooter\"\n    class=\"nui-wizard-horizontal-footer-container\"\n>\n    <wizard-footer [footer]=\"selected?.stepFooter\"></wizard-footer>\n</div>\n\n<ng-template\n    #stepHeaderWithLines\n    let-steps\n    let-step=\"step\"\n    let-i=\"i\"\n    let-isFirst=\"isFirst\"\n>\n    <div\n        *ngIf=\"!isFirst\"\n        class=\"nui-wizard-horizontal__step-connector-line\"\n        [ngClass]=\"{\n            'nui-wizard-horizontal__step-connector-line--completed':\n                (stepsArray[i - 1]?.completed && step.completed) ||\n                selectedIndex === i\n        }\"\n    ></div>\n    <nui-wizard-step-header\n        #stepHeaders\n        class=\"nui-wizard-horizontal-header\"\n        (click)=\"step.select()\"\n        (keydown)=\"_onKeydown($event)\"\n        [tabIndex]=\"selectedIndex === i ? 0 : -1\"\n        [id]=\"labelIds[i]\"\n        [attr.aria-posinset]=\"i + 1\"\n        [attr.aria-setsize]=\"steps.length\"\n        [attr.aria-controls]=\"stepContentIds[i]\"\n        [attr.aria-selected]=\"selectedIndex === i\"\n        [attr.aria-label]=\"step.ariaLabel || null\"\n        [attr.aria-labelledby]=\"\n            !step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\n        \"\n        [index]=\"i\"\n        [stepStateConfig]=\"step.stepStateConfig\"\n        [label]=\"step.stepLabel || step.label\"\n        [selected]=\"selectedIndex === i\"\n        [active]=\"step.completed || selectedIndex === i || !linear\"\n        [step]=\"step\"\n        [errorMessage]=\"step.errorMessage\"\n    >\n    </nui-wizard-step-header>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directionality } from \"@angular/cdk/bidi\";\nimport { BooleanInput } from \"@angular/cdk/coercion\";\nimport { CdkStepper } from \"@angular/cdk/stepper\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    Optional,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { WizardDirective } from \"../wizard.directive\";\n\n/**  ignore should be removed in scope of the NUI-6099 */\n/** @ignore */\n@Component({\n    selector: \"nui-wizard-vertical\",\n    exportAs: \"wizardVertical\",\n    templateUrl: \"wizard-vertical.component.html\",\n    styleUrls: [\"../wizard.component.less\"],\n    host: {\n        class: \"nui-wizard-vertical-layout\",\n        \"aria-orientation\": \"vertical\",\n        role: \"tablist\",\n    },\n    providers: [\n        { provide: WizardDirective, useExisting: WizardVerticalComponent },\n        { provide: CdkStepper, useExisting: WizardVerticalComponent },\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class WizardVerticalComponent extends WizardDirective {\n    static ngAcceptInputTypeEditable: BooleanInput = undefined;\n    static ngAcceptInputTypeOptional: BooleanInput = undefined;\n    static ngAcceptInputTypeCompleted: BooleanInput = undefined;\n    static ngAcceptInputTypeHasError: BooleanInput = undefined;\n\n    public get selectedIndex(): number {\n        return super.selectedIndex;\n    }\n    @Input()\n    public set selectedIndex(value: number) {\n        super.selectedIndex = value;\n    }\n\n    constructor(\n        @Optional() dir: Directionality,\n        changeDetectorRef: ChangeDetectorRef,\n        elementRef: ElementRef<HTMLElement>\n    ) {\n        super(dir, changeDetectorRef, elementRef);\n        this[\"_orientation\"] = \"vertical\";\n    }\n}\n","<div\n    class=\"nui-wizard-vertical-header-container\"\n    *ngFor=\"let step of steps; let i = index; let isLast = last\"\n>\n    <nui-wizard-step-header\n        class=\"nui-wizard-vertical-header\"\n        (click)=\"step.select()\"\n        (keydown)=\"_onKeydown($event)\"\n        [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n        [id]=\"labelIds[i]\"\n        [attr.aria-posinset]=\"i + 1\"\n        [attr.aria-setsize]=\"steps.length\"\n        [attr.aria-controls]=\"stepContentIds[i]\"\n        [attr.aria-selected]=\"selectedIndex === i\"\n        [attr.aria-label]=\"step.ariaLabel || null\"\n        [attr.aria-labelledby]=\"\n            !step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\n        \"\n        [index]=\"i\"\n        [label]=\"step.stepLabel || step.label\"\n        [selected]=\"selectedIndex === i\"\n        [active]=\"step.completed || selectedIndex === i || !linear\"\n        [errorMessage]=\"step.errorMessage\"\n    >\n    </nui-wizard-step-header>\n\n    <div\n        class=\"nui-wizard-vertical-content-container\"\n        [class.nui-wizard-vertical-line]=\"!isLast\"\n    >\n        <div\n            class=\"nui-wizard-vertical-content\"\n            role=\"tabpanel\"\n            [attr.tabindex]=\"selectedIndex === i ? 0 : null\"\n            [id]=\"_getStepContentId(i)\"\n            [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n            [attr.aria-expanded]=\"selectedIndex === i\"\n        >\n            <div class=\"nui-wizard-vertical-content\">\n                <ng-container [ngTemplateOutlet]=\"step.content\"></ng-container>\n            </div>\n        </div>\n    </div>\n</div>\n\n<div *ngIf=\"selected.stepFooter\" class=\"nui-wizard-vertical-footer-container\">\n    <wizard-footer [footer]=\"selected.stepFooter\"></wizard-footer>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { OverlayArrowComponent } from \"./arrow-component/overlay-arrow.component\";\nimport { OverlayItemComponent } from \"./overlay-item/overlay-item.component\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [OverlayItemComponent, OverlayArrowComponent],\n    exports: [OverlayItemComponent, OverlayArrowComponent],\n})\nexport class NuiOverlayAdditionsModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { PopoverModalComponent } from \"./popover-modal.component\";\nimport { PopoverComponent } from \"./popover.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiOverlayAdditionsModule } from \"../overlay/overlay-additions.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiIconModule,\n        NuiOverlayModule,\n        NuiOverlayAdditionsModule,\n    ],\n    declarations: [PopoverModalComponent, PopoverComponent],\n    exports: [PopoverComponent, PopoverModalComponent],\n    providers: [],\n})\nexport class NuiPopoverModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ErrorStateMatcher } from \"./error-state-matcher.provider\";\nimport {\n    WizardStepperNextDirective,\n    WizardStepperPreviousDirective,\n} from \"./wizard-button/wizard-button\";\nimport { WizardFooterComponent } from \"./wizard-footer/wizard-footer.component\";\nimport { WizardHorizontalComponent } from \"./wizard-horizontal/wizard-horizontal.component\";\nimport { WizardOverflowComponent } from \"./wizard-overflow/wizard-overflow.component\";\nimport { WizardStepV2Component } from \"./wizard-step/wizard-step.component\";\nimport { WizardStepFooterDirective } from \"./wizard-step-footer.directive\";\nimport { WizardStepHeaderComponent } from \"./wizard-step-header/wizard-step-header.component\";\nimport { WizardStepLabelDirective } from \"./wizard-step-label.directive\";\nimport { WizardVerticalComponent } from \"./wizard-vertical/wizard-vertical.component\";\nimport { WizardDirective } from \"./wizard.directive\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiPopoverModule } from \"../popover/popover.module\";\nimport { NuiTooltipModule } from \"../tooltip/public-api\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiIconModule,\n        NuiPopoverModule,\n        NuiTooltipModule,\n    ],\n    declarations: [\n        WizardHorizontalComponent,\n        WizardVerticalComponent,\n        WizardStepHeaderComponent,\n        WizardFooterComponent,\n        WizardStepV2Component,\n        WizardDirective,\n        WizardStepLabelDirective,\n        WizardStepFooterDirective,\n        WizardStepperNextDirective,\n        WizardStepperPreviousDirective,\n        WizardOverflowComponent,\n    ],\n    exports: [\n        WizardHorizontalComponent,\n        WizardVerticalComponent,\n\n        WizardFooterComponent,\n\n        WizardStepV2Component,\n        WizardDirective,\n        WizardStepLabelDirective,\n\n        // next & previous directive to be applied on buttons in order to navigate\n        // through the wizard steps\n        WizardStepperNextDirective,\n        WizardStepperPreviousDirective,\n\n        WizardStepHeaderComponent,\n        WizardStepFooterDirective,\n    ],\n    providers: [ErrorStateMatcher],\n})\nexport class NuiWizardV2Module {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport type WizardStepState =\n    | \"active\"\n    | \"visited\"\n    | \"initial\"\n    | \"error\"\n    | string;\nexport type WizardStepStateConfig = Record<\n    WizardStepState,\n    IWizardStepStateConfig\n>;\n\nexport interface IWizardState {\n    finished: boolean;\n}\n\nexport interface IWizardConfig {\n    stepState: WizardStepStateConfig;\n    [key: string]: any;\n}\n\nexport interface IWizardStepStateConfig {\n    icon?: string;\n    iconColor?: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./wizard.module\";\nexport * from \"./wizard.directive\";\nexport * from \"./wizard-step-footer.directive\";\nexport * from \"./wizard-step-label.directive\";\nexport * from \"./error-state-matcher.provider\";\nexport * from \"./wizard-button/wizard-button\";\nexport * from \"./wizard-footer/wizard-footer.component\";\nexport * from \"./wizard-horizontal/wizard-horizontal.component\";\nexport * from \"./wizard-step/wizard-step.component\";\nexport * from \"./wizard-step-header/wizard-step-header.component\";\nexport * from \"./wizard-vertical/wizard-vertical.component\";\nexport * from \"./types\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./types\";\nexport * from \"./overlay-position.service\";\nexport * from \"./constants\";\nexport * from \"./overlay-utilities.service\";\nexport * from \"./overlay-custom-container\";\nexport * from \"./overlay-container.service\";\nexport * from \"./overlay-component/overlay.component\";\nexport * from \"./overlay-item/overlay-item.component\";\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport interface QueryToken {\n    value: string;\n    start: number;\n    end: number;\n    focused?: boolean;\n}\n\nexport interface ElementPadding {\n    top: number;\n    bottom: number;\n    left: number;\n    right: number;\n}\n\nexport interface BaseCoordinates {\n    left: number;\n    top: number;\n}\n\nexport interface ColorsConf {\n    notif: string;\n    highlight: string;\n}\n\nexport interface RenderConfigurator<T> {\n    getNotifColor(token: T): string;\n\n    getHighlightColor(token: T): string;\n\n    enhanceTokens?(tokens: T[]): T[];\n}\n\nexport interface HintEntry {\n    displayValue: string;\n    value: string;\n    icon?: string;\n}\n\nexport type HelpEntry = HelpEntryCategory | HintEntry;\n\nexport interface HelpEntryCategory {\n    notice?: boolean;\n    header?: string;\n    items?: any[];\n}\n\nexport interface Tokenizer<T extends QueryToken> {\n    tokenizeText(text: string, baseIdx?: number): T[];\n}\nexport interface CaretCoordinates {\n    top: number;\n    left: number;\n    scrollTop: number;\n}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./models\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./breadcrumb/public-api\";\nexport * from \"./busy/public-api\";\nexport * from \"./button/public-api\";\nexport * from \"./checkbox/public-api\";\nexport * from \"./chips/public-api\";\nexport * from \"./date-picker/public-api\";\nexport * from \"./dnd/public-api\";\nexport * from \"./dialog/public-api\";\nexport * from \"./divider/public-api\";\nexport * from \"./docs/public-api\";\nexport * from \"./dragdrop/public-api\";\nexport * from \"./form-field/public-api\";\nexport * from \"./icon/public-api\";\nexport * from \"./image/public-api\";\nexport * from \"./layout/public-api\";\nexport * from \"./menu/public-api\";\nexport * from \"./paginator/public-api\";\nexport * from \"./panel/public-api\";\nexport * from \"./popover/public-api\";\nexport * from \"./repeat/public-api\";\nexport * from \"./select/public-api\";\nexport * from \"./select-v2/types\";\nexport * from \"./select-v2/constants\";\nexport * from \"./selector/public-api\";\nexport * from \"./sorter/public-api\";\nexport * from \"./spinner/public-api\";\nexport * from \"./table/public-api\";\nexport * from \"./time-frame-picker/public-api\";\nexport * from \"./toast/public-api\";\nexport * from \"./toolbar/public-api\";\nexport * from \"./tooltip/public-api\";\nexport * from \"./validation-message/public-api\";\nexport * from \"./wizard/public-api\";\nexport * from \"./wizard-v2/public-api\";\nexport * from \"./overlay/public-api\";\nexport * from \"./freetype-query-builder/public-api\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    TemplateRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { merge } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { NuiFormFieldControl, OptionValueType } from \"../../public-api\";\nimport { BaseSelectV2 } from \"../base-select-v2\";\nimport { NUI_SELECT_V2_OPTION_PARENT_COMPONENT } from \"../constants\";\nimport { SelectV2OptionComponent } from \"../option/select-v2-option.component\";\nimport { OptionKeyControlService } from \"../option-key-control.service\";\n\n// <example-url>./../examples/index.html#/select-v2</example-url>\n@Component({\n    selector: \"nui-select-v2\",\n    templateUrl: \"./select-v2.component.html\",\n    styleUrls: [\"./select-v2.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        OptionKeyControlService,\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => SelectV2Component),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => SelectV2Component),\n            multi: true,\n        },\n        {\n            provide: NUI_SELECT_V2_OPTION_PARENT_COMPONENT,\n            useExisting: SelectV2Component,\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: \"nui-select-v2\",\n        role: \"button\",\n    },\n    standalone: false,\n})\n\n// Will be renamed in scope of the NUI-5797\nexport class SelectV2Component\n    extends BaseSelectV2\n    implements AfterContentInit, OnDestroy, OnChanges\n{\n    /** Sets a custom template for displaying it in the Option */\n    @Input() public displayValueTemplate: TemplateRef<any>;\n\n    /** Value of the selected Option that derives in the Select */\n    public displayText: string;\n\n    constructor(\n        elRef: ElementRef<HTMLElement>,\n        optionKeyControlService: OptionKeyControlService<SelectV2OptionComponent>,\n        cdRef: ChangeDetectorRef,\n        public liveAnnouncer: LiveAnnouncer\n    ) {\n        super(optionKeyControlService, cdRef, elRef, liveAnnouncer);\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n    }\n\n    public ngAfterContentInit(): void {\n        // applying changes to content immediately after it was initialized (checked)\n        // causes \"Expression has changed after it was checked\" error\n        setTimeout(() => {\n            super.ngAfterContentInit();\n\n            if (!this.multiselect) {\n                this.defineDisplayText();\n            }\n\n            this.cdRef.markForCheck();\n        });\n\n        // options may be received after value changes, that's why\n        // we check \"selectedOptions\" and \"valueChanged\" to be set per \"value\" again in \"handleValueChange\"\n        merge(\n            this.optionsChanged(),\n            this.valueChanged.pipe(takeUntil(this.destroy$))\n        ).subscribe(() => {\n            if (!this.multiselect) {\n                this.defineDisplayText();\n            }\n            this.cdRef.markForCheck();\n        });\n    }\n\n    /** Selects specific Option and set its value to the model */\n    public selectOption(option: SelectV2OptionComponent): void {\n        if (option.outfiltered || option.isDisabled) {\n            return;\n        }\n\n        super.selectOption(option);\n        if (!this.multiselect) {\n            this.defineDisplayText();\n        }\n        this.cdRef.markForCheck();\n    }\n\n    /** Sets value to the model */\n    public writeValue(value: OptionValueType | OptionValueType[]): void {\n        super.writeValue(value);\n        this.defineDisplayText();\n        this.cdRef.markForCheck();\n    }\n\n    /** Checks whether value of the Select is empty */\n    public get isEmpty(): boolean {\n        return !this.getLastSelectedOption();\n    }\n\n    /**\n     * Calls to ngOnDestroy do not automatically get propagated to base classes.\n     * This can lead to memory leaks.\n     * This is a safe guard for preventing memory leaks in derived classes.\n     */\n    public ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    private defineDisplayText() {\n        this.displayText = this.selectedOptions[0]?.viewValue || \"\";\n    }\n}\n","<div\n    tabindex=\"0\"\n    #input\n    [id]=\"triggerId\"\n    class=\"nui-select-v2__container\"\n    [attr.aria-label]=\"ariaLabel\"\n    (keydown)=\"onKeyDown($event)\"\n>\n    <div *ngIf=\"!displayValueTemplate\" class=\"nui-select-v2__value\">\n        <div *ngIf=\"!isEmpty\" class=\"nui-select-v2__value-content\">\n            <span>{{ displayText || \"\\u00A0\" }}</span>\n        </div>\n        <span class=\"nui-select-v2__placeholder\" *ngIf=\"isEmpty\">{{\n            placeholder || \"\\u00A0\"\n        }}</span>\n\n        <nui-icon\n            [style.transform]=\"isDropdownOpen ? 'rotate(180deg)' : ''\"\n            [icon]=\"caretIcon\"\n        ></nui-icon>\n    </div>\n\n    <ng-container\n        *ngIf=\"displayValueTemplate\"\n        [ngTemplateOutlet]=\"displayValueTemplate\"\n        [ngTemplateOutletContext]=\"{\n            $implicit: getLastSelectedOption()?.displayValueContext || value,\n            open: isDropdownOpen\n        }\"\n    ></ng-container>\n</div>\n<nui-overlay\n    roleAttr=\"listbox\"\n    [ariaLabelledBy]=\"triggerId\"\n    [toggleReference]=\"elRef.nativeElement\"\n    [viewportMargin]=\"popupViewportMargin\"\n    [overlayConfig]=\"overlayConfig\"\n>\n    <ng-content></ng-content>\n</nui-overlay>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { ComboboxV2Component } from \"./combobox-v2/combobox-v2.component\";\nimport { ComboboxV2OptionHighlightDirective } from \"./combobox-v2-option-highlight/combobox-v2-option-highlight.directive\";\nimport { MarkAsSelectedItemDirective } from \"./mark-as-selected-item.directive\";\nimport { SelectV2OptionComponent } from \"./option/select-v2-option.component\";\nimport { SelectV2OptionGroupComponent } from \"./option-group/select-v2-option-group.component\";\nimport { SelectV2Component } from \"./select/select-v2.component\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\nimport { NuiTooltipModule } from \"../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        FormsModule,\n        OverlayModule,\n        PortalModule,\n        NuiButtonModule,\n        NuiIconModule,\n        NuiTooltipModule,\n        CommonModule,\n        NuiOverlayModule,\n    ],\n    declarations: [\n        SelectV2Component,\n        SelectV2OptionComponent,\n        SelectV2OptionGroupComponent,\n        ComboboxV2Component,\n        MarkAsSelectedItemDirective,\n        ComboboxV2OptionHighlightDirective,\n    ],\n    exports: [\n        SelectV2Component,\n        SelectV2OptionComponent,\n        SelectV2OptionGroupComponent,\n        ComboboxV2Component,\n        MarkAsSelectedItemDirective,\n        ComboboxV2OptionHighlightDirective,\n    ],\n    providers: [],\n})\n// Will be renamed in scope of the NUI-5797\nexport class NuiSelectV2Module {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { PopupComponent } from \"./popup-adapter.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\nimport { NuiSelectV2Module } from \"../select-v2/select-v2.module\";\n\n@NgModule({\n    declarations: [PopupComponent],\n    imports: [\n        CommonModule,\n        PortalModule,\n        NuiSelectV2Module,\n        NuiCommonModule,\n        NuiOverlayModule,\n    ],\n    exports: [PopupComponent],\n})\nexport class PopupAdapterModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { PopupContainerComponent } from \"./popup-container.component\";\nimport { PopupToggleDirective } from \"./popup-toggle.directive\";\nimport { PopupDeprecatedComponent } from \"./popup.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { PopupComponent } from \"../popup-adapter/popup-adapter.component\";\nimport { PopupAdapterModule } from \"../popup-adapter/popup-adapter.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [\n        PopupToggleDirective,\n        PopupDeprecatedComponent,\n        PopupContainerComponent,\n    ],\n    imports: [NuiCommonModule, PopupAdapterModule],\n    exports: [PopupToggleDirective, PopupDeprecatedComponent, PopupComponent],\n})\nexport class NuiPopupModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { SwitchComponent } from \"./switch.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [SwitchComponent],\n    imports: [NuiCommonModule],\n    exports: [SwitchComponent],\n    providers: [],\n})\nexport class NuiSwitchModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { MenuComponent } from \"./menu/menu.component\";\nimport { MenuActionComponent } from \"./menu-item/menu-action/menu-action.component\";\nimport { MenuGroupComponent } from \"./menu-item/menu-group/menu-group.component\";\nimport { MenuItemComponent } from \"./menu-item/menu-item/menu-item.component\";\nimport { MenuLinkComponent } from \"./menu-item/menu-link/menu-link.component\";\nimport { MenuOptionComponent } from \"./menu-item/menu-option/menu-option.component\";\nimport { MenuSwitchComponent } from \"./menu-item/menu-switch/menu-switch.component\";\nimport { MenuPopupComponent } from \"./menu-popup/menu-popup.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiCheckboxModule } from \"../checkbox/checkbox.module\";\nimport { NuiDividerModule } from \"../divider/divider.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiPopupModule } from \"../popup/popup.module\";\nimport { NuiSwitchModule } from \"../switch/switch.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiButtonModule,\n        NuiCheckboxModule,\n        NuiIconModule,\n        NuiPopupModule,\n        NuiDividerModule,\n        NuiSwitchModule,\n    ],\n    exports: [\n        MenuActionComponent,\n        MenuComponent,\n        MenuGroupComponent,\n        MenuItemComponent,\n        MenuLinkComponent,\n        MenuOptionComponent,\n        MenuPopupComponent,\n        MenuSwitchComponent,\n    ],\n    declarations: [\n        MenuActionComponent,\n        MenuComponent,\n        MenuGroupComponent,\n        MenuItemComponent,\n        MenuLinkComponent,\n        MenuOptionComponent,\n        MenuPopupComponent,\n        MenuSwitchComponent,\n    ],\n})\nexport class NuiMenuModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Directive,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n} from \"@angular/core\";\nimport { ControlValueAccessor } from \"@angular/forms\";\nimport _includes from \"lodash/includes\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isFunction from \"lodash/isFunction\";\nimport _isNil from \"lodash/isNil\";\nimport _isObject from \"lodash/isObject\";\nimport _isString from \"lodash/isString\";\nimport _some from \"lodash/some\";\nimport { map } from \"rxjs/operators\";\n\nimport { ISelectChangedEvent, ISelectGroup } from \"./public-api\";\nimport { UtilService } from \"../../services/util.service\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n/**\n * @deprecated in v11 - Use BaseSelectV2 instead - Removal: NUI-5796\n */\n@Directive()\nexport abstract class BaseSelect\n    implements OnInit, OnChanges, ControlValueAccessor, NuiFormFieldControl\n{\n    /**\n     * The option to disable the select.\n     */\n    @Input() isDisabled: boolean;\n    /**\n     * The option to make select inline.\n     */\n    @Input() inline: boolean;\n    /**\n     * The option to fill width of a container.\n     */\n    @Input() justified: boolean;\n    /**\n     * Array of values that are bound to the repeat of dropdown items. If you want to have grouped data you need to pass\n     * data as ISelectGroup[].\n     */\n    @Input() itemsSource: any[] | ISelectGroup[];\n    /**\n     * Receives item that will be selected before user starts to communicate with select component\n     */\n    @Input() value: any;\n    /**\n     * The icon to be rendered.\n     */\n    @Input() icon: string;\n    /**\n     * Template for formatting selected item on the dropdown button. Used only with nui-select.\n     */\n    @Input() displayFormat: string;\n    /**\n     * Name of the item property that will be shown in the dropdown menu.\n     */\n    @Input() displayValue: string;\n    /**\n     * Name of the item property that will be used as the model.\n     */\n    @Input() modelValue: string;\n    /**\n     * Value used as a placeholder for the select.\n     */\n    @Input() placeholder: string;\n    /**\n     * Needed to provide own template for every item in select you need to link `customTemplate` input with `TemplateRef`\n     * that represents custom template\n     */\n    @Input() customTemplate: TemplateRef<string>;\n    /**\n     * Input to apply error state styles\n     */\n    @Input() isInErrorState: boolean;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"\";\n\n    /**\n     * Value for enabling remove value feature\n     */\n    @Input() isRemoveValueEnabled: boolean = false;\n    /**\n     *\n     * Change event. To subscribe to it you should pass a function, argument of which is ISelectChangeEvent object.\n     */\n    @Output() changed = new EventEmitter<ISelectChangedEvent<any>>();\n\n    @Output() valueChange = this.changed.pipe(map(({ newValue }) => newValue));\n\n    public name: string;\n    public selectedItem: any;\n    public displayValueFn: (params: { item: any }) => string;\n    public itemToSelect: any;\n    public inputValue: string;\n\n    protected constructor(protected utilService: UtilService) {}\n\n    public ngOnInit(): void {\n        this.selectedItem = this.value;\n        this.inputValue = this.value ? this.value : \"\";\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"value\"] && !changes[\"value\"].firstChange) {\n            const value = changes[\"value\"].currentValue;\n            const isInArray = this.displayValue\n                ? _some(this.itemsSource, value)\n                : _includes(this.itemsSource, value);\n\n            if (isInArray) {\n                this.select(changes[\"value\"].currentValue);\n            }\n        }\n\n        if (changes.itemsSource && this.selectedItem && this.modelValue) {\n            if (_isString(this.selectedItem)) {\n                const newItemsSource = changes.itemsSource.currentValue as\n                    | any[]\n                    | ISelectGroup[];\n\n                const itemToSelect = newItemsSource.find(\n                    (i) => i[this.modelValue] === this.selectedItem\n                );\n                if (itemToSelect) {\n                    this.select(itemToSelect);\n                }\n            }\n        }\n    }\n\n    abstract displayPlaceholder(): boolean;\n\n    abstract handleBlur(event: any): void;\n\n    public getItemDisplay(item: any): any {\n        if (_isNil(item)) {\n            return \"\";\n        }\n\n        if (this.displayValue) {\n            return item[this.displayValue];\n        } else if (_isFunction(this.displayValueFn)) {\n            const value = this.displayValueFn({ item });\n\n            if (value) {\n                return value;\n            }\n        }\n\n        return item;\n    }\n\n    public getDisplayValueFormatted(item: any): string {\n        if (_isNil(item)) {\n            return \"\";\n        }\n\n        if (this.displayFormat) {\n            const displayedItem = this.getItemDisplay(item);\n\n            // handle the case where item isn\"t empty\n            // but is garbage w.r.t this.displayValue\n            if (_isNil(displayedItem)) {\n                return \"\";\n            }\n\n            return this.utilService.formatString(\n                this.displayFormat,\n                displayedItem\n            );\n        }\n\n        return this.getItemDisplay(item);\n    }\n\n    public getIconColor(): string {\n        return this.isDisabled ? \"gray\" : \"primary-blue\";\n    }\n\n    public isItemSelected(item: any): boolean {\n        const selectedItem = this.getSelectedItem();\n        const currentItem =\n            this.displayValue && !_isObject(selectedItem)\n                ? item[this.displayValue]\n                : item;\n\n        return _isEqual(selectedItem, currentItem);\n    }\n\n    public getSelectedItem(): any {\n        if (!_isNil(this.itemToSelect)) {\n            return this.itemToSelect;\n        }\n\n        return this.selectedItem;\n    }\n\n    public select(item: any): void {\n        const oldValue = this.selectedItem;\n        if (!_isEqual(oldValue, item)) {\n            const newValue = this.getItemModel(item);\n            this.changed.emit({ newValue: newValue, oldValue });\n            this.changeValue(newValue);\n        } else if (item === \"\") {\n            // Making this check to trigger reactive form validation if initial value is set to empty string\n            // after focus and blur they will be equal and after blur changeValue is not triggered and combobox is pristine.\n            this.changeValue(\"\");\n        }\n    }\n\n    public getItemModel(item: any): any {\n        return item && this.modelValue ? item[this.modelValue] : item;\n    }\n\n    public onChange(value: any): void {}\n\n    public onTouched(): void {}\n\n    public writeValue(value: any): void {\n        let selectedItem: any;\n        if (this.modelValue && this.itemsSource && this.itemsSource.length) {\n            selectedItem = this.itemsSource.find(\n                (item) => this.getItemModel(item) === value\n            );\n        } else {\n            selectedItem = value;\n        }\n        this.selectedItem = selectedItem;\n\n        this.inputValue = _isObject(selectedItem)\n            ? this.getItemDisplay(selectedItem)\n            : selectedItem;\n    }\n\n    public registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public changeValue(value: any): void {\n        this.writeValue(value);\n        this.onChange(value);\n        this.onTouched();\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { animate, style, transition, trigger } from \"@angular/animations\";\nimport {\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    HostBinding,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { ButtonIcon, SpinnerSize } from \"./public-api\";\nimport { LoggerService } from \"../../services/log-service\";\n\n/**\n * <example-url>./../examples/index.html#/spinner</example-url>\n */\n@Component({\n    selector: \"nui-spinner\",\n    templateUrl: \"./spinner.component.html\",\n    styleUrls: [\"./spinner.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    animations: [\n        trigger(\"spinnerAppear\", [\n            transition(\":enter\", [\n                animate(\".2s ease-in-out\", style({ opacity: 1 })),\n            ]),\n            transition(\":leave\", [\n                animate(\".2s ease-in-out\", style({ opacity: 0 })),\n            ]),\n        ]),\n    ],\n    host: {\n        role: \"progressbar\",\n        \"aria-valuemin\": \"0\",\n        \"aria-valuemax\": \"100\",\n        \"[attr.aria-label]\": \"ariaLabel\",\n    },\n    standalone: false,\n})\nexport class SpinnerComponent implements OnChanges, OnDestroy {\n    private static defaultSize: SpinnerSize = SpinnerSize.Small;\n    private showTimer: any;\n    private _size: SpinnerSize;\n    public tooltipText = $localize`Cancel`;\n\n    public showSpinner = false;\n    public isDeterminate = false;\n\n    @HostBinding(\"attr.aria-valuenow\") ariaValueNow: string | undefined;\n\n    @Input() public percent?: number;\n    @Input() public show = false;\n    @Input() public delay = 250;\n    @Input() public allowCancel?: boolean;\n    @Input() public message?: string;\n    @Input() public helpText?: string;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"Spinner\";\n\n    @Output() public cancel = new EventEmitter();\n\n    @Input() public set size(val: SpinnerSize) {\n        const sizes = Object.values(SpinnerSize);\n\n        if (sizes.includes(val)) {\n            this._size = val;\n            return;\n        }\n\n        this.logger.warn(\n            `Allowed sizes for nui-spinner are ${sizes.join(\", \")}. ` +\n                `Default is ${SpinnerComponent.defaultSize}.`\n        );\n\n        this._size = SpinnerComponent.defaultSize;\n    }\n\n    public get size(): SpinnerSize {\n        return this._size || SpinnerComponent.defaultSize;\n    }\n\n    public get icon(): ButtonIcon {\n        return ButtonIcon[this.size];\n    }\n\n    public get showText(): boolean {\n        return this.size !== SpinnerSize.Small;\n    }\n\n    constructor(\n        private logger: LoggerService,\n        private changeDetector: ChangeDetectorRef,\n        private ngZone: NgZone\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes?.percent) {\n            this.ariaValueNow = this.percent ? String(this.percent) : undefined;\n        }\n\n        if (!changes[\"show\"]) {\n            return;\n        }\n\n        this.isDeterminate = this.percent !== undefined;\n\n        this.cancelShowTimer();\n\n        if (this.delay && this.show) {\n            this.ngZone.runOutsideAngular(() => {\n                this.showTimer = setTimeout(() => {\n                    this.ngZone.run(() => {\n                        this.showSpinner = this.show;\n                        this.changeDetector.detectChanges();\n                    });\n                }, this.delay);\n            });\n        } else {\n            this.showSpinner = this.show;\n        }\n    }\n\n    public cancelShowTimer(): void {\n        if (this.showTimer) {\n            clearTimeout(this.showTimer);\n        }\n    }\n\n    public cancelProgress(): void {\n        this.cancel.emit();\n    }\n\n    public ngOnDestroy(): void {\n        this.cancelShowTimer();\n    }\n}\n","<span\n    class=\"nui-icon-busy-circular nui-spinner nui-spinner__container--{{\n        size\n    }}\"\n    *ngIf=\"showSpinner\"\n    [ngClass]=\"{ 'nui-spinner--determinate': isDeterminate }\"\n    [@spinnerAppear]\n>\n    <div class=\"nui-spinner__container\">\n        <svg\n            class=\"nui-spinner__circular\"\n            viewBox=\"25 25 50 50\"\n            *ngIf=\"!isDeterminate\"\n        >\n            <circle\n                class=\"nui-spinner__path-under\"\n                cx=\"50\"\n                cy=\"50\"\n                r=\"22\"\n                fill=\"none\"\n                stroke-width=\"5\"\n                stroke-miterlimit=\"10\"\n            />\n            <circle\n                class=\"nui-spinner__path\"\n                cx=\"50\"\n                cy=\"50\"\n                r=\"22\"\n                fill=\"none\"\n                stroke-width=\"5\"\n                stroke-miterlimit=\"10\"\n            />\n        </svg>\n        <svg\n            class=\"nui-spinner__circular\"\n            viewBox=\"0 0 36 36\"\n            *ngIf=\"isDeterminate\"\n        >\n            <circle\n                class=\"nui-spinner__path-under\"\n                cx=\"18\"\n                cy=\"18\"\n                r=\"15.9155\"\n                fill=\"none\"\n                stroke-width=\"4\"\n                stroke-miterlimit=\"10\"\n            />\n            <circle\n                class=\"nui-spinner__path\"\n                cx=\"18\"\n                cy=\"18\"\n                r=\"15.9155\"\n                fill=\"none\"\n                stroke-width=\"4\"\n                stroke-miterlimit=\"10\"\n                [ngStyle]=\"{ 'stroke-dasharray': percent + ', 100' }\"\n            />\n        </svg>\n\n        <button\n            nui-button\n            type=\"button\"\n            class=\"nui-spinner__cancel\"\n            icon=\"close\"\n            *ngIf=\"allowCancel\"\n            (click)=\"cancelProgress()\"\n            displayStyle=\"action\"\n            [nuiTooltip]=\"tooltipText\"\n        ></button>\n    </div>\n\n    <div class=\"nui-spinner__text-content\" *ngIf=\"showText\">\n        <div class=\"nui-spinner__label\" *ngIf=\"message !== undefined\">\n            <span class=\"nui-text-label nui-spinner__label-item\">{{\n                message\n            }}</span>\n        </div>\n        <span\n            class=\"nui-spinner__hint nui-help-hint\"\n            *ngIf=\"helpText !== undefined\"\n        >\n            {{ helpText }}\n        </span>\n    </div>\n</span>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\n\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n// <example-url>./../examples/index.html#/textbox</example-url>\n\n/**\n * __Name :__\n * NUI Textbox component.\n *\n */\n@Component({\n    selector: \"nui-textbox\",\n    templateUrl: \"./textbox.component.html\",\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => TextboxComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TextboxComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./textbox.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class TextboxComponent\n    implements ControlValueAccessor, NuiFormFieldControl\n{\n    /**\n     * Used to access input and textarea native elements\n     */\n    @ViewChild(\"textboxInput\") public textboxInput: ElementRef;\n    /**\n     * Value used as a label for the text box.\n     */\n    @Input() public caption: string;\n    /**\n     * Use to enable or disable input autocomplete from browser. Default value is \"on\".\n     */\n    @Input() public autocomplete: \"on\" | \"off\" = \"on\";\n    /**\n     * Value used as a info in popover for the text box.\n     */\n    @Input() public info: string;\n\n    /**\n     * Use to set a custom width for the input field.\n     */\n    @Input() public customBoxWidth: string;\n    /**\n     * Event fired when input text is changed.\n     */\n    @Output() public textChange = new EventEmitter<string | number>();\n    /**\n     * The option to disable the text box.\n     */\n    @Input() public disabled = false;\n    /**\n     * Help content provided below the text box.\n     */\n    @Input() public hint = \"\";\n    /**\n     * Name of the element.\n     */\n    @Input() public name: string;\n    /**\n     * Value used as a placeholder for the text box.\n     */\n    @Input() public placeholder = \"\";\n    /**\n     * The option to make the text box read only.\n     */\n    @Input() public readonly = false;\n    /**\n     * Makes textbox multiline (textarea), specifies rows count\n     */\n    @Input() public rows = 1;\n\n    /**\n     * Use to set type of input (number, password etc.).\n     */\n    @Input() public type = \"text\";\n\n    /**\n     * Input initial value\n     */\n    @Input() public value: string;\n\n    /**\n     * Input to apply error state styles\n     */\n    @Input() public isInErrorState: boolean = false;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"Textbox input\";\n\n    /**\n     * Input to apply busy state and show spinner\n     */\n    @Input() public isBusy: boolean;\n\n    /**\n     * Event fired when textbox is focused out.\n     */\n    @Output() blurred: EventEmitter<any> = new EventEmitter<any>();\n\n    // i18n nui_textbox_optional\n    private optionalText = \"Optional\";\n\n    public focus(): void {\n        this.textboxInput.nativeElement.focus();\n    }\n\n    public onBlurEventEmit(): void {\n        this._onTouched();\n        this.blurred.emit(this.value);\n    }\n\n    public onChangeEvent($event: any): void {\n        if ($event.target.value !== this.value) {\n            this.changeValue($event);\n            this.textChange.emit(this.value);\n        }\n    }\n\n    onChange(value: any): void {}\n\n    _onTouched(): void {}\n\n    public writeValue(value: string): void {\n        this.value = value;\n    }\n\n    public registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this._onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    private changeValue(event: any) {\n        this.writeValue(event.target.value);\n        this.onChange(this.value);\n    }\n}\n","<div\n    class=\"nui-textbox\"\n    [class.nui-textbox--disabled]=\"disabled\"\n    [class.has-error]=\"isInErrorState\"\n>\n    <div class=\"has-feedback\" [ngStyle]=\"{ width: customBoxWidth }\">\n        <input\n            *ngIf=\"!rows || rows <= 1\"\n            class=\"form-control input-control nui-textbox__input\"\n            value=\"{{ value }}\"\n            [autocomplete]=\"autocomplete\"\n            [disabled]=\"disabled\"\n            [attr.name]=\"name\"\n            [type]=\"type\"\n            (blur)=\"onBlurEventEmit()\"\n            (input)=\"onChangeEvent($event)\"\n            [placeholder]=\"placeholder\"\n            [readonly]=\"readonly\"\n            [attr.aria-label]=\"ariaLabel\"\n            [attr.aria-readonly]=\"readonly\"\n            [attr.aria-invalid]=\"isInErrorState\"\n            #textboxInput\n        />\n\n        <textarea\n            *ngIf=\"rows > 1\"\n            class=\"form-control input-control nui-textbox__input\"\n            value=\"{{ value }}\"\n            [rows]=\"rows\"\n            [disabled]=\"disabled\"\n            [attr.name]=\"name\"\n            (blur)=\"onBlurEventEmit()\"\n            (input)=\"onChangeEvent($event)\"\n            [placeholder]=\"placeholder\"\n            [readonly]=\"readonly\"\n            [attr.aria-label]=\"ariaLabel\"\n            [attr.aria-readonly]=\"readonly\"\n            [attr.aria-invalid]=\"isInErrorState\"\n            #textboxInput\n        ></textarea>\n\n        <div class=\"form-control-feedback nui-textbox__busy\">\n            <nui-spinner [show]=\"isBusy\"></nui-spinner>\n        </div>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { FocusMonitor, FocusOrigin } from \"@angular/cdk/a11y\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport _debounce from \"lodash/debounce\";\nimport _escape from \"lodash/escape\";\nimport _every from \"lodash/every\";\nimport _find from \"lodash/find\";\nimport _flatMap from \"lodash/flatMap\";\nimport _includes from \"lodash/includes\";\nimport _isArray from \"lodash/isArray\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isNil from \"lodash/isNil\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport _some from \"lodash/some\";\nimport _unescape from \"lodash/unescape\";\nimport { Subject, Subscription } from \"rxjs\";\n\nimport { LoggerService } from \"../../../services/log-service\";\nimport { UtilService } from \"../../../services/util.service\";\nimport { NuiFormFieldControl } from \"../../form-field/public-api\";\nimport { MenuActionComponent } from \"../../menu/menu-item/menu-action/menu-action.component\";\nimport { MenuGroupComponent } from \"../../menu/menu-item/menu-group/menu-group.component\";\nimport { MenuItemBaseComponent } from \"../../menu/menu-item/menu-item/menu-item-base\";\nimport { MenuKeyControlService } from \"../../menu/menu-key-control.service\";\nimport { PopupComponent } from \"../../popup-adapter/popup-adapter.component\";\nimport { BaseSelect } from \"../base-select\";\nimport { ISelectGroup } from \"../public-api\";\n\n// <example-url>./../examples/index.html#/combobox</example-url>\n/**\n * @deprecated in v11 - Use ComboboxV2Component instead - Removal: NUI-5796\n */\n@Component({\n    selector: \"nui-combobox\",\n    host: { class: \"nui-combobox\" },\n    templateUrl: \"./combobox.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: forwardRef(() => ComboboxComponent),\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => ComboboxComponent),\n            multi: true,\n        },\n        MenuKeyControlService,\n    ],\n    styleUrls: [\"./combobox.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class ComboboxComponent\n    extends BaseSelect\n    implements OnInit, OnChanges, OnDestroy, AfterViewInit\n{\n    /**\n     * The option to clear the combobox if the value entered is not in array.\n     */\n    @Input() clearOnBlur: boolean;\n    /**\n     * A value that tells popup to be attached right after it's parent declaration or in <body>\n     */\n    @Input() appendToBody: boolean;\n\n    public isOpened: boolean;\n    public openControl: Subject<Event> = new Subject<Event>();\n\n    @ViewChildren(MenuActionComponent)\n    public menuItems: QueryList<MenuActionComponent>;\n    @ViewChild(\"comboboxToggle\", { read: ElementRef })\n    comboboxToggle: ElementRef;\n    @ViewChild(\"scrollContainer\", { read: ElementRef })\n    scrollContainer: ElementRef;\n    @ViewChildren(MenuGroupComponent)\n    public menuGroups: QueryList<MenuGroupComponent>;\n    @ViewChild(PopupComponent) popup: PopupComponent;\n    @ViewChild(PopupComponent, { read: ElementRef, static: true })\n    popupRef: ElementRef; // static: true because of getWidth\n\n    private debouncedBlur = _debounce(() => {\n        this.handleBlur();\n    }, 300);\n\n    private comboboxEventListeners: Function[] = [];\n    private itemsChangeSubscription: Subscription;\n    private focusMonitorSubscription: Subscription;\n\n    @HostBinding(\"class.nui-combobox--justified\")\n    get isJustified(): boolean {\n        return this.justified;\n    }\n\n    @HostBinding(\"class.nui-combobox--inline\")\n    get isInline(): boolean {\n        return this.inline;\n    }\n\n    constructor(\n        utilService: UtilService,\n        private elRef: ElementRef,\n        private renderer: Renderer2,\n        private changeDetector: ChangeDetectorRef,\n        private keyControlService: MenuKeyControlService,\n        private focusMonitor: FocusMonitor,\n        private logger: LoggerService\n    ) {\n        super(utilService);\n        // Blur is debounced cause when you click on menu item blur is triggered twice: from textbox and when popup is closed.\n        this.comboboxEventListeners.push(\n            this.renderer.listen(this.elRef.nativeElement, \"focusout\", () => {\n                this.debouncedBlur();\n            })\n        );\n\n        this.logger.warn(\n            \"<nui-combobox> is deprecated as of Nova v11. Please use <nui-combobox-v2> instead.\"\n        );\n    }\n\n    public ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n    }\n\n    public displayPlaceholder(): boolean {\n        return !_isUndefined(this.placeholder) && _isEmpty(this.inputValue);\n    }\n\n    public displayPlaceholderValue(): string {\n        return this.displayPlaceholder() ? this.placeholder : \"\";\n    }\n\n    public showIcon(): boolean {\n        return !_isNil(this.icon);\n    }\n\n    public showRightBorder(): boolean {\n        return !this.isRemoveValueDisplayed() && !_isEmpty(this.inputValue);\n    }\n\n    public isRemoveValueDisplayed(): boolean {\n        return this.isRemoveValueEnabled && !_isEmpty(this.inputValue);\n    }\n\n    public ngAfterViewInit(): void {\n        // setting data for key-control service\n        this.setKeyboardManagerServiceData();\n        // initializing key-control manager\n        this.keyControlService.initKeyboardManager();\n\n        // listening to events for key-control\n        this.comboboxEventListeners.push(\n            this.renderer.listen(\n                this.elRef.nativeElement,\n                \"keydown\",\n                (event: KeyboardEvent) => {\n                    this.keyControlService.handleKeydown(event);\n                }\n            )\n        );\n\n        // listen to focus event to open popup using tab key\n        // The FocusMonitor is an injectable service that can be used to listen for changes in the focus state of an element.\n        // It's more powerful than just listening for focus or blur events because it tells you how the element was focused\n        // (via mouse, keyboard, touch, or programmatically).\n        // It also allows listening for focus on descendant elements if desired as it is done below by passing second\n        // argument with value true in the monitor method of FocusMonitor.\n        this.focusMonitorSubscription = this.focusMonitor\n            .monitor(this.comboboxToggle.nativeElement, true)\n            .subscribe((origin: FocusOrigin) => {\n                if (origin === \"keyboard\") {\n                    if (!this.popup.popupToggle.disabled) {\n                        if (!this.isOpened) {\n                            this.openControl.next(new FocusEvent(\"focusin\"));\n                        }\n                    }\n                }\n            });\n\n        // when datasource change we need to re-initialize key control stuff\n        this.itemsChangeSubscription = this.menuItems.changes.subscribe(\n            (changes: QueryList<MenuItemBaseComponent>) => {\n                this.keyControlService.initKeyboardManager();\n                this.keyControlService.setActiveItem(0);\n                this.changeDetector.detectChanges();\n            }\n        );\n\n        // when appendToBody is set width of the popup element should be calculated\n        // To get actual value detectChanges() call afterViewInit is needed\n        this.changeDetector.detectChanges();\n    }\n\n    private setKeyboardManagerServiceData(): void {\n        this.keyControlService.menuGroups = this.menuGroups;\n        this.keyControlService.menuItems = this.menuItems;\n        this.keyControlService.popup = this.popup;\n        this.keyControlService.menuToggle = this.comboboxToggle;\n    }\n\n    public openChange(currentValue: boolean): void {\n        this.keyControlService.setActiveItem(-1);\n        this.isOpened = currentValue;\n    }\n\n    public onInputChange(value: any): void {\n        const oldValue = this.selectedItem;\n        const newValue = this.displayValue\n            ? this.findObjectByValue(value)\n            : value;\n\n        this.changeValue(newValue);\n        this.changed.emit({ newValue, oldValue });\n    }\n\n    public handleBlur(): void {\n        const newValue = this.displayValue\n            ? this.findObjectByValue(_unescape(this.inputValue))\n            : _unescape(this.inputValue);\n        const isGroupedData = this.isGroupedData(this.itemsSource);\n        let isInArray: boolean;\n        if (isGroupedData) {\n            const flattenedData = _flatMap(\n                this.itemsSource,\n                (group) => group.items\n            );\n            isInArray = this.displayValue\n                ? _some(flattenedData, newValue)\n                : _includes(flattenedData, newValue);\n        } else {\n            isInArray = this.displayValue\n                ? _some(this.itemsSource, newValue)\n                : _includes(this.itemsSource, newValue);\n        }\n        const valueToSelect =\n            this.clearOnBlur && !isInArray ? \"\" : this.selectedItem;\n        this.select(valueToSelect);\n    }\n\n    public select(item: any): void {\n        super.select(item);\n    }\n\n    public findObjectByValue(value: any): any {\n        let arrayOfValues: any[];\n\n        // for itemsSource passed as ISelectGroup[]\n        if (this.isGroupedData(this.itemsSource)) {\n            arrayOfValues = _flatMap(this.itemsSource, (group) => group.items);\n        } else {\n            arrayOfValues = this.itemsSource;\n        }\n\n        const foundObject = _find(arrayOfValues, [this.displayValue, value]);\n        return foundObject ? foundObject : value;\n    }\n\n    public isGroupedData(\n        itemsSource: any[] | ISelectGroup[]\n    ): itemsSource is ISelectGroup[] {\n        return _every(itemsSource, (group) => _isArray(group.items));\n    }\n\n    public getItemDisplay(item: any): string {\n        return super.getItemDisplay(item);\n    }\n\n    public escapeItem(item: string): string {\n        return _escape(item);\n    }\n\n    public unescapeItem(item: string): string {\n        return _unescape(item);\n    }\n\n    public ngOnDestroy(): void {\n        if (this.itemsChangeSubscription) {\n            this.itemsChangeSubscription.unsubscribe();\n        }\n        if (this.comboboxEventListeners.length > 0) {\n            this.comboboxEventListeners.forEach((listener) => listener());\n        }\n        if (this.focusMonitorSubscription) {\n            this.focusMonitorSubscription.unsubscribe();\n        }\n    }\n\n    public getWidth(): string {\n        return this.customTemplate\n            ? \"auto\"\n            : this.popupRef.nativeElement.getBoundingClientRect().width;\n    }\n\n    public getPopupContextClass(): string {\n        return `${\n            this.justified ? \"nui-combobox--justified \" : \"\"\n        }nui-combobox-popup-host`;\n    }\n\n    public clearValue(event: Event): void {\n        if (this.isRemoveValueEnabled) {\n            this.changeValue(null);\n            event.stopPropagation(); // To avoid triggering dropdown open/close\n            this.popup.closePopup();\n        }\n    }\n}\n","<div class=\"nui-combobox__layout-block\" [class.disabled]=\"isDisabled\">\n    <nui-popup\n        [class.custom-template]=\"customTemplate\"\n        (opened)=\"openChange($event)\"\n        [manualOpenControl]=\"openControl\"\n        [width]=\"getWidth()\"\n        [contextClass]=\"getPopupContextClass()\"\n        [appendToBody]=\"appendToBody\"\n    >\n        <div class=\"nui-combobox__icon\" *ngIf=\"!!icon\">\n            <nui-icon\n                [icon]=\"icon\"\n                aria-hidden=\"true\"\n                [iconColor]=\"getIconColor()\"\n            ></nui-icon>\n        </div>\n        <div\n            class=\"nui-combobox__container\"\n            [class.has-error]=\"isInErrorState\"\n            [class.nui-combobox__editable-container--disabled]=\"isDisabled\"\n            nuiPopupToggle\n            [disabled]=\"isDisabled\"\n        >\n            <nui-textbox\n                class=\"nui-combobox__input\"\n                [class.nui-combobox__input-icon]=\"showIcon()\"\n                [class.nui-combobox__right-border]=\"showRightBorder()\"\n                [class.nui-combobox__input--with-remove-value]=\"\n                    isRemoveValueDisplayed()\n                \"\n                type=\"text\"\n                autocomplete=\"off\"\n                [value]=\"unescapeItem(inputValue)\"\n                [placeholder]=\"displayPlaceholderValue()\"\n                (textChange)=\"onInputChange($event)\"\n                [disabled]=\"isDisabled\"\n                [isInErrorState]=\"isInErrorState\"\n                [ariaLabel]=\"ariaLabel\"\n                #comboboxToggle\n            >\n            </nui-textbox>\n            <button\n                tabindex=\"-1\"\n                *ngIf=\"isRemoveValueDisplayed()\"\n                nui-button\n                class=\"nui-combobox__remove-value\"\n                (click)=\"clearValue($event)\"\n                [isEmpty]=\"true\"\n                icon=\"remove\"\n                title=\"remove\"\n                displayStyle=\"action\"\n                type=\"button\"\n            ></button>\n            <button\n                tabindex=\"-1\"\n                class=\"nui-combobox__toggle\"\n                nui-button\n                [isEmpty]=\"true\"\n                icon=\"caret-down\"\n                title=\"toggle\"\n                displayStyle=\"action\"\n                type=\"button\"\n                [class.disabled]=\"isDisabled\"\n                [disabled]=\"isDisabled\"\n            ></button>\n        </div>\n        <div popupAreaContent>\n            <div #scrollContainer class=\"nui-menu nui-combobox__menu\">\n                <ng-container *ngFor=\"let item of itemsSource\">\n                    <nui-menu-action\n                        tabindex=\"-1\"\n                        *ngIf=\"!item.items\"\n                        [class.item-selected]=\"isItemSelected(item)\"\n                        (actionDone)=\"select(item)\"\n                    >\n                        <span\n                            tabindex=\"-1\"\n                            *ngIf=\"!customTemplate\"\n                            [innerHTML]=\"\n                                getItemDisplay(item)\n                                    | nuiHighlight\n                                        : (isItemSelected(item)\n                                              ? ''\n                                              : inputValue)\n                            \"\n                        ></span>\n                        <ng-container\n                            [ngTemplateOutlet]=\"customTemplate\"\n                            [ngTemplateOutletContext]=\"{ context: item }\"\n                        >\n                        </ng-container>\n                    </nui-menu-action>\n                    <nui-menu-group\n                        tabindex=\"-1\"\n                        *ngIf=\"item.items\"\n                        [header]=\"item.header\"\n                    >\n                        <nui-menu-action\n                            *ngFor=\"let groupedItem of item.items\"\n                            [class.item-selected]=\"isItemSelected(groupedItem)\"\n                            (actionDone)=\"select(groupedItem)\"\n                        >\n                            <span\n                                tabindex=\"-1\"\n                                [innerHTML]=\"\n                                    getItemDisplay(groupedItem)\n                                        | nuiHighlight\n                                            : (isItemSelected(groupedItem)\n                                                  ? ''\n                                                  : inputValue)\n                                \"\n                            ></span>\n                        </nui-menu-action>\n                    </nui-menu-group>\n                </ng-container>\n            </div>\n        </div>\n    </nui-popup>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./menu/menu.component\";\nexport * from \"./menu-item/menu-action/menu-action.component\";\nexport * from \"./menu-item/menu-item/menu-item-base\";\nexport * from \"./menu-item/menu-item/menu-item.component\";\nexport * from \"./menu-item/menu-link/menu-link.component\";\nexport * from \"./menu-item/menu-option/menu-option.component\";\nexport * from \"./menu-item/menu-switch/menu-switch.component\";\nexport * from \"./menu-item/menu-group/menu-group.component\";\nexport * from \"./menu-popup/menu-popup.component\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport _debounce from \"lodash/debounce\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isNil from \"lodash/isNil\";\nimport _toString from \"lodash/toString\";\n\nimport { BaseSelect } from \"./base-select\";\nimport { LoggerService } from \"../../services/log-service\";\nimport { UtilService } from \"../../services/util.service\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\nimport { MenuComponent } from \"../menu\";\n\n// <example-url>./../examples/index.html#/select</example-url>\n/**\n * @deprecated in v11 - Use SelectV2Component instead - Removal: NUI-5796\n */\n@Component({\n    selector: \"nui-select\",\n    host: { class: \"nui-select\" },\n    templateUrl: \"./select.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => SelectComponent),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => SelectComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./select.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class SelectComponent\n    extends BaseSelect\n    implements OnInit, OnChanges, OnDestroy\n{\n    /**\n     * A value that tells popup to be attached right after it's parent declaration or in <body>\n     */\n    @Input() appendToBody: boolean;\n\n    /**\n     * Input that indicates text which is displayed if \"isRemoveValueEnabled\" set to true\n     */\n    @Input() removeValueText: string = \"Unspecified\";\n\n    /**\n     * Callback event that provides split-button behavior and interaction.\n     */\n    @Output() secondaryAction = new EventEmitter<any>();\n\n    private debouncedBlur = _debounce(() => {\n        this.handleBlur();\n    }, 300);\n\n    @HostBinding(\"class.nui-select--justified\")\n    get isJustified(): boolean {\n        return this.justified;\n    }\n\n    @HostBinding(\"class.nui-select--inline\")\n    get isInline(): boolean {\n        return this.inline;\n    }\n\n    @ViewChild(\"menu\") public menu: MenuComponent;\n\n    constructor(\n        utilService: UtilService,\n        private renderer: Renderer2,\n        public elRef: ElementRef,\n        private logger: LoggerService\n    ) {\n        super(utilService);\n        this.logger.warn(\n            \"<nui-select> is deprecated as of Nova v11. Please use <nui-select-v2> instead.\"\n        );\n    }\n\n    private unsubscriber: () => void;\n\n    public ngOnInit(): void {\n        super.ngOnInit();\n        this.unsubscriber = this.renderer.listen(\n            this.elRef.nativeElement,\n            \"focusout\",\n            () => {\n                // Blur is debounced cause when you click on menu item blur is triggered twice: from textbox and when popup is closed.\n                this.debouncedBlur();\n            }\n        );\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n    }\n\n    public displayPlaceholder(): boolean {\n        return !_isNil(this.placeholder) && _isEmpty(this.getSelectedItem());\n    }\n\n    public displayedValue(): string {\n        return this.displayPlaceholder()\n            ? this.placeholder\n            : _toString(this.getDisplayValueFormatted(this.getSelectedItem()));\n    }\n\n    public handleBlur(): void {\n        this.select(this.selectedItem);\n    }\n\n    public getWidth(): string {\n        // when appendToBody=true popup goes to body, so it's out of nui-select and it's width needs to be set explicitly\n        return this.appendToBody || this.isJustified\n            ? this.elRef.nativeElement.getBoundingClientRect().width + \"px\"\n            : \"\";\n    }\n\n    public ngOnDestroy(): void {\n        if (this.unsubscriber) {\n            this.unsubscriber();\n        }\n    }\n}\n","<div\n    class=\"nui-select__layout-block\"\n    [class.placeholder-displayed]=\"displayPlaceholder()\"\n    [class.custom-template]=\"customTemplate\"\n    [class.disabled]=\"isDisabled\"\n>\n    <ng-container *ngIf=\"itemsSource; else transclusionContent\">\n        <nui-menu\n            #menu\n            [class.has-error]=\"isInErrorState\"\n            [title]=\"displayedValue()\"\n            [isDisabled]=\"isDisabled\"\n            [appendToBody]=\"appendToBody\"\n            [widthOfPopup]=\"getWidth()\"\n            [contextClass]=\"\n                (justified ? 'nui-select--justified ' : '') +\n                'nui-select-popup-host'\n            \"\n            [attr.aria-label]=\"ariaLabel\"\n        >\n            <nui-menu-action\n                *ngIf=\"isRemoveValueEnabled\"\n                (actionDone)=\"select(null)\"\n            >\n                {{ removeValueText }}\n            </nui-menu-action>\n            <ng-container *ngFor=\"let item of itemsSource\">\n                <nui-menu-action\n                    *ngIf=\"!item.items\"\n                    [class.item-selected]=\"isItemSelected(item)\"\n                    (actionDone)=\"select(item)\"\n                >\n                    <ng-container *ngIf=\"!customTemplate\">{{\n                        getItemDisplay(item)\n                    }}</ng-container>\n                    <ng-container\n                        [ngTemplateOutlet]=\"customTemplate\"\n                        [ngTemplateOutletContext]=\"{ context: item }\"\n                    >\n                    </ng-container>\n                </nui-menu-action>\n                <nui-menu-group *ngIf=\"item.items\" [header]=\"item.header\">\n                    <nui-menu-action\n                        *ngFor=\"let groupedItem of item.items\"\n                        [class.item-selected]=\"isItemSelected(groupedItem)\"\n                        (actionDone)=\"select(groupedItem)\"\n                    >\n                        {{ getItemDisplay(groupedItem) }}\n                    </nui-menu-action>\n                </nui-menu-group>\n            </ng-container>\n        </nui-menu>\n    </ng-container>\n    <ng-template #transclusionContent>\n        <ng-content></ng-content>\n    </ng-template>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const regexpValidation = {\n    singleCharNumeric: /^[+-.,]|[0-9]|[Ee]/,\n    multiCharNumeric: /^([-+]?\\d*\\.?\\d+)(?:[eE]([-+]?\\d+))?$/,\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n    ControlValueAccessor,\n    FormControl,\n    NG_VALIDATORS,\n    NG_VALUE_ACCESSOR,\n    ValidationErrors,\n} from \"@angular/forms\";\nimport isNumber from \"lodash/isNumber\";\nimport isUndefined from \"lodash/isUndefined\";\nimport round from \"lodash/round\";\n\nimport { KEYBOARD_CODE } from \"../../../constants/keycode.constants\";\nimport { regexpValidation } from \"../../../constants/regex.constants\";\nimport { NuiFormFieldControl } from \"../../form-field/public-api\";\n\n// <example-url>./../examples/index.html#/textbox/textbox-number</example-url>\n\n@Component({\n    selector: \"nui-textbox-number\",\n    templateUrl: \"./textbox-number.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TextboxNumberComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => TextboxNumberComponent),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => TextboxNumberComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"../textbox.component.less\", \"./textbox-number.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        role: \"spinbutton\",\n        \"[attr.aria-label]\": \"ariaLabel\",\n        \"[attr.aria-valuemin]\": \"minValue || null\",\n        \"[attr.aria-valuemax]\": \"maxValue || null\",\n        \"[attr.aria-valuenow]\": \"value || 0\",\n    },\n    standalone: false,\n})\nexport class TextboxNumberComponent\n    implements ControlValueAccessor, NuiFormFieldControl, OnChanges\n{\n    private static createRangeValidator(\n        min: number,\n        max: number\n    ): (c: FormControl) => ValidationErrors | null {\n        const rangeValidator = (c: FormControl) => {\n            if (!c.value && c.value !== 0) {\n                return null;\n            }\n\n            if (\n                (!isUndefined(max) && c.value > max) ||\n                (!isUndefined(min) && c.value < min)\n            ) {\n                return {\n                    range: {\n                        given: c.value,\n                        max,\n                        min,\n                    },\n                };\n            }\n\n            return null;\n        };\n\n        return rangeValidator;\n    }\n\n    /**\n     * Value that is exposed through ControlValueAccessor\n     */\n    @Input() public value: any = null;\n\n    /**\n     * Use to set a custom width for the input field.\n     */\n    @Input() public customBoxWidth: string;\n    /**\n     * The option to disable the textboxNumber.\n     */\n    @Input() public disabled = false;\n    /**\n     * Name of the element.\n     */\n    @Input() public name: string;\n    /**\n     * Value used as a placeholder for the text box.\n     */\n    @Input() public placeholder = \"\";\n    /**\n     * The option to make the textboxNumber read only.\n     */\n    @Input() public readonly = false;\n\n    /**\n     * Step by which the value are increased/decreased\n     * when clicking on up/down buttons\n     */\n    @Input() step: number = 1;\n\n    /**\n     * The decimal precision to use for rounding each step increase/decrease\n     * when clicking the up/down buttons\n     */\n    @Input() stepPrecision: number = 10;\n\n    /**\n     * Input to apply error state styles\n     */\n    @Input() public isInErrorState: boolean = false; // TODO: do we need to hook this up?\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"Textbox number input\";\n\n    /**\n     * Minimum value of textBoxNumber component\n     */\n    @Input() public minValue: number;\n    /**\n     * Maximum value of textBoxNumber component\n     */\n    @Input() public maxValue: number;\n    /**\n     * Event fired when textBoxNumber is focused out.\n     */\n    @Output() blurred: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output() valueChange: EventEmitter<number> = new EventEmitter<number>();\n\n    @ViewChild(\"numberInput\", { static: true })\n    private input: ElementRef<HTMLFieldSetElement>;\n\n    public formControl: FormControl;\n\n    public isRepeatable = true;\n\n    private validatorFn: (c: FormControl) => ValidationErrors | null;\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"minValue\"] || changes[\"maxValue\"]) {\n            this.validatorFn = TextboxNumberComponent.createRangeValidator(\n                this.minValue,\n                this.maxValue\n            );\n        }\n    }\n\n    public onBlurEventEmit(): void {\n        this.onTouched();\n        this.blurred.emit(this.value);\n    }\n\n    public addNumber(valueChange: number): void {\n        if (isUndefined(this.value) || isNaN(this.value)) {\n            this.value = 0;\n        }\n        // Explicitly converting current value to number because it can also be a string, and cause issues, like NUI-5599\n        const newValue = this.clampToRange(Number(this.value) + valueChange);\n\n        this.onValueChange(round(newValue, this.stepPrecision));\n    }\n\n    public onValueChange(value: any): void {\n        this.value = value;\n\n        setTimeout(() => {\n            this.onChange(this.value);\n            this.valueChange.emit(this.value);\n\n            this.onTouched();\n        });\n    }\n\n    public onChange(value: any): void {}\n\n    public onTouched(): void {}\n\n    public writeValue(value: any): void {\n        this.value = value;\n    }\n\n    public registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n\n    public compareMin(): boolean {\n        return this.value <= this.minValue;\n    }\n\n    public compareMax(): boolean {\n        return this.value >= this.maxValue;\n    }\n\n    public validate(c: FormControl): ValidationErrors | null {\n        this.formControl = c;\n        return (\n            (this.validatorFn ? this.validatorFn(c) : null) ||\n            this.nativeValidator()\n        );\n    }\n\n    public hasError(): boolean {\n        return (\n            (this.formControl?.touched || this.formControl?.dirty) &&\n            !this.formControl?.valid\n        );\n    }\n\n    private nativeValidator(): ValidationErrors | null {\n        if (this.input.nativeElement.validity.valid) {\n            return null;\n        }\n\n        return { format: \"Invalid input\" };\n    }\n\n    private clampToRange(value: number): number {\n        if (!isNumber(value)) {\n            return value;\n        }\n        if (value > this.maxValue) {\n            return this.maxValue;\n        }\n        if (value < this.minValue) {\n            return this.minValue;\n        }\n        return value;\n    }\n\n    // We need to restrict user input because safari does not prevent non numerical input in type 'number'\n    public preventNonNumericalPaste(event: ClipboardEvent): void {\n        const pastedString: string | undefined =\n            event.clipboardData?.getData(\"text/plain\");\n        if (!pastedString) {\n            throw new Error(\"Unable to parse clipboardData\");\n        }\n        this.preventDefaultEventBehavior(\n            event,\n            pastedString,\n            regexpValidation.multiCharNumeric\n        );\n    }\n\n    public preventNonNumericalInput(event: KeyboardEvent): void {\n        const inputString: string = event.key;\n        if (!this.isMetaKey(event)) {\n            this.preventDefaultEventBehavior(\n                event,\n                inputString,\n                regexpValidation.singleCharNumeric\n            );\n        }\n    }\n\n    private preventDefaultEventBehavior(\n        event: KeyboardEvent | ClipboardEvent,\n        inputString: string,\n        regexp: RegExp\n    ): void {\n        if (!inputString?.match(regexp)) {\n            event.preventDefault();\n        }\n    }\n\n    private isMetaKey(event: KeyboardEvent): boolean {\n        return (\n            event.ctrlKey ||\n            event.metaKey ||\n            event.code === KEYBOARD_CODE.BACKSPACE ||\n            event.code === KEYBOARD_CODE.DELETE ||\n            event.code === KEYBOARD_CODE.TAB ||\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_LEFT ||\n            event.code === KEYBOARD_CODE.ARROW_RIGHT ||\n            event.code === KEYBOARD_CODE.ARROW_UP\n        );\n    }\n}\n","<div\n    class=\"nui-textbox nui-textbox-number\"\n    [class.nui-textbox--disabled]=\"disabled\"\n    [class.has-error]=\"hasError() || isInErrorState\"\n>\n    <div\n        class=\"has-feedback\"\n        [ngStyle]=\"{ maxWidth: customBoxWidth, minWidth: customBoxWidth }\"\n    >\n        <input\n            class=\"form-control input-control nui-textbox__input\"\n            #numberInput\n            step=\"any\"\n            [disabled]=\"disabled\"\n            type=\"number\"\n            [ngModel]=\"value\"\n            (ngModelChange)=\"onValueChange($event)\"\n            [ngModelOptions]=\"{ standalone: true }\"\n            [min]=\"minValue\"\n            [max]=\"maxValue\"\n            [attr.name]=\"name\"\n            (blur)=\"onBlurEventEmit()\"\n            (keydown)=\"preventNonNumericalInput($event)\"\n            (paste)=\"preventNonNumericalPaste($event)\"\n            [placeholder]=\"placeholder\"\n            [readonly]=\"readonly\"\n            aria-label=\"Textbox number input\"\n        />\n    </div>\n    <span class=\"nui-textbox-number__buttons\">\n        <span class=\"nui-textbox-number__updown nui-textbox-number__up-button\">\n            <button\n                nui-button\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"caret-up\"\n                [isRepeat]=\"isRepeatable\"\n                [disabled]=\"readonly || disabled || compareMax()\"\n                (click)=\"addNumber(+step)\"\n                aria-label=\"Up\"\n            ></button>\n        </span>\n        <span\n            class=\"nui-textbox-number__updown nui-textbox-number__updown-divider\"\n        ></span>\n        <span\n            class=\"nui-textbox-number__updown nui-textbox-number__down-button\"\n        >\n            <button\n                nui-button\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"caret-down\"\n                [isRepeat]=\"isRepeatable\"\n                [disabled]=\"readonly || disabled || compareMin()\"\n                (click)=\"addNumber(-step)\"\n                aria-label=\"Down\"\n            ></button>\n        </span>\n    </span>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\n/**\n * @ignore\n * <example-url>./../examples/index.html#/repeat-item</example-url>\n */\n@Component({\n    selector: \"nui-repeat-item\",\n    templateUrl: \"./repeat-item.component.html\",\n    styleUrls: [\"./repeat-item.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { \"[attr.role]\": \"role\" },\n    standalone: false,\n})\nexport class RepeatItemComponent {\n    @Input() public clickable = false;\n\n    @Input() public nowrap = false;\n\n    @Input() public selected = false;\n\n    @Input() public selectable = false;\n\n    @Output() public rowClicked = new EventEmitter<MouseEvent>();\n\n    get role(): string {\n        return this.selectable ? \"option\" : \"listitem\";\n    }\n}\n","<li\n    class=\"nui-repeat-item\"\n    [class.nui-repeat-item--selected]=\"selected\"\n    [class.text-nowrap]=\"nowrap\"\n    [class.nui-repeat-item--clickable]=\"clickable\"\n    (click)=\"clickable ? rowClicked.emit($event) : null\"\n    tabindex=\"-1\"\n>\n    <div class=\"nui-repeat-item__content\">\n        <ng-content></ng-content>\n    </div>\n</li>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    QueryList,\n    Renderer2,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport _isNil from \"lodash/isNil\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport { Subscription } from \"rxjs\";\n\nimport { DOCUMENT_CLICK_EVENT } from \"../../constants/event.constants\";\nimport { EventBusService } from \"../../services/event-bus.service\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n/*\n * <example-url>./../examples/index.html#/radio-group</example-url>\n */\n@Component({\n    selector: \"nui-radio-group\",\n    template: `<div class=\"nui-radio-group\">\n        <ng-content></ng-content>\n    </div>`,\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => RadioGroupComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => RadioGroupComponent),\n            multi: true,\n        },\n    ],\n    host: { role: \"radiogroup\", \"[attr.aria-label]\": \"ariaLabel || null\" },\n    standalone: false,\n})\nexport class RadioGroupComponent\n    implements AfterContentInit, OnDestroy, ControlValueAccessor\n{\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"\";\n\n    /**\n     * Sets the \"name\" attribute for each radio button in the group\n     */\n    @Input() public name: string;\n\n    /**\n     * Stores the value from selected radio\n     */\n    @Input()\n    get value(): any {\n        return this._value;\n    }\n    set value(newValue: any) {\n        if (this._value !== newValue) {\n            // Set this before proceeding to ensure no circular loop occurs with selection.\n            this._value = newValue;\n\n            this.updateSelectedRadioFromValue();\n            this.checkSelectedRadioButton();\n        }\n    }\n\n    /**\n     * Sets whether the group is disabled\n     */\n    @Input() public disabled?: boolean;\n\n    /**\n     * Emits an event when the radio selection changes\n     */\n    @Output() public valueChange = new EventEmitter<any>();\n\n    @ContentChildren(forwardRef(() => RadioComponent), { descendants: true })\n    private children: QueryList<RadioComponent>;\n    private _value: any = null;\n    private selectedRadio: RadioComponent | null = null;\n    private subscriptions = new Array<Subscription>();\n    constructor(private renderer: Renderer2) {}\n\n    private registerChild(child: RadioComponent): void {\n        this.renderer.setAttribute(\n            child.inputViewContainer.element.nativeElement,\n            \"name\",\n            this.name\n        );\n        this.subscriptions.push(this.subscribeToRadioEvent(child));\n        // timeout to prevent \"expression changed after it has been checked\" error\n        setTimeout(() => {\n            this.setChildDisabled(child);\n        });\n    }\n\n    public ngAfterContentInit(): void {\n        this.children.toArray().forEach((child) => this.registerChild(child));\n        this.children.changes.subscribe(\n            (radioComponentQueryList: QueryList<RadioComponent>) => {\n                this.subscriptions.forEach((sub) => sub.unsubscribe());\n                radioComponentQueryList\n                    .toArray()\n                    .forEach((child) => this.registerChild(child));\n            }\n        );\n    }\n\n    public onChange(value: any): void {}\n\n    public onTouched(): void {}\n\n    public writeValue(value: any): void {\n        this.value = value;\n    }\n\n    public registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        if (this.children) {\n            this.children.toArray().forEach(this.setChildDisabled);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.subscriptions.forEach((sub) => sub.unsubscribe());\n    }\n\n    private setChildDisabled = (child: RadioComponent) => {\n        if (!_isUndefined(this.disabled)) {\n            child.disabled = this.disabled;\n        }\n    };\n\n    private checkSelectedRadioButton() {\n        if (this.selectedRadio && !this.selectedRadio.checked) {\n            this.selectedRadio.checked = true;\n        }\n    }\n\n    private updateSelectedRadioFromValue(): void {\n        // If the value already matches the selected radio, do nothing.\n        const isAlreadySelected =\n            this.selectedRadio !== null &&\n            this.selectedRadio.value === this._value;\n        if (this.children && !isAlreadySelected) {\n            this.children.forEach((radio) => {\n                radio.checked = this.value === radio.value;\n                if (radio.checked) {\n                    this.selectedRadio = radio;\n                }\n            });\n        }\n    }\n\n    private subscribeToRadioEvent(radio: RadioComponent): Subscription {\n        return radio.valueChange.subscribe((value: any) => {\n            this.value = value;\n            this.valueChange.emit(value);\n            if (!radio.keepFormPristine) {\n                this.onChange(this.value);\n                this.onTouched();\n            }\n            this.writeValue(this.value);\n        });\n    }\n}\n\n/**\n * @ignore\n * Should be used only within nui-radio-group.\n */\n@Component({\n    selector: \"nui-radio\",\n    templateUrl: \"./radio.component.html\",\n    styleUrls: [\"./radio.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        \"[class.nui-radio--hovered]\": \"hovered\",\n        \"[class.nui-radio--checked]\": \"checked\",\n    },\n    standalone: false,\n})\nexport class RadioComponent implements OnInit, OnDestroy {\n    /**\n     * Sets the radio instance value\n     */\n    @Input() public value: any;\n\n    /**\n     * Emits an event when the value changes\n     */\n    @Output() public valueChange = new EventEmitter<any>();\n\n    @Input() public hovered: boolean;\n\n    /**\n     * Sets whether the radio button is selected\n     */\n    @Input() public checked = false;\n\n    /**\n     * Adds hint text under the radio button\n     */\n    @Input() public hint?: string;\n\n    /**\n     * Sets whether the radio button is disabled\n     */\n    @Input()\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n    public set disabled(val: boolean) {\n        if (this._disabled !== val) {\n            this.changeDetector.markForCheck();\n        }\n        this._disabled = val;\n    }\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public ariaLabel: string = \"\";\n\n    @ViewChild(\"inputViewContainer\", { static: true, read: ViewContainerRef })\n    public inputViewContainer: ViewContainerRef;\n\n    @ViewChild(\"radioTransclude\", { static: true })\n    public radioTransclude: ElementRef;\n\n    public radioTranscludeIsEmpty: boolean;\n    public keepFormPristine: boolean = true;\n\n    private timeoutId: number;\n    private _disabled: boolean = false;\n\n    readonly radioGroup: RadioGroupComponent | null;\n\n    @ContentChildren(\"[nui-radio-hint]\")\n    protected contentHints: QueryList<TemplateRef<any>>;\n\n    constructor(\n        @Optional() radioGroup: RadioGroupComponent,\n        private changeDetector: ChangeDetectorRef,\n        private eventBusService: EventBusService\n    ) {\n        this.radioGroup = radioGroup;\n    }\n\n    public ngOnInit(): void {\n        if (this.radioGroup !== null) {\n            if (this.radioGroup.value === this.value) {\n                this.checked = true;\n            }\n        }\n\n        if (this.checked) {\n            // TODO: remove timeout in v10 NUI-4843\n            // nui-radio-group should subscribe before event is emitted\n            this.timeoutId = (<any>setTimeout(() => {\n                this.valueChange.emit(this.value);\n            }, 0)) as number;\n        }\n\n        // Checks if user supplied any content as a label for radio button to adjust styles for radio buttons without labels\n        this.radioTranscludeIsEmpty = _isNil(\n            this.radioTransclude.nativeElement.firstChild\n        );\n    }\n\n    public ngOnDestroy(): void {\n        clearTimeout(this.timeoutId);\n    }\n\n    public hoverHandler(): void {\n        this.hovered = !this.hovered;\n    }\n\n    public changeHandler(): void {\n        this.keepFormPristine = false;\n        this.valueChange.emit(this.value);\n    }\n\n    public onInputClick(event: MouseEvent): void {\n        // We have to stop propagation for click events on the visual hidden input element.\n        // By default, when a user clicks on a label element, a generated click event will be\n        // dispatched on the associated input element. Since we are using a label element as our\n        // root container, the click event on the `radio-button` will be executed twice.\n        // The real click event will bubble up, and the generated click event also tries to bubble up.\n        // This will lead to multiple click events.\n        // Preventing bubbling for the second event will solve that issue.\n        event.stopPropagation();\n        this.eventBusService.getStream(DOCUMENT_CLICK_EVENT).next(event);\n    }\n}\n","<div\n    class=\"nui-radio\"\n    [class.nui-radio--empty]=\"radioTranscludeIsEmpty && !hint\"\n>\n    <label\n        class=\"nui-radio__label\"\n        [class.nui-radio__label--translucent]=\"disabled\"\n        (mouseenter)=\"hoverHandler()\"\n        (mouseleave)=\"hoverHandler()\"\n    >\n        <div class=\"nui-radio__content\">\n            <input\n                #inputViewContainer\n                class=\"nui-radio__input\"\n                type=\"radio\"\n                [value]=\"value\"\n                [checked]=\"checked\"\n                [disabled]=\"disabled\"\n                [attr.aria-label]=\"ariaLabel || null\"\n                [attr.aria-checked]=\"checked\"\n                (change)=\"changeHandler()\"\n                (click)=\"onInputClick($event)\"\n            />\n\n            <div\n                class=\"nui-radio__mark\"\n                [class.nui-radio__mark--disabled]=\"disabled\"\n            >\n                <div class=\"nui-radio__glyph\"></div>\n            </div>\n\n            <div #radioTransclude class=\"nui-radio__transclude\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n\n        <div #hintDiv class=\"nui-radio__hint nui-help-hint\">\n            <ng-content select=\"[hint]\"></ng-content>\n            <ng-container *ngIf=\"!!hint\">\n                {{ hint }}\n            </ng-container>\n        </div>\n    </label>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    CdkDrag,\n    DragDrop,\n    DragRef,\n    DropListRef,\n    moveItemInArray,\n    Point,\n    transferArrayItem,\n} from \"@angular/cdk/drag-drop\";\nimport { CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DoCheck,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    IterableDiffer,\n    IterableDiffers,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isEqual from \"lodash/isEqual\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, tap } from \"rxjs/operators\";\n\nimport {\n    IItemsReorderedEvent,\n    IRepeatItem,\n    IRepeatItemConfig,\n    PaddingOptions,\n    RepeatSelectionMode,\n} from \"./types\";\nimport { nameof } from \"../../functions/nameof\";\nimport {\n    IFilter,\n    IFilterPub,\n    INovaFilters,\n    IRepeatFilter,\n} from \"../../services/data-source/public-api\";\nimport { LoggerService } from \"../../services/log-service\";\n\ninterface IDndItemDropped<T = unknown> {\n    item: DragRef<CdkDrag<T>>;\n    currentIndex: number;\n    previousIndex: number;\n    container: DropListRef<T[]>;\n    previousContainer: DropListRef<T[]>;\n    isPointerOverContainer: boolean;\n    distance: Point;\n}\n\n/**\n * repeat is used for displaying of continuous rows.\n * It can be used in \"single\"/\"radio\" or \"multi\" selection mode\n * <example-url>./../examples/index.html#/repeat</example-url>\n */\n@Component({\n    selector: \"nui-repeat\",\n    templateUrl: \"./repeat.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\"./repeat.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        \"[class.virtual-scroll-viewport]\": \"virtualScroll\",\n        \"[attr.role]\": \"role\",\n        \"[attr.aria-multiselectable]\": \"ariaMultiselectable\",\n    },\n    standalone: false,\n})\nexport class RepeatComponent<T extends IRepeatItem = unknown>\n    implements OnInit, OnDestroy, AfterViewInit, DoCheck, IFilterPub\n{\n    /**\n     * Turns on/off dragging functionality\n     */\n    @Input()\n    public set draggable(value: boolean) {\n        this._draggable = value;\n\n        // make sure we initialize the list\n        this.initializeCDKDropList();\n\n        if (this.dropListRef) {\n            this.dropListRef.disabled = !this._draggable;\n        }\n\n        if (!this._draggable && this._reorderable) {\n            this._reorderable = false;\n            this.reorderableChange.emit(this._reorderable);\n        }\n    }\n\n    public get draggable(): boolean {\n        return this._draggable;\n    }\n\n    /**\n     * Turns on/off item reorder functionality\n     */\n    @Input()\n    public set reorderable(value: boolean) {\n        if (this._draggable === false) {\n            this.logger.warn(\n                \"'reorderable' property must be used only when draggable is true\"\n            );\n        }\n\n        // make item also draggable ONLY if we ever change it to sortable\n        if (value && !this._draggable) {\n            this._draggable = true;\n            this.draggableChange.emit(value);\n        }\n\n        // update propriety ONLY if it actually changes\n        if (this.dropListRef && this._reorderable !== value) {\n            this.dropListRef.sortingDisabled = !value;\n        }\n\n        this._reorderable = value;\n    }\n\n    public get reorderable(): boolean {\n        return this._reorderable;\n    }\n\n    // made event async to avoid ExpressionChangedAfterItHasBeenCheckedError\n    @Output() draggableChange: EventEmitter<boolean> =\n        new EventEmitter<boolean>(true);\n\n    @Output() reorderableChange: EventEmitter<boolean> =\n        new EventEmitter<boolean>(true);\n\n    /**\n     * This will stretch repeat items full width\n     */\n    @HostBinding(\"style.width\") width = \"100%\";\n\n    /**\n     * Prevent item bodies from capturing clicks\n     */\n    @Input() preventRowClick: boolean = false;\n\n    /**\n     * repeat item template\n     */\n    @Input() repeatItemTemplateRef: TemplateRef<any>;\n\n    /**\n     * Drag handle template that is applied on each item\n     */\n    @Input() dragHandleTemplateRef: TemplateRef<any>;\n\n    /**\n     * Drag preview class that is applied on the previewed item\n     *\n     * This input is required since CDK adds the preview DOM element as the last child on the body;\n     * without it all drag previews within a project would have the same style\n     */\n    @Input() dragPreviewClass: string = \"nui-dnd-preview\";\n\n    /**\n     * Drag preview template that is applied on each item\n     */\n    @Input() dragPreviewTemplateRef: TemplateRef<any>;\n\n    /**\n     * Actions-container content.\n     */\n    @Input() actionsTemplateRef: TemplateRef<any>;\n\n    /**\n     * Possible values are 'single', 'radio', 'multi' and 'none'\n     */\n    @Input() public selectionMode: RepeatSelectionMode =\n        RepeatSelectionMode.none;\n\n    /**\n     * repeat rows padding. Possible values are:\n     * 'normal', 'compact'.\n     * Default value is 'compact'.\n     */\n    @Input() public paddingSize: PaddingOptions;\n\n    /**\n     * Enables virtual scroll feature. Requires @itemSize input to have a correct item size set.\n     */\n    @Input() public virtualScroll: boolean = false;\n\n    /**\n     * Required for virtual scroll. Don't forget to set a correct value here if you want to use virtual scroll.\n     * The input accepts values in px only\n     * @returns {number}\n     */\n    @Input() public itemSize: number;\n\n    /**\n     * Selected repeat objects\n     */\n    @Input() public selection: T[] = [];\n\n    /**\n     * Is emitted when on items order has changed\n     */\n    @Output() public itemsReordered = new EventEmitter<\n        IItemsReorderedEvent<T>\n    >();\n\n    /**\n     * item config object containing callbacks\n     */\n    @Input() public itemConfig: IRepeatItemConfig<T>;\n\n    /**\n     * repeat view objects array\n     */\n    @Input() public itemsSource: T[];\n\n    /**\n     * Is selected item should be highlighted\n     */\n    @Input() public highlightSelectedItem = true;\n\n    /**\n     * Is emitted when another item in the repeat is selected\n     */\n    @Output() public selectionChange = new EventEmitter<any[]>();\n\n    @ViewChild(\"dropListArea\") dropListArea: ElementRef;\n\n    /**\n     * Reference to CdkVirtualScrollViewport exposed to give users control\n     * over virtual viewport (ex. infinite scroll, programmatic repeat container scrolling).\n     *\n     * @see https://material.angular.io/cdk/scrolling/api#CdkVirtualScrollViewport\n     */\n    @ViewChild(CdkVirtualScrollViewport)\n    private _viewportRef: CdkVirtualScrollViewport;\n    public get viewportRef(): CdkVirtualScrollViewport {\n        if (!this.virtualScroll) {\n            throw new Error(\"VirtualScroll is not enabled\");\n        }\n        return this._viewportRef;\n    }\n\n    @ViewChildren(CdkDrag) draggableElements: QueryList<CdkDrag>;\n\n    public mousedOver: boolean[] = [];\n\n    /**\n     * Reference to CDK DropList so that the user can also subscribe\n     * to its events in case they need to\n     * @see https://material.angular.io/cdk/drag-drop/api#DropListRef\n     */\n    public dropListRef: DropListRef;\n\n    /**\n     * Allows the list items to be draggable or not\n     *\n     * Note: This is not initialized so we can know whether it's been set by the consumer\n     */\n    private _draggable: boolean;\n\n    /**\n     * Allows the list items to be reorderable or not\n     */\n    private _reorderable: boolean;\n\n    private selectionHasChanged = false;\n    private itemsSourceDiff: IterableDiffer<T>;\n    private intersectionObserver: IntersectionObserver;\n\n    /** Emits when the drop list has been destroyed. */\n    private readonly dropListDestroyed = new Subject<void>();\n\n    get role(): string {\n        return this.selectionMode !== RepeatSelectionMode.none\n            ? \"listbox\"\n            : \"list\";\n    }\n\n    get ariaMultiselectable(): true | null {\n        return this.isModeMulti() || null;\n    }\n\n    constructor(\n        public changeDetector: ChangeDetectorRef,\n        public logger: LoggerService,\n        private iterableDiffers: IterableDiffers,\n        public dragDropService: DragDrop,\n        private elRef: ElementRef\n    ) {}\n\n    public ngOnInit(): void {\n        this.intersectionObserver = new IntersectionObserver(\n            this.intersectionObserverCallback\n        );\n        if (this.elRef.nativeElement instanceof Element) {\n            this.intersectionObserver.observe(this.elRef.nativeElement);\n        }\n\n        if (\n            this.dragPreviewTemplateRef ||\n            this.dragHandleTemplateRef ||\n            this._reorderable === true\n        ) {\n            this._draggable = true;\n            this.draggableChange.emit(this._draggable);\n        }\n\n        this.paddingSize =\n            this.paddingSize in PaddingOptions\n                ? this.paddingSize\n                : PaddingOptions.compact;\n        if (!this.itemSize && this.virtualScroll) {\n            this.logger.error(\n                \"ERROR: To use virtual scroll feature please set correct value to the 'itemSize' input!\"\n            );\n        }\n\n        // Note: Using empty array as a fallback value to obtain a proper differ factory\n        // when the itemsSource is not provided by parent at init.\n        this.itemsSourceDiff = this.iterableDiffers\n            .find(this.itemsSource || [])\n            .create();\n    }\n\n    public ngDoCheck(): void {\n        // Note: In case the input value have changed the CD will not be triggered because\n        // of onPush strategy we have to check if array values changed manually and trigger CD.\n        if (this.itemsSourceDiff.diff(this.itemsSource)) {\n            this.changeDetector.markForCheck();\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.initializeCDKDropList();\n    }\n\n    /**\n     * Cleanup CDK\n     * PS: No need to unsubscribe from the EventEmitters, they are handled\n     * automatically by Angular & RxJs\n     */\n    public ngOnDestroy(): void {\n        this.intersectionObserver?.unobserve(<Element>this.elRef.nativeElement);\n        this.disposeCDKDropList();\n    }\n\n    public update(): void {\n        this.changeDetector.detectChanges();\n    }\n\n    public getFilters(): IFilter<IRepeatFilter> {\n        const response = {\n            type: nameof<INovaFilters>(\"selection\"),\n            value: {\n                selection: this.selection,\n                itemsSource: this.itemsSource,\n                selectionMode: this.selectionMode,\n                selectionHasChanged: this.selectionHasChanged,\n            },\n        };\n        this.selectionHasChanged = false;\n        return response;\n    }\n\n    /**\n     * Checks if repeat item is selected\n     * @param item selected repeat item in repeat\n     */\n    public isItemSelected(item: T): boolean {\n        if (!this.highlightSelectedItem) {\n            return false;\n        }\n\n        switch (this.selectionMode) {\n            case RepeatSelectionMode.single:\n            case RepeatSelectionMode.radio:\n            case RepeatSelectionMode.singleWithRequiredSelection:\n            case RepeatSelectionMode.radioWithNonRequiredSelection:\n                return this.selection && _isEqual(item, this.selection[0]);\n            case RepeatSelectionMode.multi:\n                return Boolean(\n                    this.selection &&\n                        this.selection.length &&\n                        this.selection.indexOf(item) !== -1\n                );\n            default:\n                return false;\n        }\n    }\n\n    /**\n     * repeat item is clicked\n     * @param event\n     * @param item value object that is used in nui-repeat-item\n     */\n    public itemClicked(event: MouseEvent, item: T): void {\n        if (\n            this.selectionMode === RepeatSelectionMode.none ||\n            this.isItemDisabled(item)\n        ) {\n            return;\n        }\n\n        // prevent handling both from row and input\n        event.stopImmediatePropagation();\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (this.isModeMulti()) {\n            this.selectionHasChanged = true;\n            this.multiSelectionChanged(item);\n            return;\n        }\n\n        if (\n            this.selectionMode ===\n                RepeatSelectionMode.singleWithRequiredSelection ||\n            this.selectionMode === RepeatSelectionMode.radio\n        ) {\n            this.selection = [item];\n        }\n\n        if (\n            this.selectionMode === RepeatSelectionMode.single ||\n            this.selectionMode ===\n                RepeatSelectionMode.radioWithNonRequiredSelection\n        ) {\n            if (this.selection.indexOf(item) !== -1) {\n                this.selection = [];\n            } else {\n                this.selection = [item];\n            }\n        }\n\n        this.changeDetector.markForCheck();\n        this.selectionHasChanged = true;\n        this.selectionChange.emit(this.selection);\n    }\n\n    /**\n     * nui-repeat-item selection change handler\n     * @param item selected nui-repeat-item\n     */\n    public multiSelectionChanged(item: T): void {\n        if (this.selection.indexOf(item) === -1) {\n            this.selection = [...this.selection, item];\n        } else {\n            this.selection = this.selection.filter(\n                (selectionItem) => selectionItem !== item\n            );\n        }\n        this.selectionChange.emit(this.selection);\n    }\n\n    public isModeMulti(): boolean {\n        return this.selectionMode === RepeatSelectionMode.multi;\n    }\n\n    public isModeRadio(): boolean {\n        return [\n            RepeatSelectionMode.radio,\n            RepeatSelectionMode.radioWithNonRequiredSelection,\n        ].includes(this.selectionMode);\n    }\n\n    /* START - ITEM BEHAVIOUR DECIDERS */\n    public isItemClickable(item: T): boolean {\n        return !this.preventRowClick && !this.isItemDisabled(item);\n    }\n\n    public isItemSelectable(item: T): boolean {\n        return !this.isItemDisabled(item);\n    }\n\n    public isItemDisabled(item: T): boolean {\n        return (\n            (item as IRepeatItem).disabled ??\n            !!this.itemConfig?.isDisabled?.(item)\n        );\n    }\n\n    public isItemDraggable(item: T): boolean {\n        if (this.virtualScroll || this.isItemDisabled(item)) {\n            return false;\n        }\n\n        // Note: Item cannot be draggable if the main draggable is off.\n        if (this.itemConfig && this.draggable === false) {\n            this.logger.warn(\n                `Draggable config per item is available only when ${nameof<\n                    RepeatComponent<T>\n                >(\"draggable\")} is set to true`\n            );\n            return false;\n        }\n        return this.itemConfig?.isDraggable?.(item) ?? this.draggable;\n    }\n    /* END - ITEM BEHAVIOUR DECIDERS */\n\n    private initializeCDKDropList() {\n        if (\n            !this.virtualScroll &&\n            this.dropListArea &&\n            this._draggable &&\n            !this.dropListRef\n        ) {\n            this.dropListRef = this.dragDropService.createDropList(\n                this.dropListArea\n            );\n            this.dropListRef.disabled = !this._draggable;\n            this.dropListRef.data = this.itemsSource;\n\n            // self-destroyed subscription\n            this.dropListRef.dropped\n                .pipe(\n                    tap((event) => this.itemDropped(event)),\n                    takeUntil(this.dropListDestroyed)\n                )\n                .subscribe();\n\n            this.dropListRef.withItems(\n                this.draggableElements.map((item) => item._dragRef)\n            );\n        }\n    }\n\n    private disposeCDKDropList() {\n        if (this.dropListRef) {\n            this.dropListRef.dispose();\n            this.dropListDestroyed.next();\n            this.dropListDestroyed.complete();\n        }\n    }\n\n    private itemDropped(event: IDndItemDropped<T>) {\n        // CDK retrieves incorrectly event.previousIndex so we need to compute it ourselves\n        const item = event.item.data;\n        const computedPreviousIndex = this.itemsSource.indexOf(item.data, 0);\n        const oldSorting = [...this.itemsSource];\n        const newSorting = [...this.itemsSource];\n\n        let sortingOrderChanged: boolean = true;\n\n        this.mousedOver = [];\n\n        if (event.previousContainer === event.container) {\n            moveItemInArray(\n                newSorting,\n                computedPreviousIndex,\n                event.currentIndex\n            );\n            sortingOrderChanged = computedPreviousIndex !== event.currentIndex;\n        } else {\n            // moves the item from the source: event.container[computedPreviousIndex] to target: event.container.data[event.currentIndex]\n            transferArrayItem(\n                event.previousContainer.data,\n                event.container.data,\n                computedPreviousIndex,\n                event.currentIndex\n            );\n        }\n\n        if (sortingOrderChanged) {\n            // trigger event only if position index or the container actually changed\n            this.itemsReordered.emit({\n                item: item,\n                previousIndex: computedPreviousIndex,\n                currentIndex: event.currentIndex,\n                currentState: newSorting,\n                previousState: oldSorting,\n                dropListRef: this.dropListRef,\n            });\n        }\n    }\n\n    private intersectionObserverCallback = (\n        entries: IntersectionObserverEntry[],\n        observer: IntersectionObserver\n    ): void => {\n        if (entries[0].isIntersecting && this.virtualScroll) {\n            // recheck the cdk viewport size in case the repeat is instantiated before becoming visible in the viewport (NUI-5820)\n            this.viewportRef.checkViewportSize();\n        }\n    };\n}\n","<ng-template #repeatItems let-item=\"item\" let-itemIndex=\"itemIndex\">\n    <nui-repeat-item\n        class=\"repeat-group-item\"\n        #drag=\"cdkDrag\"\n        cdkDrag\n        [cdkDragData]=\"item\"\n        [cdkDragPreviewClass]=\"dragPreviewClass\"\n        [cdkDragDisabled]=\"!isItemDraggable(item)\"\n        (rowClicked)=\"itemClicked($event, item)\"\n        [clickable]=\"isItemClickable(item)\"\n        [selectable]=\"isItemSelectable(item)\"\n        [selected]=\"isItemSelected(item) && !isItemDisabled(item)\"\n        [class.repeat-group-item--disabled]=\"isItemDisabled(item)\"\n        [class.nui-dnd-without-drag-handle]=\"\n            isItemDraggable(item) && !dragHandleTemplateRef\n        \"\n        [class.nui-dnd-raised-state]=\"\n            isItemDraggable(item) && mousedOver[itemIndex]\n        \"\n    >\n        <div\n            *ngIf=\"dragHandleTemplateRef && !virtualScroll\"\n            [class.hide]=\"!draggable\"\n            [class.invisible]=\"!isItemDraggable(item)\"\n            class=\"nui-repeat-item__controls-drag-handle align-self-center\"\n        >\n            <div\n                cdkDragHandle\n                (mouseover)=\"mousedOver[itemIndex] = true\"\n                (mouseout)=\"mousedOver[itemIndex] = false\"\n                [class.nui-dnd-handle]=\"!drag.disabled\"\n            >\n                <ng-container\n                    [ngTemplateOutlet]=\"dragHandleTemplateRef\"\n                    [ngTemplateOutletContext]=\"{ item: item }\"\n                ></ng-container>\n            </div>\n        </div>\n        <div\n            *ngIf=\"dragPreviewTemplateRef && !virtualScroll\"\n            class=\"nui-repeat-item__controls-drag-handle\"\n        >\n            <div\n                *cdkDragPreview\n                [class.nui-dnd-preview]=\"!isItemDisabled(item)\"\n            >\n                <ng-container\n                    [ngTemplateOutlet]=\"dragPreviewTemplateRef\"\n                    [ngTemplateOutletContext]=\"{ item: item }\"\n                ></ng-container>\n            </div>\n        </div>\n        <div class=\"nui-repeat-item__controls-container\">\n            <nui-checkbox\n                *ngIf=\"isModeMulti()\"\n                class=\"nui-repeat-item__checkbox\"\n                [value]=\"item\"\n                [checked]=\"isItemSelected(item)\"\n                [disabled]=\"isItemDisabled(item)\"\n                (valueChange)=\"itemClicked($event, item)\"\n            >\n            </nui-checkbox>\n            <nui-radio\n                *ngIf=\"isModeRadio()\"\n                class=\"nui-repeat-item__radio\"\n                [value]=\"item\"\n                [checked]=\"isItemSelected(item)\"\n                [disabled]=\"isItemDisabled(item)\"\n                (click)=\"itemClicked($event, item)\"\n            >\n            </nui-radio>\n        </div>\n        <div class=\"nui-repeat-item__content-container\">\n            <ng-container\n                [ngTemplateOutlet]=\"repeatItemTemplateRef\"\n                [ngTemplateOutletContext]=\"{ item: item }\"\n            ></ng-container>\n        </div>\n        <div\n            class=\"nui-repeat-item__actions-container\"\n            *ngIf=\"actionsTemplateRef\"\n        >\n            <ng-container\n                [ngTemplateOutlet]=\"actionsTemplateRef\"\n                [ngTemplateOutletContext]=\"{ item: item }\"\n            >\n            </ng-container>\n        </div>\n    </nui-repeat-item>\n</ng-template>\n\n<div class=\"nui-repeat nui-repeat__{{ paddingSize }}\">\n    <div class=\"nui-repeat-header\">\n        <ng-content select=\"[repeatHeaderTemplate]\"></ng-content>\n    </div>\n    <ul #dropListArea class=\"repeat-group\" aria-dropeffect=\"move\">\n        <div *ngIf=\"!virtualScroll\">\n            <ng-container\n                *ngFor=\"\n                    let sourceItem of itemsSource;\n                    trackBy: itemConfig?.trackBy;\n                    let itemIndex = index\n                \"\n                [ngTemplateOutlet]=\"repeatItems\"\n                [ngTemplateOutletContext]=\"{\n                    item: sourceItem,\n                    itemIndex: itemIndex\n                }\"\n            ></ng-container>\n        </div>\n        <cdk-virtual-scroll-viewport\n            [itemSize]=\"itemSize\"\n            *ngIf=\"virtualScroll && itemSize\"\n        >\n            <ng-container\n                *cdkVirtualFor=\"\n                    let sourceItem of itemsSource;\n                    templateCacheSize: 0\n                \"\n            >\n                <ng-container\n                    [ngTemplateOutlet]=\"repeatItems\"\n                    [ngTemplateOutletContext]=\"{ item: sourceItem }\"\n                ></ng-container>\n            </ng-container>\n        </cdk-virtual-scroll-viewport>\n    </ul>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { RadioComponent, RadioGroupComponent } from \"./radio-group.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule],\n    declarations: [RadioComponent, RadioGroupComponent],\n    exports: [RadioComponent, RadioGroupComponent],\n    providers: [],\n})\nexport class NuiRadioModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { NgModule } from \"@angular/core\";\n\nimport { RepeatItemComponent } from \"./repeat-item/repeat-item.component\";\nimport { RepeatComponent } from \"./repeat.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiCheckboxModule } from \"../checkbox/checkbox.module\";\nimport { NuiRadioModule } from \"../radio/radio.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiCheckboxModule,\n        NuiRadioModule,\n        ScrollingModule,\n        DragDropModule,\n    ],\n    declarations: [RepeatComponent, RepeatItemComponent],\n    exports: [RepeatComponent, RepeatItemComponent],\n    providers: [],\n})\nexport class NuiRepeatModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { SpinnerComponent } from \"./spinner.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiTooltipModule } from \"../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [SpinnerComponent],\n    imports: [NuiCommonModule, NuiButtonModule, NuiTooltipModule],\n    exports: [SpinnerComponent],\n    providers: [],\n})\nexport class NuiSpinnerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { TextboxNumberComponent } from \"./textbox-number/textbox-number.component\";\nimport { TextboxComponent } from \"./textbox.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiRepeatModule } from \"../repeat/repeat.module\";\nimport { NuiSpinnerModule } from \"../spinner/spinner.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiSpinnerModule,\n        NuiButtonModule,\n        FormsModule,\n        NuiButtonModule,\n        NuiRepeatModule,\n    ],\n    declarations: [TextboxComponent, TextboxNumberComponent],\n    exports: [TextboxComponent, TextboxNumberComponent],\n    providers: [],\n})\nexport class NuiTextboxModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\nimport { ComboboxComponent } from \"./combobox/combobox.component\";\nimport { SelectComponent } from \"./select.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\nimport { NuiPopupModule } from \"../popup/popup.module\";\nimport { NuiTextboxModule } from \"../textbox/textbox.module\";\n\n// eslint-disable-next-line max-len\n/** @ignore @deprecated in v11 SelectComponent and ComboboxComponent in this module have been deprecated in favor of SelectV2Component and ComboboxV2Component which can be imported from SelectV2Module */\n@NgModule({\n    declarations: [ComboboxComponent, SelectComponent],\n    imports: [\n        NuiCommonModule,\n        ReactiveFormsModule,\n        NuiPopupModule,\n        NuiIconModule,\n        NuiTextboxModule,\n        NuiButtonModule,\n        NuiMenuModule,\n    ],\n    exports: [ComboboxComponent, SelectComponent, ReactiveFormsModule],\n    providers: [],\n})\nexport class NuiSelectModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\n/** @ignore */\n@Directive({\n    selector: \"[nuiTabHeadingCustomTemplateRef]\",\n    standalone: false,\n})\nexport class TabHeadingCustomTemplateRefDirective {\n    viewRef: ViewContainerRef;\n\n    protected _viewRef: ViewContainerRef;\n    protected _tabHeadingCustomTemplateRef: TemplateRef<any>;\n\n    @Input()\n    set nuiTabHeadingCustomTemplateRef(templateRef: TemplateRef<any>) {\n        this._tabHeadingCustomTemplateRef = templateRef;\n        if (templateRef) {\n            this.viewRef.createEmbeddedView(templateRef);\n        }\n    }\n\n    get nuiTabHeadingCustomTemplateRef(): TemplateRef<any> {\n        return this._tabHeadingCustomTemplateRef;\n    }\n\n    constructor(viewRef: ViewContainerRef) {\n        this.viewRef = viewRef;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    OnDestroy,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { TabComponent } from \"../tab/tab.component\";\n\n// <example-url>./../examples/index.html#/tabgroup</example-url>\n/** @ignore */\n@Component({\n    selector: \"nui-tab-group\",\n    templateUrl: \"./tab-group.component.html\",\n    host: {\n        \"(window:resize)\": \"checkTraverse()\",\n    },\n    styleUrls: [\"./tab-group.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class TabGroupComponent implements OnDestroy, AfterViewInit {\n    /** If true tabs will be placed vertically */\n    @Input()\n    get vertical(): boolean {\n        return Boolean(this._vertical);\n    }\n\n    set vertical(value: boolean) {\n        this._vertical = value;\n    }\n\n    public tabs: TabComponent[] = [];\n    public leftTraverseEnabled = true;\n    public rightTraverseEnabled = false;\n    public hasTraverse = false;\n\n    private traverseButtonsWidth = 60;\n    private traverseStepSize = 50;\n\n    protected isDestroyed: boolean;\n    protected _vertical: boolean;\n\n    constructor(\n        private el: ElementRef,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {}\n\n    public ngAfterViewInit(): void {\n        this.checkTraverse();\n    }\n\n    public checkTraverse(): void {\n        this.hasTraverse = this.allowTraverse();\n        this.changeDetectorRef.detectChanges();\n        if (!this.hasTraverse) {\n            this.setNewShift(\"0px\");\n        }\n    }\n\n    public addTab(tab: TabComponent): void {\n        this.tabs.push(tab);\n        tab.active =\n            this.tabs.length === 1 && typeof tab.active === \"undefined\";\n    }\n\n    public selectTab(selectedTab: TabComponent): void {\n        if (!selectedTab.disabled) {\n            selectedTab.active = true;\n            this.tabs.forEach((tab: TabComponent) => {\n                if (tab !== selectedTab) {\n                    tab.active = false;\n                }\n            });\n        }\n    }\n\n    public allowTraverse(): boolean {\n        const holderSize = this.getElementSize(\"nui-tabs__holder\");\n        const contentSize = this.getElementSize(\"nui-tabs__container\");\n        if (this.vertical) {\n            return false;\n        }\n        return holderSize + this.traverseButtonsWidth <= contentSize;\n    }\n\n    public traverseRight(): void {\n        const margin = this.getCurrentShift();\n        if (this.isTraverseRightAllowed(margin)) {\n            const traverseStep =\n                Math.abs(this.getNumberFromPixels(margin)) <\n                this.traverseStepSize\n                    ? Math.abs(this.getNumberFromPixels(margin))\n                    : this.traverseStepSize;\n            this.setNewShift(this.addPixels(margin, traverseStep));\n            this.rightTraverseEnabled = this.isTraverseRightAllowed(\n                this.addPixels(margin, traverseStep)\n            );\n            this.leftTraverseEnabled = this.isTraverseLeftAllowed(\n                this.addPixels(margin, traverseStep)\n            );\n        }\n    }\n\n    public traverseLeft(): void {\n        const margin = this.getCurrentShift();\n        if (this.isTraverseLeftAllowed(margin)) {\n            const tabsSize = this.getElementSize(\"nui-tabs__container\");\n            const tabHolderSize = this.getElementSize(\"nui-tabs__holder\");\n            const maxAllowedMargin = Math.abs(\n                tabsSize - tabHolderSize + this.traverseButtonsWidth\n            );\n            const leftMarginValue = Math.abs(this.getNumberFromPixels(margin));\n            const traverseStep = Math.min(\n                maxAllowedMargin - leftMarginValue,\n                this.traverseStepSize\n            );\n            this.setNewShift(this.addPixels(margin, -traverseStep));\n            this.rightTraverseEnabled = this.isTraverseRightAllowed(\n                this.addPixels(margin, -traverseStep)\n            );\n            this.leftTraverseEnabled = this.isTraverseLeftAllowed(\n                this.addPixels(margin, -traverseStep)\n            );\n        }\n    }\n\n    private isTraverseLeftAllowed(leftMargin: string): boolean {\n        const tabsSize = this.getElementSize(\"nui-tabs__container\");\n        const tabHolderSize = this.getElementSize(\"nui-tabs__holder\");\n        const maxAllowedMargin = Math.abs(\n            tabsSize - tabHolderSize + this.traverseButtonsWidth\n        );\n\n        const margin = Math.abs(this.getNumberFromPixels(leftMargin));\n        return margin < maxAllowedMargin;\n    }\n\n    private isTraverseRightAllowed(margin: string): boolean {\n        return this.getNumberFromPixels(margin) < 0;\n    }\n\n    private getElementSize(selector: string): number {\n        return this.el.nativeElement.querySelector(\".\" + selector).offsetWidth;\n    }\n\n    private getNumberFromPixels(pixels: string): number {\n        return pixels.indexOf(\"px\")\n            ? Number(pixels.substring(0, pixels.indexOf(\"px\")))\n            : 0;\n    }\n\n    private getCurrentShift(): string {\n        return this.el.nativeElement.querySelector(\".nui-tabs__container\").style\n            .marginLeft;\n    }\n\n    private setNewShift(newShift: string): void {\n        this.el.nativeElement.querySelector(\n            \".nui-tabs__container\"\n        ).style.marginTop = \"0px\";\n        this.el.nativeElement.querySelector(\n            \".nui-tabs__container\"\n        ).style.marginLeft = newShift;\n    }\n\n    private addPixels(currentValue: string, increment: number): string {\n        const value = this.getNumberFromPixels(currentValue);\n        return value + increment + \"px\";\n    }\n\n    public ngOnDestroy(): void {\n        this.isDestroyed = true;\n    }\n}\n","<div class=\"nui-tabgroup\" [class.flex-column]=\"!vertical\">\n    <div\n        class=\"nui-tabs__holder\"\n        [class.vertical]=\"vertical\"\n        (click)=\"$event.preventDefault()\"\n    >\n        <div\n            class=\"btn-caret-left\"\n            [class.disabled]=\"!rightTraverseEnabled\"\n            *ngIf=\"hasTraverse\"\n            (click)=\"traverseRight()\"\n        >\n            <nui-icon\n                [icon]=\"'caret-left'\"\n                [iconColor]=\"!rightTraverseEnabled ? 'gray' : 'default'\"\n            ></nui-icon>\n        </div>\n        <div class=\"nui-tabs\">\n            <div class=\"nui-tabs__container\" [class.flex-column]=\"vertical\">\n                <ng-container *ngFor=\"let tab of tabs\">\n                    <div\n                        class=\"nui-tab\"\n                        [class.active]=\"tab.active && !vertical\"\n                        [class.horizontal]=\"tab.active && !vertical\"\n                        [class.disabled]=\"tab.disabled\"\n                        [class.active__vertical]=\"tab.active && vertical\"\n                    >\n                        <span class=\"tab-link\" (click)=\"selectTab(tab)\">\n                            <span\n                                [nuiTabHeadingCustomTemplateRef]=\"\n                                    tab.headingRef\n                                \"\n                                >{{ tab.heading }}</span\n                            >\n                        </span>\n                    </div>\n                </ng-container>\n            </div>\n        </div>\n        <div\n            class=\"btn-caret-right\"\n            [class.disabled]=\"!leftTraverseEnabled\"\n            *ngIf=\"hasTraverse\"\n            (click)=\"traverseLeft()\"\n        >\n            <nui-icon\n                [icon]=\"'caret-right'\"\n                [iconColor]=\"!leftTraverseEnabled ? 'gray' : 'default'\"\n            ></nui-icon>\n        </div>\n    </div>\n    <div class=\"nui-tabgroup__content\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n    TemplateRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { TabGroupComponent } from \"../tab-group/tab-group.component\";\n/** @ignore */\n@Component({\n    selector: \"nui-tab\",\n    template: `\n        <div [hidden]=\"!active\"><ng-content></ng-content></div>\n        <ng-template *ngIf=\"active\" [ngTemplateOutlet]=\"templateRef\">\n        </ng-template>\n    `,\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class TabComponent {\n    /** Tab header text */\n    @Input() heading: string;\n    /** If true tab can not be activated  */\n    @Input() disabled: boolean;\n\n    @Input() templateRef: TemplateRef<ElementRef>;\n\n    /** Tab active state toggle */\n    @Input()\n    get active(): boolean {\n        return this._active;\n    }\n\n    set active(active: boolean) {\n        if (this._active === active) {\n            return;\n        }\n\n        if ((this.disabled && active) || !active) {\n            if (this._active && !active) {\n                this.deselected.emit(this);\n                this._active = active;\n            }\n\n            return;\n        }\n\n        this._active = active;\n        this.selected.emit(this);\n    }\n\n    /** Event is fired when tab became active, $event:Tab equals to selected instance of Tab component */\n    @Output() selected: EventEmitter<TabComponent> = new EventEmitter();\n    /** Event is fired when tab became inactive, $event:Tab equals to deselected instance of Tab component */\n    @Output() deselected: EventEmitter<TabComponent> = new EventEmitter();\n\n    @HostBinding(\"class.tab-pane\") addClass = true;\n\n    public headingRef: TemplateRef<any>;\n    protected _active: boolean;\n\n    constructor(private tabGroup: TabGroupComponent) {\n        this.tabGroup.addTab(this);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, TemplateRef } from \"@angular/core\";\n\nimport { TabComponent } from \"./tab.component\";\n\n/** Should be used to mark <ng-template> element as a template for tab heading */\n/** @ignore */\n@Directive({\n    selector: \"[nuiTabHeading]\",\n    standalone: false,\n})\nexport class TabHeadingDirective {\n    templateRef: TemplateRef<any>;\n\n    constructor(templateRef: TemplateRef<any>, tab: TabComponent) {\n        tab.headingRef = templateRef;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    Output,\n} from \"@angular/core\";\n\nimport { KEYBOARD_CODE } from \"../../../constants/keycode.constants\";\n\n/** @ignore */\n\n@Component({\n    selector: \"nui-tab-heading\",\n    templateUrl: \"./tab-heading.component.html\",\n    styleUrls: [\"./tab-heading.component.less\"],\n    standalone: false,\n})\nexport class TabHeadingComponent {\n    /** This adds 'disabled' class to the host component depending on the 'disabled' @Input to properly style disabled tabs */\n    @HostBinding(\"class.disabled\")\n    get isDisabled(): boolean {\n        return this.disabled;\n    }\n\n    /** If true tab can not be activated  */\n    @Input() disabled: boolean;\n\n    /** Tab active state toggle */\n    @Input()\n    set active(isActive: boolean) {\n        this._active = isActive;\n        this.changeDetector.detectChanges();\n    }\n    get active(): boolean {\n        return this._active;\n    }\n\n    /** Tab id */\n    @Input() tabId: string;\n\n    /** Event is fired when tab became active, $event:Tab equals to selected instance of Tab component */\n    @Output() selected: EventEmitter<TabHeadingComponent> = new EventEmitter();\n\n    protected _active: boolean;\n\n    constructor(\n        private changeDetector: ChangeDetectorRef,\n        private elementRef: ElementRef\n    ) {}\n\n    public selectTab(): void {\n        if (!this.disabled) {\n            this.selected.emit(this);\n        }\n    }\n\n    public onKeyDown(event: KeyboardEvent): void {\n        if (event.code === KEYBOARD_CODE.ENTER || event.code === KEYBOARD_CODE.SPACE) {\n            event.preventDefault();\n            this.elementRef.nativeElement.click();\n        }\n    }\n}\n\n","<div class=\"nui-tab-heading\" \n    [class.active]=\"active\"\n    [tabindex]=\"disabled ? -1 : 0\"\n    [attr.aria-selected]=\"active ? 'true' : 'false'\"\n    role=\"tab\"\n    (click)=\"selectTab()\" \n    (keydown)=\"onKeyDown($event)\">\n    <span class=\"tab-link\">\n        <ng-content></ng-content>\n    </span>\n</div>","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    NgZone,\n    OnDestroy,\n    Output,\n    QueryList,\n    ViewChild,\n} from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\n\nimport { TabHeadingComponent } from \"../tab-heading/tab-heading.component\";\n\n// <example-url>./../examples/index.html#/tabgroup</example-url>\n@Component({\n    selector: \"nui-tab-heading-group\",\n    templateUrl: \"./tab-heading-group.component.html\",\n    styleUrls: [\"./tab-heading-group.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { role: \"tablist\" },\n    standalone: false,\n})\nexport class TabHeadingGroupComponent implements OnDestroy, AfterViewInit {\n    @ContentChildren(TabHeadingComponent) _tabs: QueryList<TabHeadingComponent>;\n\n    @ViewChild(\"resizableArea\") resizableArea: ElementRef;\n\n    /** If true tabs will be placed vertically */\n    @Input() public vertical: boolean;\n\n    /**\n     * Emits id of selected tab\n     */\n    @Output() selected: EventEmitter<string> = new EventEmitter();\n\n    @HostBinding(\"class.vertical\") get isVertical(): boolean {\n        return this.vertical;\n    }\n\n    public leftTraverseEnabled = true;\n    public rightTraverseEnabled = false;\n    public hasTraverse = false;\n\n    private _traverseButtonsWidth = 60;\n    private _traverseStepSize = 50;\n    private _ro: ResizeObserver;\n    private _tabSelectedSubscriptions: Subscription[] = [];\n    private _changesSubscription: Subscription;\n\n    constructor(\n        private el: ElementRef,\n        private changeDetectorRef: ChangeDetectorRef,\n        private ngZone: NgZone\n    ) {}\n\n    public ngAfterViewInit(): void {\n        // Observing the size of the component to check traverse\n        this._ro = new ResizeObserver((entries) =>\n            entries.forEach(() => this.checkTraverse())\n        );\n        this.ngZone.runOutsideAngular(() => {\n            this._ro.observe(this.resizableArea.nativeElement);\n            this._ro.observe(this.el.nativeElement);\n        });\n\n        // Making the first tab in group active by default\n        this.setActiveTab();\n        this.subscribeToSelection();\n\n        this._changesSubscription = this._tabs.changes.subscribe(\n            (changedTabs: any) => {\n                this.setActiveTab();\n                this._tabSelectedSubscriptions.forEach((sub) =>\n                    sub.unsubscribe()\n                );\n                this._tabSelectedSubscriptions = [];\n                this.subscribeToSelection();\n            }\n        );\n    }\n\n    public setActiveTab(): void {\n        if (this._tabs.length && !this.getActiveTab()) {\n            this._tabs.first.active = true;\n            this.selected.emit(this._tabs.first.tabId);\n        }\n    }\n\n    public getActiveTab(): TabHeadingComponent {\n        return this._tabs.filter((tab: TabHeadingComponent) => tab.active)[0];\n    }\n\n    public checkTraverse(): void {\n        this.hasTraverse = this.allowTraverse();\n        this.changeDetectorRef.detectChanges();\n        if (!this.hasTraverse) {\n            this.setNewShift(\"0px\");\n        }\n    }\n\n    public allowTraverse(): boolean {\n        const holderSize = this.getElementSize(\"nui-tab-headings__holder\");\n        const contentSize = this.getElementSize(\"nui-tab-headings__container\");\n        if (this.vertical) {\n            return false;\n        }\n        return holderSize + this._traverseButtonsWidth <= contentSize;\n    }\n\n    public traverseRight(): void {\n        const margin = this.getCurrentShift();\n        if (this.isTraverseRightAllowed(margin)) {\n            const traverseStep =\n                Math.abs(this.getNumberFromPixels(margin)) <\n                this._traverseStepSize\n                    ? Math.abs(this.getNumberFromPixels(margin))\n                    : this._traverseStepSize;\n            this.setNewShift(this.addPixels(margin, traverseStep));\n            this.rightTraverseEnabled = this.isTraverseRightAllowed(\n                this.addPixels(margin, traverseStep)\n            );\n            this.leftTraverseEnabled = this.isTraverseLeftAllowed(\n                this.addPixels(margin, traverseStep)\n            );\n        }\n    }\n\n    public traverseLeft(): void {\n        const margin = this.getCurrentShift();\n        if (this.isTraverseLeftAllowed(margin)) {\n            const tabsSize = this.getElementSize(\"nui-tab-headings__container\");\n            const tabHolderSize = this.getElementSize(\n                \"nui-tab-headings__holder\"\n            );\n            const maxAllowedMargin = Math.abs(\n                tabsSize - tabHolderSize + this._traverseButtonsWidth\n            );\n            const leftMarginValue = Math.abs(this.getNumberFromPixels(margin));\n            const traverseStep = Math.min(\n                maxAllowedMargin - leftMarginValue,\n                this._traverseStepSize\n            );\n            this.setNewShift(this.addPixels(margin, -traverseStep));\n            this.rightTraverseEnabled = this.isTraverseRightAllowed(\n                this.addPixels(margin, -traverseStep)\n            );\n            this.leftTraverseEnabled = this.isTraverseLeftAllowed(\n                this.addPixels(margin, -traverseStep)\n            );\n        }\n    }\n\n    // Subscribing to all tabs and their 'selected' event. Once the event has been fired the origin tab becomes active.\n    private subscribeToSelection() {\n        this._tabs.forEach((tab: TabHeadingComponent) => {\n            this._tabSelectedSubscriptions.push(\n                tab.selected.subscribe((currentTab: TabHeadingComponent) => {\n                    if (!currentTab.active && !currentTab.disabled) {\n                        // Making all elements in array inactive to make than current one active\n                        this._tabs.forEach(\n                            (tabHeading: TabHeadingComponent) => {\n                                tabHeading.active = false;\n                            }\n                        );\n                        currentTab.active = true;\n                        this.changeDetectorRef.markForCheck();\n                        this.changeDetectorRef.detectChanges();\n                        this.selected.emit(currentTab.tabId);\n                    }\n                })\n            );\n        });\n    }\n\n    private isTraverseLeftAllowed(leftMargin: string): boolean {\n        const tabsSize = this.getElementSize(\"nui-tab-headings__container\");\n        const tabHolderSize = this.getElementSize(\"nui-tab-headings__holder\");\n        const maxAllowedMargin = Math.abs(\n            tabsSize - tabHolderSize + this._traverseButtonsWidth\n        );\n\n        const margin = Math.abs(this.getNumberFromPixels(leftMargin));\n        return margin < maxAllowedMargin;\n    }\n\n    private isTraverseRightAllowed(margin: string): boolean {\n        return this.getNumberFromPixels(margin) < 0;\n    }\n\n    private getElementSize(selector: string): number {\n        return this.el.nativeElement.querySelector(\".\" + selector).offsetWidth;\n    }\n\n    private getNumberFromPixels(pixels: string): number {\n        return pixels.indexOf(\"px\")\n            ? Number(pixels.substring(0, pixels.indexOf(\"px\")))\n            : 0;\n    }\n\n    private getCurrentShift(): string {\n        return this.el.nativeElement.querySelector(\n            \".nui-tab-headings__container\"\n        ).style.marginLeft;\n    }\n\n    private setNewShift(newShift: string): void {\n        this.el.nativeElement.querySelector(\n            \".nui-tab-headings__container\"\n        ).style.marginTop = \"0px\";\n        this.el.nativeElement.querySelector(\n            \".nui-tab-headings__container\"\n        ).style.marginLeft = newShift;\n    }\n\n    private addPixels(currentValue: string, increment: number): string {\n        const value = this.getNumberFromPixels(currentValue);\n        return value + increment + \"px\";\n    }\n\n    public ngOnDestroy(): void {\n        this._changesSubscription.unsubscribe();\n        this._tabSelectedSubscriptions.forEach((sub) => sub.unsubscribe());\n        this._ro.disconnect();\n    }\n}\n","<div class=\"nui-tab-headings__holder\" (click)=\"$event.preventDefault()\">\n    <div\n        class=\"btn-caret-left\"\n        [class.disabled]=\"!rightTraverseEnabled\"\n        *ngIf=\"hasTraverse\"\n        (click)=\"traverseRight()\"\n    >\n        <nui-icon\n            iconSize=\"default\"\n            icon=\"caret-left\"\n            [iconColor]=\"!rightTraverseEnabled ? 'disabled-gray' : 'gray'\"\n        ></nui-icon>\n    </div>\n    <div class=\"nui-tab-headings\">\n        <div\n            class=\"nui-tab-headings__container\"\n            #resizableArea\n            [class.flex-column]=\"vertical\"\n        >\n            <ng-content></ng-content>\n        </div>\n    </div>\n    <div\n        class=\"btn-caret-right\"\n        [class.disabled]=\"!leftTraverseEnabled\"\n        *ngIf=\"hasTraverse\"\n        (click)=\"traverseLeft()\"\n    >\n        <nui-icon\n            iconSize=\"default\"\n            icon=\"caret-right\"\n            [iconColor]=\"!leftTraverseEnabled ? 'disabled-gray' : 'gray'\"\n        ></nui-icon>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { TabHeadingCustomTemplateRefDirective } from \"./tab/tab-heading-custom-template-ref.directive\";\nimport { TabHeadingDirective } from \"./tab/tab-heading.directive\";\nimport { TabComponent } from \"./tab/tab.component\";\nimport { TabGroupComponent } from \"./tab-group/tab-group.component\";\nimport { TabHeadingComponent } from \"./tab-heading/tab-heading.component\";\nimport { TabHeadingGroupComponent } from \"./tab-heading-group/tab-heading-group.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [\n        TabHeadingCustomTemplateRefDirective,\n        TabHeadingDirective,\n        TabComponent,\n        TabGroupComponent,\n        TabHeadingComponent,\n        TabHeadingGroupComponent,\n    ],\n    imports: [NuiCommonModule, NuiIconModule],\n    exports: [\n        TabHeadingCustomTemplateRefDirective,\n        TabHeadingDirective,\n        TabComponent,\n        TabGroupComponent,\n        TabHeadingComponent,\n        TabHeadingGroupComponent,\n    ],\n})\nexport class NuiTabsModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, HostBinding, Input, OnInit } from \"@angular/core\";\n\nimport { ILayoutElementDirection } from \"../public-api\";\n\n// <example-url>./../examples/index.html#/layout</example-url>\n@Component({\n    selector: \"nui-card\",\n    templateUrl: \"./card.component.html\",\n    styleUrls: [\"./card.component.less\"],\n    standalone: false,\n})\nexport class CardComponent implements OnInit {\n    @Input() direction: ILayoutElementDirection;\n    @HostBinding(\"class.card-direction-column\") directionColumn: boolean;\n    @HostBinding(\"class.card-direction-row\") directionRow: boolean;\n\n    public ngOnInit(): void {\n        this.directionColumn =\n            (this.directionColumn && !this.directionRow) ||\n            this.direction === \"column\";\n        this.directionRow =\n            (!this.directionColumn && this.directionRow) ||\n            this.direction === \"row\";\n    }\n}\n","<ng-content></ng-content>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, HostBinding, Input, OnInit } from \"@angular/core\";\n\nimport { ILayoutElementDirection } from \"../public-api\";\n\n// <example-url>./../examples/index.html#/layout</example-url>\n@Component({\n    selector: \"nui-card-group\",\n    templateUrl: \"./card-group.component.html\",\n    styleUrls: [\"./card-group.component.less\"],\n    standalone: false,\n})\nexport class CardGroupComponent implements OnInit {\n    @Input() direction: ILayoutElementDirection = \"row\";\n    @HostBinding(\"class.card-group-direction-column\") directionColumn = false;\n    @HostBinding(\"class.card-group-direction-row\") directionRow = true;\n    public ngOnInit(): void {\n        this.directionColumn =\n            (this.directionColumn && !this.directionRow) ||\n            this.direction === \"column\";\n        this.directionRow =\n            (!this.directionColumn && this.directionRow) ||\n            this.direction === \"row\";\n    }\n}\n","<ng-content></ng-content>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./click-filter/click-filter.directive\";\nexport * from \"./click-interceptor/click-interceptor.directive\";\nexport * from \"./clipboard/clipboard.directive\";\nexport * from \"./set-focus/set-focus.directive\";\nexport * from \"./resize/resize.directive\";\nexport * from \"./resizer/resizer.directive\";\nexport * from \"./resize-observer/resize-observer.directive\";\nexport * from \"./dragdrop/draggable.directive\";\nexport * from \"./dragdrop/droppable.directive\";\nexport * from \"./zoom-content/zoom-content.directive\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Renderer2,\n    ViewChild,\n} from \"@angular/core\";\n\nimport { ResizerDirective } from \"../../../common/directives\";\nimport {\n    ResizeDirection,\n    resizeDirectionHelpers,\n    ResizeUnit,\n} from \"../../../common/directives/resizer/public-api\";\nimport { EventBusService } from \"../../../services/event-bus.service\";\nimport { UtilService } from \"../../../services/util.service\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-layout-resizer\",\n    templateUrl: \"./layout-resizer.component.html\",\n    styleUrls: [\"./layout-resizer.component.less\"],\n    host: {\n        \"[class.nui-layout-resizer]\": \"true\",\n        \"[class.nui-layout-resizer--vertical]\": \"!isResizeHorizontal()\",\n        \"[class.nui-layout-resizer--horizontal]\": \"isResizeHorizontal()\",\n    },\n    standalone: false,\n})\nexport class LayoutResizerComponent\n    extends ResizerDirective\n    implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() resizeDirection: ResizeDirection;\n    @Input() resizeElement: any;\n    @Input() resizeUnit: ResizeUnit;\n    @Input() disabled = false;\n    @Input() enableSeparateOffsetSize: boolean;\n    @ViewChild(\"resizerSplit\") resizerSplitEl: ElementRef;\n\n    constructor(\n        private _elRef: ElementRef,\n        private _renderer: Renderer2,\n        private _utilService: UtilService,\n        private _targetElement: ElementRef,\n        private _ngZone: NgZone,\n        private _eventBusService: EventBusService\n    ) {\n        super(\n            _elRef,\n            _renderer,\n            _utilService,\n            _targetElement,\n            _ngZone,\n            _eventBusService\n        );\n    }\n\n    public resizeClass = \"nui-layout-resizer\";\n\n    /*\n     * From template can be accessed only public properties\n     * Changing original method access modifier by overriding original protected method\n     */\n    public isResizeHorizontal(): boolean {\n        return super.isResizeHorizontal();\n    }\n\n    public ngOnInit(): void {\n        this.resizerDirection = this.resizeDirection;\n        this.resizerDisabled = this.disabled;\n        this.resizerValue = this.resizeUnit;\n        this.isMultiple = true;\n        this.offsetSize = this.enableSeparateOffsetSize ? 0 : this._size / 2;\n    }\n\n    public ngAfterViewInit(): void {\n        // This Overrides ResizerDirective's ngAfterViewInit\n        this.resizePropObj = resizeDirectionHelpers[this.resizeDirection];\n        this.targetElement = this.resizeElement.elRef;\n        this.parentContainerNode =\n            this.targetElement.nativeElement.parentElement;\n        this.resizeGutter = this._elRef.nativeElement;\n        this.resizerSplit = this.resizerSplitEl.nativeElement;\n        this.addSubscription();\n        this.addResizeObserver();\n        this.appendEvents();\n        this.refreshStyle();\n    }\n\n    public ngOnDestroy(): void {\n        this.unlistenEvents();\n    }\n}\n","<div class=\"nui-layout-resizer__split\" #resizerSplit></div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnInit,\n} from \"@angular/core\";\n\nimport { ResizeDirection } from \"../../../common/directives/resizer/public-api\";\nimport { ILayoutElementDirection } from \"../public-api\";\n\n// <example-url>./../examples/index.html#/layout</example-url>\n@Component({\n    selector: \"nui-sheet\",\n    templateUrl: \"./sheet.component.html\",\n    host: { class: \"nui-sheet\" },\n    styleUrls: [\"./sheet.component.less\"],\n    standalone: false,\n})\nexport class SheetComponent implements OnInit {\n    @HostBinding(\"class.sheet-fit-content\")\n    @Input()\n    fitContent: boolean;\n    @Input() direction: ILayoutElementDirection = \"row\";\n    @Input() initialSizeValue: string;\n    @HostBinding(\"class.sheet-direction-column\") directionColumn = false;\n    @HostBinding(\"class.sheet-direction-row\") directionRow = true;\n\n    public resizeDirection: ResizeDirection;\n\n    constructor(public elRef: ElementRef) {}\n\n    public ngOnInit(): void {\n        this.directionColumn =\n            (this.directionColumn && !this.directionRow) ||\n            this.direction === \"column\";\n        this.directionRow =\n            (!this.directionColumn && this.directionRow) ||\n            this.direction === \"row\";\n        this.resizeDirection =\n            this.direction === \"row\"\n                ? ResizeDirection.right\n                : ResizeDirection.bottom;\n    }\n}\n","<ng-content></ng-content>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    ContentChildren,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    Renderer2,\n    ViewChild,\n    ViewContainerRef,\n} from \"@angular/core\";\n\nimport {\n    ResizeDirection,\n    ResizeUnit,\n} from \"../../../common/directives/resizer/public-api\";\nimport { LayoutResizerComponent } from \"../layout-resizer/layout-resizer.component\";\nimport { ILayoutElementDirection, ISheetType } from \"../public-api\";\nimport { SheetComponent } from \"../sheet/sheet.component\";\n\ntype Element = SheetComponent | SheetGroupComponent;\ninterface IElementInfo {\n    item: Element;\n    value: string;\n}\n\n// <example-url>./../examples/index.html#/layout</example-url>\n@Component({\n    selector: \"nui-sheet-group\",\n    templateUrl: \"./sheet-group.component.html\",\n    host: { class: \"nui-sheet-group\" },\n    styleUrls: [\"./sheet-group.component.less\"],\n    standalone: false,\n})\nexport class SheetGroupComponent implements OnInit, AfterViewInit, OnDestroy {\n    /**\n     * Set whether the child elements can be resizable.\n     */\n    @HostBinding(\"class.nui-sheet-group--resizable\")\n    @Input()\n    isResizable: boolean;\n\n    /**\n     * Set resize unit of child elements(pixel, percent). By default pixels are used.\n     */\n    @Input() resizeUnit = ResizeUnit.pixel;\n\n    /**\n     * Determines the way sheets links each other. Can be 'joined' or 'separate'.\n     */\n    @Input() sheetsType: ISheetType = \"joined\";\n\n    /**\n     * Direction of layout elements. Can be 'row' or 'column'.\n     */\n    @Input() direction: ILayoutElementDirection = \"row\";\n    /**\n     * Value for flexBasis of SheetComponent or SheetGroupComponent.\n     * Can be in 'px' or '%'\n     */\n    @Input() initialSizeValue: string;\n\n    @HostBinding(\"class.nui-sheet-group--joined-sheets\")\n    applyJoinedSheetsClass: boolean;\n    @HostBinding(\"class.nui-sheet-group--separate-sheets\")\n    applySeparateSheetsClass: boolean;\n\n    @HostBinding(\"class.sheet-group-direction-column\")\n    applyDirectionColumnClass = false;\n    @HostBinding(\"class.sheet-group-direction-row\") applyDirectionRowClass =\n        true;\n\n    @ViewChild(\"resizerPlaceholder\", { read: ViewContainerRef })\n    public resizerPlaceholder: ViewContainerRef;\n    @ContentChildren(SheetComponent) sheetList: QueryList<SheetComponent>;\n    @ContentChildren(SheetGroupComponent, { descendants: false })\n    sheetGroupList: QueryList<SheetGroupComponent>;\n\n    public resizersList: ComponentRef<any>[] = [];\n    public resizeDirection: ResizeDirection;\n\n    // workaround for issue when @ContentChildren can select host component - https://github.com/angular/angular/issues/10098;\n    // TODO: remove when it'll be fixed in Ivy\n    private filterGroups(sheetGroupList: any) {\n        return sheetGroupList.filter(\n            (group: SheetGroupComponent) => group !== this\n        );\n    }\n\n    public addResizers(resizableList: QueryList<any>): void {\n        resizableList.forEach((resizableItem, index) => {\n            if (index === resizableList.length - 1) {\n                return;\n            }\n            this.appendResizer(LayoutResizerComponent, resizableItem);\n        });\n        // make it such that it's valid even when resizer isn't added\n        this.calculateFlexBasis(resizableList, resizableList.length);\n    }\n\n    public appendResizer(factory: any, resizeEl: any): void {\n        const componentRef =\n            this.componentFactoryResolver.resolveComponentFactory(factory);\n\n        const ref = this.resizerPlaceholder.createComponent(componentRef);\n        (<LayoutResizerComponent>ref.instance).resizeElement = resizeEl;\n        (<LayoutResizerComponent>ref.instance).resizeDirection =\n            this.resizeDirection;\n        (<LayoutResizerComponent>ref.instance).resizeUnit = this.resizeUnit;\n        (<LayoutResizerComponent>ref.instance).enableSeparateOffsetSize =\n            this.sheetsType === \"separate\";\n        ref.changeDetectorRef.detectChanges();\n        this.resizersList.push(ref);\n    }\n\n    public calculateFlexBasis(\n        resizableList: QueryList<Element>,\n        numOfItems: number\n    ): void {\n        let availableSpace: string = \"100%\";\n        const hasInitSize = resizableList.some(\n            (element: Element) => !!element.initialSizeValue\n        );\n        const fitContent = resizableList.some(\n            (element: Element) => !!(element as any).fitContent\n        );\n        const itemsToRender: IElementInfo[] = [];\n        let itemsWithSize: Element[];\n        let itemsWithoutSize: Element[];\n\n        if (hasInitSize) {\n            // calculation for init size\n            // filter element so that those with size are dealt with first\n            itemsWithSize = resizableList.filter(\n                (element: Element) =>\n                    !!element.initialSizeValue && !(element as any).fitContent\n            );\n            itemsWithoutSize = resizableList.filter(\n                (element: Element) =>\n                    !element.initialSizeValue && !(element as any).fitContent\n            );\n\n            itemsWithSize.forEach((element: Element) => {\n                availableSpace = `(${availableSpace} - ${element.initialSizeValue})`;\n                itemsToRender.push({\n                    item: element,\n                    value: `${element.initialSizeValue}`,\n                });\n                numOfItems--;\n            });\n            itemsWithoutSize.forEach((element: Element) => {\n                availableSpace = `${availableSpace} / ${numOfItems}`;\n                itemsToRender.push({ item: element, value: availableSpace });\n                numOfItems--;\n            });\n        } else if (!fitContent) {\n            // normal flow of calculation\n            resizableList.forEach((resizableItem: Element) => {\n                itemsToRender.push({\n                    item: resizableItem,\n                    value: `${availableSpace} / ${numOfItems}`,\n                });\n            });\n        }\n\n        // rendering of calculation\n        itemsToRender.forEach(({ item, value }) => {\n            this.renderer.setStyle(\n                item.elRef.nativeElement,\n                \"flexBasis\",\n                `calc(${value})`\n            );\n        });\n    }\n\n    constructor(\n        public elRef: ElementRef,\n        private renderer: Renderer2,\n        private componentFactoryResolver: ComponentFactoryResolver\n    ) {}\n\n    public ngOnInit(): void {\n        this.applyJoinedSheetsClass =\n            (this.applyJoinedSheetsClass && !this.applySeparateSheetsClass) ||\n            this.sheetsType === \"joined\";\n        this.applySeparateSheetsClass =\n            (!this.applyJoinedSheetsClass && this.applySeparateSheetsClass) ||\n            this.sheetsType === \"separate\";\n        this.applyDirectionColumnClass = this.direction === \"column\";\n        this.applyDirectionRowClass = this.direction === \"row\";\n        this.resizeDirection =\n            this.direction === \"row\"\n                ? ResizeDirection.right\n                : ResizeDirection.bottom;\n    }\n\n    public ngAfterViewInit(): void {\n        // 2 addResizers needed for correct handling sheetGroups and sheets elements,\n        // f.e. flex basis calculation or detection last element of correspondent type\n        if (this.isResizable) {\n            this.addResizers(this.sheetList);\n            this.addResizers(this.filterGroups(this.sheetGroupList));\n        } else {\n            this.calculateFlexBasis(this.sheetList, this.sheetList.length);\n            this.calculateFlexBasis(\n                this.filterGroups(this.sheetGroupList),\n                this.filterGroups(this.sheetGroupList).length\n            );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.resizersList.length > 0) {\n            this.resizersList.forEach((resizer) => {\n                resizer.destroy();\n            });\n        }\n    }\n}\n","<ng-content></ng-content>\n<ng-template #resizerPlaceholder></ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { CardComponent } from \"./card/card.component\";\nimport { CardGroupComponent } from \"./card-group/card-group.component\";\nimport { LayoutResizerComponent } from \"./layout-resizer/layout-resizer.component\";\nimport { SheetComponent } from \"./sheet/sheet.component\";\nimport { SheetGroupComponent } from \"./sheet-group/sheet-group.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n// Don't ignore this module (component children need to be kept separate in the docs)\n@NgModule({\n    declarations: [\n        SheetComponent,\n        SheetGroupComponent,\n        CardComponent,\n        CardGroupComponent,\n        LayoutResizerComponent,\n    ],\n    imports: [NuiCommonModule],\n    exports: [\n        SheetComponent,\n        SheetGroupComponent,\n        CardComponent,\n        CardGroupComponent,\n        LayoutResizerComponent,\n    ],\n    providers: [],\n})\nexport class NuiLayoutModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport { ActivatedRoute, Event, NavigationEnd, Router } from \"@angular/router\";\nimport { Observable } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\nimport { BreadcrumbItem } from \"./public-api\";\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class BreadcrumbStateService {\n    // Recursively fill the state for breadcrumb component using data from routes\n    public getBreadcrumbState(\n        routerState: ActivatedRoute,\n        url: string = \"\",\n        breadcrumbs: BreadcrumbItem[] = []\n    ): BreadcrumbItem[] {\n        const breadcrumb: string = routerState.snapshot.data[\"breadcrumb\"];\n        const newUrl = `${url}${routerState.routeConfig?.path}/`;\n        const externalUrl = routerState.snapshot.data[\"url\"];\n        const newBreadcrumbs = [\n            ...breadcrumbs,\n            {\n                title: breadcrumb,\n                routerState: newUrl,\n                url: externalUrl,\n            },\n        ];\n\n        return routerState.firstChild\n            ? this.getBreadcrumbState(\n                  routerState.firstChild,\n                  newUrl,\n                  newBreadcrumbs\n              )\n            : newBreadcrumbs;\n    }\n\n    public getNavigationSubscription(router: Router): Observable<Event> {\n        return router.events.pipe(\n            filter((event) => event instanceof NavigationEnd)\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { BreadcrumbItem } from \"./public-api\";\n\n// <example-url>./../examples/index.html#/breadcrumb</example-url>\n\n@Component({\n    selector: \"nui-breadcrumb\",\n    styleUrls: [\"./breadcrumb.component.less\"],\n    templateUrl: \"./breadcrumb.component.html\",\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        \"[attr.aria-label]\": \"items?.length > 1 ? ariaLabel : null\",\n        \"[attr.role]\": \"items?.length > 1 ? 'navigation' : null\",\n    },\n    standalone: false,\n})\nexport class BreadcrumbComponent {\n    @Input() items: BreadcrumbItem[];\n    @Input() ariaLabel: string = \"Breadcrumb\";\n    @Output() navigation = new EventEmitter<string>();\n\n    public handleClick(event: KeyboardEvent, item: BreadcrumbItem): void {\n        event.preventDefault();\n\n        // We want to only handle the CRTL + Click event separately because Middle Mouse click\n        // requires a different way of handling it, and so it doesn't conflict with the regular click event.\n        if (event.ctrlKey) {\n            if (item?.url) {\n                // This opens the url link in a new browser tab\n                window.open(item?.url, \"_blank\");\n            }\n            return;\n        }\n\n        // We only navigate the angular router on regular clicks\n        this.navigation.emit(item.routerState);\n    }\n}\n","<div\n    [attr.aria-label]=\"ariaLabel\"\n    class=\"nui-breadcrumb\"\n    *ngIf=\"items?.length > 1\"\n>\n    <span\n        class=\"nui-breadcrumb__wrapper\"\n        *ngFor=\"let item of items; let isLast = last\"\n    >\n        <ng-container *ngIf=\"!isLast\">\n            <a\n                [attr.href]=\"item?.url\"\n                class=\"nui-breadcrumb__crumb nui-breadcrumb__crumb__link\"\n                (click)=\"handleClick($event, item)\"\n                >{{ item.title }}</a\n            >\n            <nui-icon\n                class=\"nui-breadcrumb__caret-icon\"\n                icon=\"caret-right\"\n                iconColor=\"disabled-gray\"\n                iconSize=\"small\"\n            ></nui-icon>\n        </ng-container>\n        <span\n            *ngIf=\"isLast\"\n            aria-current=\"page\"\n            class=\"nui-breadcrumb__crumb nui-breadcrumb__crumb-current-level\"\n            >{{ item.title }}</span\n        >\n    </span>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { BreadcrumbStateService } from \"./breadcrumb-state.service\";\nimport { BreadcrumbComponent } from \"./breadcrumb.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule],\n    declarations: [BreadcrumbComponent],\n    exports: [BreadcrumbComponent],\n    providers: [BreadcrumbStateService],\n})\nexport class NuiBreadcrumbModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ElementRef, Injectable } from \"@angular/core\";\nimport isNull from \"lodash/isNull\";\n\nexport const focusableElementsCSSSelector =\n    \"[tabindex], button, a, input:not([type=hidden])\";\n\ninterface IFocusableElement {\n    nativeElement: Element;\n    tabIndex?: string;\n}\n\ninterface ITabNavigationService {\n    disableTabNavigation(domElRef: ElementRef): void;\n\n    restoreTabNavigation(): void;\n}\n\n@Injectable()\nexport class TabNavigationService implements ITabNavigationService {\n    // cache to remember the altered DOM elements that will be later restored\n    private tabFocusableElements: IFocusableElement[] = [];\n\n    public disableTabNavigation(domElRef: ElementRef): void {\n        // dom manipulation to cache the altered elements\n        // and do tabIndex=-1 on focusable HTML elements\n        this.tabFocusableElements = [];\n        domElRef.nativeElement\n            .querySelectorAll(focusableElementsCSSSelector)\n            .forEach((domEl: Element) => {\n                const tabIndex = domEl.getAttribute(\"tabindex\");\n                this.tabFocusableElements.push({\n                    nativeElement: domEl,\n                    tabIndex: isNull(tabIndex) ? undefined : tabIndex,\n                });\n\n                // disable focusing element via tab\n                domEl.setAttribute(\"tabindex\", \"-1\");\n            });\n    }\n\n    public restoreTabNavigation(): void {\n        // dom manipulation to restore the tabIndex for the cached elements\n        // and remove the tabIndex for those who didn't had it at all\n        this.tabFocusableElements.forEach((e) => {\n            if (e?.tabIndex?.length) {\n                e.nativeElement.setAttribute(\"tabindex\", e.tabIndex);\n            } else {\n                e.nativeElement.removeAttribute(\"tabindex\");\n            }\n        });\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    TemplateRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\n/**\n * <example-url>./../examples/index.html#/progress</example-url>\n */\n@Component({\n    selector: \"nui-progress\",\n    templateUrl: \"./progress.component.html\",\n    styleUrls: [\"./progress.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class ProgressComponent implements OnChanges {\n    @Input() public show: boolean;\n    @Input() public showProgress = true;\n    @Input() public message: string;\n    @Input() public showNumber: boolean;\n    @Input() public percent: number;\n    @Input() public allowCancel: boolean;\n    @Input() public cancelText: string;\n    @Input() public helpText?: string;\n    @Input() public stacked: boolean;\n    @Input() public compactMode: boolean;\n    @Input() public ariaLabel: string = \"Progress bar\";\n\n    /**\n     * Help template content displayed under the progress bar.\n     * This can be used instead of the helpText string input for custom\n     * help text styling.\n     */\n    @Input() helpTemplateRef: TemplateRef<any>;\n\n    @Output() public cancel = new EventEmitter();\n\n    public isIndeterminate = false;\n    public ariaValueNow: string | undefined;\n\n    public ngOnChanges(): void {\n        this.isIndeterminate = this.percent === undefined;\n    }\n\n    public cancelProgress(): void {\n        this.cancel.emit();\n    }\n}\n","<div class=\"nui-progress\" [class.nui-progress--shown]=\"show\">\n    <div\n        class=\"nui-progress__header\"\n        *ngIf=\"message && !compactMode\"\n        [ngClass]=\"{ 'nui-progress__header--stacked': stacked }\"\n    >\n        <span\n            class=\"nui-progress__message nui-text-label nui-progress__header-item\"\n            >{{ message }}</span\n        >\n    </div>\n\n    <div\n        *ngIf=\"show && showProgress\"\n        class=\"nui-progress__container\"\n        role=\"progressbar\"\n        aria-valuemin=\"0\"\n        aria-valuemax=\"100\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-valuenow]=\"percent || null\"\n    >\n        <div\n            class=\"nui-progress__bar\"\n            [ngClass]=\"{\n                'nui-progress--indeterminate': isIndeterminate,\n                'nui-progress__bar--compact': compactMode\n            }\"\n        >\n            <div\n                class=\"nui-progress__bar-value\"\n                [ngStyle]=\"{ 'width.%': percent }\"\n            ></div>\n        </div>\n\n        <div\n            *ngIf=\"showNumber && !compactMode\"\n            class=\"nui-progress__number nui-progress__header-item nui-text-small\"\n        >\n            {{ percent }}%\n        </div>\n\n        <button\n            nui-button\n            type=\"button\"\n            class=\"nui-progress__cancel\"\n            icon=\"close\"\n            *ngIf=\"allowCancel && !compactMode\"\n            (click)=\"cancelProgress()\"\n            displayStyle=\"action\"\n            [nuiTooltip]=\"'Cancel'\"\n        ></button>\n    </div>\n\n    <div\n        *ngIf=\"!compactMode\"\n        class=\"nui-progress__hint\"\n        [class.nui-progress__hint--stacked]=\"stacked\"\n    >\n        <ng-container\n            [ngTemplateOutlet]=\"\n                helpTemplateRef ? helpTemplateRef : defaultHelpTemplateRef\n            \"\n        ></ng-container>\n    </div>\n</div>\n\n<ng-template #defaultHelpTemplateRef>\n    <span class=\"nui-text-small-secondary\">{{ helpText }}</span>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    Component,\n    ContentChild,\n    ElementRef,\n    Input,\n    OnChanges,\n    SimpleChanges,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { TabNavigationService } from \"../../services/tab-navigation.service\";\nimport { ProgressComponent } from \"../progress/progress.component\";\nimport { SpinnerComponent } from \"../spinner/spinner.component\";\n\n/**\n * <example-url>./../examples/index.html#/busy</example-url>\n */\n@Component({\n    selector: \"[nui-busy]\",\n    templateUrl: \"./busy.component.html\",\n    styleUrls: [\"./busy.component.less\"],\n    providers: [TabNavigationService],\n    encapsulation: ViewEncapsulation.None,\n    host: { \"[attr.aria-busy]\": \"busy\" },\n    standalone: false,\n})\n/* eslint-enable @angular-eslint/component-selector */\nexport class BusyComponent implements AfterContentInit, OnChanges {\n    public isDefaultTemplate = false;\n    public isSpinnerTemplate = false;\n    public isProgressTemplate = false;\n\n    @Input() busy: boolean;\n\n    /**\n     * When busy is true, by default we disable keyboard tab navigation for all underlying elements\n     */\n    @Input() disableTabNavigation: boolean = true;\n\n    @ContentChild(SpinnerComponent) spinnerComponent: SpinnerComponent;\n    @ContentChild(ProgressComponent) progressComponent: ProgressComponent;\n\n    constructor(\n        private tabNavigationService: TabNavigationService,\n        private elRef: ElementRef\n    ) {}\n\n    public ngAfterContentInit(): void {\n        this.setBusyStateForContentComponents();\n\n        this.isSpinnerTemplate = Boolean(this.spinnerComponent);\n        this.isProgressTemplate = Boolean(this.progressComponent);\n        if (this.spinnerComponent && this.progressComponent) {\n            this.isSpinnerTemplate = false;\n            this.isProgressTemplate = false;\n            this.isDefaultTemplate = true;\n        }\n        if (!this.spinnerComponent && !this.progressComponent) {\n            this.isDefaultTemplate = true;\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (\n            this.disableTabNavigation &&\n            changes.busy?.currentValue !== undefined\n        ) {\n            if (this.busy) {\n                this.tabNavigationService.disableTabNavigation(this.elRef);\n            } else {\n                this.tabNavigationService.restoreTabNavigation();\n            }\n        }\n\n        this.setBusyStateForContentComponents();\n    }\n\n    private setBusyStateForContentComponents() {\n        if (this.spinnerComponent) {\n            this.spinnerComponent.showSpinner = this.busy;\n        }\n        if (this.progressComponent) {\n            this.progressComponent.show = this.busy;\n        }\n    }\n}\n","<div class=\"nui-nova-busy\">\n    <div\n        class=\"nui-nova-busy__overlay--align\"\n        [class.nui-nova-busy__overlay--hidden]=\"!busy\"\n        [class.nui-nova-busy__overlay]=\"busy\"\n    >\n        <div class=\"nui-nova-busy__container\">\n            <ng-content\n                *ngIf=\"isProgressTemplate\"\n                select=\"nui-progress\"\n            ></ng-content>\n            <ng-content\n                *ngIf=\"isSpinnerTemplate\"\n                select=\"nui-spinner\"\n            ></ng-content>\n            <nui-spinner *ngIf=\"isDefaultTemplate\" [show]=\"busy\"></nui-spinner>\n        </div>\n    </div>\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { BusyComponent } from \"./busy.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiSpinnerModule } from \"../spinner/spinner.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiSpinnerModule],\n    declarations: [BusyComponent],\n    exports: [BusyComponent],\n    providers: [],\n})\nexport class NuiBusyModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { IChipsItem } from \"../public-api\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-chip\",\n    templateUrl: \"./chip.component.html\",\n    styleUrls: [\"./chip.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: \"nui-chip\",\n        role: \"listitem\",\n    },\n    standalone: false,\n})\nexport class ChipComponent implements AfterViewInit {\n    /**\n     * Value passed to display as a chip.\n     */\n    @Input() public item: IChipsItem;\n    /**\n     * Value passed to display a tooltip for the 'close' button\n     */\n    @Input() public closeButtonTooltip: string;\n\n    /** Custom css class to be added to the chip element */\n    @Input() public customClass:\n        | string\n        | string[]\n        | Set<string>\n        | { [klass: string]: any };\n\n    /**\n     * Event that is fired when single item is cleared (by clicking on remove icon).\n     */\n    @Output() public remove = new EventEmitter<any>();\n\n    public isContentProjected: boolean;\n\n    @ViewChild(\"projection\") private contentTemplate: TemplateRef<any>;\n\n    constructor(public host: ElementRef, private cdRef: ChangeDetectorRef) {}\n\n    public ngAfterViewInit(): void {\n        this.isContentProjected = Boolean(\n            this.contentTemplate.createEmbeddedView(undefined).rootNodes.length\n        );\n        this.cdRef.detectChanges();\n    }\n\n    public onRemove(): void {\n        this.remove.emit();\n    }\n}\n","<div class=\"nui-chip__value\" [ngClass]=\"customClass\">\n    <span\n        class=\"nui-chip__value-name\"\n        [title]=\"!isContentProjected ? item?.label : ''\"\n        [ngClass]=\"{ projected: isContentProjected }\"\n    >\n        <ng-container *ngIf=\"isContentProjected; else itemLabel\">\n            <ng-container *ngTemplateOutlet=\"projection\"></ng-container>\n        </ng-container>\n    </span>\n    <nui-icon\n        (click)=\"onRemove()\"\n        [nuiTooltip]=\"closeButtonTooltip\"\n        icon=\"remove\"\n        iconSize=\"small\"\n        cssClass=\"nui-chip__value-remove\"\n    ></nui-icon>\n</div>\n\n<ng-template #projection><ng-content></ng-content></ng-template>\n<ng-template #itemLabel>{{ item?.label }}</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ElementRef,\n    EventEmitter,\n    Injectable,\n    NgZone,\n    QueryList,\n} from \"@angular/core\";\n\nimport { ChipComponent } from \"./chip/chip.component\";\nimport { IChipsGroup, IChipsItem, IChipsItemsSource } from \"./public-api\";\n\n@Injectable()\nexport class ChipsOverflowService {\n    public itemsSource: IChipsItemsSource;\n    public mainCell: ElementRef<HTMLElement>;\n    public clearAll: ElementRef<HTMLElement>;\n    public nuiChips: ElementRef<HTMLElement>;\n    public allChips: QueryList<ChipComponent | ElementRef<HTMLElement>>;\n    public overflowCounter: ElementRef<HTMLElement>;\n    public overflowLinesNumber: number;\n    public chipsOverflowed: EventEmitter<IChipsItemsSource> =\n        new EventEmitter<IChipsItemsSource>();\n\n    private overflowedChips: IChipsItemsSource;\n    private chipResizeObserver: ResizeObserver;\n    private chipsMutationObserver: MutationObserver;\n\n    constructor(private zone: NgZone) {}\n\n    public init(): void {\n        this.initChipResizeObserver();\n        this.initChipsMutationObserver();\n    }\n\n    public handleOverflow(): void {\n        this.overflowedChips = {\n            flatItems: [],\n            groupedItems: [],\n        };\n\n        this.processChipsOverflow();\n        this.chipsOverflowed.emit(this.overflowedChips);\n    }\n\n    public onDestroy(): void {\n        this.chipResizeObserver?.disconnect();\n        this.chipsMutationObserver?.disconnect();\n    }\n\n    private initChipResizeObserver(): void {\n        if (!this.allChips.first) {\n            return;\n        }\n\n        this.chipResizeObserver = new ResizeObserver(() => {\n            this.zone.run(() => this.handleOverflow());\n        });\n        // Rendering occurs gradually, so we tracking every dimension change, to calculate overflow items correctly\n        // to avoid case when Overflow Counter renders on the next line. Observing occurs only on first item, but it\n        // also indicates that other items on the same level of DOM is also rendered\n        this.chipResizeObserver.observe(\n            this.getNativeElement(this.allChips.first)\n        );\n    }\n\n    private initChipsMutationObserver(): void {\n        const config = { childList: true };\n        this.chipsMutationObserver = new MutationObserver(() =>\n            this.handleOverflow()\n        );\n        this.chipsMutationObserver.observe(this.mainCell.nativeElement, config);\n    }\n\n    private processChipsOverflow(): void {\n        let acc = 0;\n        let renderedLines = 1;\n        let chipsOverflow = false;\n\n        const rowMaxWidth = this.getRowWidth();\n        const counterWidth =\n            this.overflowCounter?.nativeElement.getBoundingClientRect().width ||\n            0;\n\n        this.allChips.toArray().forEach((item: ElementRef | ChipComponent) => {\n            const chipElement = this.getNativeElement(item);\n            chipElement.style.display = \"inline\";\n            const chipElementWidth = chipElement.getBoundingClientRect().width;\n            const isLastLine = () => renderedLines === this.overflowLinesNumber;\n\n            if (!isLastLine() && acc + chipElementWidth > rowMaxWidth) {\n                renderedLines++;\n                acc = 0;\n            }\n\n            if (\n                isLastLine() &&\n                acc + chipElementWidth + counterWidth > rowMaxWidth\n            ) {\n                acc = 0;\n                chipsOverflow = true;\n\n                if (!chipsOverflow) {\n                    renderedLines++;\n                }\n            }\n\n            acc += chipElementWidth;\n\n            if (isLastLine() && chipsOverflow) {\n                chipElement.style.display = \"none\";\n                this.updateOverflowChips(item);\n            }\n        });\n    }\n\n    private updateOverflowChips(item: ElementRef | ChipComponent): void {\n        const chip = this.findChipItem(item);\n\n        if (chip?.inFlat) {\n            this.overflowedChips.flatItems?.push((item as ChipComponent).item);\n        }\n\n        if (chip?.inGroup) {\n            const groupId = this.itemsSource.groupedItems?.indexOf(\n                chip.inGroup\n            );\n            const existingGroup = this.overflowedChips.groupedItems?.find(\n                (group) => group.id === `group${groupId}`\n            );\n\n            if (existingGroup) {\n                existingGroup.items.push((item as ChipComponent).item);\n                return;\n            }\n\n            this.overflowedChips.groupedItems?.push({\n                id: `group${groupId}`,\n                items: [(item as ChipComponent).item],\n                label: chip.inGroup.label,\n            });\n        }\n    }\n\n    private findChipItem(\n        item: ElementRef | ChipComponent\n    ): { inFlat?: IChipsItem; inGroup?: IChipsGroup } | undefined {\n        if (!(item instanceof ChipComponent)) {\n            return;\n        }\n        const inFlat = this.itemsSource.flatItems?.find((i) => i === item.item);\n        const inGroup = this.itemsSource.groupedItems?.find((group) =>\n            group.items.find((i) => i === item.item)\n        );\n        return { inFlat, inGroup };\n    }\n\n    private getNativeElement(item: ChipComponent | ElementRef): HTMLElement {\n        return item instanceof ChipComponent\n            ? item.host.nativeElement\n            : item.nativeElement;\n    }\n\n    private getRowWidth(): number {\n        return (\n            this.nuiChips?.nativeElement.getBoundingClientRect().width -\n            this.clearAll?.nativeElement.getBoundingClientRect().width -\n            parseFloat(\n                getComputedStyle(this.nuiChips?.nativeElement).paddingLeft\n            ) -\n            parseFloat(\n                getComputedStyle(this.nuiChips?.nativeElement).paddingRight\n            )\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _size from \"lodash/size\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { ChipComponent } from \"./chip/chip.component\";\nimport { ChipsOverflowService } from \"./chips-overflow.service\";\nimport {\n    IChipRemoved,\n    IChipsGroup,\n    IChipsItem,\n    IChipsItemsSource,\n} from \"./public-api\";\n\n// <example-url>./../examples/index.html#/chips</example-url>\n\n/**\n * Control used to list groups of selected options (former ng1 nui-chiclets component).\n *\n *  __Usage:__\n *\n * ```html\n * <nui-chips [autoHide]=\"false\"\n *            [itemsSource]=\"itemsSource\"\n *            [title]=\"title\"\n *            [orientation]=\"'vertical'\"\n *            [allowRemoveAll]=\"false\"\n *            [removeAllLinkText]=\"clearAllText\"\n *            (chipRemoved)=\"onRemove($event)\"\n *            (removeAll)=\"onRemoveAll()\">\n * </nui-chips>\n * ```\n *\n */\n@Component({\n    selector: \"nui-chips\",\n    templateUrl: \"./chips.component.html\",\n    styleUrls: [\"./chips.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [ChipsOverflowService],\n    host: { \"[attr.role]\": \"role\" },\n    standalone: false,\n})\nexport class ChipsComponent\n    implements OnInit, OnDestroy, OnChanges, AfterViewInit\n{\n    /**\n     * Whether overflow mode turned on\n     */\n    @Input() overflow: boolean = false;\n    /**\n     * Limits chips lines if overflow mode\n     */\n    @Input() overflowLinesNumber: number = 1;\n    /**\n     * Flag for 'Clear all' link visibility.\n     */\n    @Input() public allowRemoveAll = true;\n    /**\n     * Expression to determine if the component is hidden when 'itemsSource' is empty.\n     */\n    @Input() public autoHide = true;\n    /**\n     * Value to be shown as remove all link text.\n     */\n    @Input() public removeAllLinkText: string;\n    /**\n     * Data source. Both 'flatItems' and 'groupedItems' collections could be passed simultaneously\n     * (previous ng1 implementation did not allow that, it handled only one type of items).\n     */\n    @Input() public itemsSource: IChipsItemsSource;\n    /**\n     * Can be set to 'vertical' to switch chips to vertical list mode. Otherwise horizontal mode is used.\n     */\n    @Input() public orientation: \"horizontal\" | \"vertical\";\n    /**\n     * Value to be shown as vertical orientation chips title.\n     */\n    @Input() public title: string;\n\n    /** */\n    @Input() public customClass: string;\n    /**\n     * Event that is fired when single item is cleared (by clicking on item or its remove icon).\n     * Event data passed contains object with item clicked and its parent group.\n     */\n    @Output() public chipRemoved = new EventEmitter<IChipRemoved>();\n    /**\n     * Event that is fired when 'Clear All' is clicked.\n     */\n    @Output() public removeAll = new EventEmitter<MouseEvent>();\n\n    /**\n     * Emits overflowed chips if chips overflow\n     */\n    @Output() public chipsOverflowed: EventEmitter<IChipsItemsSource> =\n        new EventEmitter<IChipsItemsSource>();\n\n    public isOverflowed: boolean;\n\n    @ViewChild(\"chipsMainCell\") private mainCell: ElementRef;\n    @ViewChild(\"clearAll\") private set clearAll(elem: ElementRef) {\n        this.chipsOverflowService.clearAll = elem;\n    }\n    @ViewChild(\"nuiChips\") private nuiChips: ElementRef;\n    @ViewChildren(\"chipItem\") private allChips: QueryList<\n        ChipComponent | ElementRef<HTMLElement>\n    >;\n    @ContentChild(\"overflowCounterLabel\") private set overflowCounter(\n        el: ElementRef<HTMLElement>\n    ) {\n        this.chipsOverflowService.overflowCounter = el;\n    }\n\n    private readonly destroy$ = new Subject<void>();\n\n    get role(): string | null {\n        return this.getItemsCount() ? \"list\" : null;\n    }\n\n    constructor(\n        private zone: NgZone,\n        private chipsOverflowService: ChipsOverflowService\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.itemsSource) {\n            this.chipsOverflowService.itemsSource =\n                changes.itemsSource.currentValue;\n        }\n        if (changes.overflowLinesNumber) {\n            this.chipsOverflowService.overflowLinesNumber =\n                changes.overflowLinesNumber.currentValue;\n        }\n        if (changes.overflow && !changes.overflow.currentValue) {\n            this.chipsOverflowService.onDestroy();\n        }\n    }\n\n    public ngOnInit(): void {\n        this.removeAllLinkText = this.removeAllLinkText || $localize`Clear all`;\n    }\n\n    public ngAfterViewInit(): void {\n        if (this.overflow) {\n            this.initChipsOverflow();\n        }\n    }\n\n    /** Handles Popup on window resize */\n    @HostListener(\"window:resize\")\n    public onWinResize(): void {\n        if (this.overflow && this.getItemsCount()) {\n            this.chipsOverflowService.handleOverflow();\n        }\n    }\n\n    public getItemsCount(): number {\n        let count = _size(this.itemsSource.flatItems);\n        if (!_isEmpty(this.itemsSource.groupedItems)) {\n            count += (this.itemsSource.groupedItems || [])\n                .map<number>((group) => group.items.length)\n                .reduce((sum, val) => sum + val);\n        }\n        return count;\n    }\n\n    public onRemove(data: { item: IChipsItem; group?: IChipsGroup }): void {\n        this.chipRemoved.emit(data);\n    }\n\n    public onRemoveAll(event: MouseEvent): void {\n        this.removeAll.emit(event);\n        event.preventDefault();\n    }\n\n    public ngOnDestroy(): void {\n        if (this.overflow) {\n            this.chipsOverflowService.onDestroy();\n        }\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    private initChipsOverflow(): void {\n        this.chipsOverflowService.mainCell = this.mainCell;\n        this.chipsOverflowService.nuiChips = this.nuiChips;\n        this.chipsOverflowService.allChips = this.allChips;\n        this.chipsOverflowService.itemsSource = this.itemsSource;\n        this.chipsOverflowService.overflowLinesNumber =\n            this.overflowLinesNumber;\n\n        this.chipsOverflowService.init();\n\n        this.chipsOverflowService.chipsOverflowed\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((e: IChipsItemsSource) => {\n                this.chipsOverflowed.emit(e);\n                this.isOverflowed = Boolean(\n                    e.groupedItems?.length || e.flatItems?.length\n                );\n            });\n    }\n}\n","<div\n    [style.display]=\"getItemsCount() !== 0 || !autoHide ? 'flex' : 'none'\"\n    #nuiChips\n    class=\"nui-chips media\"\n    [ngClass]=\"customClass\"\n    [class.nui-chips__vertical]=\"orientation === 'vertical'\"\n>\n    <h4\n        *ngIf=\"!!title && orientation === 'vertical'\"\n        class=\"nui-chips__title-cell\"\n    >\n        <span class=\"nui-chips__title\">{{ title }}:</span>\n        <span class=\"nui-chips__count\">({{ getItemsCount() }})</span>\n    </h4>\n    <div\n        class=\"nui-chips__main-cell\"\n        #chipsMainCell\n        [style.flex-grow]=\"isOverflowed ? 1 : 0\"\n    >\n        <ng-container *ngIf=\"itemsSource.flatItems?.length\">\n            <nui-chip\n                class=\"chip-flat\"\n                #chipItem\n                *ngFor=\"let flatItem of itemsSource.flatItems; let last = last\"\n                [customClass]=\"flatItem.customClass\"\n                [class.group-last]=\"last\"\n                [item]=\"flatItem\"\n                (remove)=\"onRemove({ item: flatItem, group: undefined })\"\n            ></nui-chip>\n        </ng-container>\n\n        <ng-container\n            *ngFor=\"let group of itemsSource.groupedItems; let lastGroup = last\"\n        >\n            <ng-container *ngIf=\"group.items?.length > 0\">\n                <div\n                    class=\"nui-chips__group-name\"\n                    [ngClass]=\"group.customClass\"\n                    #chipItem\n                >\n                    <div class=\"nui-chips__group-label\">\n                        {{ group.label }}\n                    </div>\n                </div>\n                <nui-chip\n                    #chipItem\n                    *ngFor=\"let groupItem of group.items; let last = last\"\n                    [customClass]=\"groupItem.customClass\"\n                    [class.group-last]=\"last && !lastGroup\"\n                    [item]=\"groupItem\"\n                    (remove)=\"onRemove({ item: groupItem, group: group })\"\n                ></nui-chip>\n            </ng-container>\n        </ng-container>\n        <ng-content select=\".nui-chips-overflowed\"></ng-content>\n    </div>\n\n    <div\n        class=\"nui-chips__clear-cell\"\n        #clearAll\n        *ngIf=\"allowRemoveAll && getItemsCount() > 0\"\n    >\n        <a href class=\"nui-chips__clear\" (click)=\"onRemoveAll($event)\">{{\n            removeAllLinkText\n        }}</a>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { IChipsGroup, IChipsItem, IChipsItemsSource } from \"../public-api\";\n\n@Component({\n    selector: \"nui-chips-overflow\",\n    templateUrl: \"./chips-overflow.component.html\",\n    styleUrls: [\"./chips-overflow.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { class: \"nui-chips-overflow\" },\n    standalone: false,\n})\nexport class ChipsOverflowComponent {\n    @Input() overflowSource: IChipsItemsSource;\n    @Input() itemsSource: IChipsItemsSource;\n\n    @Output() public chipRemoved = new EventEmitter<{\n        item: IChipsItem;\n        group?: IChipsGroup;\n    }>();\n\n    public onClear(data: { item: IChipsItem; group?: IChipsGroup }): void {\n        if (data.group) {\n            data.group = this.itemsSource.groupedItems?.find((g) =>\n                g.items.find((item) => item === data.item)\n            );\n        }\n        this.chipRemoved.emit(data);\n    }\n}\n","<nui-chips\n    [itemsSource]=\"overflowSource\"\n    [allowRemoveAll]=\"false\"\n    [overflow]=\"false\"\n    (chipRemoved)=\"onClear($event)\"\n    orientation=\"vertical\"\n>\n</nui-chips>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ChipComponent } from \"./chip/chip.component\";\nimport { ChipsOverflowComponent } from \"./chips-overflow/chips-overflow.component\";\nimport { ChipsComponent } from \"./chips.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiTooltipModule } from \"../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule, NuiTooltipModule],\n    declarations: [ChipComponent, ChipsComponent, ChipsOverflowComponent],\n    exports: [ChipComponent, ChipsComponent, ChipsOverflowComponent],\n    providers: [],\n})\nexport class NuiChipsModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport function getColorValueByName(colorVariable: string): string {\n    if (!colorVariable.startsWith(\"var(\")) {\n        return colorVariable;\n    }\n\n    const colorName = colorVariable\n    .replace(/^var\\(/, \"\")\n    .replace(/\\)$/, \"\")\n    .trim();\n\n    return getComputedStyle(document.body).getPropertyValue(colorName);\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const HTML_COLORS: Map<string, string> = new Map([\n    [\"aliceblue\", \"#f0f8ff\"],\n    [\"antiquewhite\", \"#faebd7\"],\n    [\"aqua\", \"#00ffff\"],\n    [\"aquamarine\", \"#7fffd4\"],\n    [\"azure\", \"#f0ffff\"],\n    [\"beige\", \"#f5f5dc\"],\n    [\"bisque\", \"#ffe4c4\"],\n    [\"black\", \"#000000\"],\n    [\"blanchedalmond\", \"#ffebcd\"],\n    [\"blue\", \"#0000ff\"],\n    [\"blueviolet\", \"#8a2be2\"],\n    [\"brown\", \"#a52a2a\"],\n    [\"burlywood\", \"#deb887\"],\n    [\"cadetblue\", \"#5f9ea0\"],\n    [\"chartreuse\", \"#7fff00\"],\n    [\"chocolate\", \"#d2691e\"],\n    [\"coral\", \"#ff7f50\"],\n    [\"cornflowerblue\", \"#6495ed\"],\n    [\"cornsilk\", \"#fff8dc\"],\n    [\"crimson\", \"#dc143c\"],\n    [\"cyan\", \"#00ffff\"],\n    [\"darkblue\", \"#00008b\"],\n    [\"darkcyan\", \"#008b8b\"],\n    [\"darkgoldenrod\", \"#b8860b\"],\n    [\"darkgray\", \"#a9a9a9\"],\n    [\"darkgreen\", \"#006400\"],\n    [\"darkkhaki\", \"#bdb76b\"],\n    [\"darkmagenta\", \"#8b008b\"],\n    [\"darkolivegreen\", \"#556b2f\"],\n    [\"darkorange\", \"#ff8c00\"],\n    [\"darkorchid\", \"#9932cc\"],\n    [\"darkred\", \"#8b0000\"],\n    [\"darksalmon\", \"#e9967a\"],\n    [\"darkseagreen\", \"#8fbc8f\"],\n    [\"darkslateblue\", \"#483d8b\"],\n    [\"darkslategray\", \"#2f4f4f\"],\n    [\"darkturquoise\", \"#00ced1\"],\n    [\"darkviolet\", \"#9400d3\"],\n    [\"deeppink\", \"#ff1493\"],\n    [\"deepskyblue\", \"#00bfff\"],\n    [\"dimgray\", \"#696969\"],\n    [\"dodgerblue\", \"#1e90ff\"],\n    [\"firebrick\", \"#b22222\"],\n    [\"floralwhite\", \"#fffaf0\"],\n    [\"forestgreen\", \"#228b22\"],\n    [\"fuchsia\", \"#ff00ff\"],\n    [\"gainsboro\", \"#dcdcdc\"],\n    [\"ghostwhite\", \"#f8f8ff\"],\n    [\"gold\", \"#ffd700\"],\n    [\"goldenrod\", \"#daa520\"],\n    [\"gray\", \"#808080\"],\n    [\"green\", \"#008000\"],\n    [\"greenyellow\", \"#adff2f\"],\n    [\"honeydew\", \"#f0fff0\"],\n    [\"hotpink\", \"#ff69b4\"],\n    [\"indianred \", \"#cd5c5c\"],\n    [\"indigo\", \"#4b0082\"],\n    [\"ivory\", \"#fffff0\"],\n    [\"khaki\", \"#f0e68c\"],\n    [\"lavender\", \"#e6e6fa\"],\n    [\"lavenderblush\", \"#fff0f5\"],\n    [\"lawngreen\", \"#7cfc00\"],\n    [\"lemonchiffon\", \"#fffacd\"],\n    [\"lightblue\", \"#add8e6\"],\n    [\"lightcoral\", \"#f08080\"],\n    [\"lightcyan\", \"#e0ffff\"],\n    [\"lightgoldenrodyellow\", \"#fafad2\"],\n    [\"lightgrey\", \"#d3d3d3\"],\n    [\"lightgreen\", \"#90ee90\"],\n    [\"lightpink\", \"#ffb6c1\"],\n    [\"lightsalmon\", \"#ffa07a\"],\n    [\"lightseagreen\", \"#20b2aa\"],\n    [\"lightskyblue\", \"#87cefa\"],\n    [\"lightslategray\", \"#778899\"],\n    [\"lightsteelblue\", \"#b0c4de\"],\n    [\"lightyellow\", \"#ffffe0\"],\n    [\"lime\", \"#00ff00\"],\n    [\"limegreen\", \"#32cd32\"],\n    [\"linen\", \"#faf0e6\"],\n    [\"magenta\", \"#ff00ff\"],\n    [\"maroon\", \"#800000\"],\n    [\"mediumaquamarine\", \"#66cdaa\"],\n    [\"mediumblue\", \"#0000cd\"],\n    [\"mediumorchid\", \"#ba55d3\"],\n    [\"mediumpurple\", \"#9370d8\"],\n    [\"mediumseagreen\", \"#3cb371\"],\n    [\"mediumslateblue\", \"#7b68ee\"],\n    [\"mediumspringgreen\", \"#00fa9a\"],\n    [\"mediumturquoise\", \"#48d1cc\"],\n    [\"mediumvioletred\", \"#c71585\"],\n    [\"midnightblue\", \"#191970\"],\n    [\"mintcream\", \"#f5fffa\"],\n    [\"mistyrose\", \"#ffe4e1\"],\n    [\"moccasin\", \"#ffe4b5\"],\n    [\"navajowhite\", \"#ffdead\"],\n    [\"navy\", \"#000080\"],\n    [\"oldlace\", \"#fdf5e6\"],\n    [\"olive\", \"#808000\"],\n    [\"olivedrab\", \"#6b8e23\"],\n    [\"orange\", \"#ffa500\"],\n    [\"orangered\", \"#ff4500\"],\n    [\"orchid\", \"#da70d6\"],\n    [\"palegoldenrod\", \"#eee8aa\"],\n    [\"palegreen\", \"#98fb98\"],\n    [\"paleturquoise\", \"#afeeee\"],\n    [\"palevioletred\", \"#d87093\"],\n    [\"papayawhip\", \"#ffefd5\"],\n    [\"peachpuff\", \"#ffdab9\"],\n    [\"peru\", \"#cd853f\"],\n    [\"pink\", \"#ffc0cb\"],\n    [\"plum\", \"#dda0dd\"],\n    [\"powderblue\", \"#b0e0e6\"],\n    [\"purple\", \"#800080\"],\n    [\"rebeccapurple\", \"#663399\"],\n    [\"red\", \"#ff0000\"],\n    [\"rosybrown\", \"#bc8f8f\"],\n    [\"royalblue\", \"#4169e1\"],\n    [\"saddlebrown\", \"#8b4513\"],\n    [\"salmon\", \"#fa8072\"],\n    [\"sandybrown\", \"#f4a460\"],\n    [\"seagreen\", \"#2e8b57\"],\n    [\"seashell\", \"#fff5ee\"],\n    [\"sienna\", \"#a0522d\"],\n    [\"silver\", \"#c0c0c0\"],\n    [\"skyblue\", \"#87ceeb\"],\n    [\"slateblue\", \"#6a5acd\"],\n    [\"slategray\", \"#708090\"],\n    [\"snow\", \"#fffafa\"],\n    [\"springgreen\", \"#00ff7f\"],\n    [\"steelblue\", \"#4682b4\"],\n    [\"tan\", \"#d2b48c\"],\n    [\"teal\", \"#008080\"],\n    [\"thistle\", \"#d8bfd8\"],\n    [\"tomato\", \"#ff6347\"],\n    [\"turquoise\", \"#40e0d0\"],\n    [\"violet\", \"#ee82ee\"],\n    [\"wheat\", \"#f5deb3\"],\n    [\"white\", \"#ffffff\"],\n    [\"whitesmoke\", \"#f5f5f5\"],\n    [\"yellow\", \"#ffff00\"],\n    [\"yellowgreen\", \"#9acd32\"],\n]);\n\nexport interface IPaletteColor {\n    color: string;\n    label: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\n\nimport { HTML_COLORS } from \"./../../constants/color-picker.constants\";\n\n\n@Injectable()\nexport class ColorService {\n    public RGBToHexRGBToHex(rgbColor: string): string {\n        // Choose correct separator\n        const sep = rgbColor.indexOf(\",\") > -1 ? \",\" : \" \";\n        // Turn \"rgb(r,g,b)\" into [r,g,b]\n        const rgbParts = rgbColor.substr(4).split(\")\")[0].split(sep);\n\n        let r = (+rgbParts[0]).toString(16),\n            g = (+rgbParts[1]).toString(16),\n            b = (+rgbParts[2]).toString(16);\n\n        if (r.length === 1) {\n            r = \"0\" + r;\n        }\n        if (g.length === 1) {\n            g = \"0\" + g;\n        }\n        if (b.length === 1) {\n            b = \"0\" + b;\n        }\n\n        return \"#\" + r + g + b;\n    }\n\n    public isHEX(hexColor: string): boolean {\n        return (\n            /^#[0-9A-F]{6}$/i.test(hexColor) ||\n            /^#([0-9A-F]{3}){1,2}$/i.test(hexColor)\n        );\n    }\n\n    public colorKeywordsToHex(color: string): string {\n        const hexOfColor = HTML_COLORS.get(color);\n\n        return !isNil(hexOfColor) ? hexOfColor : \"\";\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Overlay, OverlayConfig } from \"@angular/cdk/overlay\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    ViewChild,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil, tap } from \"rxjs/operators\";\n\nimport { getOverlayPositions, IOptionValueObject, IResizeConfig, NuiFormFieldControl, OverlayUtilitiesService } from \"../public-api\";\nimport { SelectV2Component } from \"../select-v2/select/select-v2.component\";\nimport { IPaletteColor } from \"./../../constants/color-picker.constants\";\nimport { getColorValueByName } from \"./../../functions/color.helper\";\nimport { ColorService } from \"./color.service\";\n\n// Left and right paddings of .color-picker-container element\nconst CONTAINER_SIDE_PADDINGS_PX: number = 20;\n// Width of the .box element\nconst BOX_WIDTH_PX: number = 30;\n\n// <example-url>./../examples/index.html#/color-picker</example-url><br />\n\n@Component({\n    selector: \"nui-color-picker\",\n    templateUrl: \"./color-picker.component.html\",\n    styleUrls: [\"./color-picker.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n    providers: [\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => ColorPickerComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ColorPickerComponent),\n            multi: true,\n        },\n        ColorService,\n    ],\n})\nexport class ColorPickerComponent\n    implements\n        NuiFormFieldControl,\n        ControlValueAccessor,\n        OnChanges,\n        AfterViewInit,\n        OnDestroy\n{\n    /**\n     * Colors to be displayed as array of strings\n     */\n    @Input() colors: string[];\n    /**\n     * Color pallete which should be displayed\n     */\n    @Input() colorPalette: IPaletteColor[];\n    /**\n     * Number of columns in the color picker\n     */\n    @Input() cols: number | undefined;\n    /**\n     * Determine if the color picket should be displayed as select\n     */\n    @Input() isSelect: boolean | undefined;\n\n    @ViewChild(forwardRef(() => SelectV2Component))\n    public select: SelectV2Component;\n\n    public overlayConfig: OverlayConfig;\n    public value: string | IOptionValueObject;\n    public defaultColor: string = \"var(--nui-color-bg-secondary)\";\n    public maxWidth: string;\n    public palette: Partial<IPaletteColor[]>;\n    public isBlackTick: boolean;\n    public isInErrorState: boolean;\n    public ariaLabel?: string | undefined;\n\n    protected overlayUtilities: OverlayUtilitiesService =\n        new OverlayUtilitiesService();\n\n    private selectResizeObserver: ResizeObserver;\n    private destroy$ = new Subject<void>();\n\n    constructor(\n        protected changeDetection: ChangeDetectorRef,\n        private colorService: ColorService,\n        private cdkOverlay: Overlay\n    ) {}\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.colors) {\n            this.colors = changes.colors.currentValue;\n        }\n\n        if (changes.colorPalette) {\n            this.colorPalette = changes.colorPalette.currentValue;\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        if (!this.select) {\n            return;\n        }\n\n        if (this.value) {\n            this.select?.writeValue(this.value);\n            this.isBlackTick = this.determineBlackTick(this.value.toString());\n        }\n\n        this.palette =\n            this.colorPalette || this.colors.map((color) => ({ color }));\n\n        this.initOverlayUtilities();\n\n        this.select.valueSelected\n            .pipe(\n                tap((value) => this.writeValue(value as any)),\n                tap((value) => this.onChange(value)),\n                takeUntil(this.destroy$)\n            )\n            .subscribe((value) => {\n                if (value) {\n                    this.isBlackTick = this.determineBlackTick(\n                        value.toString()\n                    );\n                }\n            });\n\n        const positions = getOverlayPositions();\n\n        const positionStrategy = this.cdkOverlay\n            .position()\n            .flexibleConnectedTo(this.select.elRef.nativeElement)\n            .withPush(false)\n            .withViewportMargin(0)\n            .withPositions([\n                positions[\"bottom-right\"],\n                positions[\"bottom-left\"],\n                positions[\"top-right\"],\n                positions[\"top-left\"],\n            ]);\n\n        this.overlayConfig = {\n            maxWidth: this.cols\n                ? this.cols * BOX_WIDTH_PX + CONTAINER_SIDE_PADDINGS_PX + \"px\"\n                : \"260px\",\n            positionStrategy,\n        };\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    onChange(value: any): void {}\n\n    _onTouched(): void {}\n\n    public writeValue(value: string | IOptionValueObject): void {\n        this.value = value;\n        this.select?.writeValue(value);\n    }\n\n    public registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n    \n    public registerOnTouched(fn: () => void): void {\n        this._onTouched = fn;\n    }\n\n    public setStyles = (color: string): Record<string, any> => ({\n        \"background-color\": color || this.defaultColor,\n    });\n\n    public determineBlackTick(color: string): boolean {\n        let hexColorValue = \"#fff\";\n\n        if (this.colorService.isHEX(color)) {\n            hexColorValue = color;\n        } else {\n            hexColorValue =\n                getColorValueByName(color) ||\n                this.colorService.RGBToHexRGBToHex(color) ||\n                this.colorService.colorKeywordsToHex(color);\n        }\n\n        return this.getContrastOnBgColor(hexColorValue) === \"#fff\";\n    }\n\n    private initOverlayUtilities() {\n        const dropdown = this.select.dropdown;\n        const config = { updateSize: false } as IResizeConfig;\n        this.selectResizeObserver = this.overlayUtilities\n            .setPopupComponent(this.select.dropdown)\n            .getResizeObserver(config);\n\n        dropdown.show$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.overlayUtilities.syncWidth();\n            this.selectResizeObserver.observe(this.select.elRef.nativeElement);\n        });\n\n        dropdown.hide$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.selectResizeObserver.unobserve(\n                this.select.elRef.nativeElement\n            );\n        });\n    }\n\n    // convert hex code to rgb and compare the contrast of pure black and pure white on bgColor\n    private getContrastOnBgColor(bgColor: string) {\n        if (!bgColor) {\n            return \"\";\n        }\n\n        return parseInt(bgColor.replace(\"#\", \"\"), 16) > 0xffffff / 2\n            ? \"#fff\"\n            : \"#000\";\n    }\n}\n","@if (isSelect) {\n<nui-select-v2\n    class=\"color-picker-select-label\"\n    [displayValueTemplate]=\"colorPickerTemplate\"\n>\n    @for (item of palette; track item) {\n    <nui-select-v2-option\n        class=\"color-picker-select-label__option nui-text-default\"\n        [value]=\"item\"\n    >\n        <div class=\"color-picker-input__box\" [attr.title]=\"item?.label\">\n            <div\n                class=\"color-picker-select-label__color-box\"\n                [ngStyle]=\"setStyles(item?.color)\"\n            ></div>\n        </div>\n        <div>{{ item?.label }}</div>\n    </nui-select-v2-option>\n    }\n</nui-select-v2>\n} @else {\n<nui-select-v2\n    class=\"color-picker-select\"\n    [overlayConfig]=\"overlayConfig\"\n    [syncWidth]=\"false\"\n    [displayValueTemplate]=\"colorPickerTemplate\"\n>\n    <div class=\"color-picker-container\">\n        @for (item of palette; track item) {\n        <div class=\"d-inline-flex flex-wrap box\">\n            <nui-select-v2-option\n                [value]=\"item?.color\"\n                [displayValueContext]=\"item\"\n                class=\"w-100 h-100 reset-box-sizes\"\n                #option\n            >\n                <div\n                    class=\"color-picker-option\"\n                    [attr.title]=\"item?.label\"\n                    [class.color-picker-option--selected]=\"option?.selected\"\n                >\n                    <div\n                        class=\"color-picker-option__color-box\"\n                        [ngStyle]=\"setStyles(item?.color)\"\n                    >\n                        <div\n                            class=\"color-picker-option__glyph\"\n                            [class.black-tick]=\"\n                                isBlackTick || item?.color === defaultColor\n                            \"\n                            *ngIf=\"option?.selected\"\n                        ></div>\n                    </div>\n                </div>\n            </nui-select-v2-option>\n        </div>\n        }\n    </div>\n</nui-select-v2>\n}\n\n<ng-template #colorPickerTemplate let-item let-open=\"open\">\n    <div class=\"color-picker-input\">\n        <div class=\"color-picker-input__box\" [attr.title]=\"item?.label\">\n            <div\n                class=\"color-picker-input__color-box\"\n                [ngStyle]=\"setStyles(item?.color)\"\n            ></div>\n            @if (isSelect){\n            <div class=\"color-picker-input__label nui-text-default\">\n                {{ item?.label }}\n            </div>\n            }\n        </div>\n\n        <div class=\"color-picker-input__toggle\">\n            <nui-icon\n                [style.transform]=\"open ? 'rotate(180deg)' : ''\"\n                icon=\"caret-down\"\n            ></nui-icon>\n        </div>\n    </div>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\n\nimport { ColorPickerComponent } from \"./color-picker.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiSelectV2Module } from \"../select-v2/select-v2.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiSelectV2Module, NuiIconModule],\n    declarations: [ColorPickerComponent],\n    exports: [ColorPickerComponent],\n    providers: [],\n})\nexport class NuiColorPickerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\n\n/**\n * <example-url>./../examples/index.html#/content</example-url>\n */\n\n/** @ignore */\n@Component({\n    selector: \"nui-content\",\n    templateUrl: \"./content.component.html\",\n    styleUrls: [\"./content.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { role: \"document\" },\n    standalone: false,\n})\nexport class ContentComponent {\n    @Input() size: \"small\" | \"normal\" | \"large\" = \"normal\";\n\n    public getMessageClass(): string {\n        return \"nui-content-\" + this.size;\n    }\n}\n","<div class=\"nui-content\" size=\"normal\" [ngClass]=\"getMessageClass()\">\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ContentComponent } from \"./content.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule],\n    declarations: [ContentComponent],\n    exports: [ContentComponent],\n    providers: [],\n})\nexport class NuiContentModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\nimport _each from \"lodash/each\";\nimport _isNil from \"lodash/isNil\";\nimport _uniqueId from \"lodash/uniqueId\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\nimport { Subject } from \"rxjs\";\n\nimport { IDatePickerDisabledDate } from \"./public-api\";\n/** @ignore */\n@Component({\n    selector: \"nui-date-picker-inner\",\n    templateUrl: \"./date-picker-inner.component.html\",\n    standalone: false,\n})\nexport class DatePickerInnerComponent\n    implements AfterContentInit, OnInit, OnChanges, OnDestroy\n{\n    @Input() locale: string;\n    @Input() datepickerMode: string;\n    @Input() startingDay: number;\n    @Input() yearRange: number;\n    @Input() minDate: Moment;\n    @Input() maxDate: Moment;\n    @Input() minMode: string;\n    @Input() maxMode: string;\n    @Input() showWeeks: boolean;\n    @Input() dateFormat: string;\n    @Input() formatDay: string;\n    @Input() formatMonth: string;\n    @Input() formatYear: string;\n    @Input() formatDayHeader: string;\n    @Input() formatDayTitle: string;\n    @Input() formatMonthTitle: string;\n    @Input() onlyCurrentMonth: boolean;\n    @Input() preserveInsignificant: boolean;\n    @Input() disabledDates: IDatePickerDisabledDate[];\n    @Input() initDate: Moment;\n    @Input() inline: boolean;\n    @Input() selectedDate: Moment;\n    /** Is used to handle timezone of date value */\n    @Input() handleTimezone: boolean;\n\n    @Output()\n    selectionDone: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    @Output()\n    update: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    public stepDay: any = {};\n    public stepMonth: any = {};\n    public stepYear: any = {};\n\n    public uniqueId: string;\n    public isTodayButtonDisabled: boolean;\n\n    public calendarMoved: Subject<Moment> = new Subject<Moment>();\n\n    protected _value: Moment | undefined;\n    protected _todayDate: Moment = moment();\n\n    protected refreshViewHandlerDay: Function;\n    protected compareHandlerDay: Function;\n    protected refreshViewHandlerMonth: Function;\n    protected compareHandlerMonth: Function;\n    protected refreshViewHandlerYear: Function;\n    protected compareHandlerYear: Function;\n\n    private modes: string[] = [\"day\", \"month\", \"year\"];\n\n    get role(): string {\n        return this.inline ? \"application\" : \"dialog\";\n    }\n\n    @Input()\n    get value(): Moment | undefined {\n        return this._value;\n    }\n\n    set value(value: Moment | undefined) {\n        if (!this.preserveInsignificant && value) {\n            value.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\n        }\n\n        this._value = value;\n    }\n\n    public ngOnInit(): void {\n        this.uniqueId = _uniqueId(\"date-picker--\");\n\n        if (this.initDate) {\n            this.value = moment(this.initDate);\n            this.selectionDone.emit(this.value);\n            this.update.emit(this.value);\n        } else if (_isNil(this.value)) {\n            this.value = this._todayDate.clone();\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        this.refreshView();\n        this.isTodayButtonDisabled = this.isDisabled(this._todayDate);\n    }\n\n    // this.refreshView should be called here to reflect the changes on the fly\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (this.shouldRefreshViewOnChanges(changes)) {\n            this.refreshView();\n        }\n    }\n\n    public shouldRefreshViewOnChanges(changes: SimpleChanges): boolean {\n        let shouldRefreshView: boolean;\n\n        switch (this.datepickerMode) {\n            case \"day\":\n                shouldRefreshView =\n                    !_isNil(changes.value) &&\n                    !_isNil(this.selectedDate) &&\n                    !changes.value.currentValue.isSame(\n                        changes.value.previousValue\n                    );\n                break;\n            case \"month\":\n                shouldRefreshView =\n                    !_isNil(this.value) &&\n                    !_isNil(this.selectedDate) &&\n                    this.value.month() !== this.selectedDate.month();\n                break;\n            case \"year\":\n                shouldRefreshView =\n                    !_isNil(this.value) &&\n                    !_isNil(this.selectedDate) &&\n                    this.value.year() !== this.selectedDate.year();\n                break;\n            default:\n                shouldRefreshView = false;\n        }\n\n        if (shouldRefreshView) {\n            _each(changes, (change) => {\n                shouldRefreshView =\n                    !change.firstChange &&\n                    moment.isMoment(change.currentValue) &&\n                    !change.currentValue.isSame(change.previousValue);\n            });\n        }\n\n        return shouldRefreshView;\n    }\n\n    public setCompareHandler(handler: Function, type: string): void {\n        if (type === \"day\") {\n            this.compareHandlerDay = handler;\n        }\n\n        if (type === \"month\") {\n            this.compareHandlerMonth = handler;\n        }\n\n        if (type === \"year\") {\n            this.compareHandlerYear = handler;\n        }\n    }\n\n    public compare(date1: Moment, date2?: Moment): number | undefined {\n        if (_isNil(date1) || _isNil(date2)) {\n            return undefined;\n        }\n\n        if (this.datepickerMode === \"day\" && this.compareHandlerDay) {\n            return this.compareHandlerDay(date1, date2);\n        }\n\n        if (this.datepickerMode === \"month\" && this.compareHandlerMonth) {\n            return this.compareHandlerMonth(date1, date2);\n        }\n\n        if (this.datepickerMode === \"year\" && this.compareHandlerYear) {\n            return this.compareHandlerYear(date1, date2);\n        }\n\n        return void 0;\n    }\n\n    public setRefreshViewHandler(handler: Function, type: string): void {\n        if (type === \"day\") {\n            this.refreshViewHandlerDay = handler;\n        }\n\n        if (type === \"month\") {\n            this.refreshViewHandlerMonth = handler;\n        }\n\n        if (type === \"year\") {\n            this.refreshViewHandlerYear = handler;\n        }\n    }\n\n    public refreshView(): void {\n        if (this.datepickerMode === \"day\" && this.refreshViewHandlerDay) {\n            this.refreshViewHandlerDay();\n        }\n\n        if (this.datepickerMode === \"month\" && this.refreshViewHandlerMonth) {\n            this.refreshViewHandlerMonth();\n        }\n\n        if (this.datepickerMode === \"year\" && this.refreshViewHandlerYear) {\n            this.refreshViewHandlerYear();\n        }\n    }\n\n    public createDateObject(date: Moment, format: string): any {\n        return {\n            date: date.clone().toISOString(this.handleTimezone),\n            label: this.formatDate(date, format),\n            selected: this.compare(date, this.selectedDate) === 0,\n            disabled: this.isDisabled(date),\n            current: this.compare(date, this.value) === 0,\n            today: this.compare(date, this._todayDate) === 0,\n        };\n    }\n\n    public split(arr: any[], size: number): any[] {\n        const arrays: any[] = [];\n\n        while (arr.length > 0) {\n            arrays.push(arr.splice(0, size));\n        }\n\n        return arrays;\n    }\n\n    public select(date: string, event: any): void {\n        this.value = this.handleTimezone\n            ? moment.parseZone(date)\n            : moment(date);\n\n        if (this.datepickerMode === this.minMode) {\n            this.selectionDone.emit(this.value);\n        } else {\n            this.datepickerMode =\n                this.modes[this.modes.indexOf(this.datepickerMode) - 1];\n            event.stopPropagation();\n        }\n\n        this.update.emit(this.value);\n        this.refreshView();\n    }\n\n    public move(direction: number, event: any): void {\n        let expectedStep: any;\n\n        if (this.datepickerMode === \"day\") {\n            expectedStep = this.stepDay;\n        }\n\n        if (this.datepickerMode === \"month\") {\n            expectedStep = this.stepMonth;\n        }\n\n        if (this.datepickerMode === \"year\") {\n            expectedStep = this.stepYear;\n        }\n\n        if (expectedStep) {\n            const activeDateMoment = this.value || moment();\n\n            const year =\n                activeDateMoment.year() + direction * (expectedStep.years || 0);\n            const month =\n                activeDateMoment.month() +\n                direction * (expectedStep.months || 0);\n\n            this.value = activeDateMoment\n                .clone()\n                .set({ year: year, month: month, date: 1 });\n            this.refreshView();\n\n            this.calendarMoved.next(this.value);\n        }\n\n        event.stopPropagation();\n    }\n\n    public toggleMode(event: any, _direction?: number): void {\n        const direction = _direction || 1;\n\n        if (\n            (this.datepickerMode === this.maxMode && direction === 1) ||\n            (this.datepickerMode === this.minMode && direction === -1)\n        ) {\n            return;\n        }\n\n        this.datepickerMode =\n            this.modes[this.modes.indexOf(this.datepickerMode) + direction];\n        this.refreshView();\n        event.stopPropagation();\n    }\n\n    public isDisabled(date: Moment): boolean {\n        let isDateDisabled = false;\n\n        if (this.disabledDates) {\n            this.disabledDates.forEach(\n                (disabledDate: { date: Moment; mode: string }) => {\n                    if (this.compareDateDisabled(disabledDate, date) === 0) {\n                        isDateDisabled = true;\n                    }\n                }\n            );\n        }\n\n        if (isDateDisabled) {\n            return isDateDisabled;\n        }\n\n        const diff1: number | undefined = this.compare(date, this.minDate);\n        const diff2: number | undefined = this.compare(date, this.maxDate);\n\n        return (\n            (this.minDate && (diff1 || 0) < 0) ||\n            (this.maxDate && (diff2 || 0) > 0)\n        );\n    }\n\n    public formatDate(date: any, format: any): string {\n        return moment(date).clone().format(format);\n    }\n\n    protected compareDateDisabled(\n        date1Disabled: { date: Moment; mode: string },\n        date2: Moment\n    ): number | undefined {\n        if (_isNil(date1Disabled) || _isNil(date2)) {\n            return undefined;\n        }\n\n        if (date1Disabled.mode === \"day\" && this.compareHandlerDay) {\n            return this.compareHandlerDay(date1Disabled.date, date2);\n        }\n\n        if (date1Disabled.mode === \"month\" && this.compareHandlerMonth) {\n            return this.compareHandlerMonth(date1Disabled.date, date2);\n        }\n\n        if (date1Disabled.mode === \"year\" && this.compareHandlerYear) {\n            return this.compareHandlerYear(date1Disabled.date, date2);\n        }\n\n        return undefined;\n    }\n\n    public ngOnDestroy(): void {\n        this.calendarMoved.complete();\n    }\n}\n","<div *ngIf=\"datepickerMode\" class=\"nui-datepicker-inner\" [attr.role]=\"role\">\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\nimport moment, { Moment } from \"moment/moment\";\n\nimport { DatePickerInnerComponent } from \"./date-picker-inner.component\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-day-picker\",\n    templateUrl: \"./date-picker-day-picker.component.html\",\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class DayPickerComponent implements OnInit {\n    public labels: any[] = [];\n    public title: string;\n    public rows: any[] = [];\n    public weekNumbers: number[] = [];\n\n    /*\n     *  TODO: Check the default value, Added variable\n     *  to avoid build prod crash\n     */\n    public todayDate: string = moment().toString();\n\n    constructor(public datePicker: DatePickerInnerComponent) {\n        this.datePicker = datePicker;\n    }\n\n    public ngOnInit(): void {\n        this.datePicker.stepDay = { months: 1 };\n\n        this.datePicker.setRefreshViewHandler((): void => {\n            const picker = this.datePicker;\n            const value =\n                picker.value && picker.value.isValid()\n                    ? picker.value.clone()\n                    : moment();\n\n            const month = value.month();\n            const firstDateOfMonthDayOfWeek = value\n                .clone()\n                .set(\"date\", 1)\n                .day();\n            const difference = picker.startingDay - firstDateOfMonthDayOfWeek;\n            const numDisplayedFromPreviousMonth =\n                difference > 0 ? 7 - difference : -difference;\n            const firstDateOfMonth =\n                numDisplayedFromPreviousMonth > 0\n                    ? value\n                          .clone()\n                          .set(\"date\", -numDisplayedFromPreviousMonth + 1)\n                    : value.clone().set(\"date\", 1);\n\n            // 42 is the number of days on a six-week calendar\n            const _days: any[] = this.getDates(firstDateOfMonth, 42);\n            const days: any[] = [];\n\n            for (let i = 0; i < 42; i++) {\n                const handler = this.datePicker.handleTimezone\n                    ? moment.parseZone\n                    : moment;\n                const _dateObject = picker.createDateObject(\n                    handler(_days[i].date),\n                    picker.formatDay\n                );\n\n                _dateObject.secondary = _days[i].month !== month;\n                _dateObject.uid = picker.uniqueId + \"-\" + i;\n                _dateObject.isCellVisible = !(\n                    picker.onlyCurrentMonth && _dateObject.secondary\n                );\n                days[i] = _dateObject;\n            }\n\n            this.labels = [];\n\n            for (let j = 0; j < 7; j++) {\n                this.labels[j] = {\n                    abbr: picker.formatDate(\n                        days[j].date,\n                        picker.formatDayHeader\n                    ),\n                    full: picker.formatDate(days[j].date, \"EEEE\"),\n                };\n            }\n\n            this.title = picker.formatDate(value, picker.formatDayTitle);\n            this.rows = picker.split(days, 7).map((row) => ({\n                days: row,\n                isRowVisible: !(\n                    picker.onlyCurrentMonth &&\n                    row[0].secondary &&\n                    row[6].secondary\n                ),\n            }));\n\n            if (picker.showWeeks) {\n                const thursdayIndex = (4 + 7 - picker.startingDay) % 7;\n                const numWeeks = this.rows.length;\n\n                this.weekNumbers = [];\n\n                for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n                    this.weekNumbers.push(\n                        moment(\n                            this.rows[curWeek].days[thursdayIndex].date\n                        ).isoWeek()\n                    );\n                }\n            }\n        }, \"day\");\n\n        this.datePicker.setCompareHandler(\n            (date1: Moment, date2: Moment): number => {\n                const d1 = moment({\n                    year: date1.year(),\n                    month: date1.month(),\n                    date: date1.date(),\n                });\n                const d2 = moment({\n                    year: date2.year(),\n                    month: date2.month(),\n                    date: date2.date(),\n                });\n                return d1.valueOf() - d2.valueOf();\n            },\n            \"day\"\n        );\n    }\n\n    protected getDates(startDate: Moment, n: number): Moment[] {\n        const dates: any[] = new Array(n);\n\n        let current = startDate.clone();\n        let i = 0;\n\n        while (i < n) {\n            dates[i++] = {\n                date: current.toISOString(this.datePicker.handleTimezone),\n                day: current.day(),\n                month: current.month(),\n            };\n\n            current = current.clone().date(current.date() + 1);\n        }\n\n        return dates;\n    }\n}\n","<table\n    *ngIf=\"datePicker.datepickerMode === 'day'\"\n    role=\"grid\"\n    [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\"\n    aria-activedescendant=\"activeDateId\"\n>\n    <thead>\n        <tr>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    icon=\"caret-left\"\n                    (click)=\"datePicker.move(-1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n            <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n                <button\n                    nui-button\n                    type=\"button\"\n                    [id]=\"datePicker.uniqueId + '-title'\"\n                    displayStyle=\"action\"\n                    [disabled]=\"\n                        datePicker.datepickerMode === datePicker.maxMode\n                    \"\n                    class=\"change-mode-button\"\n                    [ngClass]=\"{\n                        disabled:\n                            datePicker.datepickerMode === datePicker.maxMode\n                    }\"\n                    (click)=\"datePicker.toggleMode($event)\"\n                    tabindex=\"-1\"\n                >\n                    <span>{{ title }}</span>\n                </button>\n            </th>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    icon=\"caret-right\"\n                    (click)=\"datePicker.move(1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n        </tr>\n        <tr>\n            <th *ngIf=\"datePicker.showWeeks\"></th>\n            <th *ngFor=\"let label of labels\" class=\"text-center\">\n                <div class=\"day-label\">\n                    <span aria-label=\"label.full\">{{ label.abbr }}</span>\n                </div>\n            </th>\n        </tr>\n    </thead>\n    <tbody>\n        <ng-template\n            ngFor\n            [ngForOf]=\"rows\"\n            let-row=\"$implicit\"\n            let-index=\"index\"\n        >\n            <tr *ngIf=\"row.isRowVisible\">\n                <td *ngIf=\"datePicker.showWeeks\" class=\"h6 text-center\">\n                    <em>{{ weekNumbers[index] }}</em>\n                </td>\n                <td\n                    *ngFor=\"let cell of row.days\"\n                    class=\"text-center day\"\n                    [id]=\"cell.uid\"\n                >\n                    <button\n                        *ngIf=\"cell.isCellVisible\"\n                        nui-button\n                        type=\"button\"\n                        displayStyle=\"action\"\n                        [ngClass]=\"{\n                            selected: cell.selected,\n                            disabled: cell.disabled\n                        }\"\n                        [disabled]=\"cell.disabled\"\n                        (click)=\"datePicker.select(cell.date, $event)\"\n                        tabindex=\"-1\"\n                    >\n                        <span\n                            [ngClass]=\"{\n                                'text-muted': cell.secondary,\n                                'text-info': cell.current,\n                                today: cell.today\n                            }\"\n                            >{{ cell.label }}</span\n                        >\n                    </button>\n                </td>\n            </tr>\n        </ng-template>\n        <tr>\n            <td [attr.colspan]=\"7 + (datePicker.showWeeks ? 1 : 0)\">\n                <button\n                    nui-button\n                    type=\"button\"\n                    class=\"today-button\"\n                    displayStyle=\"action\"\n                    [disabled]=\"datePicker.isTodayButtonDisabled\"\n                    (click)=\"datePicker.select(todayDate, $event)\"\n                    i18n\n                >\n                    Today\n                </button>\n            </td>\n        </tr>\n    </tbody>\n</table>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, OnInit } from \"@angular/core\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\n\nimport { DatePickerInnerComponent } from \"./date-picker-inner.component\";\n/** @ignore */\n@Component({\n    selector: \"nui-month-picker\",\n    templateUrl: \"./date-picker-month-picker.component.html\",\n    standalone: false,\n})\nexport class MonthPickerComponent implements OnInit {\n    title: string;\n    rows: any[] = [];\n    maxMode: string;\n\n    constructor(public datePicker: DatePickerInnerComponent) {\n        this.datePicker = datePicker;\n    }\n\n    public ngOnInit(): void {\n        this.datePicker.stepMonth = { years: 1 };\n\n        this.datePicker.setRefreshViewHandler((): void => {\n            const picker = this.datePicker;\n            const months: any[] = new Array(12);\n\n            let date: Moment =\n                picker.value && picker.value.isValid()\n                    ? picker.value.clone()\n                    : moment();\n            date = date.set(\"date\", 1);\n\n            for (let i = 0; i < 12; i++) {\n                date = date.clone().set(\"month\", i);\n                months[i] = picker.createDateObject(date, picker.formatMonth);\n                months[i].uid = picker.uniqueId + \"-\" + i;\n            }\n\n            this.title = picker.formatDate(date, picker.formatMonthTitle);\n            this.rows = picker.split(months, 3);\n        }, \"month\");\n\n        this.datePicker.setCompareHandler(\n            (date1: Moment, date2: Moment): number => {\n                const d1 = moment({ year: date1.year(), month: date1.month() });\n                const d2 = moment({ year: date2.year(), month: date2.month() });\n                return d1.valueOf() - d2.valueOf();\n            },\n            \"month\"\n        );\n    }\n}\n","<table *ngIf=\"datePicker.datepickerMode === 'month'\" role=\"grid\">\n    <thead>\n        <tr>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    icon=\"caret-left\"\n                    (click)=\"datePicker.move(-1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    [id]=\"datePicker.uniqueId + '-title'\"\n                    displayStyle=\"action\"\n                    [disabled]=\"datePicker.datepickerMode === maxMode\"\n                    class=\"change-mode-button\"\n                    [ngClass]=\"{\n                        disabled: datePicker.datepickerMode === maxMode\n                    }\"\n                    (click)=\"datePicker.toggleMode($event)\"\n                    tabindex=\"-1\"\n                >\n                    <span>{{ title }}</span>\n                </button>\n            </th>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    icon=\"caret-right\"\n                    (click)=\"datePicker.move(1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr *ngFor=\"let row of rows\">\n            <td\n                *ngFor=\"let cell of row\"\n                class=\"text-center month\"\n                id=\"{{ cell.uid }}\"\n            >\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    [ngClass]=\"{\n                        selected: cell.selected,\n                        disabled: cell.disabled\n                    }\"\n                    [disabled]=\"cell.disabled\"\n                    (click)=\"datePicker.select(cell.date, $event)\"\n                    tabindex=\"-1\"\n                >\n                    <span [ngClass]=\"{ 'text-info': cell.current }\">{{\n                        cell.label\n                    }}</span>\n                </button>\n            </td>\n        </tr>\n    </tbody>\n</table>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, OnInit } from \"@angular/core\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\n\nimport { DatePickerInnerComponent } from \"./date-picker-inner.component\";\n/** @ignore */\n@Component({\n    selector: \"nui-year-picker\",\n    templateUrl: \"./date-picker-year-picker.component.html\",\n    standalone: false,\n})\nexport class YearPickerComponent implements OnInit {\n    title: string;\n    rows: any[] = [];\n\n    constructor(public datePicker: DatePickerInnerComponent) {\n        this.datePicker = datePicker;\n    }\n\n    public ngOnInit(): void {\n        this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n        this.datePicker.setRefreshViewHandler((): void => {\n            const picker = this.datePicker;\n            const years: any[] = new Array(picker.yearRange);\n\n            let date: Moment =\n                picker.value && picker.value.isValid()\n                    ? picker.value.clone()\n                    : moment();\n            date = date.set(\"date\", 1);\n\n            const start = this.getStartingYear(date.year());\n\n            for (let i = 0; i < picker.yearRange; i++) {\n                date = date.set({ year: start + i });\n                years[i] = picker.createDateObject(date, picker.formatYear);\n                years[i].uid = picker.uniqueId + \"-\" + i;\n            }\n\n            this.title = [\n                years[0].label,\n                years[picker.yearRange - 1].label,\n            ].join(\" - \");\n            this.rows = picker.split(years, 5);\n        }, \"year\");\n\n        this.datePicker.setCompareHandler(\n            (date1: Moment, date2: Moment): number =>\n                date1.year() - date2.year(),\n            \"year\"\n        );\n    }\n\n    protected getStartingYear(year: number): number {\n        return (\n            ((year - 1) / this.datePicker.yearRange) *\n                this.datePicker.yearRange +\n            1\n        );\n    }\n}\n","<table *ngIf=\"datePicker.datepickerMode === 'year'\" role=\"grid\">\n    <thead>\n        <tr>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    icon=\"caret-left\"\n                    displayStyle=\"action\"\n                    (click)=\"datePicker.move(-1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n            <th [attr.colspan]=\"3\">\n                <button\n                    nui-button\n                    type=\"button\"\n                    [id]=\"datePicker.uniqueId + '-title'\"\n                    displayStyle=\"action\"\n                    [disabled]=\"\n                        datePicker.datepickerMode === datePicker.maxMode\n                    \"\n                    class=\"change-mode-button\"\n                    [ngClass]=\"{\n                        disabled:\n                            datePicker.datepickerMode === datePicker.maxMode\n                    }\"\n                    (click)=\"datePicker.toggleMode($event)\"\n                    tabindex=\"-1\"\n                >\n                    <span>{{ title }}</span>\n                </button>\n            </th>\n            <th>\n                <button\n                    nui-button\n                    type=\"button\"\n                    icon=\"caret-right\"\n                    displayStyle=\"action\"\n                    (click)=\"datePicker.move(1, $event)\"\n                    tabindex=\"-1\"\n                ></button>\n            </th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr *ngFor=\"let row of rows\">\n            <td *ngFor=\"let cell of row\" class=\"text-center year\">\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    [ngClass]=\"{\n                        selected: cell.selected,\n                        disabled: cell.disabled\n                    }\"\n                    [disabled]=\"cell.disabled\"\n                    (click)=\"datePicker.select(cell.date, $event)\"\n                    tabindex=\"-1\"\n                >\n                    <span [ngClass]=\"{ 'text-info': cell.current }\">{{\n                        cell.label\n                    }}</span>\n                </button>\n            </td>\n        </tr>\n    </tbody>\n</table>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\nimport _isNil from \"lodash/isNil\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\n\n/**\n * Class that represents custom Nui validators\n */\n\n/**\n * @ignore\n */\nexport class NuiValidators {\n    /**\n     * Validator that returns validation function and checks if value matches integer regex.\n     * @param  unsigned\n     * @returns\n     */\n    static integer(unsigned: boolean = false): ValidatorFn {\n        const res = (control: AbstractControl): ValidationErrors | null => {\n            const integerRegex: RegExp = unsigned\n                ? /^(0|[1-9]\\d*)$/\n                : /^\\-?(0|[1-9]\\d*)$/;\n            const errorObject = {\n                value: control.value,\n                invalidInteger: \"Invalid integer value\",\n            };\n            const valid = integerRegex.test(control.value);\n            return valid ? null : errorObject;\n        };\n        return res;\n    }\n\n    /**\n     * Validator that returns date validation using Moment.isValid method.\n     */\n    static dateFormat(value: Moment): ValidationErrors | null {\n        return !_isNil(value) && moment.isMoment(value) && value.isValid()\n            ? null\n            : { invalidFormat: \"The provided format is invalid\" };\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./nui-validators\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayConfig } from \"@angular/cdk/overlay\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n    ControlValueAccessor,\n    FormControl,\n    NG_VALIDATORS,\n    NG_VALUE_ACCESSOR,\n    ValidationErrors,\n} from \"@angular/forms\";\nimport _defaults from \"lodash/defaults\";\nimport _isEqual from \"lodash/isEqual\";\nimport _isNil from \"lodash/isNil\";\nimport _isNull from \"lodash/isNull\";\nimport moment, { Moment } from \"moment/moment\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\n\nimport { DatePickerInnerComponent } from \"./date-picker-inner.component\";\nimport {\n    datePickerDateFormats,\n    datePickerDefaults,\n    IDatePickerDisabledDate,\n} from \"./public-api\";\nimport { NuiValidators } from \"../../validators\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\nimport { OVERLAY_WITH_POPUP_STYLES_CLASS } from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\nimport { TextboxComponent } from \"../textbox/textbox.component\";\n\n// <example-url>./../examples/index.html#/date-picker</example-url><br />\n@Component({\n    selector: \"nui-date-picker\",\n    templateUrl: \"./date-picker.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DatePickerComponent),\n            multi: true,\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: forwardRef(() => DatePickerComponent),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => DatePickerComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./date-picker.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class DatePickerComponent\n    implements\n        OnChanges,\n        OnInit,\n        ControlValueAccessor,\n        NuiFormFieldControl,\n        AfterViewInit,\n        OnDestroy\n{\n    /** sets date-picker inline mode */\n    @HostBinding(\"class.nui-datepicker--inline\")\n    @Input()\n    inline: boolean;\n    /** checks if value in datepicker is required */\n    @Input() isRequired: boolean;\n    /** Option to disabled datepicker. */\n    @Input() isDisabled: boolean;\n    /** to apply error state styles */\n    @Input() isInErrorState: boolean;\n    /** Input to set aria label text */\n    @Input() public ariaLabel: string = \"Date Picker\";\n\n    // TODO: Consider injecting locale through LOCALE_ID Injection Token\n    /** to date format locale */\n    @Input() locale: string;\n    /** sets date-picker mode, supports: `day`, `month`, `year` */\n    @Input() datepickerMode = \"day\";\n    /**  earliest selectable date */\n    @Input() minDate: Moment;\n    /** latest selectable date */\n    @Input() maxDate: Moment;\n    /** set lower date-picker mode, supports: `day`, `month`, `year` */\n    @Input() minMode: string;\n    /** sets upper date-picker mode, supports: `day`, `month`, `year` */\n    @Input() maxMode: string;\n    /** if false week numbers will be hidden */\n    @Input() showWeeks = false;\n    /** date format, used to format selected date */\n    @Input() dateFormat: string;\n    /** format of day in month */\n    @Input() formatDay: string;\n    /** format of month in year */\n    @Input() formatMonth: string;\n    /** format of year in year range */\n    @Input() formatYear: string;\n    /** format of day in week header */\n    @Input() formatDayHeader: string;\n    /** format of title when selecting day */\n    @Input() formatDayTitle: string;\n    /** format of title when selecting month */\n    @Input() formatMonthTitle: string;\n    /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n    @Input() startingDay: number;\n    /** number of years displayed in year selection */\n    @Input() yearRange: number;\n    /** if true only dates from the currently displayed month will be shown */\n    @Input() onlyCurrentMonth: boolean;\n    /** number of months displayed in a single row of month picker */\n    @Input() preserveInsignificant = false;\n    /** array of custom css classes to be applied to targeted dates */\n    @Input() disabledDates: IDatePickerDisabledDate[];\n    /** Is used to handle timezone of date value */\n    @Input() handleTimezone: boolean;\n    /** Allows popup box to be attached to document.body */\n    @Input() appendToBody: boolean;\n\n    /** currently active date */\n    @Input()\n    get value(): Moment {\n        return this._value;\n    }\n\n    set value(value: Moment) {\n        if (!this.preserveInsignificant && value) {\n            value.set({ hour: 0, minute: 0, second: 0, millisecond: 0 });\n        }\n        if (!value || (value && value.isSame(this._value))) {\n            return;\n        }\n        this.setDate(value);\n        this.updateTextboxValue();\n    }\n\n    @Output()\n    selectionDone: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    /** callback to invoke when the value is changed. */\n    @Output()\n    valueChange: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    @Output()\n    calendarNavigated: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    @Output()\n    inputBlurred: EventEmitter<any> = new EventEmitter<Moment>();\n\n    @ViewChild(DatePickerInnerComponent)\n    _datePicker: DatePickerInnerComponent;\n\n    @ViewChild(\"date\") textbox: TextboxComponent;\n\n    @ViewChild(\"popupArea\", { static: true }) popupArea: ElementRef;\n    @ViewChild(OverlayComponent) public overlay: OverlayComponent;\n\n    public onDestroy$ = new Subject<void>();\n    public customContainer: ElementRef | undefined;\n    public selectedDate: Moment;\n    public initDate: Moment;\n    public overlayConfig: OverlayConfig = {\n        panelClass: [OVERLAY_WITH_POPUP_STYLES_CLASS],\n    };\n\n    protected _value: Moment;\n    protected _todayDate: Moment = moment();\n\n    private formControl: FormControl;\n    private inputChanged: Subject<string> = new Subject<string>();\n    private momentDateFormat: string;\n    private calendarChanged: Subscription;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    public ngOnInit(): void {\n        _defaults(this, datePickerDefaults);\n        this.selectedDate = this._value;\n        this.initDate = this.value && this.value.clone();\n        this.setDateFormat();\n\n        this.inputChanged.pipe(debounceTime(500)).subscribe((value: string) => {\n            const momentValue = moment(value, datePickerDateFormats, true);\n            this.onTouched();\n\n            // In case of FormControl absence we still need to perform validation\n            const templateDrivenControlValid =\n                !this.formControl &&\n                _isNull(NuiValidators.dateFormat(momentValue));\n            const reactiveDrivenControlValid =\n                this.formControl &&\n                this.formControl.valid &&\n                _isNull(NuiValidators.dateFormat(momentValue));\n            const isInputValid =\n                (templateDrivenControlValid || reactiveDrivenControlValid) &&\n                !this.isDateDisabled(momentValue);\n\n            this.setDate(momentValue);\n            this.setErrorState(!isInputValid);\n\n            if (\n                this.value.isValid() &&\n                !_isEqual(this.value.format(this.momentDateFormat), value)\n            ) {\n                this.updateTextboxValue();\n            }\n        });\n        this.onAppendToBodyChange(this.appendToBody);\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.appendToBody) {\n            this.onAppendToBodyChange(changes.appendToBody.currentValue);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.calendarChanged = this._datePicker.calendarMoved.subscribe(\n            (value: Moment) => this.calendarNavigated.emit(value)\n        );\n        this.updateTextboxValue();\n        this.cd.detectChanges();\n        if (this.overlay) {\n            this.overlay.clickOutside\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe((_) => this.overlay.hide());\n\n            // Sets innerDatePicker 'value' to 'null' on popup close and refreshView() on popup open,\n            // so in case datePicker.value is invalid it will build the calendar from the scratch\n            // and not keep its previous state.\n\n            this.overlay.show$\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe((_) => this._datePicker.refreshView());\n            this.overlay.hide$\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe((_) => {\n                    const currentDateValid = this.value?.isValid();\n                    if (!currentDateValid) {\n                        this._datePicker.value = undefined;\n                        this._datePicker.datepickerMode = \"day\";\n                    }\n                });\n        }\n    }\n\n    public updateTouchedState(): void {\n        setTimeout(() => this.inputBlurred.emit(), 100);\n        this.onTouched();\n    }\n\n    public onUpdate(event: Moment): void {\n        this.value = event;\n        this.selectionDone.emit(event);\n        this.setErrorState(false);\n    }\n\n    private setDate(value: Moment): void {\n        this._value = value;\n        this.selectedDate = value;\n        this.valueChange.emit(value);\n        this.onChange(value);\n    }\n\n    public onInputActiveDateChanged(value: string): void {\n        this.inputChanged.next(value);\n    }\n\n    public getIconColor(): string {\n        return this.isDisabled ? \"gray\" : \"primary-blue\";\n    }\n\n    public onChange(value: any): void {}\n\n    public onTouched(): void {}\n\n    public validate(control: FormControl): ValidationErrors | null {\n        this.formControl = control;\n        return NuiValidators.dateFormat(control.value);\n    }\n\n    public writeValue(value: any): void {\n        this.value = value;\n    }\n\n    public registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    public registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n    }\n\n    public setErrorState(isInErrorState: boolean): void {\n        this.isInErrorState = isInErrorState;\n    }\n\n    public onSelectionDone(value: Moment): void {\n        this.value = value;\n        this.overlay?.hide();\n    }\n\n    private updateTextboxValue(value: any = this._value) {\n        if (!this.textbox || !value) {\n            return;\n        }\n        this.textbox.writeValue(moment(value).format(this.momentDateFormat));\n    }\n\n    private isDateDisabled(value: Moment): boolean {\n        return this._datePicker.isDisabled(value);\n    }\n\n    private setDateFormat(): void {\n        const isCustomFormatValid =\n            !_isNil(this.dateFormat) &&\n            moment(\n                this._todayDate.format(this.dateFormat),\n                datePickerDateFormats,\n                true\n            ).isValid();\n        this.momentDateFormat = isCustomFormatValid\n            ? this.dateFormat\n            : datePickerDefaults.dateFormat;\n    }\n\n    public ngOnDestroy(): void {\n        // The following resolves a known 'Error during cleanup of component:' error during unit tests\n        // Details: https://github.com/angular/angular/issues/17013\n        if (this.calendarChanged) {\n            this.calendarChanged.unsubscribe();\n        }\n\n        if (this.overlay?.showing) {\n            this.overlay.hide();\n        }\n\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    private onAppendToBodyChange(appendToBody: boolean): void {\n        this.customContainer = appendToBody ? undefined : this.popupArea;\n    }\n}\n","<div class=\"nui-datepicker\">\n    <ng-container *ngIf=\"!inline\">\n        <div\n            #toggleRef\n            class=\"nui-datepicker__container\"\n            [class.disabled]=\"isDisabled\"\n            (click)=\"!isDisabled && overlay.toggle()\"\n        >\n            <nui-textbox\n                #date\n                autocomplete=\"off\"\n                [disabled]=\"isDisabled\"\n                [isInErrorState]=\"isInErrorState\"\n                (textChange)=\"onInputActiveDateChanged($event)\"\n                (blurred)=\"updateTouchedState()\"\n                [ariaLabel]=\"ariaLabel\"\n            >\n            </nui-textbox>\n            <nui-icon\n                class=\"nui-datepicker__icon\"\n                icon=\"calendar\"\n                aria-hidden=\"true\"\n                [iconColor]=\"getIconColor()\"\n            ></nui-icon>\n        </div>\n        <nui-overlay\n            #overlay\n            [toggleReference]=\"toggleRef\"\n            [overlayConfig]=\"overlayConfig\"\n            [customContainer]=\"customContainer\"\n        >\n            <ng-container *ngTemplateOutlet=\"datePickerInner\"></ng-container>\n        </nui-overlay>\n    </ng-container>\n\n    <div *ngIf=\"inline\">\n        <ng-container *ngTemplateOutlet=\"datePickerInner\"></ng-container>\n    </div>\n\n    <div #popupArea></div>\n</div>\n<ng-template #datePickerInner>\n    <nui-date-picker-inner\n        [preserveInsignificant]=\"preserveInsignificant\"\n        [selectedDate]=\"selectedDate\"\n        [inline]=\"inline\"\n        (update)=\"onUpdate($event)\"\n        (selectionDone)=\"onSelectionDone($event)\"\n        [locale]=\"locale\"\n        [datepickerMode]=\"datepickerMode\"\n        [initDate]=\"initDate\"\n        [minDate]=\"minDate\"\n        [maxDate]=\"maxDate\"\n        [minMode]=\"minMode\"\n        [maxMode]=\"maxMode\"\n        [showWeeks]=\"showWeeks\"\n        [dateFormat]=\"dateFormat\"\n        [formatDay]=\"formatDay\"\n        [formatMonth]=\"formatMonth\"\n        [formatYear]=\"formatYear\"\n        [formatDayHeader]=\"formatDayHeader\"\n        [formatDayTitle]=\"formatDayTitle\"\n        [formatMonthTitle]=\"formatMonthTitle\"\n        [startingDay]=\"startingDay\"\n        [yearRange]=\"yearRange\"\n        [disabledDates]=\"disabledDates\"\n        [onlyCurrentMonth]=\"onlyCurrentMonth\"\n        [handleTimezone]=\"handleTimezone\"\n        [value]=\"value\"\n    >\n        <nui-day-picker tabindex=\"0\"></nui-day-picker>\n        <nui-month-picker tabindex=\"0\"></nui-month-picker>\n        <nui-year-picker tabindex=\"0\"></nui-year-picker>\n    </nui-date-picker-inner>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { DayPickerComponent } from \"./date-picker-day-picker.component\";\nimport { DatePickerInnerComponent } from \"./date-picker-inner.component\";\nimport { MonthPickerComponent } from \"./date-picker-month-picker.component\";\nimport { YearPickerComponent } from \"./date-picker-year-picker.component\";\nimport { DatePickerComponent } from \"./date-picker.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\nimport { NuiTextboxModule } from \"../textbox/textbox.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiTextboxModule,\n        NuiIconModule,\n        NuiButtonModule,\n        NuiOverlayModule,\n    ],\n    declarations: [\n        YearPickerComponent,\n        MonthPickerComponent,\n        DatePickerInnerComponent,\n        DayPickerComponent,\n        DatePickerComponent,\n    ],\n    exports: [DatePickerComponent],\n    providers: [],\n})\nexport class NuiDatePickerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ActiveDescendantKeyManager } from \"@angular/cdk/a11y\";\nimport { Injectable } from \"@angular/core\";\n\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { MenuItemBaseComponent, MenuPopupComponent } from \"../menu\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\n\nconst scrollOption = { block: \"nearest\" } as ScrollIntoViewOptions;\n\n@Injectable()\nexport class TimePickerKeyboardService {\n    public overlay: OverlayComponent;\n    private popup: MenuPopupComponent;\n    private menuItems: MenuItemBaseComponent[];\n    private keyboardEventsManager: ActiveDescendantKeyManager<MenuItemBaseComponent>;\n    private menuTrigger: HTMLElement;\n\n    public initService(\n        popup: MenuPopupComponent,\n        overlay: OverlayComponent,\n        trigger: HTMLElement\n    ): void {\n        this.overlay = overlay;\n        this.popup = popup;\n        this.menuItems = popup.menuItems.toArray();\n        this.keyboardEventsManager =\n            new ActiveDescendantKeyManager<MenuItemBaseComponent>(\n                this.menuItems\n            );\n        this.menuTrigger = trigger;\n    }\n\n    public onKeyDown(event: KeyboardEvent): void {\n        this.overlay.showing\n            ? this.handleOpenedMenu(event)\n            : this.handleClosedMenu(event);\n    }\n\n    private handleOpenedMenu(event: KeyboardEvent): void {\n        const { code } = event;\n\n        if (code === KEYBOARD_CODE.ESCAPE) {\n            this.hideMenu();\n        }\n\n        if (\n            code === KEYBOARD_CODE.ARROW_DOWN ||\n            code === KEYBOARD_CODE.ARROW_UP\n        ) {\n            this.navigateByArrow(event);\n        }\n\n        if (code === KEYBOARD_CODE.ENTER) {\n            event.preventDefault();\n            this.keyboardEventsManager.activeItem?.doAction(event);\n        }\n\n        if (\n            code === KEYBOARD_CODE.SPACE &&\n            document.activeElement === this.menuTrigger\n        ) {\n            event.preventDefault();\n            this.overlay.toggle();\n        }\n    }\n\n    private handleClosedMenu(event: KeyboardEvent): void {\n        const { code } = event;\n        const isIconTrigger =\n            document.activeElement === this.menuTrigger &&\n            this.isOpenMenuCode(code as KEYBOARD_CODE);\n        const isInputTrigger =\n            document.activeElement !== this.menuTrigger &&\n            code === KEYBOARD_CODE.ARROW_DOWN;\n\n        if (isInputTrigger || isIconTrigger) {\n            event.preventDefault();\n            this.overlay.show();\n            this.keyboardEventsManager.setActiveItem(this.getSelectedIndex());\n            this.keyboardEventsManager.activeItem?.menuItem?.nativeElement?.scrollIntoView(\n                { block: \"center\" }\n            );\n        }\n    }\n\n    private hideMenu(): void {\n        this.overlay.hide();\n    }\n\n    private navigateByArrow(event: KeyboardEvent): void {\n        const { code } = event;\n        const index = this.keyboardEventsManager.activeItemIndex;\n\n        event.preventDefault();\n\n        if (code === KEYBOARD_CODE.ARROW_UP && index === 0) {\n            this.navigateOnLast();\n\n            return;\n        }\n\n        if (\n            code === KEYBOARD_CODE.ARROW_DOWN &&\n            index === this.menuItems.length\n        ) {\n            this.navigateOnFirst();\n\n            return;\n        }\n\n        this.keyboardEventsManager.onKeydown(event);\n        this.keyboardEventsManager.activeItem?.menuItem?.nativeElement?.scrollIntoView(\n            scrollOption\n        );\n    }\n\n    private navigateOnLast(): void {\n        this.keyboardEventsManager.setActiveItem(this.menuItems.length - 1);\n        this.keyboardEventsManager.activeItem?.menuItem.nativeElement.scrollIntoView(\n            scrollOption\n        );\n    }\n\n    private navigateOnFirst(): void {\n        this.keyboardEventsManager.setActiveItem(0);\n        this.keyboardEventsManager.activeItem?.menuItem.nativeElement.scrollIntoView(\n            scrollOption\n        );\n    }\n\n    private getSelectedIndex(): number {\n        return this.menuItems.findIndex((component) => {\n            const parent = component.menuItem.nativeElement.parentElement;\n\n            return parent.classList.contains(\"nui-menu-item--selected\");\n        });\n    }\n\n    private isOpenMenuCode(code: KEYBOARD_CODE): boolean {\n        return code === KEYBOARD_CODE.ENTER || code === KEYBOARD_CODE.SPACE;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayConfig } from \"@angular/cdk/overlay\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport _isNil from \"lodash/isNil\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\nimport { Subject } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\n\nimport { TimePickerKeyboardService } from \"./time-picker-keyboard.service\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\nimport { MenuPopupComponent } from \"../menu\";\nimport { IMenuGroup, IMenuItem } from \"../menu/public-api\";\nimport { OVERLAY_WITH_POPUP_STYLES_CLASS } from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\nimport { OverlayUtilitiesService } from \"../overlay/overlay-utilities.service\";\nimport { TextboxComponent } from \"../textbox/textbox.component\";\n\n// <example-url>./../examples/index.html#/time-picker</example-url><br />\n\n@Component({\n    selector: \"nui-time-picker\",\n    templateUrl: \"./time-picker.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TimePickerComponent),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => TimePickerComponent),\n            multi: true,\n        },\n        TimePickerKeyboardService,\n    ],\n    styleUrls: [\"./time-picker.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class TimePickerComponent\n    implements\n        OnInit,\n        OnDestroy,\n        OnChanges,\n        AfterViewInit,\n        ControlValueAccessor,\n        NuiFormFieldControl\n{\n    @ViewChild(\"date\", { static: true }) textbox: TextboxComponent;\n    @ViewChild(\"popupArea\", { static: true }) popupArea: ElementRef;\n    @ViewChild(\"toggleRef\", { static: true }) containerEl: ElementRef;\n    @ViewChild(OverlayComponent) public overlay: OverlayComponent;\n    @ViewChild(\"popup\") public popup: MenuPopupComponent;\n    @ViewChild(\"menuTrigger\", { read: ElementRef })\n    public menuTrigger: ElementRef;\n    /** sets a step (difference between item in picker) */\n    @Input() timeStep = 30;\n    /** sets disable state of the timepicker */\n    @Input() isDisabled: boolean;\n    /** sets custom formatting for time */\n    @Input() timeFormat = \"LT\";\n    /** tells timepicker whether to save year, month, day and seconds of the date */\n    @Input() preserveInsignificant = false;\n    /** to apply error state styles */\n    @Input() isInErrorState = false;\n    /** Input to set aria label text */\n    @Input() public ariaLabel: string = \"Time Picker\";\n    /** to allow the empty values for init state */\n    @Input() initEmpty: boolean;\n    /** Allows popup box to be attached to document.body */\n    @Input() appendToBody: boolean = false;\n\n    @Input()\n    get model(): Moment | undefined {\n        return this.innerModel;\n    }\n\n    set model(value: Moment | undefined) {\n        if (!moment(value).isValid()) {\n            return;\n        }\n\n        if (value && !this.preserveInsignificant) {\n            value.year(0).month(0).date(0);\n        }\n        this.innerModel = value;\n        this.textbox.writeValue(\n            moment(this.innerModel).format(this.timeFormat)\n        );\n    }\n\n    @Output() public timeChanged = new EventEmitter();\n    @Output() inputBlurred: EventEmitter<any> = new EventEmitter<Moment>();\n\n    public times: Moment[];\n    public itemsSource: IMenuGroup[] = [\n        {\n            itemsSource: [],\n        },\n    ];\n    public innerModel?: Moment;\n    public customContainer: ElementRef | undefined;\n    public overlayConfig: OverlayConfig = {\n        panelClass: [OVERLAY_WITH_POPUP_STYLES_CLASS, \"nui-timepicker__menu\"],\n    };\n    public onDestroy$ = new Subject<void>();\n\n    protected popupUtilities: OverlayUtilitiesService =\n        new OverlayUtilitiesService();\n\n    private itemToSelect: any;\n    private inputChanged: Subject<string> = new Subject<string>();\n\n    constructor(\n        private elementRef: ElementRef,\n        private keyboardService: TimePickerKeyboardService,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    public ngOnInit(): void {\n        this.times = this.generateTimeItems(this.timeStep);\n        this.times.map((value: Moment) => {\n            this.itemsSource[0].itemsSource.push({\n                title: value,\n                displayFormat: this.timeFormat,\n                isSelected: false,\n            });\n        });\n        if (!this.initEmpty) {\n            this.innerModel = moment(this.model).clone() || moment();\n            this.textbox.writeValue(\n                moment(this.innerModel).format(this.timeFormat)\n            );\n        }\n\n        this.itemToSelect = this.getItemToSelect();\n        this.inputChanged.pipe(debounceTime(500)).subscribe((value) => {\n            this.updateInnerModel(value);\n            this.itemToSelect = this.getItemToSelect();\n            this.timeChanged.emit(this.innerModel);\n            this.onChange(this.innerModel);\n            this.setErrorState(value);\n        });\n        this.onAppendToBodyChange(this.appendToBody);\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.appendToBody) {\n            this.onAppendToBodyChange(changes.appendToBody.currentValue);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.overlay.clickOutside\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((_) => this.overlay.hide());\n\n        this.initPopupUtilities();\n        this.keyboardService.initService(\n            this.popup,\n            this.overlay,\n            this.menuTrigger.nativeElement\n        );\n        this.cdr.detectChanges();\n    }\n\n    onChange(value: any): void {}\n\n    onTouched(): void {}\n\n    @HostListener(\"keydown\", [\"$event\"])\n    public onKeyDown(event: KeyboardEvent): void {\n        this.keyboardService.onKeyDown(event);\n    }\n\n    @HostListener(\"focusout\", [\"$event\"])\n    public onFocusOut(event: FocusEvent): void {\n        if (!this.overlay.showing || !document.activeElement) {\n            return;\n        }\n\n        if (\n            this.popupArea.nativeElement.contains(\n                event.relatedTarget as HTMLElement\n            )\n        ) {\n            return;\n        }\n\n        if (\n            !this.containerEl.nativeElement.contains(\n                event.relatedTarget as HTMLElement\n            )\n        ) {\n            this.overlay.hide();\n        }\n    }\n\n    updateInnerModel(value: any): void {\n        setTimeout(() => this.inputBlurred.emit(), 100);\n        if (value instanceof moment && !this.preserveInsignificant) {\n            (value as Moment).year(0);\n            (value as Moment).date(1);\n            (value as Moment).month(0);\n            (value as Moment).seconds(0);\n        }\n        this.innerModel =\n            _isEmpty(value) || value.length === 0\n                ? undefined\n                : moment(value, this.timeFormat);\n        if (!moment(this.innerModel).isValid()) {\n            this.innerModel = value;\n        }\n        this.onTouched();\n        if (\n            !_isEmpty(this.times) &&\n            !_isEmpty(this.innerModel) &&\n            !_isNil(this.innerModel)\n        ) {\n            const index = this.getItemIndexToSelect(\n                this.innerModel,\n                this.timeStep,\n                this.times\n            );\n            this.unselectAllItems();\n            if (isFinite(index)) {\n                this.itemsSource[0].itemsSource[index].isSelected = true;\n                this.itemToSelect = this.itemsSource[0].itemsSource[index];\n            }\n        }\n        this.setErrorState(value);\n    }\n\n    writeValue(value: any): void {\n        this.textbox.writeValue(this.formatValue(value));\n        this.updateInnerModel(this.formatValue(value));\n    }\n\n    setErrorState(value: string): void {\n        this.isInErrorState = !moment(value, this.timeFormat, true).isValid();\n    }\n\n    registerOnChange(fn: (value: any) => void): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n    }\n\n    focusOnForm(): void {\n        this.textbox.focus();\n    }\n\n    public onInputActiveDateChanged(value: string): void {\n        this.inputChanged.next(value);\n    }\n\n    public select(time: IMenuItem): void {\n        this.updateInnerModel(time.title);\n        this.textbox.writeValue(this.formatValue() as string);\n        this.timeChanged.emit(this.innerModel);\n        this.onChange(this.innerModel);\n        this.overlay.hide();\n    }\n\n    public scrollToView(): void {\n        if (!this.isDisabled) {\n            this.overlay.toggle();\n        }\n        const selectedItem =\n            this.elementRef.nativeElement.getElementsByClassName(\n                \"nui-menu-item--selected\"\n            )[0];\n        selectedItem?.scrollIntoView({ block: \"center\" });\n    }\n\n    public generateTimeItems(timeStep: number): Moment[] {\n        const time = this.preserveInsignificant\n            ? moment().hour(0).startOf(\"hour\")\n            : moment().year(0).startOf(\"year\");\n\n        const initialDay = time.dayOfYear();\n        const times: Moment[] = [];\n        while (time.dayOfYear() === initialDay) {\n            times.push(time.clone());\n            time.add(timeStep, \"minute\");\n        }\n        return times;\n    }\n\n    public isItemSelected(timeItem: Moment): boolean {\n        return moment(timeItem).isSame(this.itemToSelect.title);\n    }\n\n    public getItemIndexToSelect(\n        model: Moment | string,\n        timeStep: number,\n        times: Moment[]\n    ): number {\n        const time = moment(model);\n        const minutes = time.get(\"hours\") * 60 + time.get(\"minutes\");\n        const index = Math.round(minutes / timeStep);\n        return index === times.length ? 0 : index;\n    }\n\n    public getItemToSelect(): IMenuItem | undefined {\n        if (_isEmpty(this.innerModel) || _isNil(this.innerModel)) {\n            this.unselectAllItems();\n            return;\n        }\n\n        const index = this.getItemIndexToSelect(\n            this.innerModel,\n            this.timeStep,\n            this.times\n        );\n        this.unselectAllItems();\n        if (isFinite(index)) {\n            this.itemsSource[0].itemsSource[index].isSelected = true;\n            return this.itemsSource[0].itemsSource[index];\n        }\n    }\n\n    public unselectAllItems(): void {\n        this.itemsSource[0].itemsSource.forEach(\n            (el: IMenuItem) => (el.isSelected = false)\n        );\n    }\n\n    public formatValue(value: any = this.innerModel): string {\n        return moment(value).isValid()\n            ? moment(value).format(this.timeFormat)\n            : value;\n    }\n\n    public getIconColor(): string {\n        return this.isDisabled ? \"gray\" : \"primary-blue\";\n    }\n\n    private onAppendToBodyChange(appendToBody: boolean): void {\n        this.customContainer = appendToBody ? undefined : this.popupArea;\n    }\n\n    private initPopupUtilities(): void {\n        const resizeObserver = this.popupUtilities\n            .setPopupComponent(this.overlay)\n            .getResizeObserver();\n\n        this.overlay.show$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n            this.popupUtilities.syncWidth();\n            resizeObserver.observe(this.elementRef.nativeElement);\n        });\n\n        this.overlay.hide$.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n            resizeObserver.unobserve(this.elementRef.nativeElement);\n        });\n    }\n\n    public ngOnDestroy(): void {\n        if (this.overlay?.showing) {\n            this.overlay.hide();\n        }\n\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n\n        this.inputChanged.unsubscribe();\n    }\n}\n","<div class=\"nui-timepicker\">\n    <div class=\"nui-timepicker__container\" (click)=\"scrollToView()\" #toggleRef>\n        <nui-textbox\n            [disabled]=\"isDisabled\"\n            autocomplete=\"off\"\n            [class.nui-timepicker__input-disabled]=\"isDisabled\"\n            #date\n            [isInErrorState]=\"isInErrorState\"\n            (textChange)=\"onInputActiveDateChanged($event)\"\n            (blurred)=\"updateInnerModel($event)\"\n            [ariaLabel]=\"ariaLabel\"\n        >\n        </nui-textbox>\n        <nui-icon\n            #menuTrigger\n            class=\"nui-timepicker__icon\"\n            icon=\"clock\"\n            tabindex=\"-1\"\n            (click)=\"focusOnForm()\"\n            [iconColor]=\"getIconColor()\"\n        >\n        </nui-icon>\n    </div>\n\n    <div #popupArea></div>\n\n    <nui-overlay\n        #overlay\n        [toggleReference]=\"toggleRef\"\n        [overlayConfig]=\"overlayConfig\"\n        [customContainer]=\"customContainer\"\n    >\n        <nui-menu-popup\n            #popup\n            [itemsSource]=\"itemsSource\"\n            (menuItemClicked)=\"select($event)\"\n        >\n        </nui-menu-popup>\n    </nui-overlay>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnInit,\n    Output,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport moment from \"moment/moment\";\nimport { Moment } from \"moment/moment\";\n\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\n\n// <example-url>./../examples/index.html#/date-time-picker</example-url><br />\n\n@Component({\n    selector: \"nui-date-time-picker\",\n    templateUrl: \"./date-time-picker.component.html\",\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DateTimePickerComponent),\n            multi: true,\n        },\n        {\n            provide: NuiFormFieldControl, // this allows our form control to use run-time type checking\n            useExisting: forwardRef(() => DateTimePickerComponent),\n            multi: true,\n        },\n    ],\n    styleUrls: [\"./date-time-picker.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class DateTimePickerComponent\n    implements AfterViewInit, OnInit, ControlValueAccessor\n{\n    /** latest available date */\n    @Input() maxDate: Moment;\n    /** earliest available date */\n    @Input() minDate: Moment;\n    /** sets mode of showing date-time-picker */\n    @Input() displayMode: string;\n\n    @Input() isDisabled: boolean;\n\n    @Input() initEmpty: boolean;\n    /** Is used to handle timezone of date value, passed to DatePickerComponent */\n    @Input() handleTimezone: boolean;\n    /** Allows popup box to be attached to document.body */\n    @Input() appendToBody: boolean;\n\n    /**\n     * Input to set aria label text\n     */\n    @Input() public get ariaLabel(): string {\n        return this._ariaLabel;\n    }\n\n    // changing the value with regular @Input doesn't trigger change detection\n    // so we need to do that manually in the setter\n    public set ariaLabel(value: string) {\n        if (value !== this._ariaLabel) {\n            this._ariaLabel = value;\n            this.cd.markForCheck();\n        }\n    }\n\n    @ViewChild(\"nuiDatetimePicker\", { static: true })\n    public codeElement: ElementRef;\n    /** Callback to invoke on model change */\n    @Output()\n    modelChanged: EventEmitter<Moment> = new EventEmitter<Moment>();\n\n    /** model of picker */\n    @Input()\n    get model(): Moment | undefined {\n        return this._model;\n    }\n\n    set model(value: Moment | undefined) {\n        if (moment(value).isValid()) {\n            this._model = value;\n        }\n        this.updateChildrenModels();\n    }\n\n    public date?: Moment;\n    public time?: Moment;\n    private _model?: Moment;\n    public isInErrorStateDate = false;\n    public isInErrorStateTime = false;\n\n    private _ariaLabel: string = \"\";\n\n    onTouched = (): void => {};\n    onChange = (value: any): void => {};\n\n    constructor(private renderer: Renderer2, private cd: ChangeDetectorRef) {}\n\n    public ngOnInit(): void {\n        if (!this.initEmpty && !this.model) {\n            this.model = moment();\n            this.onChange(this.model);\n            this.cd.markForCheck();\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        if (this.displayMode === \"inline\") {\n            this.renderer.addClass(\n                this.codeElement.nativeElement,\n                \"nui-datetime-picker--inline\"\n            );\n            this.renderer.addClass(\n                this.codeElement.nativeElement.querySelector(\".nui-timepicker\"),\n                \"nui-dropdown--inline\"\n            );\n        }\n    }\n\n    writeValue(value: Moment): void {\n        this.model = value;\n        this.updateChildrenModels();\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    registerOnChange(fn: () => void): void {\n        this.onChange = fn;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.isDisabled = isDisabled;\n        this.cd.markForCheck(); // This is needed to update \"disabled\" state for child date and time pickers\n    }\n\n    onTimeChanged(event: Moment): void {\n        this.updateTime(event);\n        this.modelChanged.emit(moment(this.model));\n        this.onChange(this.model);\n        this.onTouched();\n    }\n\n    onDateChanged(event: Moment): void {\n        const isDateTheSame =\n            moment.isMoment(this.date) && this.date.isSame(event);\n\n        if (isDateTheSame) {\n            return;\n        }\n\n        this.updateDate(event);\n        this.modelChanged.emit(moment(this.model));\n        this.onChange(this.model);\n        this.onTouched();\n    }\n\n    onInputBlurred(): void {\n        this.onTouched();\n        if (!this.model) {\n            this.isInErrorStateDate =\n                !this.date || (this.date && !moment(this.date).isValid());\n            this.isInErrorStateTime =\n                !this.time || (this.time && !moment(this.time).isValid());\n        }\n    }\n\n    private updateChildrenModels() {\n        if (this.model) {\n            this.date = this.model.clone();\n            this.time = this.model.clone();\n        } else if (!this.model && this.initEmpty) {\n            // TODO: Replace with undefined\n            // @ts-ignore\n            this.date = null;\n            // @ts-ignore\n            this.time = null;\n        }\n    }\n\n    private updateDate(newValue: Moment | null) {\n        if (!moment.isMoment(newValue) || !moment(newValue).isValid()) {\n            // TODO: Replace with undefined\n            // @ts-ignore\n            this._model = null;\n            // @ts-ignore\n            this.date = null;\n            return;\n        }\n\n        // In case 'date' is not set, this._model is set from 'time' model if 'time' model exists\n        this._model = this._model || (this.time && this.time.clone());\n        if (this._model) {\n            this._model.set({\n                year: newValue.year(),\n                month: newValue.month(),\n                date: newValue.date(),\n            });\n        }\n\n        this.date = newValue.clone();\n    }\n\n    private updateTime(newValue: Moment) {\n        if (!moment.isMoment(newValue)) {\n            // TODO: Replace with undefined\n            // @ts-ignore\n            this._model = null;\n            // @ts-ignore\n            this.time = null;\n            return;\n        }\n\n        // In case 'time' is not set, this._model is set from 'date' model if 'date' model exists\n        this._model = this._model || (this.date && this.date.clone());\n        if (this._model) {\n            this._model.set({\n                hours: newValue.hours(),\n                minutes: newValue.minutes(),\n                seconds: newValue.seconds(),\n                milliseconds: newValue.millisecond(),\n            });\n        }\n\n        this.time = newValue.clone();\n    }\n}\n","<div\n    #nuiDatetimePicker\n    class=\"nui-datetime-picker\"\n    [attr.aria-label]=\"ariaLabel\"\n>\n    <div class=\"nui-datetime-picker__group\">\n        <nui-date-picker\n            class=\"nui-datepicker--justified\"\n            [value]=\"date\"\n            (valueChange)=\"onDateChanged($event)\"\n            (inputBlurred)=\"onInputBlurred()\"\n            [maxDate]=\"maxDate\"\n            [minDate]=\"minDate\"\n            [isDisabled]=\"isDisabled\"\n            [isInErrorState]=\"isInErrorStateDate\"\n            [handleTimezone]=\"handleTimezone\"\n            [appendToBody]=\"appendToBody\"\n            [ariaLabel]=\"ariaLabel + ' date'\"\n        ></nui-date-picker>\n    </div>\n    <div class=\"nui-datetime-picker__group nui-datetime-picker__group--last\">\n        <nui-time-picker\n            class=\"nui-dropdown--justified\"\n            [initEmpty]=\"initEmpty\"\n            [model]=\"time\"\n            (timeChanged)=\"onTimeChanged($event)\"\n            (inputBlurred)=\"onInputBlurred()\"\n            [isDisabled]=\"isDisabled\"\n            [isInErrorState]=\"isInErrorStateTime\"\n            [appendToBody]=\"appendToBody\"\n            [ariaLabel]=\"ariaLabel + ' time'\"\n        ></nui-time-picker>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { TimePickerComponent } from \"./time-picker.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\nimport { NuiTextboxModule } from \"../textbox/textbox.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiTextboxModule,\n        NuiIconModule,\n        NuiOverlayModule,\n        NuiMenuModule,\n    ],\n    declarations: [TimePickerComponent],\n    exports: [TimePickerComponent],\n    providers: [],\n})\nexport class NuiTimePickerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { DateTimePickerComponent } from \"./date-time-picker.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiDatePickerModule } from \"../date-picker/date-picker.module\";\nimport { NuiTimePickerModule } from \"../time-picker/time-picker.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiDatePickerModule, NuiTimePickerModule],\n    declarations: [DateTimePickerComponent],\n    exports: [DateTimePickerComponent],\n    providers: [],\n})\nexport class NuiDateTimePickerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\n\nimport { SeverityLevels } from \"./public-api\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-dialog-header\",\n    templateUrl: \"./dialog-header.component.html\",\n    standalone: false,\n})\nexport class DialogHeaderComponent implements OnInit {\n    /**\n     * Title of the dialog.\n     */\n    @Input() title: string;\n    /**\n     * Severity of the dialog. Possible values: 'critical', 'warning', 'info'.\n     */\n    @Input() severity: SeverityLevels;\n    /**\n     * Closes dialog on cross click.\n     */\n    @Output() closed = new EventEmitter();\n\n    public severityClass = \"\";\n    public severityIcon = \"\";\n\n    public ngOnInit(): void {\n        if (this.severity) {\n            this.severityClass = `dialog-header-${this.severity}`;\n            this.severityIcon = `severity_${this.severity}`;\n        }\n    }\n\n    public innerClose(event: any): void {\n        this.closed.emit(event);\n    }\n}\n","<div class=\"dialog-header {{ severityClass }}\">\n    <div class=\"severity-text\">\n        <nui-icon *ngIf=\"severityIcon\" [icon]=\"severityIcon\"></nui-icon>\n        <h1 class=\"dialog-title\">{{ title }}</h1>\n    </div>\n    <div class=\"btn-group\">\n        <ng-content></ng-content>\n        <!-- We set [nuiSetFocus] to a Close button below in order to trap the focus inside cdk focusTrap -->\n        <button\n            nui-button\n            nuiSetFocus=\"true\"\n            preventScroll=\"true\"\n            type=\"button\"\n            displayStyle=\"action\"\n            icon=\"close\"\n            ariaLabel=\"Close\"\n            (click)=\"innerClose($event)\"\n        ></button>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, ViewEncapsulation } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-dialog-footer\",\n    templateUrl: \"./dialog-footer.component.html\",\n    styleUrls: [\"./dialog-footer.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class DialogFooterComponent {}\n","<div class=\"dialog-footer\" aria-label=\"Dialog footer\">\n    <ng-content></ng-content>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ChangeDetectorRef, Component, Input } from \"@angular/core\";\n\nimport { NuiActiveDialog } from \"./dialog-ref\";\nimport { ConfirmationDialogButtons, SeverityLevels } from \"./public-api\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-confirmation-dialog-window\",\n    templateUrl: \"./confirmation-dialog.component.html\",\n    host: {\n        role: \"dialog\",\n        \"[attr.aria-label]\": \"getAriaLabel()\",\n    },\n    standalone: false,\n})\nexport class ConfirmationDialogComponent {\n    @Input()\n    public title: string = $localize`Confirmation`;\n\n    @Input()\n    public message: string;\n\n    @Input()\n    public confirmText: string = $localize`Yes`;\n\n    @Input()\n    public dismissText: string = $localize`No`;\n\n    @Input()\n    public setFocus: ConfirmationDialogButtons = \"confirm\";\n\n    @Input()\n    public severity: SeverityLevels;\n\n    @Input()\n    public ariaLabel: string = \"\";\n\n    constructor(\n        private activeDialog: NuiActiveDialog,\n        private changeDetector: ChangeDetectorRef\n    ) {}\n\n    public updateInputs(): void {\n        this.changeDetector.detectChanges();\n    }\n\n    public close(result: boolean): void {\n        this.activeDialog.close(result);\n    }\n\n    public dismiss(): void {\n        this.activeDialog.dismiss();\n    }\n\n    public focusButton(buttonType: ConfirmationDialogButtons): boolean {\n        return this.setFocus === buttonType ? true : false;\n    }\n\n    public getAriaLabel(): string {\n        return (\n            (this.severity ? `${this.severity} ${this.title}` : this.title) ||\n            this.ariaLabel\n        );\n    }\n}\n","<nui-dialog-header\n    [title]=\"title\"\n    [severity]=\"severity\"\n    (closed)=\"dismiss()\"\n></nui-dialog-header>\n\n<div class=\"dialog-body\">\n    <p>{{ message }}</p>\n</div>\n<nui-dialog-footer>\n    <button\n        nui-button\n        type=\"button\"\n        [nuiSetFocus]=\"focusButton('dismiss')\"\n        preventScroll=\"true\"\n        (click)=\"close(false)\"\n    >\n        {{ dismissText }}\n    </button>\n    <button\n        nui-button\n        type=\"button\"\n        [nuiSetFocus]=\"focusButton('confirm')\"\n        preventScroll=\"true\"\n        displayStyle=\"primary\"\n        (click)=\"close(true)\"\n    >\n        {{ confirmText }}\n    </button>\n</nui-dialog-footer>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-dialog-backdrop\",\n    template: \"\",\n    host: { class: \"dialog-backdrop fade in\" },\n    standalone: false,\n})\nexport class DialogBackdropComponent {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkScrollable, ScrollDispatcher } from \"@angular/cdk/scrolling\";\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { filter, take } from \"rxjs/operators\";\n\nconst FOCUSABLE_SELECTOR =\n    \"a, button, input, textarea, select, details, [tabindex]:not([tabindex='-1'])\";\n\n/*\n * <example-url>./../examples/index.html#/dialog</example-url><br />\n *\n * @dynamic\n */\n@Component({\n    selector: \"nui-dialog-window\",\n    host: {\n        \"[class]\": `\"nui-dialog fade in show\" + (windowClass ? \" \" + windowClass : \"\")`,\n        role: \"dialog\",\n        \"aria-modal\": \"true\",\n        tabindex: \"-1\",\n        \"(keyup.esc)\": \"escKey($event)\",\n        \"(mousedown)\": \"backdropMouseDown($event)\",\n        \"(mouseup)\": \"backdropMouseUp($event)\",\n    },\n    templateUrl: \"./dialog.component.html\",\n    styleUrls: [\"./dialog.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class DialogComponent implements OnInit, AfterViewInit, OnDestroy  {\n    private elWithFocus: any;\n    /**\n     * Whether a backdrop element should be created for a given dialog (true by default).\n     * Alternatively, specify 'static' for a backdrop which doesn't close the dialog on click.\n     */\n    @Input() backdrop: boolean | string = true;\n\n    /**\n     * Whether to close the dialog when escape key is pressed (true by default).\n     */\n    @Input() keyboard = true;\n\n    /**\n     * Size of a new dialog window.\n     */\n    @Input() size: string;\n\n    /**\n     * Custom class to append to the dialog window\n     */\n    @Input() windowClass: string;\n\n    /**\n     * Event fired on dismiss of the dialog window\n     */\n    @Output() dismissEvent = new EventEmitter();\n\n    private scrollableElement: CdkScrollable;\n    private mouseDownOrigin: MouseEvent;\n\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        private elRef: ElementRef,\n        private renderer: Renderer2,\n        private router: Router\n    ) {}\n\n    @HostListener(\"window:keydown.shift.tab\", [\"$event\"])\n    onShiftTab(event: KeyboardEvent): void {\n        if (\n            this.elRef.nativeElement === this.document.activeElement ||\n            !this.elRef.nativeElement.contains(this.document.activeElement)\n        ) {\n            this.handleFocus(event);\n        }\n    }\n\n    @HostListener(\"window:keydown.tab\", [\"$event\"])\n    onTab(event: KeyboardEvent): void {\n        if (!this.elRef.nativeElement.contains(this.document.activeElement)) {\n            this.handleFocus(event);\n        }\n    }\n\n    backdropMouseDown($event: any): void {\n        this.mouseDownOrigin = $event.target;\n    }\n\n    backdropMouseUp($event: any): void {\n        if (this.backdrop === true) {\n            if (this.mouseDownOrigin !== this.elRef.nativeElement) {\n                return;\n            } else if (this.elRef.nativeElement === $event.target) {\n                this.dismiss(\"BACKDROP_CLICK\");\n            }\n        }\n    }\n\n    escKey($event: any): void {\n        if (this.keyboard && !$event.defaultPrevented) {\n            this.dismiss(\"ESC\");\n        }\n    }\n\n    dismiss(reason: any): void {\n        this.dismissEvent.emit(reason);\n    }\n\n    public ngOnInit(): void {\n        this.elWithFocus = this.document.activeElement;\n        this.renderer.addClass(this.document.body, \"dialog-open\");\n        this.router.events\n            .pipe(\n                filter((e) => e instanceof NavigationEnd),\n                take(1)\n            )\n            .subscribe(() => this.dismiss(\"ROUTE_CHANGED\"));\n    }\n\n    public ngAfterViewInit(): void {\n        if (!this.elRef.nativeElement.contains(document.activeElement)) {\n            this.elRef.nativeElement[\"focus\"].apply(\n                this.elRef.nativeElement,\n                []\n            );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        const body = this.document.body;\n        const elWithFocus = this.elWithFocus;\n\n        let elementToFocus;\n        if (elWithFocus && elWithFocus[\"focus\"] && body.contains(elWithFocus)) {\n            elementToFocus = elWithFocus;\n        } else {\n            elementToFocus = body;\n        }\n        elementToFocus[\"focus\"].apply(elementToFocus, []);\n\n        this.elWithFocus = null;\n        this.renderer.removeClass(body, \"dialog-open\");\n    }\n\n    private handleFocus(event: KeyboardEvent): void {\n        event.preventDefault();\n        this.elRef.nativeElement.querySelector(FOCUSABLE_SELECTOR).focus();\n    }\n}\n","<div [class]=\"'modal-dialog' + (size ? ' dialog-' + size : '')\" cdkTrapFocus>\n    <div class=\"dialog-content\"><ng-content></ng-content></div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ComponentRef, ViewRef } from \"@angular/core\";\n/** @ignore */\nexport class ContentRef {\n    constructor(\n        public nodes: any[],\n        public viewRef?: ViewRef,\n        public componentRef?: ComponentRef<any>\n    ) {}\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport {\n    ApplicationRef,\n    ComponentFactory,\n    ComponentFactoryResolver,\n    ComponentRef,\n    Inject,\n    Injectable,\n    Injector,\n    TemplateRef,\n} from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\n\nimport { DialogBackdropComponent } from \"./dialog-backdrop.component\";\nimport { NuiActiveDialog, NuiDialogRef } from \"./dialog-ref\";\nimport { DialogComponent } from \"./dialog.component\";\nimport { ContentRef } from \"../../services/content-ref\";\nimport { OverlayContainerService } from \"../overlay/public-api\";\n\n/**\n * @dynamic\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class DialogStackService {\n    private windowAttributes = [\"backdrop\", \"keyboard\", \"size\", \"windowClass\"];\n\n    constructor(\n        private applicationRef: ApplicationRef,\n        private injector: Injector,\n        private factoryResolver: ComponentFactoryResolver,\n        private overlayContainerService: OverlayContainerService,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    open(\n        moduleCFR: ComponentFactoryResolver,\n        contentInjector: Injector,\n        content: any,\n        options: any\n    ): NuiDialogRef {\n        let containerEl: HTMLElement = options.container\n            ? this.document.querySelector(options.container)\n            : this.document.body;\n\n        // This handles the case when the nui-dialog is being used within the nui-overlay based components\n        if (options.useOverlay) {\n            containerEl = options.container\n                ? this.document.querySelector(options.container)\n                : this.overlayContainerService.getOverlayContainer();\n        }\n\n        if (!containerEl) {\n            throw new Error(\n                `The specified dialog container '${\n                    options.container || \"body\"\n                }' was not found in the DOM.`\n            );\n        }\n\n        const activeDialog = new NuiActiveDialog();\n        const contentRef = this.getContentRef(\n            moduleCFR,\n            options.injector || contentInjector,\n            content,\n            activeDialog\n        );\n\n        const backdropCmptRef:\n            | ComponentRef<DialogBackdropComponent>\n            | undefined =\n            options.backdrop !== false\n                ? this.attachBackdrop(containerEl)\n                : undefined;\n        const windowCmptRef: ComponentRef<DialogComponent> =\n            this.attachWindowComponent(\n                containerEl,\n                contentRef,\n                DialogComponent\n            );\n        const nuiDialogRef: NuiDialogRef = new NuiDialogRef(\n            windowCmptRef,\n            contentRef,\n            backdropCmptRef,\n            options.beforeDismiss\n        );\n\n        activeDialog.close = (result: any) => {\n            nuiDialogRef.close(result);\n        };\n        activeDialog.dismiss = (reason: any) => {\n            nuiDialogRef.dismiss(reason);\n        };\n\n        this.applyWindowOptions(windowCmptRef.instance, options);\n        return nuiDialogRef;\n    }\n\n    private attachBackdrop(\n        containerEl: any\n    ): ComponentRef<DialogBackdropComponent> {\n        const backdropFactory: ComponentFactory<DialogBackdropComponent> =\n            this.factoryResolver.resolveComponentFactory(\n                DialogBackdropComponent\n            );\n        const backdropCmptRef = backdropFactory.create(this.injector);\n        this.applicationRef.attachView(backdropCmptRef.hostView);\n        containerEl.appendChild(backdropCmptRef.location.nativeElement);\n        return backdropCmptRef;\n    }\n\n    private attachWindowComponent(\n        containerEl: any,\n        contentRef: any,\n        component: any\n    ): ComponentRef<any> {\n        const windowFactory =\n            this.factoryResolver.resolveComponentFactory(component);\n        const windowCmptRef = windowFactory.create(\n            this.injector,\n            contentRef.nodes\n        );\n        this.applicationRef.attachView(windowCmptRef.hostView);\n        containerEl.appendChild(windowCmptRef.location.nativeElement);\n        return windowCmptRef;\n    }\n\n    private applyWindowOptions(windowInstance: any, options: any): void {\n        this.windowAttributes.forEach((optionName: string) => {\n            if (!isNil(options[optionName])) {\n                windowInstance[optionName] = options[optionName];\n            }\n        });\n    }\n\n    private getContentRef(\n        moduleCFR: ComponentFactoryResolver,\n        contentInjector: Injector,\n        content: any,\n        context: NuiActiveDialog\n    ): ContentRef {\n        if (!content) {\n            return new ContentRef([]);\n        } else if (content instanceof TemplateRef) {\n            return this.createFromTemplateRef(content, context);\n        } else if (typeof content === \"string\") {\n            return this.createFromString(content);\n        } else {\n            return this.createFromComponent(\n                moduleCFR,\n                contentInjector,\n                content,\n                context\n            );\n        }\n    }\n\n    private createFromTemplateRef(\n        content: TemplateRef<any>,\n        context: NuiActiveDialog\n    ): ContentRef {\n        const viewRef = content.createEmbeddedView(context);\n        this.applicationRef.attachView(viewRef);\n        return new ContentRef([viewRef.rootNodes], viewRef);\n    }\n\n    private createFromString(content: string): ContentRef {\n        const component = this.document.createTextNode(`${content}`);\n        return new ContentRef([[component]]);\n    }\n\n    private createFromComponent(\n        moduleCFR: ComponentFactoryResolver,\n        contentInjector: Injector,\n        content: any,\n        context: NuiActiveDialog\n    ): ContentRef {\n        const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n        const dialogContentInjector = Injector.create({\n            providers: [{ provide: NuiActiveDialog, useValue: context }],\n            parent: contentInjector,\n        });\n        const componentRef = contentCmptFactory.create(dialogContentInjector);\n        this.applicationRef.attachView(componentRef.hostView);\n        return new ContentRef(\n            [[componentRef.location.nativeElement]],\n            componentRef.hostView,\n            componentRef\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ComponentFactoryResolver, Injectable, Injector } from \"@angular/core\";\nimport assign from \"lodash/assign\";\nimport defaults from \"lodash/defaults\";\nimport pick from \"lodash/pick\";\nimport { Subject } from \"rxjs\";\n\nimport { ConfirmationDialogComponent } from \"./confirmation-dialog.component\";\nimport { NuiDialogRef } from \"./dialog-ref\";\nimport { DialogStackService } from \"./dialog-stack.service\";\nimport { IConfirmationDialogOptions, IDialogOptions } from \"./public-api\";\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class DialogService {\n    constructor(\n        private moduleCFR: ComponentFactoryResolver,\n        private injector: Injector,\n        private dialogStack: DialogStackService\n    ) {}\n\n    public afterOpened$: Subject<NuiDialogRef> = new Subject<NuiDialogRef>();\n\n    public open(content: any, options: IDialogOptions = {}): NuiDialogRef {\n        const dialog = this.dialogStack.open(\n            this.moduleCFR,\n            this.injector,\n            content,\n            options\n        );\n        this.afterOpened$.next(dialog);\n\n        return dialog;\n    }\n\n    public confirm(options: IConfirmationDialogOptions): NuiDialogRef {\n        const dialog = this.dialogStack.open(\n            this.moduleCFR,\n            this.injector,\n            ConfirmationDialogComponent,\n            options\n        );\n        const component: ConfirmationDialogComponent = dialog.componentInstance;\n\n        const optionsWithDefaults = defaults(\n            options,\n            pick(component, [\"title\", \"confirmText\", \"dismissText\"])\n        );\n        assign(component, optionsWithDefaults);\n\n        component.updateInputs();\n        this.afterOpened$.next(dialog);\n\n        return dialog;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { A11yModule } from \"@angular/cdk/a11y\";\nimport { NgModule } from \"@angular/core\";\n\nimport { ConfirmationDialogComponent } from \"./confirmation-dialog.component\";\nimport { DialogBackdropComponent } from \"./dialog-backdrop.component\";\nimport { DialogFooterComponent } from \"./dialog-footer.component\";\nimport { DialogHeaderComponent } from \"./dialog-header.component\";\nimport { DialogStackService } from \"./dialog-stack.service\";\nimport { DialogComponent } from \"./dialog.component\";\nimport { DialogService } from \"./dialog.service\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [A11yModule, NuiCommonModule, NuiIconModule, NuiButtonModule],\n    declarations: [\n        ConfirmationDialogComponent,\n        DialogComponent,\n        DialogHeaderComponent,\n        DialogFooterComponent,\n        DialogBackdropComponent,\n    ],\n    exports: [DialogHeaderComponent, DialogFooterComponent],\n    providers: [DialogService, DialogStackService],\n})\nexport class NuiDialogModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    animate,\n    state,\n    style,\n    transition,\n    trigger,\n    stagger,\n    query,\n    group,\n} from \"@angular/animations\";\n\nexport const expand = trigger(\"expandedState\", [\n    state(\"expanded\", style({ height: \"*\" })),\n    state(\"collapsed\", style({ height: 0 })),\n    transition(\"expanded <=> collapsed\", [animate(\"350ms ease-in-out\")]),\n]);\n\n/**\n * This v2 version of the expand animation respects the animations of elements nested inside the expander's content template.\n *  It is using the special selectors that ngIf and ngFor use on projected content.\n */\nexport const expandV2 = trigger(\"expandContent\", [\n    transition(\":enter\", [\n        group([\n            query(\n                \":self\",\n                [\n                    style({ height: 0 }),\n                    animate(\"350ms ease-in-out\", style({ height: \"*\" })),\n                ],\n                { optional: true }\n            ),\n            query(\n                \"@*\",\n                [\n                    style({ height: 0 }),\n                    stagger(10, [\n                        animate(\"250ms ease-in-out\", style({ height: \"*\" })),\n                    ]),\n                ],\n                { optional: true }\n            ),\n        ]),\n    ]),\n    transition(\":leave\", [\n        query(\":self\", [\n            style({ height: \"*\" }),\n            animate(\"350ms ease-in-out\", style({ height: 0 })),\n        ]),\n    ]),\n]);\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { expandV2 } from \"../../animations/expand\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\n\n/**\n * <example-url>./../examples/index.html#/expander</example-url>\n */\n@Component({\n    selector: \"nui-expander\",\n    templateUrl: \"./expander.component.html\",\n    animations: [expandV2],\n    styleUrls: [\"./expander.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class ExpanderComponent implements AfterContentInit {\n    /**\n     * Adds \"disabled\" attribute to expander\n     */\n    @Input() disabled: boolean = false;\n    /**\n     * Adds icon to expander's header\n     */\n    @Input() icon: string = \"\";\n    /**\n     * Adds title to expander's header\n     */\n    @Input() header: string = \"\";\n    /**\n     * Hides left dotted border of expander.\n     */\n    @Input() hideLeftBorder: boolean = false;\n    /**\n     * Use this to have expander opened by default.\n     */\n    @Input() set open(value: boolean) {\n        const previousValue: boolean = this.state === \"expanded\";\n        if (previousValue !== value) {\n            this.state = value ? \"expanded\" : \"collapsed\";\n        }\n    }\n\n    get open(): boolean {\n        return this.state === \"expanded\";\n    }\n    /**\n     * Is emitted when expander is expanded/collapsed\n     */\n    @Output() openChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @ViewChild(\"customHeaderContent\", { static: true })\n    public customHeaderContent: ElementRef;\n\n    public state: \"expanded\" | \"collapsed\" = \"collapsed\";\n    public isCustomHeaderContentEmpty: boolean = false;\n\n    private actionKeys = [KEYBOARD_CODE.SPACE, KEYBOARD_CODE.ENTER].map(String);\n\n    constructor(private cdRef: ChangeDetectorRef) {}\n\n    public ngAfterContentInit(): void {\n        this.isCustomHeaderContentEmpty =\n            this.customHeaderContent.nativeElement.childNodes.length === 0;\n    }\n\n    public toggle(): void {\n        if (!this.disabled) {\n            this.open = !this.open;\n            this.openChange.emit(this.open);\n            this.cdRef.detectChanges();\n        }\n    }\n\n    public getIconColor(): string {\n        return this.disabled ? \"gray\" : \"primary-blue\";\n    }\n\n    public onKeyDown(event: KeyboardEvent): void {\n        if (this.actionKeys.includes(event.code)) {\n            if (event.target === event.currentTarget) {\n                event.preventDefault();\n                this.toggle();\n            }\n        }\n    }\n}\n","<div class=\"nui-expander\" [class.nui-expander--expanded]=\"state === 'expanded'\">\n    <div\n        class=\"nui-expander__header\"\n        tabindex=\"0\"\n        role=\"button\"\n        aria-label=\"Expander toggle\"\n        [attr.aria-expanded]=\"state === 'expanded'\"\n        [attr.aria-disabled]=\"disabled\"\n        [class.nui-expander__header--empty]=\"\n            !header && isCustomHeaderContentEmpty\n        \"\n        (keydown)=\"onKeyDown($event)\"\n        (click)=\"toggle()\"\n    >\n        <nui-icon\n            class=\"nui-expander__header-icon\"\n            [iconColor]=\"getIconColor()\"\n            aria-hidden=\"true\"\n            icon=\"{{ open ? 'triangle-down' : 'triangle-right' }}\"\n        ></nui-icon>\n        <div\n            class=\"nui-expander__header-content-wrapper\"\n            [class.nui-expander__custom-header--empty]=\"\n                isCustomHeaderContentEmpty\n            \"\n        >\n            <div\n                #customHeaderContent\n                class=\"nui-expander__custom-header\"\n                [class.nui-expander__custom-header--empty]=\"\n                    isCustomHeaderContentEmpty\n                \"\n            >\n                <ng-content select=\"[nuiExpanderHeader]\"></ng-content>\n            </div>\n            <div\n                class=\"nui-expander__header-content\"\n                *ngIf=\"isCustomHeaderContentEmpty\"\n                [class.nui-expander__header-content--with-icon]=\"!!icon\"\n            >\n                <nui-icon\n                    class=\"nui-expander__header-content-icon\"\n                    [icon]=\"icon\"\n                    *ngIf=\"!!icon\"\n                ></nui-icon>\n                <span class=\"nui-expander__header-title\">{{ header }}</span>\n            </div>\n        </div>\n    </div>\n    <div\n        class=\"nui-expander__body-wrapper\"\n        role=\"region\"\n        [attr.aria-label]=\"header || null\"\n    >\n        <div\n            class=\"nui-expander__body\"\n            [class.hide-left-border]=\"hideLeftBorder\"\n            *ngIf=\"open\"\n            @expandContent\n        >\n            <ng-content></ng-content>\n        </div>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ExpanderComponent } from \"./expander.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule],\n    declarations: [ExpanderComponent],\n    exports: [ExpanderComponent],\n    providers: [],\n})\nexport class NuiExpanderModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AbstractControl } from \"@angular/forms\";\nimport { Observable, Subject } from \"rxjs\";\n\n/**\n * Extract arguments of function\n */\nexport type ArgumentsType<F> = F extends (...args: infer A) => any ? A : never;\n\n/**\n * Creates an object like O. Optionally provide minimum set of properties P which the objects must share to conform\n */\ntype ObjectLike<O extends object, P extends keyof O = keyof O> = Pick<O, P>;\n\n/*\n * Extract a touched changed observable from an abstract control\n * @param control AbstractControl like object with markAsTouched method\n */\nexport const extractTouchedChanges = (\n    control: ObjectLike<AbstractControl, \"markAsTouched\" | \"markAsUntouched\">\n): Observable<boolean> => {\n    const prevMarkAsTouched = control.markAsTouched;\n    const prevMarkAsUntouched = control.markAsUntouched;\n\n    const touchedChanges$ = new Subject<boolean>();\n\n    function nextMarkAsTouched(\n        ...args: ArgumentsType<AbstractControl[\"markAsTouched\"]>\n    ) {\n        touchedChanges$.next(true);\n        prevMarkAsTouched.bind(control)(...args);\n    }\n\n    function nextMarkAsUntouched(\n        ...args: ArgumentsType<AbstractControl[\"markAsUntouched\"]>\n    ) {\n        touchedChanges$.next(false);\n        prevMarkAsUntouched.bind(control)(...args);\n    }\n\n    control.markAsTouched = nextMarkAsTouched;\n    control.markAsUntouched = nextMarkAsUntouched;\n\n    return touchedChanges$;\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentChecked,\n    AfterContentInit,\n    Component,\n    ContentChild,\n    ContentChildren,\n    forwardRef,\n    Input,\n    QueryList,\n    TemplateRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { AbstractControl, FormGroup } from \"@angular/forms\";\nimport _forOwn from \"lodash/forOwn\";\nimport _isNull from \"lodash/isNull\";\nimport { merge } from \"rxjs\";\n\nimport { NuiFormFieldControl } from \"./public-api\";\nimport { extractTouchedChanges } from \"./touched-changes-helper\";\nimport { ValidationMessageComponent } from \"../validation-message/validation-message.component\";\n\n// <example-url>./../examples/index.html#/form-field</example-url>\n@Component({\n    selector: \"nui-form-field\",\n    templateUrl: \"./form-field.component.html\",\n    styleUrls: [\"./form-field.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class FormFieldComponent\n    implements AfterContentInit, AfterContentChecked\n{\n    /**\n     * Form control obtained from the parent reactive form\n     */\n    @Input() control: AbstractControl;\n    /**\n     * Text for a Form Field label\n     */\n    @Input() caption: string;\n    /**\n     * Text to be passed to a popover for info icon\n     */\n    @Input() info: string;\n    /**\n     * Template to use in info's popover\n     */\n    @Input() infoTemplate: TemplateRef<any>;\n    /**\n     * Text for a Form Field hint\n     */\n    @Input() hint: string;\n    /**\n     * Template for a Form Field hint\n     */\n    @Input() hintTemplate: TemplateRef<unknown>;\n    /**\n     * Value for width css property for the form field\n     */\n    @Input() customBoxWidth: string;\n    /**\n     * Ability to hide optional text (optional) near label if needed\n     * @type {boolean}\n     */\n    @Input() showOptionalText = true;\n\n    @ContentChildren(ValidationMessageComponent)\n    validationMessages: QueryList<ValidationMessageComponent>;\n\n    @ContentChild(forwardRef(() => NuiFormFieldControl))\n    nuiFormControl: NuiFormFieldControl;\n\n    public controlIsOptional: boolean = false;\n\n    public ngAfterContentChecked(): void {\n        this.controlIsOptional =\n            this.showOptionalText && !this.hasRequiredField(this.control);\n    }\n\n    public ngAfterContentInit(): void {\n        if (this.control) {\n            merge(\n                this.control.valueChanges,\n                this.control.statusChanges,\n                extractTouchedChanges(this.control)\n            ).subscribe(() => {\n                this.validationMessages.forEach((message) => {\n                    if (_isNull(this.control.errors)) {\n                        message.show = false;\n                    } else {\n                        message.show = !!this.control.errors[message.for];\n                    }\n                });\n\n                if (this.nuiFormControl) {\n                    this.nuiFormControl.isInErrorState = this.control.invalid;\n                }\n            });\n        }\n        if (this.nuiFormControl) {\n            // using setTimeout to prevent \"expression changed after it has been checked\" error\n            setTimeout(() => {\n                this.nuiFormControl.ariaLabel = this.caption;\n            });\n        }\n    }\n\n    public getWidth(): string {\n        return this.customBoxWidth || \"100%\";\n    }\n\n    private hasRequiredField(abstractControl: AbstractControl): boolean {\n        if (!abstractControl) {\n            return false;\n        }\n\n        // There is no way in Angular to understand if certain control has some validator\n        // (not a certain error at this moment, but a validator even there are no errors).\n        // Only way is to get validator function from the control, fire it and check the result.\n        // Works for form group as well.\n        // Credits: https://stackoverflow.com/questions/39819123/angular2-find-out-if-formcontrol-has-required-validator\n        if (abstractControl.validator) {\n            const validator = abstractControl.validator({} as AbstractControl);\n            if (validator && validator.required) {\n                return true;\n            }\n        }\n        // This also works for a form Group\n        if ((abstractControl as FormGroup)[\"controls\"]) {\n            _forOwn(\n                (abstractControl as FormGroup)[\"controls\"],\n                (control: AbstractControl) => {\n                    if (control && this.hasRequiredField(control)) {\n                        return true;\n                    }\n                }\n            );\n        }\n        return false;\n    }\n}\n","<ng-template #showOptional>\n    <span *ngIf=\"showOptionalText\" class=\"nui-form-field__state-text\" i18n\n        >(optional)</span\n    >\n</ng-template>\n\n<div class=\"nui-form-field\" [ngStyle]=\"{ width: getWidth() }\">\n    <div class=\"nui-form-field__control-label-container\" *ngIf=\"caption\">\n        <div class=\"nui-form-field__control-label-container-description\">\n            <label class=\"nui-form-field__control-label\">{{ caption }}</label>\n            <span\n                *ngIf=\"controlIsOptional\"\n                class=\"nui-form-field__state-text\"\n                i18n\n                >(optional)</span\n            >\n        </div>\n        <div\n            *ngIf=\"info || infoTemplate\"\n            class=\"nui-form-field__control-label-container-info\"\n        >\n            <nui-popover\n                [template]=\"infoTemplatePlain\"\n                class=\"d-inline-flex\"\n                [unlimited]=\"true\"\n            >\n                <nui-icon [icon]=\"'severity_info'\"></nui-icon>\n            </nui-popover>\n        </div>\n    </div>\n    <ng-content></ng-content>\n    <div class=\"nui-form-field__help\">\n        <div>\n            <ng-content select=\"nui-validation-message\"> </ng-content>\n        </div>\n        <span class=\"nui-help-hint\" *ngIf=\"hint || hintTemplate\">\n            <ng-container *ngIf=\"hint && !hintTemplate\">{{\n                hint\n            }}</ng-container>\n            <ng-container\n                *ngIf=\"hintTemplate && !hint\"\n                [ngTemplateOutlet]=\"hintTemplate\"\n            ></ng-container>\n        </span>\n    </div>\n</div>\n\n<ng-template #infoTemplatePlain>\n    <ng-container *ngIf=\"info; else infoTemplate\">\n        {{ info }}\n    </ng-container>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { FormFieldComponent } from \"./form-field.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiPopoverModule } from \"../popover/popover.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule, NuiPopoverModule],\n    declarations: [FormFieldComponent],\n    exports: [FormFieldComponent],\n    providers: [],\n})\nexport class NuiFormFieldModule {}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const WindowToken = new InjectionToken(\"Window\");\n\nexport function windowProvider(): Window {\n    return window;\n}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Inject, Injectable } from \"@angular/core\";\n\nimport { WindowToken } from \"./window\";\nimport { CaretCoordinates } from \"../models\";\n\nconst properties = [\n    \"boxSizing\",\n    \"width\",\n    \"height\",\n    \"overflowX\",\n    \"overflowY\",\n\n    \"borderTopWidth\",\n    \"borderRightWidth\",\n    \"borderBottomWidth\",\n    \"borderLeftWidth\",\n\n    \"paddingTop\",\n    \"paddingRight\",\n    \"paddingBottom\",\n    \"paddingLeft\",\n\n    \"fontStyle\",\n    \"fontVariant\",\n    \"fontWeight\",\n    \"fontStretch\",\n    \"fontSize\",\n    \"lineHeight\",\n    \"fontFamily\",\n\n    \"textAlign\",\n    \"textTransform\",\n    \"textIndent\",\n    \"textDecoration\",\n\n    \"letterSpacing\",\n    \"wordSpacing\",\n];\n\ntype OurCSS = CSSStyleDeclaration & { [key: string]: any };\n\n@Injectable()\nexport class FreeTypeQueryUtilsService {\n    private window: Window;\n    constructor(@Inject(WindowToken) window: any) {\n        this.window = window as Window;\n    }\n\n    getTextareaCaretCoordinates(\n        element: HTMLTextAreaElement,\n        position: number\n    ): CaretCoordinates {\n        const isFirefox: boolean = !(\n            (this.window as any).mozInnerScreenX == null\n        );\n\n        let mirrorDiv = this.window.document.getElementById(\n            element.nodeName + \"--mirror-div\"\n        );\n        if (!mirrorDiv) {\n            mirrorDiv = this.window.document.createElement(\"div\");\n            mirrorDiv.id = element.nodeName + \"--mirror-div\";\n            this.window.document.body.appendChild(mirrorDiv);\n        }\n\n        const style: OurCSS = mirrorDiv.style;\n        const computed: OurCSS = getComputedStyle(element);\n\n        style.whiteSpace = \"pre-wrap\";\n        style.position = \"absolute\";\n        style.top =\n            element.offsetTop + parseInt(computed.borderTopWidth, 10) + \"px\";\n        style.left = \"-400px\";\n\n        properties.forEach((prop) => {\n            style[prop as keyof typeof CSSStyleDeclaration] = computed[prop];\n        });\n\n        if (isFirefox) {\n            style.width = parseInt(computed.width, 10) - 2 + \"px\";\n            // Firefox adds 2 pixels to the padding - https://bugzilla.mozilla.org/show_bug.cgi?id=753662\n            // Firefox lies about the overflow property for textareas:\n            // https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n            if (element.scrollHeight > parseInt(computed.height, 10)) {\n                style.overflowY = \"scroll\";\n            }\n        } else {\n            style.overflow = \"hidden\";\n        }\n\n        mirrorDiv.textContent = element.value.substring(0, position);\n        const span = this.window.document.createElement(\"span\");\n        span.textContent = element.value.substring(position) || \".\";\n        span.style.backgroundColor = \"lightgrey\";\n        mirrorDiv.appendChild(span);\n\n        const scrollTop = element.scrollTop;\n        const coordinates = {\n            top:\n                span.offsetTop +\n                parseInt(computed[\"borderTopWidth\"], 10) -\n                scrollTop,\n            left: span.offsetLeft + parseInt(computed[\"borderLeftWidth\"], 10),\n            scrollTop,\n        };\n        this.window.document.body.removeChild(mirrorDiv);\n\n        return coordinates;\n    }\n}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n    ViewChild,\n} from \"@angular/core\";\n\nimport { WindowToken } from \"../helpers/window\";\nimport {\n    BaseCoordinates,\n    ColorsConf,\n    ElementPadding,\n    QueryToken,\n    RenderConfigurator,\n} from \"../models\";\n\n@Component({\n    selector: \"nui-text-highlight-overlay\",\n    templateUrl: \"./text-highlight-overlay-component.html\",\n    styleUrls: [\"./text-highlight-overlay-component.less\"],\n    standalone: false,\n})\nexport class TextHighlightOverlayComponent<T extends QueryToken>\n    implements OnInit, OnChanges\n{\n    readonly ONE_SIDE_STROKE_WIDTH = 1;\n    readonly BOTH_SIDES_STROKE_WIDTH = 2;\n    readonly BOX_SUM_PADDING = 8;\n\n    @Input()\n    model: { value: string; tokens: T[] };\n    @Input()\n    renderConfigurator: RenderConfigurator<T>;\n\n    @ViewChild(\"parentContainer\", { static: true })\n    parentContainer: ElementRef;\n    @ViewChild(\"textContainer\", { static: true })\n    textContainer: ElementRef;\n    @ViewChild(\"text\", { static: true })\n    text: ElementRef;\n    @ViewChild(\"highlightCanvas\", { static: true })\n    highlightCanvas: ElementRef;\n\n    private get container(): HTMLElement {\n        return this.parentContainer.nativeElement;\n    }\n\n    private get textHolder(): HTMLTextAreaElement {\n        return this.textContainer.nativeElement;\n    }\n\n    private get span(): HTMLElement {\n        return this.text.nativeElement;\n    }\n\n    private window: Window;\n    constructor(@Inject(WindowToken) window: any) {\n        this.window = window as Window;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.model && changes.model.previousValue) {\n            setTimeout(() => this.highlightTokens(this.model.tokens));\n        }\n    }\n\n    ngOnInit(): void {\n        // @ts-ignore\n        const resizeObserver = new ResizeObserver(() => {\n            this.highlightTokens(this.model.tokens);\n        });\n        resizeObserver.observe(this.textHolder);\n        setTimeout(() => this.highlightTokens(this.model.tokens));\n    }\n\n    private getBorderWidths(element: HTMLTextAreaElement): ElementPadding {\n        const getBorderWidth = (direction: string): number =>\n            this.getPixelPropertyValue(\n                element,\n                \"border-\" + direction + \"-width\"\n            );\n\n        return {\n            top: getBorderWidth(\"top\"),\n            bottom: getBorderWidth(\"bottom\"),\n            left: getBorderWidth(\"left\"),\n            right: getBorderWidth(\"right\"),\n        };\n    }\n\n    private getPaddings(element: HTMLTextAreaElement): ElementPadding {\n        const getPaddingSize = (direction: string): number =>\n            this.getPixelPropertyValue(element, \"padding-\" + direction);\n\n        return {\n            top: getPaddingSize(\"top\"),\n            bottom: getPaddingSize(\"bottom\"),\n            left: getPaddingSize(\"left\"),\n            right: getPaddingSize(\"right\"),\n        };\n    }\n\n    private getPixelPropertyValue(\n        element: HTMLElement,\n        propName: string\n    ): number {\n        return Number(\n            this.window\n                .getComputedStyle(element, null)\n                .getPropertyValue(propName)\n                .split(\"px\")[0]\n        );\n    }\n\n    private highlightTokens(tokens: T[]): void {\n        const canvas: HTMLCanvasElement = this.highlightCanvas\n            .nativeElement as HTMLCanvasElement;\n        if (!this.renderConfigurator || !canvas) {\n            return;\n        }\n        const context = canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n        this.setupContext(context, canvas);\n        if (!tokens || tokens.length === 0) {\n            return;\n        }\n        const containerRect = this.container.getBoundingClientRect();\n        const textHolderPaddings = this.getPaddings(this.textHolder);\n        const baseLeft: number = containerRect.left + textHolderPaddings.left;\n        const baseTop: number = containerRect.top + textHolderPaddings.top;\n        if (this.renderConfigurator.enhanceTokens) {\n            tokens = this.renderConfigurator.enhanceTokens(tokens);\n        }\n        this.processTokens(tokens, context, baseLeft, baseTop);\n    }\n\n    private processTokens(\n        tokens: T[],\n        ctx: CanvasRenderingContext2D,\n        baseLeft: any,\n        baseTop: any\n    ): void {\n        for (let i = 0; i < tokens.length; i++) {\n            const token = tokens[i];\n            const color = this.renderConfigurator.getHighlightColor(token);\n            const notifColor = this.renderConfigurator.getNotifColor(token);\n            if (!color && !notifColor) {\n                continue;\n            }\n            if (\n                !this.span.childNodes[0].textContent ||\n                this.span.childNodes[0].textContent.length <= token.start ||\n                this.span.childNodes[0].textContent.length <= token.end\n            ) {\n                continue;\n            }\n            this.highlightToken(\n                token,\n                ctx,\n                { notif: notifColor, highlight: color },\n                { left: baseLeft, top: baseTop }\n            );\n        }\n    }\n\n    private setupContext(\n        context: CanvasRenderingContext2D,\n        canvas: HTMLCanvasElement\n    ): void {\n        context.lineWidth = 1;\n        const childPaddingSizes = this.getPaddings(this.textHolder);\n        const childBorderWidths = this.getBorderWidths(this.textHolder);\n\n        const childHeight = this.getPixelPropertyValue(\n            this.textHolder,\n            \"height\"\n        );\n        const childWidth = this.getPixelPropertyValue(this.textHolder, \"width\");\n        const parentWidth = this.getPixelPropertyValue(this.container, \"width\");\n\n        context.canvas.width =\n            childWidth -\n            childPaddingSizes.left -\n            childPaddingSizes.right -\n            childBorderWidths.left -\n            childBorderWidths.right;\n        context.canvas.height =\n            childHeight -\n            childPaddingSizes.top -\n            childPaddingSizes.bottom -\n            childBorderWidths.top -\n            childBorderWidths.bottom;\n        context.canvas.style.width = parentWidth + \"px\";\n        context.canvas.style.height = childHeight + \"px\";\n        context.shadowOffsetX = 0;\n        context.shadowOffsetY = 0;\n\n        context.clearRect(0, 0, canvas.width, canvas.height);\n    }\n\n    private highlightToken(\n        token: T,\n        context: CanvasRenderingContext2D,\n        colors: ColorsConf,\n        coordBase: BaseCoordinates\n    ): void {\n        const range = document.createRange();\n        range.setStart(this.span.childNodes[0], token.start);\n        range.setEnd(this.span.childNodes[0], token.end);\n        const rects = range.getClientRects();\n\n        for (let rectIdx = 0; rectIdx < rects.length; rectIdx++) {\n            const rect = rects[rectIdx];\n            context.beginPath();\n            if (colors.notif) {\n                this.addNotificationRectangle(colors, context, rect, coordBase);\n            }\n            if (colors.highlight) {\n                this.addHighlightRectangle(colors, context, rect, coordBase);\n            }\n            context.closePath();\n        }\n    }\n\n    private addHighlightRectangle(\n        colors: ColorsConf,\n        context: CanvasRenderingContext2D,\n        rect: DOMRect,\n        coordBase: BaseCoordinates\n    ): void {\n        context.fillStyle = colors.highlight;\n        context.fillRect(\n            rect.left - coordBase.left - this.ONE_SIDE_STROKE_WIDTH,\n            rect.top - coordBase.top,\n            rect.width + this.BOX_SUM_PADDING,\n            rect.height - this.BOTH_SIDES_STROKE_WIDTH\n        );\n    }\n\n    private addNotificationRectangle(\n        colors: ColorsConf,\n        context: CanvasRenderingContext2D,\n        rect: DOMRect,\n        coordBase: BaseCoordinates\n    ): void {\n        context.strokeStyle = colors.notif;\n        context.strokeRect(\n            rect.left - coordBase.left - this.BOTH_SIDES_STROKE_WIDTH,\n            rect.top - coordBase.top - this.ONE_SIDE_STROKE_WIDTH,\n            rect.width + this.BOX_SUM_PADDING + this.BOTH_SIDES_STROKE_WIDTH,\n            rect.height\n        );\n    }\n}\n","<div #parentContainer class=\"parent\">\n    <div #textContainer class=\"child\">\n        <span #text class=\"text\">{{this.model.value}}</span>\n    </div>\n    <canvas #highlightCanvas id=\"highlightCanvas\" class=\"canvas\"></canvas>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ApplicationRef,\n    ComponentFactoryResolver,\n    ComponentRef,\n    EmbeddedViewRef,\n    Injectable,\n} from \"@angular/core\";\nimport isNil from \"lodash/isNil\";\n\nimport { ToastInjector } from \"./toast-injector\";\nimport { OverlayContainerService } from \"../overlay/overlay-container.service\";\nimport { OVERLAY_DEFAULT_PRIORITY } from \"../overlay/types\";\n/** @ignore */\ninterface IToastContainers {\n    [positionClass: string]: HTMLElement;\n}\n\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class ToastContainerService {\n    constructor(\n        private componentFactoryResolver: ComponentFactoryResolver,\n        private overlayService: OverlayContainerService,\n        private appRef: ApplicationRef\n    ) {}\n\n    private static getComponentRootNode(\n        componentRef: ComponentRef<any>\n    ): HTMLElement {\n        return (componentRef.hostView as EmbeddedViewRef<any>)\n            .rootNodes[0] as HTMLElement;\n    }\n    private containers: IToastContainers = {};\n    private containerElement: HTMLElement;\n\n    /**\n     * Creates container element for position, if container already exists - returns it\n     * @return the container element\n     */\n    public getContainerElement(\n        positionClass: string = \"toast-top-right\"\n    ): HTMLElement {\n        if (isNil(this.containers[positionClass])) {\n            this.createContainer(positionClass);\n        }\n\n        return (this.containerElement = this.containers[positionClass]);\n    }\n\n    /**\n     * Dynamically compiles toast component and attaches it to the toast container\n     * @return reference to attached toast\n     */\n    public attachToast(\n        component: any,\n        injector: ToastInjector,\n        newestOnTop: boolean\n    ): any {\n        const componentFactory =\n            this.componentFactoryResolver.resolveComponentFactory(component);\n        const componentRef = componentFactory.create(injector);\n\n        this.appRef.attachView(componentRef.hostView);\n\n        if (newestOnTop) {\n            this.containerElement.insertBefore(\n                ToastContainerService.getComponentRootNode(componentRef),\n                this.containerElement.firstChild\n            );\n        } else {\n            this.containerElement.appendChild(\n                ToastContainerService.getComponentRootNode(componentRef)\n            );\n        }\n\n        return componentRef;\n    }\n\n    /**\n     * Destroys component using reference to it's factory\n     * @return reference to attached toast\n     */\n    public detachToast(component: any): void {\n        component.destroy();\n    }\n\n    private createContainer(positionClass: string): void {\n        const container = document.createElement(\"div\");\n        container.classList.add(\"nui-toast__container\");\n        container.classList.add(positionClass);\n        this.overlayService\n            // make sure toasts are always displayed on top of everything\n            .getOverlayContainer(document.body, OVERLAY_DEFAULT_PRIORITY + 10)\n            .appendChild(container);\n\n        this.containers[positionClass] = container;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { SafeHtml } from \"@angular/platform-browser\";\nimport { Observable, Subject } from \"rxjs\";\n\nimport { IToastConfig } from \"./public-api\";\nimport { ToastRef } from \"./toast-ref\";\n\n/**\n * __Description:__ Represents metadata of a toast.\n * Used as an injectable entity, that injects into a toast component.\n */\n/** @ignore */\nexport class ToastPackage {\n    private readonly onClickSubject = new Subject<void>();\n\n    constructor(\n        public toastId: number,\n        public config: IToastConfig,\n        public body: string | SafeHtml | undefined,\n        public title: string | undefined,\n        public toastType: string,\n        public toastRef: ToastRef<any>\n    ) {}\n\n    /** Fires after clicking on toast */\n    public triggerClick(): void {\n        this.onClickSubject.next();\n    }\n\n    public onClick(): Observable<any> {\n        return this.onClickSubject.asObservable();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injector, Type } from \"@angular/core\";\n\nimport { ToastPackage } from \"./toast-package\";\n\n/** Custom injector type specifically for instantiating components with a toast. */\n/** @ignore */\nexport class ToastInjector implements Injector {\n    constructor(\n        private toastPackage: ToastPackage,\n        private parentInjector: Injector\n    ) {}\n\n    public get(token: any, notFoundValue?: any): any {\n        if (token === ToastPackage && this.toastPackage) {\n            return this.toastPackage;\n        }\n\n        return this.parentInjector.get<ToastPackage>(\n            token as Type<ToastPackage>,\n            notFoundValue\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Observable, Subject } from \"rxjs\";\n\nimport { IToastRef } from \"./public-api\";\nimport { ToastContainerService } from \"./toast-container.service\";\n\n/**\n * Reference to a toast opened via the Toast service.\n * Used to provide toast events hooks\n */\n/** @ignore */\nexport class ToastRef<T> implements IToastRef<T> {\n    /** The instance of component opened into the toast. */\n    public componentInstance: T;\n    /** Subject for notifying user, that the toast has finished closing. */\n    private readonly afterClosedSubject = new Subject<void>();\n    private readonly activateSubject = new Subject<void>();\n    private readonly manualCloseSubject = new Subject<void>();\n\n    constructor(private toastContainerService: ToastContainerService) {}\n\n    public manualClose(): void {\n        this.manualCloseSubject.next();\n        this.manualCloseSubject.complete();\n    }\n\n    public manualClosed(): Observable<any> {\n        return this.manualCloseSubject.asObservable();\n    }\n\n    /**\n     * Close toast\n     */\n    public close(): void {\n        this.toastContainerService.detachToast(this.componentInstance);\n        this.afterClosedSubject.next();\n        this.afterClosedSubject.complete();\n    }\n\n    /** Gets an observable that is notified when the toast has finished closing. */\n    public afterClosed(): Observable<any> {\n        return this.afterClosedSubject.asObservable();\n    }\n\n    public isInactive(): boolean {\n        return this.activateSubject.isStopped;\n    }\n\n    public activate(): void {\n        this.activateSubject.next();\n        this.activateSubject.complete();\n    }\n\n    /** Gets an observable that is notified when the toast has started opening. */\n    public afterActivate(): Observable<any> {\n        return this.activateSubject.asObservable();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\nimport {\n    IActiveToast,\n    IToastConfig,\n    IToastDeclaration,\n    IToastService,\n} from \"./public-api\";\n\n/**\n * @ignore\n */\n@Injectable()\nexport abstract class ToastServiceBase implements IToastService {\n    abstract setConfig(config: IToastConfig, itemIdentificator?: string): void;\n\n    abstract error(toastDeclaration: IToastDeclaration): IActiveToast;\n\n    abstract info(toastDeclaration: IToastDeclaration): IActiveToast;\n\n    abstract success(toastDeclaration: IToastDeclaration): IActiveToast;\n\n    abstract warning(toastDeclaration: IToastDeclaration): IActiveToast;\n\n    abstract clear(toastId?: number): void;\n\n    abstract remove(toastId: number): boolean;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    HostBinding,\n    HostListener,\n    NgZone,\n    OnDestroy,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { SafeHtml } from \"@angular/platform-browser\";\nimport { Subscription } from \"rxjs\";\n\nimport { IToastConfig } from \"./public-api\";\nimport { ToastPackage } from \"./toast-package\";\nimport { ToastServiceBase } from \"./toast.servicebase\";\n\nenum ToastState {\n    Inactive = \"inactive\",\n    Active = \"active\",\n    Removed = \"removed\",\n}\n\n// <example-url>./../examples/index.html#/toast</example-url>\n\n/**\n * /**\n * __Name : __\n * Toast Component\n *\n * __Usage :__\n * Used to show toast, handle animation and events. Handles progress bar animation.\n * This component is created dynamically in ToastContainerService\n */\n@Component({\n    selector: \"nui-toast-component\",\n    templateUrl: \"./toast.component.html\",\n    styleUrls: [\"./toast.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: { \"[attr.role]\": \"role\" },\n    standalone: false,\n})\nexport class ToastComponent implements OnDestroy {\n    public body?: string | SafeHtml | null;\n    public title?: string;\n    public options: IToastConfig;\n    /** width of progress bar */\n    public width = -1;\n    public toastIcon: string;\n    public closeButton?: boolean;\n\n    get role(): string {\n        return this.toastPackage.toastType === \"success\" ||\n            this.toastPackage.toastType === \"info\"\n            ? \"status\"\n            : \"alert\";\n    }\n\n    /** a combination of toast type and options.toastClass */\n    @HostBinding(\"class\") toastClasses = \"\";\n    @HostBinding(\"class.nui-toast--fade-out\") fadeOut = true;\n    @HostBinding(\"style.display\") display = \"none\";\n\n    /** controls animation */\n    private state: ToastState = ToastState.Inactive;\n    private timeout: any;\n    private intervalId: NodeJS.Timeout;\n    private hideTime: number;\n    private subscriptions: Array<Subscription> = [];\n    private animationFadeOutLength = 300;\n    private toastTypeToSeverityIcon: { [key: string]: string } = {\n        error: \"severity_critical\",\n        warning: \"severity_warning\",\n        info: \"severity_info\",\n        success: \"severity_ok\",\n    };\n\n    constructor(\n        private toastService: ToastServiceBase,\n        private toastPackage: ToastPackage,\n        private ngZone: NgZone\n    ) {\n        this.title = toastPackage.title;\n        this.body = toastPackage.body;\n        this.options = toastPackage.config;\n        this.toastClasses = `nui-toast--${toastPackage.toastType} ${toastPackage.config.toastClass} nui-toast--animation`;\n        this.toastIcon = this.toastTypeToSeverityIcon[toastPackage.toastType];\n        this.closeButton = this.toastPackage.config.closeButton;\n\n        const activateSubscription = this.toastPackage.toastRef\n            .afterActivate()\n            .subscribe(() => {\n                this.display = \"block\";\n                setTimeout(() => this.activateToast()); // Is needed to make \"display: none\" & \"opacity\" transitions working\n            });\n\n        const closeSubscription = this.toastPackage.toastRef\n            .manualClosed()\n            .subscribe(() => {\n                this.remove();\n            });\n\n        this.subscriptions.push(activateSubscription, closeSubscription);\n    }\n\n    /**\n     * triggers fade in animation and sets timeout till the toast will be dismissed\n     */\n    public activateToast(): void {\n        this.state = ToastState.Active;\n        this.fadeOut = false;\n\n        if (this.options.timeOut) {\n            this.ngZone.runOutsideAngular(() => {\n                this.timeout = setTimeout(() => {\n                    this.ngZone.run(() => {\n                        this.remove();\n                    });\n                }, this.options.timeOut);\n            });\n            this.hideTime = new Date().getTime() + this.options.timeOut;\n\n            if (this.options.progressBar) {\n                this.intervalId = this.repeatProgressBarChange();\n            }\n        }\n    }\n\n    /**\n     * tells toastService to remove this toast after animation time\n     */\n    public remove(): void {\n        if (this.state === ToastState.Removed) {\n            return;\n        }\n\n        clearTimeout(this.timeout);\n        this.state = ToastState.Removed;\n        this.fadeOut = true;\n        this.timeout = setTimeout(\n            () => this.toastService.remove(this.toastPackage.toastId),\n            this.animationFadeOutLength\n        );\n    }\n\n    /**\n     * handles click on toast itself\n     */\n    @HostListener(\"click\")\n    public clickToast(): void {\n        if (this.state === ToastState.Removed) {\n            return;\n        }\n\n        this.toastPackage.triggerClick();\n\n        if (this.options.clickToDismiss) {\n            this.remove();\n        }\n    }\n\n    /**\n     * disables progressBar and prevents toast from closing\n     */\n    @HostListener(\"mouseenter\")\n    public stickAround(): void {\n        if (this.state === ToastState.Removed) {\n            return;\n        }\n\n        clearTimeout(this.timeout);\n        this.options.timeOut = 0;\n        this.hideTime = 0;\n        // disable progressBar\n        clearInterval(this.intervalId);\n        this.width = 0;\n    }\n\n    /**\n     *  using extendedTimeOut value to delay toast's closure\n     */\n    @HostListener(\"mouseleave\")\n    public delayedHideToast(): void {\n        clearInterval(this.intervalId);\n\n        if (\n            this.options.extendedTimeOut === 0 ||\n            this.state === ToastState.Removed\n        ) {\n            return;\n        }\n\n        this.timeout = setTimeout(\n            () => this.remove(),\n            this.options.extendedTimeOut\n        );\n        this.options.timeOut = this.options.extendedTimeOut;\n        this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n        this.width = 100;\n\n        if (this.options.progressBar) {\n            this.intervalId = this.repeatProgressBarChange();\n        }\n    }\n\n    private repeatProgressBarChange(): NodeJS.Timeout {\n        let intervalId;\n\n        this.ngZone.runOutsideAngular(() => {\n            intervalId = setInterval(() => {\n                this.ngZone.run(() => {\n                    this.updateProgress();\n                });\n            }, (this.options.timeOut || 0) / 100);\n        });\n\n        // using type assertion to avoid compile time error\n        // variable intervalId is assigned by clojure / async\n        return intervalId as unknown as NodeJS.Timeout;\n    }\n\n    /**\n     * updates progress bar width\n     */\n    private updateProgress() {\n        if (this.width === 0 || !this.options.timeOut) {\n            return;\n        }\n\n        const now = new Date().getTime();\n        const remaining = this.hideTime - now;\n\n        this.width = (remaining / this.options.timeOut) * 100;\n\n        if (this.options.progressAnimation === \"increasing\") {\n            this.width = 100 - this.width;\n        }\n\n        if (this.width <= 0) {\n            this.width = 0;\n        }\n\n        if (this.width >= 100) {\n            this.width = 100;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.subscriptions.forEach((subscription) =>\n            subscription.unsubscribe()\n        );\n        clearInterval(this.intervalId);\n        clearTimeout(this.timeout);\n    }\n}\n","<div\n    class=\"nui-toast__content d-flex flex-nowrap flex-row justify-content-between align-items-start\"\n    [class.nui-toast__content--without-close-button]=\"!closeButton\"\n>\n    <nui-icon\n        class=\"nui-toast__status-icon\"\n        iconSize=\"large\"\n        icon=\"{{ toastIcon }}\"\n    ></nui-icon>\n    <div class=\"nui-toast__content-message flex-grow-1\">\n        <span\n            *ngIf=\"title\"\n            class=\"nui-toast__content-title\"\n            [attr.aria-label]=\"title\"\n            >{{ title }}</span\n        >\n        <span\n            *ngIf=\"body && options.enableHtml\"\n            class=\"nui-toast__content-body\"\n            [innerHTML]=\"body\"\n        ></span>\n        <span\n            *ngIf=\"body && !options.enableHtml\"\n            class=\"nui-toast__content-body\"\n            [attr.aria-label]=\"body\"\n            >{{ body }}</span\n        >\n    </div>\n    <button\n        *ngIf=\"options.closeButton\"\n        nui-button\n        type=\"button\"\n        class=\"nui-toast__dismiss-button\"\n        displayStyle=\"action\"\n        size=\"default\"\n        icon=\"close\"\n        (click)=\"remove()\"\n    ></button>\n</div>\n<div\n    *ngIf=\"options.progressBar\"\n    class=\"nui-toast__progress\"\n    [style.width.%]=\"width\"\n></div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport enum SwitchState {\n    on,\n    off,\n}\n\nexport interface IHighlightArgs {\n    highlightState: SwitchState;\n    status: string;\n    items: any[];\n    itemType: string;\n    itemIdentificator: any;\n}\n\nexport enum Channel {\n    highlight = \"highlight\",\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, Injector, SecurityContext } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport _assign from \"lodash/assign\";\nimport _cloneDeep from \"lodash/cloneDeep\";\nimport _isArray from \"lodash/isArray\";\nimport _toInteger from \"lodash/toInteger\";\nimport { take } from \"rxjs/operators\";\n\nimport {\n    IActiveToast,\n    IToastConfig,\n    IToastDeclaration,\n    IToastService,\n    ToastPositionClass,\n} from \"./public-api\";\nimport { ToastContainerService } from \"./toast-container.service\";\nimport { ToastInjector } from \"./toast-injector\";\nimport { ToastPackage } from \"./toast-package\";\nimport { ToastRef } from \"./toast-ref\";\nimport { ToastComponent } from \"./toast.component\";\nimport { SwitchState } from \"../../services/notification-args\";\nimport { NotificationService } from \"../../services/notification-service\";\n\n/**\n * __Name : __\n * Toast Service\n *\n * __Usage :__\n * Used to show toast messages and to trigger highlight of items\n */\n/**\n * @ignore\n */\n@Injectable({ providedIn: \"root\" })\nexport class ToastService implements IToastService {\n    private index = 0;\n    private currentlyActive = 0;\n    private toasts: IActiveToast[] = [];\n    private defaultToastConfig: IToastConfig = {\n        maxOpened: 0,\n        autoDismiss: false,\n        newestOnTop: true,\n        preventDuplicates: false,\n        positionClass: ToastPositionClass.TOP_RIGHT,\n        progressAnimation: \"decreasing\",\n        timeOut: 5000,\n        progressBar: true,\n        toastClass: \"nui-toast\",\n        extendedTimeOut: 2000,\n        closeButton: true,\n        clickToDismiss: false,\n        enableHtml: true,\n        stickyError: false,\n    };\n    private toastConfig: IToastConfig;\n    private itemIdentificator: string | undefined;\n\n    constructor(\n        private notificationService: NotificationService,\n        private toastContainerService: ToastContainerService,\n        private _injector: Injector,\n        private sanitizer: DomSanitizer\n    ) {\n        this.toastConfig = _assign({}, this.defaultToastConfig);\n    }\n\n    /**\n     *\n     * __Description:__ set global config for all kind of toasts and itemIdentificator that is\n     * used for identification of item in nuiToast directive\n     * @param config\n     * @param itemIdentificator\n     * @return void\n     */\n    public setConfig(config: IToastConfig, itemIdentificator?: string): void {\n        _assign(this.toastConfig, config);\n        this.itemIdentificator = itemIdentificator;\n    }\n\n    /**\n     *\n     * __Description:__ show success toast trigger highlight of items and trigger fade out of highlighting when\n     * toast is gone\n     *\n     * @param toastDeclaration\n     * @return void\n     */\n    public success(toastDeclaration: IToastDeclaration): IActiveToast {\n        const toastInstance = this.buildNotification(\n            \"success\",\n            toastDeclaration.message,\n            toastDeclaration.title,\n            this.applyConfig(toastDeclaration.options)\n        );\n        this.notifyHighlights(toastDeclaration.itemsToHighlight, \"success\");\n        this.toastRemoveHighlight(\n            toastInstance,\n            toastDeclaration.itemsToHighlight\n        );\n        return toastInstance;\n    }\n\n    public warning(toastDeclaration: IToastDeclaration): IActiveToast {\n        const toastInstance = this.buildNotification(\n            \"warning\",\n            toastDeclaration.message,\n            toastDeclaration.title,\n            this.applyConfig(toastDeclaration.options)\n        );\n        this.notifyHighlights(toastDeclaration.itemsToHighlight, \"warning\");\n        this.toastRemoveHighlight(\n            toastInstance,\n            toastDeclaration.itemsToHighlight\n        );\n        return toastInstance;\n    }\n\n    public error(toastDeclaration: IToastDeclaration): IActiveToast {\n        const config = _cloneDeep(toastDeclaration.options);\n\n        if (\n            toastDeclaration.options &&\n            toastDeclaration.options.stickyError &&\n            config\n        ) {\n            config.timeOut = 0;\n            config.extendedTimeOut = 0;\n            config.progressBar = false;\n            config.closeButton = false;\n        }\n\n        const toastInstance = this.buildNotification(\n            \"error\",\n            toastDeclaration.message,\n            toastDeclaration.title,\n            this.applyConfig(config)\n        );\n        this.notifyHighlights(toastDeclaration.itemsToHighlight, \"error\");\n        this.toastRemoveHighlight(\n            toastInstance,\n            toastDeclaration.itemsToHighlight\n        );\n        return toastInstance;\n    }\n\n    public info(toastDeclaration: IToastDeclaration): IActiveToast {\n        const toastInstance = this.buildNotification(\n            \"info\",\n            toastDeclaration.message,\n            toastDeclaration.title,\n            this.applyConfig(toastDeclaration.options)\n        );\n        this.notifyHighlights(toastDeclaration.itemsToHighlight, \"info\");\n        this.toastRemoveHighlight(\n            toastInstance,\n            toastDeclaration.itemsToHighlight\n        );\n        return toastInstance;\n    }\n\n    /**\n     *\n     * __Description:__ calls toasts' close methods to close them\n     *\n     * @param toastId\n     * @return void\n     */\n    public clear(toastId?: number): void {\n        for (const toast of this.toasts) {\n            if (toastId !== undefined) {\n                if (toast.toastId === toastId) {\n                    toast.toastRef.manualClose();\n                    return;\n                }\n            } else {\n                toast.toastRef.manualClose();\n            }\n        }\n    }\n\n    /**\n     *\n     * __Description:__ removes toast by id and activates next toast in queue (when maxOpened !== 0)\n     *\n     * @param toastId\n     * @return boolean\n     */\n    public remove(toastId: number): boolean {\n        const toastInstance = this.findToast(toastId);\n\n        if (!toastInstance) {\n            return false;\n        }\n\n        toastInstance.activeToast.toastRef.close();\n        this.toasts.splice(toastInstance.index, 1);\n        this.currentlyActive = this.currentlyActive - 1;\n\n        if (!this.toastConfig.maxOpened || !this.toasts.length) {\n            return false;\n        }\n\n        if (\n            this.currentlyActive <= +this.toastConfig.maxOpened &&\n            this.toasts[this.currentlyActive]\n        ) {\n            const activeToastRef = this.toasts[this.currentlyActive].toastRef;\n            if (!activeToastRef.isInactive()) {\n                this.currentlyActive = this.currentlyActive + 1;\n                activeToastRef.activate();\n            }\n        }\n\n        return true;\n    }\n\n    private toastRemoveHighlight(\n        toastInstance: IActiveToast | null,\n        itemsToRemoveHighlight?: any[]\n    ): void {\n        if (toastInstance) {\n            toastInstance?.onHidden?.pipe(take(1)).subscribe(() => {\n                if (\n                    _isArray(itemsToRemoveHighlight) &&\n                    itemsToRemoveHighlight.length > 0\n                ) {\n                    this.notificationService.post(\"Highlight\", {\n                        highlightState: SwitchState.off,\n                        items: itemsToRemoveHighlight,\n                    });\n                }\n            });\n        }\n    }\n\n    private applyConfig(override: IToastConfig = {}): IToastConfig {\n        const resultConfig = _assign({}, this.toastConfig, override);\n        resultConfig.timeOut = _toInteger(resultConfig.timeOut);\n        resultConfig.extendedTimeOut = _toInteger(resultConfig.extendedTimeOut);\n        return resultConfig;\n    }\n\n    private buildNotification(\n        toastType: string,\n        body: string | undefined,\n        title: string | undefined,\n        config: IToastConfig\n    ): IActiveToast {\n        // max opened and auto dismiss = true\n        if (body && config.preventDuplicates && this.isDuplicate(body)) {\n            // TODO: Update buildNotification return type in V10 in the scope of NUI-5824\n            // @ts-ignore: Suppressing error until v10 to prevent API breaking changes\n            return null;\n        }\n\n        this.toastContainerService.getContainerElement(config.positionClass);\n        let keepInactive = false;\n        let sanitizedBody: string | undefined = body;\n\n        if (\n            this.toastConfig.maxOpened &&\n            this.currentlyActive >= this.toastConfig.maxOpened\n        ) {\n            keepInactive = true;\n            if (this.toastConfig.autoDismiss) {\n                this.clear(this.toasts[this.toasts.length - 1].toastId);\n            }\n        }\n\n        this.index = this.index + 1;\n\n        if (body && config.enableHtml) {\n            sanitizedBody = <string>(\n                this.sanitizer.sanitize(SecurityContext.HTML, body)\n            );\n        }\n\n        const toastRef = new ToastRef(this.toastContainerService);\n        const toastPackage = new ToastPackage(\n            this.index,\n            config,\n            sanitizedBody,\n            title,\n            toastType,\n            toastRef\n        );\n        const toastInjector = new ToastInjector(toastPackage, this._injector);\n        toastRef.componentInstance = this.toastContainerService.attachToast(\n            ToastComponent,\n            toastInjector,\n            !!config.newestOnTop\n        );\n        const toastInstance = {\n            toastId: this.index,\n            body: sanitizedBody,\n            toastRef,\n            onShown: toastRef.afterActivate(),\n            onHidden: toastRef.afterClosed(),\n            onClick: toastPackage.onClick(),\n        };\n\n        if (!keepInactive) {\n            setTimeout(() => {\n                toastInstance.toastRef.activate();\n                this.currentlyActive = this.currentlyActive + 1;\n            });\n        }\n\n        this.toasts.push(toastInstance);\n        return toastInstance;\n    }\n\n    /**\n     * Determines if toast message is already shown\n     */\n    private isDuplicate(body: string) {\n        for (let i = 0; i < this.toasts.length; i++) {\n            if (this.toasts[i].body === body) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    private findToast(\n        toastId: number\n    ): { index: number; activeToast: IActiveToast } | null {\n        for (let i = 0; i < this.toasts.length; i++) {\n            if (this.toasts[i].toastId === toastId) {\n                return { index: i, activeToast: this.toasts[i] };\n            }\n        }\n\n        return null;\n    }\n\n    private notifyHighlights = (\n        itemsToHighlight: any[] | null | undefined,\n        status: string\n    ): void => {\n        if (itemsToHighlight) {\n            this.notificationService.post(\"Highlight\", {\n                highlightState: SwitchState.on,\n                status: status,\n                items: itemsToHighlight,\n                itemIdentificator: this.itemIdentificator,\n            });\n        }\n    };\n}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport {\n    FormBuilder,\n    FormControl,\n    FormGroup,\n    NG_VALUE_ACCESSOR,\n} from \"@angular/forms\";\nimport { Observable, Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { FreeTypeQueryUtilsService } from \"./helpers/freetype-query-utils.service\";\nimport {\n    CaretCoordinates,\n    HelpEntry,\n    HintEntry,\n    QueryToken,\n    RenderConfigurator,\n    Tokenizer,\n} from \"./models\";\nimport { TextHighlightOverlayComponent } from \"./text-highlight-overlay/text-highlight-overlay-component\";\nimport { NuiFormFieldControl } from \"../form-field/public-api\";\nimport { OptionValueType } from \"../overlay/types\";\nimport { SelectV2Component } from \"../select-v2/select/select-v2.component\";\nimport { ToastService } from \"../toast/toast.service\";\n\n// <example-url>./../examples/index.html#/freetype-query</example-url>\n@Component({\n    selector: \"nui-freetype-query-builder\",\n    templateUrl: \"./freetype-query-builder.component.html\",\n    styleUrls: [\"./freetype-query-builder.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        class: \"nui-freetype-query-builder\",\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            multi: true,\n            useExisting: forwardRef(() => FreetypeQueryBuilderComponent),\n        },\n        {\n            provide: NuiFormFieldControl,\n            useExisting: forwardRef(() => FreetypeQueryBuilderComponent),\n            multi: true,\n        },\n    ],\n    standalone: false,\n})\nexport class FreetypeQueryBuilderComponent<T extends QueryToken>\n    implements OnChanges, OnDestroy, AfterViewInit\n{\n    private static pasteTextCommon(text: string): boolean {\n        text = text.replace(/(\\r\\n|\\n|\\r)/gm, \" \");\n\n        return document.execCommand(\"insertText\", false, text);\n    }\n\n    private readonly KEY_ENTER_CODE = \"Enter\";\n    private readonly KEY_ESC_CODE = \"Escape\";\n\n    @Input()\n    maxLength: number = 10_000;\n    @Input()\n    readonly: boolean = false;\n    @Input()\n    placeholder: string;\n    @Input()\n    value: string;\n    @Input()\n    renderer: RenderConfigurator<T>;\n    @Input()\n    tokenizer: Tokenizer<T>;\n    @Input()\n    currentHelp: HelpEntry[] = [];\n    @Input()\n    cursorSetter$: Observable<any>;\n    @Output()\n    helpItemSelected = new EventEmitter<{ value: string }>();\n    @Output()\n    currentValue = new EventEmitter<{ value: string; tokens: T[] }>();\n    @Output()\n    cursorPos = new EventEmitter<number>();\n    @Output()\n    cursorCoords = new EventEmitter<CaretCoordinates>();\n    @Output()\n    submitQuery = new EventEmitter();\n\n    @ViewChild(\"queryselect\", { static: true })\n    querySelect: SelectV2Component;\n    @ViewChild(\"messageTextarea\", { static: false })\n    messageTextarea: ElementRef;\n    @ViewChild(\"messageTextareaHolder\", { static: false })\n    messageTextareaHolder: ElementRef;\n    @ViewChild(\"textHighlightOverlayHolder\", { static: false })\n    textHighlightOverlayHolder: ElementRef;\n    @ViewChild(TextHighlightOverlayComponent, { static: false })\n    textHighlightOverlay: ElementRef;\n\n    private readonly ON_SCROLL_CALLBACK = this.onTextAreaScroll.bind(this);\n    private readonly BASE_LINE = 34;\n    private destroy$$ = new Subject<void>();\n    private tokens: T[] = [];\n    private scrollValue: number = 0;\n    private cursorPosition = 0;\n    private bodyControl: FormControl;\n    private focusedToken: T;\n    private lastHeight: number = 0;\n\n    formGroup: FormGroup;\n    focusedTokenValue = \"\";\n    highlightModel: { value: string; tokens: T[] } = { value: \"\", tokens: [] };\n    inputHeight = this.BASE_LINE;\n    public selectControl: FormControl = new FormControl();\n\n    constructor(\n        private renderer2: Renderer2,\n        private formBuilder: FormBuilder,\n        private cd: ChangeDetectorRef,\n        private toastService: ToastService,\n        private utils: FreeTypeQueryUtilsService\n    ) {\n        this.formGroup = this.formBuilder.group({\n            body: [\"\"],\n        });\n        this.bodyControl = this.formGroup.get(\"body\") as FormControl;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.value) {\n            this.bodyControl.patchValue(changes.value.currentValue);\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.renderer2.listen(\n            this.querySelect.inputElement.nativeElement,\n            \"focusin\",\n            () => {\n                this.openOptions();\n            }\n        );\n        this.querySelect.valueSelected\n            .pipe(takeUntil(this.destroy$$))\n            .subscribe((value: OptionValueType) => {\n                this.itemSelected({\n                    newValue: value as HintEntry,\n                    oldValue: undefined,\n                });\n                setTimeout(() => {\n                    this.openOptions();\n                });\n            });\n\n        this.bodyControl.valueChanges\n            .pipe(takeUntil(this.destroy$$))\n            .subscribe((value) => this.onValueChange(value));\n        this.registerListeners();\n        this.cursorSetter$\n            .pipe(takeUntil(this.destroy$$))\n            .subscribe((pos) => setTimeout(() => this.setCursorToPos(pos)));\n        if (this.value) {\n            this.onValueChange(this.value);\n            setTimeout(() => {\n                this.rerender();\n            });\n        }\n        this.querySelect.clickOutsideDropdown.subscribe(() => {\n            this.querySelect.hideDropdown();\n        });\n\n        this.renderer2.listen(\n            this.querySelect.inputElement.nativeElement,\n            \"focusout\",\n            ($event) => {\n                const selectedOption =\n                    this.querySelect.inputElement.nativeElement.parentElement.contains(\n                        $event.currentTarget.parentElement\n                    );\n                if (!selectedOption) {\n                    setTimeout(() => this.querySelect.hideDropdown());\n                }\n            }\n        );\n    }\n\n    private openOptions() {\n        if (!this.querySelect.isDropdownOpen) {\n            this.selectControl.setValue(undefined);\n            this.querySelect.showDropdown();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.clearListeners();\n        this.destroy$$.next();\n        this.destroy$$.complete();\n    }\n\n    onKeyDown($event: KeyboardEvent): void {\n        if ($event.key === this.KEY_ENTER_CODE) {\n            $event.preventDefault();\n            if (!this.querySelect.isDropdownOpen) {\n                this.submitQuery.emit();\n            }\n        }\n    }\n\n    onDrop($event: DragEvent): void {\n        const data = $event.dataTransfer?.getData(\"text\");\n        if (data && data.length + this.value.length > this.maxLength) {\n            $event.preventDefault();\n            this.toastService.error({\n                message:\n                    \"Query cannot exceed maximum length of \" +\n                    this.maxLength +\n                    \" characters.\",\n            });\n        }\n    }\n\n    onKeyUp($event: KeyboardEvent): void {\n        if ($event.key !== this.KEY_ENTER_CODE) {\n            this.updateCursor(\n                ($event.target as HTMLTextAreaElement)[\"selectionStart\"]\n            );\n        }\n        if ($event.key !== this.KEY_ESC_CODE) {\n            this.openOptions();\n        }\n\n        if ($event.key === this.KEY_ESC_CODE) {\n            this.querySelect.hideDropdown();\n        }\n    }\n\n    onClick($event: MouseEvent): void {\n        this.updateCursor(\n            ($event.target as HTMLTextAreaElement)[\"selectionStart\"]\n        );\n        this.openOptions();\n    }\n\n    itemSelected($event: {\n        newValue: HintEntry;\n        oldValue: HintEntry | undefined;\n    }): void {\n        this.helpItemSelected.emit({ value: $event.newValue.value });\n    }\n\n    private get textarea(): HTMLTextAreaElement {\n        return this.messageTextarea.nativeElement;\n    }\n\n    private get textareaHolder(): HTMLElement {\n        return this.messageTextareaHolder.nativeElement;\n    }\n\n    private clearNewLinesOnPaste = (event: ClipboardEvent): void => {\n        event.preventDefault();\n        if (event.clipboardData && event.clipboardData.getData) {\n            const text = event.clipboardData.getData(\"text/plain\");\n            if (!FreetypeQueryBuilderComponent.pasteTextCommon(text)) {\n                this.pasteTextFirefox(this.textarea, text);\n            }\n            this.scrollToCursor();\n        }\n    };\n\n    private scrollToCursor(): void {\n        setTimeout(() => {\n            this.textarea.blur();\n            this.textarea.focus();\n        });\n    }\n\n    private pasteTextFirefox(\n        textarea: HTMLTextAreaElement,\n        text: string\n    ): void {\n        textarea.setRangeText(\n            text,\n            textarea.selectionStart || 0,\n            textarea.selectionEnd || 0,\n            \"end\"\n        );\n        if (textarea.value.length > this.maxLength) {\n            textarea.value = textarea.value.substr(0, this.maxLength);\n        }\n        // @ts-ignore\n        textarea.dispatchEvent(\n            new InputEvent(\"input\", {\n                data: text,\n                inputType: \"insertText\",\n                isComposing: false,\n            })\n        );\n    }\n\n    private onTextAreaScroll(event: Event): void {\n        this.scrollValue = (event.target as HTMLElement)[\"scrollTop\"];\n        this.textHighlightOverlayHolder.nativeElement.scrollTop =\n            this.scrollValue;\n        this.cd.markForCheck();\n    }\n\n    private onValueChange(value: string): void {\n        this.value = value;\n        this.tokens = this.tokenizer.tokenizeText(this.bodyControl.value);\n        this.focusedToken = this.tokens[this.getFocusedTokenIndex()];\n        this.focusedTokenValue = this.focusedToken\n            ? this.focusedToken.value\n            : \"\";\n        this.openOptions();\n        this.rerender();\n        this.currentValue.emit({ value: this.value, tokens: this.tokens });\n    }\n\n    private setCursorToPos(pos: number): void {\n        this.textarea.focus();\n        this.textarea.setSelectionRange(pos, pos);\n    }\n\n    private rerender(): void {\n        this.textarea.style.height =\n            this.textHighlightOverlay[\"container\" as keyof ElementRef]\n                .scrollHeight + \"px\";\n        this.highlightModel = { value: this.value, tokens: this.tokens };\n        setTimeout(() => {\n            const overlayScrollHeight =\n                this.textHighlightOverlay[\"container\" as keyof ElementRef]\n                    .scrollHeight;\n            this.highlightModel = { value: this.value, tokens: this.tokens };\n            this.textarea.style.height = overlayScrollHeight + \"px\";\n\n            if (this.textAreaHeightChanged()) {\n                this.lastHeight = overlayScrollHeight;\n                if (document.activeElement === this.textarea) {\n                    this.openOptions();\n                }\n            }\n            this.cd.detectChanges();\n        });\n    }\n\n    private getFocusedTokenIndex(): number {\n        for (let i = 0; i < this.tokens.length; i++) {\n            if (\n                this.tokens[i].start <= this.cursorPosition &&\n                this.tokens[i].end >= this.cursorPosition\n            ) {\n                return i;\n            }\n        }\n\n        return -1;\n    }\n\n    private updateCursor(selectionStart: number): void {\n        this.cursorPos.emit(selectionStart);\n        this.cursorPosition = selectionStart;\n        const focusedTokenIndex = this.getFocusedTokenIndex();\n        this.focusedToken =\n            this.tokens[\n                focusedTokenIndex < 0\n                    ? this.tokens.length - 1\n                    : focusedTokenIndex\n            ];\n        this.focusedTokenValue = this.focusedToken\n            ? this.focusedToken.value\n            : \"\";\n        this.tokens.forEach((token) => {\n            token.focused =\n                token.start <= this.cursorPosition &&\n                token.end >= this.cursorPosition;\n        });\n        this.rerender();\n        this.cursorCoords.emit(\n            this.utils.getTextareaCaretCoordinates(\n                this.textarea,\n                this.textarea.selectionEnd\n            )\n        );\n    }\n\n    private textAreaHeightChanged(): boolean {\n        return (\n            Number(this.textarea.style.height.split(\"px\")[0]) !==\n            this.lastHeight\n        );\n    }\n\n    private registerListeners(): void {\n        const textAreaEl = this.textareaHolder;\n        if (textAreaEl) {\n            textAreaEl.addEventListener(\"scroll\", this.ON_SCROLL_CALLBACK);\n            textAreaEl.addEventListener(\"paste\", this.clearNewLinesOnPaste);\n        }\n    }\n\n    private clearListeners(): void {\n        const textAreaEl = this.textareaHolder;\n        if (textAreaEl) {\n            textAreaEl.removeEventListener(\"scroll\", this.ON_SCROLL_CALLBACK);\n            textAreaEl.removeEventListener(\"paste\", this.clearNewLinesOnPaste);\n        }\n    }\n}\n","<nui-select-v2\n    #queryselect\n    placeholder=\"Select Item\"\n    class=\"action\"\n    style=\"z-index: 1\"\n    [formControl]=\"selectControl\"\n    [manualDropdownControl]=\"true\"\n    [displayValueTemplate]=\"customTemplate\"\n>\n    <ng-container\n        *ngFor=\"\n            let item of readonly ? [] : currentHelp;\n            let idx = index;\n            let last = last;\n            let first = first\n        \"\n    >\n        <nui-select-v2-option\n            tabindex=\"-1\"\n            *ngIf=\"!item.items\"\n            [displayValueContext]=\"item\"\n            [value]=\"item\"\n        >\n            <div class=\"d-inline-flex align-items-center\">\n                <nui-icon\n                    class=\"mr-2\"\n                    *ngIf=\"item.icon\"\n                    [icon]=\"item.icon\"\n                ></nui-icon>\n                <span\n                    tabindex=\"-1\"\n                    [innerHTML]=\"\n                        item.displayValue | nuiHighlight : focusedTokenValue\n                    \"\n                ></span>\n            </div>\n        </nui-select-v2-option>\n        <nui-select-v2-option-group\n            tabindex=\"-1\"\n            *ngIf=\"item.items && item.items !== []\"\n        >\n            <nui-divider\n                *ngIf=\"last && idx > 1\"\n                size=\"extra-small\"\n            ></nui-divider>\n            <span\n                *ngIf=\"item.header\"\n                class=\"nui-select-v2-option-group--header\"\n                >{{ item.header }}</span\n            >\n            <ng-container *ngIf=\"!item.notice\">\n                <nui-select-v2-option\n                    *ngFor=\"let groupedItem of item.items\"\n                    tabindex=\"-1\"\n                    [displayValueContext]=\"groupedItem\"\n                    [value]=\"groupedItem\"\n                >\n                    <span\n                        tabindex=\"-1\"\n                        *ngIf=\"!customTemplate\"\n                        [innerHTML]=\"\n                            groupedItem.displayValue\n                                | nuiHighlight : focusedTokenValue\n                        \"\n                    ></span>\n                </nui-select-v2-option>\n            </ng-container>\n            <ng-container *ngIf=\"item.notice\">\n                <ng-container *ngFor=\"let groupedItem of item.items\">\n                    <div class=\"options-group\">\n                        <nui-icon\n                            iconSize=\"small\"\n                            icon=\"{{\n                                'severity_' +\n                                    (groupedItem['severity']\n                                        ? groupedItem['severity']\n                                        : 'info')\n                            }}\"\n                        ></nui-icon>\n                        <span class=\"options-group__item\" tabindex=\"-1\">{{\n                            groupedItem.message.displayValue\n                        }}</span>\n                    </div>\n                </ng-container>\n            </ng-container>\n            <nui-divider *ngIf=\"!last\" size=\"extra-small\"></nui-divider>\n        </nui-select-v2-option-group>\n    </ng-container>\n</nui-select-v2>\n\n<ng-template #customTemplate let-context>\n    <div class=\"freetype-query__content custom-input-template\">\n        <div>\n            <form class=\"freetype-query__form\" [formGroup]=\"formGroup\">\n                <div #messageTextareaHolder class=\"message-textarea__holder\">\n                    <textarea\n                        #messageTextarea\n                        spellcheck=\"false\"\n                        type=\"text\"\n                        (drop)=\"onDrop($event)\"\n                        [attr.disabled]=\"readonly ? 'disabled' : null\"\n                        (keydown)=\"onKeyDown($event)\"\n                        (keyup)=\"onKeyUp($event)\"\n                        (click)=\"onClick($event)\"\n                        [style.height.px]=\"inputHeight\"\n                        class=\"message-textarea form-control input-control\"\n                        formControlName=\"body\"\n                        [placeholder]=\"placeholder\"\n                        [maxLength]=\"maxLength\"\n                    >\n                    </textarea>\n                    <div class=\"overlay-holder\" #textHighlightOverlayHolder>\n                        <nui-text-highlight-overlay\n                            [model]=\"highlightModel\"\n                            [renderConfigurator]=\"renderer\"\n                        ></nui-text-highlight-overlay>\n                    </div>\n                </div>\n            </form>\n        </div>\n    </div>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Directive, ElementRef, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport find from \"lodash/find\";\nimport isNil from \"lodash/isNil\";\nimport { Subscription } from \"rxjs\";\n\nimport { IHighlightArgs, SwitchState } from \"../../services/notification-args\";\nimport { NotificationService } from \"../../services/notification-service\";\n\n/**\n * <example-url>./../examples/index.html#/toast</example-url>\n */\n/** @ignore */\n@Directive({\n    selector: \"[nuiToast]\",\n    standalone: false,\n})\n/**\n * __Name :__\n * Toast Directive\n *\n * __Description :__\n * Is used for highlighting elements\n */\nexport class ToastDirective implements OnInit, OnDestroy {\n    /**\n     * sets model for directive to check whether corresponding element should be highlighted or not\n     */\n    @Input() public nuiToast: any;\n\n    private notificationSubscription: Subscription;\n    private get highlightOnClass() {\n        return \"highlight-on\";\n    }\n    private get highlightFadeOutClass() {\n        return \"highlight-fadeout\";\n    }\n    private isHighlighted: boolean;\n    private status: string;\n\n    constructor(\n        private elRef: ElementRef,\n        private notificationService: NotificationService\n    ) {}\n\n    public ngOnInit(): void {\n        this.notificationSubscription = this.notificationService.subscribe(\n            \"Highlight\",\n            this.onHighlight\n        );\n    }\n\n    private onHighlight = (args: any): void => {\n        if (!this.elRef) {\n            return;\n        }\n        const highlightArgs = <IHighlightArgs>args;\n\n        const currentItem = find(\n            highlightArgs.items,\n            (item) =>\n                item[highlightArgs.itemIdentificator] ===\n                this.nuiToast[highlightArgs.itemIdentificator]\n        );\n        if (!isNil(currentItem)) {\n            if (highlightArgs.highlightState === SwitchState.on) {\n                if (this.isHighlighted) {\n                    return;\n                }\n                this.isHighlighted = true;\n                this.status = highlightArgs.status;\n                this.elRef.nativeElement.classList.add(this.highlightOnClass);\n                this.elRef.nativeElement.classList.add(this.status);\n            } else if (this.isHighlighted) {\n                this.elRef.nativeElement.classList.remove(\n                    this.highlightOnClass\n                );\n                this.elRef.nativeElement.classList.remove(this.status);\n                this.elRef.nativeElement.classList.add(\n                    this.highlightFadeOutClass\n                );\n                this.isHighlighted = false;\n            }\n        }\n    };\n\n    public ngOnDestroy(): void {\n        this.notificationSubscription.unsubscribe();\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ToastContainerService } from \"./toast-container.service\";\nimport { ToastComponent } from \"./toast.component\";\nimport { ToastDirective } from \"./toast.directive\";\nimport { ToastService } from \"./toast.service\";\nimport { ToastServiceBase } from \"./toast.servicebase\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule, NuiButtonModule],\n    declarations: [ToastComponent, ToastDirective],\n    exports: [ToastComponent, ToastDirective],\n    providers: [\n        ToastService,\n        ToastContainerService,\n        { provide: ToastServiceBase, useExisting: ToastService },\n    ],\n})\nexport class NuiToastModule {}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\n\nimport { FreetypeQueryBuilderComponent } from \"./freetype-query-builder.component\";\nimport { FreeTypeQueryUtilsService } from \"./helpers/freetype-query-utils.service\";\nimport { windowProvider, WindowToken } from \"./helpers/window\";\nimport { TextHighlightOverlayComponent } from \"./text-highlight-overlay/text-highlight-overlay-component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiDividerModule } from \"../divider/divider.module\";\nimport { NuiFormFieldModule } from \"../form-field/form-field.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\nimport { NuiPopupModule } from \"../popup/popup.module\";\nimport { NuiSelectV2Module } from \"../select-v2/select-v2.module\";\nimport { NuiToastModule } from \"../toast/toast.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    declarations: [\n        FreetypeQueryBuilderComponent,\n        TextHighlightOverlayComponent,\n    ],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        NuiCommonModule,\n        NuiFormFieldModule,\n        NuiToastModule,\n        NuiDividerModule,\n        NuiIconModule,\n        NuiMenuModule,\n        NuiPopupModule,\n        NuiSelectV2Module,\n    ],\n    providers: [\n        FreeTypeQueryUtilsService,\n        { provide: WindowToken, useFactory: windowProvider },\n    ],\n    exports: [FreetypeQueryBuilderComponent, TextHighlightOverlayComponent],\n})\nexport class NuiFreetypeQueryModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./combobox/combobox.component\";\nexport * from \"./select.component\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _chunk from \"lodash/chunk\";\nimport _clone from \"lodash/clone\";\nimport _get from \"lodash/get\";\nimport _includes from \"lodash/includes\";\nimport _min from \"lodash/min\";\nimport _range from \"lodash/range\";\nimport { Subject } from \"rxjs\";\n\nimport { IPaginatorItem } from \"./public-api\";\nimport {\n    IFilter,\n    IFilterPub,\n    IRange,\n} from \"../../services/data-source/public-api\";\nimport { LoggerService } from \"../../services/log-service\";\nimport { PopupContainerService } from \"../popup/popup-container.service\";\nimport { SelectComponent } from \"../select\";\nimport { ISelectChangedEvent } from \"../select/public-api\";\nimport { InputValueTypes } from \"../select-v2/types\";\n\nexport const defaultPageSizeSet = [10, 25, 50, 100];\nconst singleSymbolWidth = 8;\nconst singleCellPaddings = 12;\nconst containerPaddingsWithScroll = 37;\n\n/**\n * Component used for pagination of data\n * <example-url>./../examples/index.html#/paginator</example-url>\n */\n@Component({\n    selector: \"nui-paginator\",\n    templateUrl: \"./paginator.component.html\",\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: [\"./paginator.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [PopupContainerService],\n    host: { role: \"navigation\" },\n    standalone: false,\n})\nexport class PaginatorComponent\n    implements OnInit, OnChanges, OnDestroy, IFilterPub\n{\n    @Input() public itemsList: Array<IPaginatorItem> = [];\n    /**\n     * Current page number\n     */\n    @Input() public page = 1;\n    /**\n     * Size of the page. For example: 10, 25, 50, 100;\n     */\n    @Input() public pageSize: number;\n    /**\n     * Array of page numbers\n     */\n    @Input() public pageSizeSet: number[] = [];\n    /**\n     * Total number of items\n     */\n    @Input() public total = 0;\n    /**\n     * Paginator separator symbol.\n     */\n    @Input() public dots = \"...\";\n    /**\n     * Hide paginator if all items of data can be displayed on one page\n     */\n    @Input() public hideIfEmpty = false;\n    /**\n     * Make paginator hidden\n     */\n    @Input() public hide: boolean;\n    /**\n     * Paginator active item class\n     */\n    @Input() public activeClass = \"active\";\n    /**\n     * Paginator disabled item class\n     */\n    @Input() public disabledClass = \"disabled\";\n    /**\n     * Number of items displayed before separator\n     */\n    @Input() public adjacent = 1;\n    /**\n     * Maximum number of items in paginator\n     */\n    @Input() public maxElements = this.adjacent * 2 + 5;\n    /**\n     * Show previous and next buttons\n     */\n    @Input() public showPrevNext = true;\n    /**\n     * Display popup above paginator if equals to 'true'\n     */\n    @Input() public popupDirectionTop = false;\n    /**\n     * Popup parent element css class used determining of popup direction\n     */\n    @Input() public popupBaseElementSelector: string;\n    /**\n     * inner nui-select appendToBody input\n     */\n    @Input() public appendToBody: boolean;\n    /**\n     * Action occurs on page change\n     */\n    @Output() public pagerAction = new EventEmitter<any>();\n\n    @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\n\n    public onDestroy$ = new Subject<void>();\n\n    @ViewChild(\"select\")\n    private selectComponent: SelectComponent;\n\n    @ViewChild(CdkVirtualScrollViewport)\n    private virtualScrollViewport: CdkVirtualScrollViewport;\n\n    private _dotsPagesPerRow = 5;\n\n    public get dotsPagesPerRow(): number {\n        return this._dotsPagesPerRow;\n    }\n    private mainRangeStart: number;\n    private mainRangeEnd: number;\n\n    public constructor(\n        private logger: LoggerService,\n        private popupContainer: PopupContainerService,\n        private cd: ChangeDetectorRef\n    ) {\n        this.popupContainer.parent = this;\n    }\n\n    /**\n     * Component initialization\n     */\n    public ngOnInit(): void {\n        this.initPageSizeSet();\n        const pageCount = this.getPageCount();\n        if (this.page > pageCount) {\n            this.page = pageCount;\n            this.pageChange.emit(this.page);\n        }\n        if (this.page <= 0) {\n            this.page = 1;\n            this.pageChange.emit(this.page);\n        }\n    }\n\n    /**\n     * Redraw component when 'total' or 'page' propery was changed\n     * @param changes Changed properties\n     */\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (\n            changes[\"total\"] ||\n            changes[\"page\"] ||\n            changes[\"adjacent\"] ||\n            changes[\"pageSize\"]\n        ) {\n            this.assemble();\n        }\n    }\n\n    /**\n     * Initialize set of pages\n     */\n    public initPageSizeSet(): void {\n        if (!_get(this.pageSizeSet, \"length\")) {\n            this.pageSizeSet = _clone(defaultPageSizeSet);\n        }\n        if (!this.pageSize || this.pageSize <= 0) {\n            this.pageSize = this.pageSizeSet[0];\n        }\n        if (!_includes(this.pageSizeSet, this.pageSize)) {\n            this.logger\n                .warn(`pageSize ${this.pageSize} not found in the current pageSizeSet ${this.pageSizeSet}. pageSize will be set to\n${this.pageSizeSet[0]}. To set the desired initial page size, include it as part of the paginator's pageSizeSet input.`);\n            this.pageSize = this.pageSizeSet[0];\n        }\n    }\n\n    public getFilters(): IFilter<IRange<number>> {\n        return {\n            type: \"range\",\n            value: {\n                start: (this.page - 1) * this.pageSize,\n                end: this.page * this.pageSize,\n            },\n        };\n    }\n\n    public resetFilter(): void {\n        this.page = 1;\n        this.pageChange.emit(this.page);\n    }\n\n    /**\n     * Change page number\n     * @param page Page number\n     */\n    public goToPage(page: number): void {\n        this.page = page;\n        this.pageChange.emit(this.page);\n\n        if (this.pagerAction) {\n            const result = {\n                page: this.page,\n                pageSize: this.pageSize,\n                total: this.total,\n                pageSizeSet: this.pageSizeSet,\n            };\n            this.pagerAction.emit(result);\n        }\n\n        this.assemble();\n    }\n\n    // TODO: remove in vNext. Needs only for backward compatibility\n    /**\n     * @deprecated - remove in v12. Needs only for backward compatibility - Removal: NUI-5837\n     */\n    public onPageSizeChange(value: InputValueTypes): void {\n        this.setItemsPerPage({\n            oldValue: 0,\n            newValue: value as number,\n        });\n    }\n\n    // TODO: refactor in vNext. Replace ISelectChangedEvent to InputValueTypes - NUI-5837\n    /**\n     * Set items per page that should displayed\n     * @param changedEvent select change event\n     */\n    public setItemsPerPage(changedEvent: ISelectChangedEvent<number>): void {\n        if (changedEvent?.newValue === changedEvent?.oldValue) {\n            return;\n        }\n\n        const newValue = changedEvent?.newValue;\n\n        if (newValue) {\n            if (newValue < 1) {\n                this.logger.warn(\n                    \"paginator-controller.setItemsPerPage - invalid newValue: \" +\n                        newValue\n                );\n                return;\n            }\n            this.pageSize = newValue;\n        }\n\n        this.goToPage(1);\n    }\n\n    /**\n     * Get number of pages\n     */\n    public getPageCount(): number {\n        if (this.total <= 0) {\n            return 1;\n        }\n        return Math.ceil(this.total / this.pageSize);\n    }\n\n    /**\n     * Display paginator component\n     */\n    public showPaginator(): boolean {\n        const count: number = this.getPageCount();\n        return isFinite(count) && (this.hideIfEmpty === false || count > 1);\n    }\n\n    /**\n     * Get sequence number of first item of currently displayed paginated list\n     */\n    public getFirstItemOnPage(): number {\n        return this.pageSize * (this.page - 1) + 1;\n    }\n\n    /**\n     * Get sequence number of last item of currently displayed paginated repeat\n     */\n    public getLastItemOnPage(): number | undefined {\n        return _min([this.pageSize * this.page, this.total]);\n    }\n\n    /**\n     * Return range for info section\n     */\n    public getRange(total: number): string {\n        return total > 0\n            ? `${this.getFirstItemOnPage()}-${this.getLastItemOnPage()}`\n            : \"0\";\n    }\n\n    /**\n     * Re-renders the virtual scroll viewport to properly display items within the virtual scroll viewport\n     */\n    public handleDotsClick(): void {\n        if (this.virtualScrollViewport) {\n            this.virtualScrollViewport.checkViewportSize();\n        }\n    }\n\n    /**\n     * Add items to paginator component\n     */\n    private assemble() {\n        this.itemsList = [];\n        if (this.getPageCount() <= 0) {\n            return;\n        }\n\n        const pageCount = this.getPageCount();\n\n        this.prepareSeparators();\n\n        this.addPrev();\n\n        if (this.mainRangeStart !== 1) {\n            // add starting separator and the first page\n            this.add(1);\n            this.addSeparator(2, this.mainRangeStart - 1);\n        }\n\n        this.addRange(this.mainRangeStart, this.mainRangeEnd);\n\n        if (this.mainRangeEnd !== pageCount) {\n            // add ending separator and the last page\n            this.addSeparator(this.mainRangeEnd + 1, pageCount - 1);\n            this.add(pageCount);\n        }\n\n        this.addNext();\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Fills mainRangeStart and mainRangeEnd properties with proper values. Those properties\n     * are used for displaying of page numbers between 'dots' separators.\n     */\n    private prepareSeparators() {\n        // the only 2 variables that are needed to display everything are:\n        //      mainRangeStart      mainRangeEnd\n        //            |                   |\n        //  < 1  ... 100  101  102  103  104 >\n        const pageCount = this.getPageCount();\n        const page = +this.page;\n        const adjacent = +this.adjacent;\n\n        // case when there are few items\n        if (pageCount <= this.maxElements) {\n            this.mainRangeStart = 1;\n            this.mainRangeEnd = pageCount;\n            return;\n        }\n\n        // set main range to\n        this.mainRangeStart = page - adjacent < 1 ? 1 : page - adjacent;\n        this.mainRangeEnd =\n            page + adjacent > pageCount ? pageCount : page + adjacent;\n\n        // case where starting separator is not shown\n        if (\n            this.mainRangeStart -\n                1 - // end of possible starting separator\n                2 < // start of possible starting separator\n            1\n        ) {\n            this.mainRangeStart = 1;\n        }\n\n        // case where ending separator is not shown\n        if (\n            pageCount -\n                1 - // end of possible ending separator\n                (this.mainRangeEnd + 1) < // start of possible ending separator\n            1\n        ) {\n            this.mainRangeEnd = pageCount;\n        }\n\n        // case where we have one of the first pages selected and the ending separator\n        if (\n            this.mainRangeEnd !== pageCount &&\n            page < this.maxElements - 2 - adjacent\n        ) {\n            this.mainRangeStart = 1;\n            this.mainRangeEnd = this.mainRangeStart + this.maxElements - 3;\n        }\n\n        // case where we have one of the last pages selected and the starting separator\n        if (\n            this.mainRangeStart !== 1 &&\n            page > pageCount - this.maxElements + 2 + adjacent\n        ) {\n            this.mainRangeEnd = pageCount;\n            this.mainRangeStart = this.mainRangeEnd - this.maxElements + 3;\n        }\n    }\n\n    private addSeparator(from: number, to: number) {\n        const pageRows = _chunk(_range(from, to + 1), this._dotsPagesPerRow);\n        this.itemsList.push({\n            title: $localize`Pages ${from} - ${to}`,\n            value: this.dots,\n            pageRows: pageRows,\n            popupWidth:\n                (to.toString().length * singleSymbolWidth +\n                    singleCellPaddings) *\n                    this._dotsPagesPerRow +\n                containerPaddingsWithScroll, // each popup will have its own width\n            useVirtualScroll: pageRows.length * this._dotsPagesPerRow >= 1000,\n        });\n    }\n\n    private addPrev() {\n        const pageCount = this.getPageCount();\n        if (!this.showPrevNext || pageCount < 1) {\n            return;\n        }\n\n        const prevBtn = {\n            iconName: \"caret-left\",\n            title: $localize`Previous Page`,\n            page: this.page - 1 <= 0 ? 1 : this.page - 1,\n        };\n        const isDisabled = this.page - 1 <= 0;\n        this.addItem(prevBtn, isDisabled);\n    }\n\n    private addNext() {\n        const pageCount = this.getPageCount();\n        if (!this.showPrevNext || pageCount < 1) {\n            return;\n        }\n\n        const nextBtn = {\n            iconName: \"caret-right\",\n            title: $localize`Next Page`,\n            page: this.page + 1 >= pageCount ? pageCount : this.page + 1,\n        };\n        const isDisabled = this.page + 1 > pageCount;\n        this.addItem(nextBtn, isDisabled);\n    }\n\n    private addItem(item: IPaginatorItem, isDisabled: boolean) {\n        this.itemsList.push({\n            iconName: item.iconName,\n            value: item.value,\n            title: item.title,\n            style: isDisabled ? this.disabledClass : \"\",\n            action: () => {\n                if (item.page) {\n                    this.goToPage(item.page);\n                }\n                return false;\n            },\n        });\n    }\n\n    private add(page: number) {\n        const inst = this;\n        this.itemsList.push({\n            value: page,\n            title: $localize`Page ${page}`,\n            style: this.page === page ? this.activeClass : \"\",\n            action: function () {\n                inst.goToPage(this.value);\n                return false;\n            },\n        });\n    }\n\n    private addRange(start: number, finish: number) {\n        for (let index = start; index <= finish; index++) {\n            this.add(index);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n}\n","<div class=\"nui-paginator\" *ngIf=\"showPaginator()\">\n    <div class=\"nui-paginator__items\">\n        <ul\n            class=\"nui-paginator__list\"\n            aria-label=\"List of pages\"\n            i18n-aria-label\n        >\n            <li\n                title=\"{{ item.title }}\"\n                [ngClass]=\"item.style\"\n                *ngFor=\"let item of itemsList\"\n                value=\"{{ item.value }}\"\n            >\n                <button\n                    nui-button\n                    type=\"button\"\n                    displayStyle=\"action\"\n                    [disabled]=\"item.style\"\n                    *ngIf=\"item.iconName\"\n                    class=\"move-icon\"\n                    [icon]=\"item.iconName\"\n                    (click)=\"item.action($event)\"\n                ></button>\n                <button\n                    nui-button\n                    type=\"button\"\n                    *ngIf=\"item.value !== dots && !item.iconName\"\n                    displayStyle=\"action\"\n                    (click)=\"item.action($event)\"\n                    [isEmpty]=\"false\"\n                >\n                    {{ item.value }}\n                </button>\n                <nui-popup\n                    *ngIf=\"item.value === dots\"\n                    [appendToBody]=\"appendToBody\"\n                    [baseElementSelector]=\"popupBaseElementSelector\"\n                >\n                    <button\n                        nui-button\n                        type=\"button\"\n                        nuiPopupToggle\n                        displayStyle=\"action\"\n                        [ngClass]=\"item.imageClass\"\n                        [isEmpty]=\"false\"\n                        aria-haspopup=\"menu\"\n                        (click)=\"handleDotsClick()\"\n                        class=\"nui-paginator__dots\"\n                    >\n                        {{ item.value }}\n                    </button>\n\n                    <ul popupAreaContent class=\"nui-paginator__elipsis-pages\">\n                        <li>\n                            <table\n                                class=\"nui-paginator__page-table\"\n                                [ngClass]=\"{\n                                    'native-scroll': !item.useVirtualScroll\n                                }\"\n                            >\n                                <cdk-virtual-scroll-viewport\n                                    *ngIf=\"item.useVirtualScroll\"\n                                    [style.width.px]=\"item.popupWidth\"\n                                    [style.height.px]=\"130\"\n                                    [itemSize]=\"40\"\n                                    [maxBufferPx]=\"130\"\n                                    [minBufferPx]=\"130\"\n                                >\n                                    <ng-container\n                                        *cdkVirtualFor=\"\n                                            let pages of item.pageRows\n                                        \"\n                                    >\n                                        <div\n                                            [ngTemplateOutlet]=\"tableRow\"\n                                            [ngTemplateOutletContext]=\"{\n                                                pages: pages\n                                            }\"\n                                        ></div>\n                                    </ng-container>\n                                </cdk-virtual-scroll-viewport>\n                                <tbody *ngIf=\"!item.useVirtualScroll\">\n                                    <ng-container\n                                        *ngFor=\"let pages of item.pageRows\"\n                                        [ngTemplateOutlet]=\"tableRow\"\n                                        [ngTemplateOutletContext]=\"{\n                                            pages: pages\n                                        }\"\n                                    >\n                                    </ng-container>\n                                </tbody>\n                            </table>\n                        </li>\n                    </ul>\n                </nui-popup>\n            </li>\n        </ul>\n    </div>\n    <div class=\"nui-paginator__options\">\n        <div class=\"nui-paginator__info\" i18n>\n            {{ getRange(total) }} of\n            <span class=\"nui-paginator__total\">{{ total }}</span>\n        </div>\n\n        <nui-select-v2\n            ariaLabel=\"Items per page\"\n            [value]=\"pageSize\"\n            (valueSelected)=\"onPageSizeChange($event)\"\n        >\n            <nui-select-v2-option\n                *ngFor=\"let item of pageSizeSet\"\n                [value]=\"item\"\n                >{{ item }}</nui-select-v2-option\n            >\n        </nui-select-v2>\n    </div>\n</div>\n<ng-template #tableRow let-pages=\"pages\">\n    <tr [ngClass]=\"{ 'stretch-row': pages.length === dotsPagesPerRow }\">\n        <td *ngFor=\"let value of pages\" class=\"nui-paginator__page-cell\">\n            <button\n                nui-button\n                type=\"button\"\n                displayStyle=\"action\"\n                (click)=\"goToPage(value)\"\n            >\n                <!-- This tag span was added to display value properly on Safari brouser inside a button in ngFor directive -->\n                <span>{{ value }}</span>\n            </button>\n        </td>\n    </tr>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ScrollingModule } from \"@angular/cdk/scrolling\";\nimport { NgModule } from \"@angular/core\";\n\nimport { PaginatorComponent } from \"./paginator.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiPopupModule } from \"../popup/popup.module\";\nimport { NuiSelectV2Module } from \"../select-v2/select-v2.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiPopupModule,\n        NuiButtonModule,\n        ScrollingModule,\n        NuiSelectV2Module,\n    ],\n    declarations: [PaginatorComponent],\n    exports: [PaginatorComponent],\n    providers: [],\n})\nexport class NuiPaginatorModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    animate,\n    AnimationBuilder,\n    AnimationFactory,\n    AnimationPlayer,\n    style,\n} from \"@angular/animations\";\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport isUndefined from \"lodash/isUndefined\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { debounceTime, distinctUntilChanged, filter } from \"rxjs/operators\";\n\nimport {\n    PanelBackgroundColor,\n    PanelModes,\n    PanelStates,\n    SizeParameters,\n} from \"./public-api\";\n\n// <example-url>./../examples/index.html#/panel</example-url>\n\nconst panelMap: any = {\n    top: {\n        orientation: \"top\",\n        icon: {\n            collapsed: \"double-caret-down\",\n            opened: \"double-caret-up\",\n        },\n    },\n    bottom: {\n        orientation: \"bottom\",\n        icon: {\n            collapsed: \"double-caret-up\",\n            opened: \"double-caret-down\",\n        },\n    },\n    right: {\n        orientation: \"right\",\n        icon: {\n            collapsed: \"double-caret-left\",\n            opened: \"double-caret-right\",\n        },\n    },\n    left: {\n        orientation: \"left\",\n        icon: {\n            collapsed: \"double-caret-right\",\n            opened: \"double-caret-left\",\n        },\n    },\n};\n\n@Component({\n    selector: \"nui-panel\",\n    templateUrl: \"./panel.component.html\",\n    styleUrls: [\"./panel.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class PanelComponent\n    implements AfterViewInit, OnChanges, OnInit, OnDestroy\n{\n    public static ANIMATION_TIME = 300;\n    public static RESIZE_DIRECTIVE_WIDTH = \"8px\";\n    public static SIZE_VALUES: any = {\n        width: {\n            COLLAPSED_VALUE: \"40px\",\n            MIN_VALUE: \"150px\",\n            DEFAULT_VALUE: \"250px\",\n            MAX_VALUE: \"90%\",\n        },\n        height: {\n            COLLAPSED_VALUE: \"40px\",\n            MIN_VALUE: \"40px\",\n            DEFAULT_VALUE: \"120px\",\n            MAX_VALUE: \"90%\",\n        },\n    };\n\n    /**\n     * Use this attribute to set the mode of the panel, by default is set to 'static',\n     * collapsible mode allows panel to be opened or collapsed, 'hoverable' mode make panel displayed with the hover,\n     * 'closable' allows to close panel by click.\n     */\n\n    @Input() panelMode = PanelModes.static;\n\n    /**\n     * Use this attribute to set the text for the header if transclusion of custom header content is not being used.\n     */\n    @Input() heading: string;\n\n    /**\n     * Set this to true in order to set the collapsed state of the side pane\n     */\n    @Input() set isCollapsed(value: boolean) {\n        // used to catch first ngOnChanges\n        if (!isUndefined(this._isCollapsed)) {\n            this.defineIsCollapsed(value);\n        } else {\n            this._isCollapsed = false;\n        }\n    }\n\n    get isCollapsed(): boolean {\n        return this._isCollapsed;\n    }\n\n    /**\n     * Show sidebar over content if displacePrimaryContent = false, show sidebar near content if displacePrimaryContent = true\n     */\n    @Input() displacePrimaryContent = true;\n\n    /**\n     * Set this to true in order to hide the side pane. This may be useful if you want to use nui-panel but want to\n     * show the left pane conditionally.\n     */\n    @Input() set isHidden(value: boolean) {\n        if (this.isClosable && this._isHidden !== value) {\n            this.toggleHideOrCollapsed();\n        }\n    }\n\n    get isHidden(): boolean {\n        return this._isHidden;\n    }\n\n    /**\n     * Define orientation of a panel. Possible values are: \"right\", \"left\", \"top\", \"bottom\"\n     */\n    @Input() orientation: string = \"left\";\n\n    /**\n     * Use this attribute to make side pane resizable.\n     */\n    @Input() isResizable = false;\n\n    /**\n     * Use this attribute to remove default padding from header.\n     */\n    @Input() headerPadding = true;\n\n    /**\n     * Use this attribute to remove default padding from side pane body.\n     */\n    @Input() sidePaneBodyPadding = true;\n\n    /**\n     * Use this attribute to set pane right border dark color.\n     */\n    @Input() darkBorder = false;\n\n    /**\n     * Use this attribute to set the desired size for the side pane in pixels. The default is 250px.\n     */\n    @Input() paneSize: string;\n\n    @Input() panelBackgroundColor: PanelBackgroundColor =\n        PanelBackgroundColor.colorBgLight;\n\n    @Input() paneCollapsedSize: string;\n    @Input() paneMinSize: string;\n    @Input() paneMaxSize: string;\n\n    @Output() collapsed: EventEmitter<boolean> = new EventEmitter<boolean>();\n    @Output() hidden: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    @ViewChild(\"mainContent\", { read: ViewContainerRef })\n    private panelMainContent: ViewContainerRef;\n    @ViewChild(\"headerContent\", { read: ViewContainerRef })\n    private headerContent: ViewContainerRef;\n    @ViewChild(\"footerContent\", { read: ViewContainerRef })\n    private footerContent: ViewContainerRef;\n    @ViewChild(\"sidePaneContainer\", { static: true, read: ViewContainerRef })\n    private sidePaneContainer: ViewContainerRef;\n\n    public displayFooter = true;\n    public displayPanelHeader = true;\n    public isCollapsible = false;\n    public isClosable = false;\n    public isHoverable = false;\n    public isAnimating = false;\n\n    private _isCollapsed: boolean;\n    private _isHidden: boolean = false;\n    private toggles = new Subject<boolean>();\n    private togglesSubscription: Subscription;\n    private _expandAnimationFactory?: AnimationFactory;\n    private _collapseAnimationFactory?: AnimationFactory;\n    private lastAnimationPlayer?: AnimationPlayer;\n\n    constructor(\n        private renderer: Renderer2,\n        private builder: AnimationBuilder,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {}\n\n    public ngOnInit(): void {\n        this.defineSizes();\n        this.defineState();\n        this.togglesSubscription = this.toggles\n            .pipe(filter((toggle) => toggle === this._isCollapsed))\n            .pipe(distinctUntilChanged())\n            .pipe(debounceTime(PanelComponent.ANIMATION_TIME))\n            .subscribe((_) => this.toggleHideOrCollapsed());\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"panelMode\"] && changes[\"panelMode\"].isFirstChange()) {\n            this.defineSizes();\n        }\n        this.updatePaneContainerSizeWithoutAnimation();\n        if (changes[\"panelMode\"]) {\n            this.defineState();\n        }\n        if (changes[\"isCollapsed\"] && changes[\"isCollapsed\"].isFirstChange()) {\n            this.isCollapsed = changes.isCollapsed.currentValue;\n        }\n        if (changes[\"isHidden\"] && changes[\"isHidden\"].isFirstChange()) {\n            this.isHidden = changes.isHidden.currentValue;\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        if (this.orientation === panelMap.bottom.orientation) {\n            this.isResizable = false;\n        }\n        this.displayFooter = !this.paneDirectionHorizontal;\n        this.checkPanelEmbeddedContent();\n        this.handleContentMargin();\n        this.updatePaneContainerSizeWithoutAnimation();\n    }\n\n    public ngOnDestroy(): void {\n        this.destroyLastAnimationPlayer();\n        this.destroyAnimationFactories();\n        if (this.togglesSubscription) {\n            this.togglesSubscription.unsubscribe();\n        }\n    }\n\n    public onSizeChanged(newSize: string): void {\n        this.paneSize = newSize;\n    }\n\n    public get panelClass(): string {\n        return panelMap[this.orientation].class;\n    }\n\n    public get paneDirectionHorizontal(): boolean {\n        return (\n            this.orientation === panelMap.top.orientation ||\n            this.orientation === panelMap.bottom.orientation\n        );\n    }\n\n    public get mainIcon(): string {\n        return panelMap[this.orientation].icon[this.panelState];\n    }\n\n    public toggleEnter(): void {\n        if (this.isHoverable) {\n            this.toggles.next(true);\n        }\n    }\n\n    public toggleLeave(): void {\n        if (this.isHoverable) {\n            this.toggles.next(false);\n        }\n    }\n\n    public isPanelResizable(): boolean {\n        return this.isResizable && !this.isCollapsed;\n    }\n\n    public toggleHideOrCollapsed(): void {\n        if (this.isClosable) {\n            this._isHidden = !this._isHidden;\n            this.hidden.emit(this._isHidden);\n        } else {\n            this.toggleCollapsed();\n        }\n    }\n\n    private toggleCollapsed() {\n        const animationFactory = this._isCollapsed\n            ? this.expandAnimationFactory\n            : this.collapseAnimationFactory;\n        const sizeValue = this._isCollapsed\n            ? this.paneSize\n            : this.paneCollapsedSize;\n        const animationPlayer = animationFactory.create(\n            this.getPaneContainerElement()\n        );\n        animationPlayer.play();\n        this.isAnimating = true;\n        animationPlayer.onDone(() => {\n            this.lastAnimationPlayer = animationPlayer;\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                this.sizeParameter,\n                sizeValue\n            );\n            this.destroyLastAnimationPlayer();\n            this._isCollapsed = !this._isCollapsed;\n            this.collapsed.emit(this._isCollapsed);\n            this.isAnimating = false;\n            if (this.isResizable) {\n                this.isCollapsed\n                    ? this.removeMinSize()\n                    : this.applyBoundarySizes();\n            }\n            this.changeDetectorRef.detectChanges();\n        });\n    }\n\n    private defineIsCollapsed(isCollapsedToBecome: boolean) {\n        if (this._isCollapsed !== isCollapsedToBecome) {\n            this.toggleCollapsed();\n        }\n    }\n\n    public getResizeDirection(): string | undefined {\n        switch (this.orientation) {\n            case \"left\":\n                return \"right\";\n            case \"right\":\n                return \"left\";\n            case \"top\":\n                return \"bottom\";\n            case \"bottom\":\n                return \"top\";\n            default: {\n                return undefined;\n            }\n        }\n    }\n\n    public getPaneSizeMeasurement(): string {\n        return this.paneSize.indexOf(\"%\") !== -1 ? \"%\" : \"px\";\n    }\n\n    public get paneBodyWidth(): string {\n        return !this.paneDirectionHorizontal ? this.paneSize : \"auto\";\n    }\n\n    public get paneBodyHeight(): string {\n        return this.paneDirectionHorizontal ? this.paneSize : \"auto\";\n    }\n\n    public handleContentMargin(): void {\n        if (!this.displacePrimaryContent && !this.isClosable) {\n            this.renderer.setStyle(\n                this.getPanelMainContentElement(),\n                \"margin-\" + this.orientation,\n                this.paneCollapsedSize\n            );\n        }\n    }\n\n    public applyBoundarySizes(): void {\n        if (this.isResizable) {\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                \"min-\" + this.sizeParameter,\n                this.paneMinSize\n            );\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                \"max-\" + this.sizeParameter,\n                this.paneMaxSize\n            );\n        }\n    }\n\n    public removeMinSize(): void {\n        if (this.isResizable) {\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                \"min-\" + this.sizeParameter,\n                \"0\"\n            );\n        }\n    }\n\n    public toggleCollapsedOnClick(): void {\n        if (!this.isHoverable) {\n            this.toggleHideOrCollapsed();\n        }\n    }\n\n    public get sizeParameter(): string {\n        return this.paneDirectionHorizontal\n            ? SizeParameters.height\n            : SizeParameters.width;\n    }\n\n    public get showDefaultIcon(): boolean {\n        return (this.isClosable || this.isCollapsible) && !this.isHoverable;\n    }\n\n    private defineState() {\n        this.isCollapsible = this.panelMode === PanelModes.collapsible;\n        this.isClosable = this.panelMode === PanelModes.closable;\n        this.isHoverable = this.panelMode === PanelModes.hoverable;\n        if (this.isHoverable) {\n            this._isCollapsed = true;\n            this.isCollapsible = true;\n        }\n    }\n\n    private defineSizes(): void {\n        this.paneSize =\n            this.paneSize ||\n            PanelComponent.SIZE_VALUES[this.sizeParameter].DEFAULT_VALUE;\n        this.paneCollapsedSize = !this.paneCollapsedSize\n            ? PanelComponent.SIZE_VALUES[this.sizeParameter].COLLAPSED_VALUE\n            : this.paneCollapsedSize;\n        this.paneMinSize = !this.paneMinSize\n            ? PanelComponent.SIZE_VALUES[this.sizeParameter].MIN_VALUE\n            : this.paneMinSize;\n        this.paneMaxSize = !this.paneMaxSize\n            ? PanelComponent.SIZE_VALUES[this.sizeParameter].MAX_VALUE\n            : this.paneMaxSize;\n    }\n\n    private get panelState(): string {\n        return this._isCollapsed ? PanelStates.collapsed : PanelStates.opened;\n    }\n\n    private checkPanelEmbeddedContent(): void {\n        this.displayPanelHeader =\n            this.headerContent.element.nativeElement.children.length !== 0;\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private updatePaneContainerSizeWithoutAnimation(): void {\n        // Manually update width of left pane container only if it is expanded.\n        if (\n            (!this.isCollapsible || !this._isCollapsed) &&\n            this.sidePaneContainer\n        ) {\n            this.applyBoundarySizes();\n            this.destroyLastAnimationPlayer();\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                this.sizeParameter,\n                this.paneSize\n            );\n        } else if (this._isCollapsed) {\n            this.removeMinSize();\n            this.destroyLastAnimationPlayer();\n            this.renderer.setStyle(\n                this.getPaneContainerElement(),\n                this.sizeParameter,\n                this.paneCollapsedSize\n            );\n        }\n    }\n\n    private getPaneContainerElement(): ElementRef {\n        return this.sidePaneContainer.element.nativeElement;\n    }\n\n    private getPanelMainContentElement(): ElementRef {\n        return this.panelMainContent.element.nativeElement;\n    }\n\n    private get expandAnimationFactory(): AnimationFactory {\n        if (!this._expandAnimationFactory || this.isResizable) {\n            this._expandAnimationFactory = this.buildAnimationFactory(\n                this.paneCollapsedSize,\n                this.paneSize\n            );\n        }\n        return this._expandAnimationFactory;\n    }\n\n    private get collapseAnimationFactory(): AnimationFactory {\n        this.removeMinSize();\n        if (!this._collapseAnimationFactory || this.isResizable) {\n            this._collapseAnimationFactory = this.buildAnimationFactory(\n                this.paneSize,\n                this.paneCollapsedSize\n            );\n        }\n        return this._collapseAnimationFactory;\n    }\n\n    private buildAnimationFactory(\n        startSize: string,\n        endSize: string\n    ): AnimationFactory {\n        if (this.paneDirectionHorizontal) {\n            return this.builder.build([\n                style({\n                    height: startSize,\n                }),\n                animate(\n                    `${PanelComponent.ANIMATION_TIME}ms ease-in-out`,\n                    style({ height: endSize })\n                ),\n            ]);\n        }\n        return this.builder.build([\n            style({\n                width: startSize,\n            }),\n            animate(\n                `${PanelComponent.ANIMATION_TIME}ms ease-in-out`,\n                style({ width: endSize })\n            ),\n        ]);\n    }\n\n    private destroyLastAnimationPlayer(): void {\n        if (this.lastAnimationPlayer) {\n            this.lastAnimationPlayer.destroy();\n            delete this.lastAnimationPlayer;\n        }\n    }\n\n    private destroyAnimationFactories(): void {\n        delete this._expandAnimationFactory;\n        delete this._collapseAnimationFactory;\n    }\n}\n","<div\n    class=\"nui-panel media nui-panel--{{ orientation }}\"\n    [class.nui-panel--hoverable]=\"isHoverable\"\n    [class.nui-panel--is-collapsed]=\"isCollapsible && isCollapsed\"\n    [class.nui-panel--animating]=\"isAnimating\"\n    role=\"tabpanel\"\n    [attr.aria-expanded]=\"!isCollapsible || !isCollapsed\"\n    [attr.aria-hidden]=\"isCollapsible && isCollapsed\"\n>\n    <div\n        class=\"nui-panel__side-pane\"\n        [ngClass]=\"panelBackgroundColor\"\n        [class.nui-panel-pane--border-dark]=\"darkBorder\"\n        [class.nui-panel-pane__hidden]=\"isHidden\"\n        [class.nui-panel-pane__closable]=\"isClosable\"\n        [class.nui-panel--shrink]=\"displacePrimaryContent\"\n        [class.nui-panel-pane__vertical]=\"paneDirectionHorizontal\"\n        (mouseenter)=\"toggleEnter()\"\n        (mouseleave)=\"toggleLeave()\"\n        nuiResizer\n        [resizerDirection]=\"getResizeDirection()\"\n        [resizerDisabled]=\"!isPanelResizable()\"\n        [resizerValue]=\"getPaneSizeMeasurement()\"\n        (resizerSizeChanged)=\"onSizeChanged($event)\"\n        #sidePaneContainer\n    >\n        <div class=\"nui-panel__container\" #paneContainer>\n            <div\n                *ngIf=\"displayPanelHeader\"\n                class=\"nui-panel__header\"\n                [class.nui-panel__header--no-padding]=\"!headerPadding\"\n                #headerContent\n            >\n                <ng-content select=\"[nuiPanelEmbeddedIcon]\"></ng-content>\n                <ng-container *ngIf=\"!heading; else defaultTitle\">\n                    <ng-content select=\"[nuiPanelEmbeddedHeading]\"></ng-content>\n                </ng-container>\n\n                <div\n                    *ngIf=\"showDefaultIcon\"\n                    class=\"nui-panel__header-container nui-panel__header-container--default\"\n                >\n                    <ng-container *ngIf=\"!isClosable\">\n                        <button\n                            nui-button\n                            class=\"nui-panel__header-btn\"\n                            type=\"button\"\n                            displayStyle=\"action\"\n                            [icon]=\"mainIcon\"\n                            [disabled]=\"isAnimating\"\n                            (click)=\"toggleCollapsedOnClick()\"\n                            *ngIf=\"isCollapsible\"\n                        ></button>\n                    </ng-container>\n                    <ng-container *ngIf=\"isClosable\">\n                        <button\n                            nui-button\n                            displayStyle=\"action\"\n                            class=\"nui-panel__header-btn nui-panel__header-btn--close\"\n                            type=\"button\"\n                            icon=\"close\"\n                            (click)=\"toggleCollapsedOnClick()\"\n                        ></button>\n                    </ng-container>\n                </div>\n            </div>\n            <div class=\"nui-panel__side-pane-body-wrapper nui-scroll-shadows\">\n                <div\n                    *ngIf=\"!isCollapsed\"\n                    class=\"nui-panel__side-pane-body\"\n                    [class.nui-panel__side-pane-body--no-padding]=\"\n                        !sidePaneBodyPadding\n                    \"\n                    [style.min-width]=\"paneBodyWidth\"\n                >\n                    <ng-content select=\"[nuiPanelEmbeddedBody]\"></ng-content>\n                </div>\n            </div>\n            <div *ngIf=\"displayFooter\" class=\"nui-panel__footer\" #footerContent>\n                <ng-content select=\"[nuiPanelEmbeddedFooter]\"></ng-content>\n            </div>\n        </div>\n    </div>\n    <div class=\"nui-panel__center-pane media-body\" #mainContent>\n        <div class=\"nui-panel__container\">\n            <div class=\"nui-panel__body\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    </div>\n</div>\n\n<ng-template #defaultTitle>\n    <div class=\"nui-panel__header-content\">\n        <span class=\"nui-panel__header-content-default\">\n            <h4 class=\"nui-panel__header-default-title\">{{ heading }}</h4>\n        </span>\n    </div>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { PanelComponent } from \"./panel.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiButtonModule],\n    declarations: [PanelComponent],\n    exports: [PanelComponent],\n    providers: [],\n})\nexport class NuiPanelModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ProgressComponent } from \"./progress.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiTooltipModule } from \"../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiButtonModule, NuiTooltipModule],\n    declarations: [ProgressComponent],\n    exports: [ProgressComponent],\n    providers: [],\n})\nexport class NuiProgressModule {}\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n/**\n * Component for displaying risk level from severity 'OK' to 'Critical'\n */\n@Component({\n    selector: \"nui-risk-score\",\n    host: {\n        class: \"nui-risk-score\",\n    },\n    templateUrl: \"./risk-score.component.html\",\n    styleUrls: [\"./risk-score.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\n\n// <example-url>./../examples/index.html#/risk-score</example-url>\nexport class RiskScoreComponent implements AfterViewInit, OnChanges, OnDestroy {\n    @ViewChild(\"colorLine\") private colorLine!: ElementRef;\n\n    @Input()\n    public level: number = 0;\n\n    @Input()\n    public minLevel: number = 0;\n\n    @Input()\n    public maxLevel: number = 100;\n\n    @Input()\n    public title?: string;\n\n    public floatOffset: number = 0;\n\n    private resizeObserver: ResizeObserver;\n    private colorLineWidth$: BehaviorSubject<number>;\n\n    constructor(\n        private changeDetectorRef: ChangeDetectorRef,\n        private ngZone: NgZone\n    ) {\n        this.colorLineWidth$ = new BehaviorSubject<number>(0);\n        this.resizeObserver = new ResizeObserver((entries) =>\n            this.colorLineWidth$.next(entries[0].contentRect.width)\n        );\n    }\n\n    public ngAfterViewInit(): void {\n        this.colorLineWidth$.subscribe(this.updateOffset.bind(this));\n\n        if (this.colorLine === undefined) {\n            return;\n        }\n\n        this.ngZone.runOutsideAngular(() => {\n            this.resizeObserver.observe(this.colorLine.nativeElement);\n        });\n        this.colorLineWidth$.next(this.colorLine.nativeElement.offsetWidth);\n    }\n\n    public ngOnDestroy(): void {\n        if (this.resizeObserver !== undefined && this.colorLine !== undefined) {\n            this.resizeObserver.unobserve(this.colorLine.nativeElement);\n            this.resizeObserver.disconnect();\n        }\n\n        this.colorLineWidth$.unsubscribe();\n    }\n\n    public ngOnChanges(): void {\n        this.updateOffset(this.colorLineWidth$.getValue());\n    }\n\n    private updateOffset(width: number): void {\n        if (this.minLevel >= this.maxLevel) {\n            console.error(\"RiskScoreComponent - minLevel >= maxLevel\");\n            return;\n        }\n\n        const level = this.clamp(this.level, this.minLevel, this.maxLevel);\n\n        const scaleInterval = this.maxLevel - this.minLevel;\n        const widthPerOneLevel = width / scaleInterval;\n        this.floatOffset = widthPerOneLevel * (level - this.minLevel);\n\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private clamp(a: number, min: number = 0, max: number = 1): number {\n        return Math.min(max, Math.max(min, a));\n    }\n}\n","<div class=\"nui-risk-score\" [title]=\"level\">\n    <div class=\"nui-risk-score__float\" [style.margin-left.px]=\"floatOffset\">\n        <div class=\"nui-risk-score__float-title\" *ngIf=\"title !== undefined\">\n            {{ title }}\n        </div>\n        <div class=\"nui-risk-score__float-path\"></div>\n    </div>\n\n    <div class=\"nui-risk-score__color-line\" #colorLine></div>\n</div>\n","// © 2023 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { RiskScoreComponent } from \"./risk-score.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule],\n    declarations: [RiskScoreComponent],\n    exports: [RiskScoreComponent],\n    providers: [],\n})\nexport class NuiRiskScoreModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Output,\n    ViewEncapsulation,\n    computed,\n    input,\n    signal,\n    model,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { IFilter, IFilterPub } from \"../../services/data-source/public-api\";\nimport { NuiButtonModule } from \"../button/button.module\";\n\n@Component({\n    selector: \"nui-search\",\n    standalone: true,\n    imports: [FormsModule, NuiCommonModule, NuiButtonModule],\n    host: {\n        class: \"nui-search\",\n        role: \"searchbox\",\n        \"[attr.aria-label]\": \"inputAriaLabel\",\n    },\n    templateUrl: \"./search.component.html\",\n    styleUrls: [\"./search.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n})\n\n// <example-url>./../examples/index.html#/search</example-url>\n\n/**\n * Search component provides input box with 'search' and 'cancel' buttons on the right side of the box.\n * Handles setting focus to its inner input fields on cancel.\n * Fires 'search', 'cancel', 'inputChanged' and 'focusChange' events.\n * Indicates spinner to the left of input text depending on 'busy' property.\n */\nexport class SearchComponent implements IFilterPub {\n    /* --------------------------------------------------\n       Static / internal constants\n    -------------------------------------------------- */\n    private static nextUniqueId = 0;\n\n    /* --------------------------------------------------\n       Public configuration Inputs (external API)\n    -------------------------------------------------- */\n    /** Focus control (true means input should receive focus). */\n    public captureFocus = model<boolean>(false);\n    /** Input name attribute (useful for forms). */\n    public name = input<string>();\n    /** Applies error state styles when true. */\n    public isInErrorState = input<boolean>(false);\n    /** Watermark text (placeholder) displayed when empty. */\n    public placeholder = input<string>();\n    /** Custom id for the input. */\n    public inputId = input<string>(\"search-input\");\n    /** Value of the input field. */\n    public value = model<string>(\"\");\n\n    /* --------------------------------------------------\n       Public Outputs (events)\n    -------------------------------------------------- */\n    /** Emits empty string on cancel action. */\n    @Output() public cancel = new EventEmitter<string>();\n    /**\n     * Event fired on external focus changes (e.g. initiated by user via UI).\n     * Use it if you bind an external input to 'captureFocus' property for matching them both.\n     */\n    @Output() public focusChange = new EventEmitter<boolean>();\n    /**\n     * Event fired when input field value is changed (via either keyboard or typeahead select item).\n     * Pay attention, that host property bound to 'value' is not being changed by component on this event,\n     * it is the responsibility of host component. The same with clearing of 'busy' status - if you want\n     * to clear it on inputChange - handle it in host component\n     */\n    @Output() public inputChange = new EventEmitter<string>();\n    /** Emits current value when search triggered (button or Enter). */\n    @Output() public search = new EventEmitter<string>();\n\n    /* --------------------------------------------------\n       Internal state / derived values\n    -------------------------------------------------- */\n    /**\n     * Flag indicating whether to detect filter changes.\n     * Mark this filter to be monitored by our datasource for any changes in order reset other filters(eg: pagination)\n     * before any new search is performed\n     */\n    public detectFilterChanges = true;\n    /** Default placeholder text fallback. */\n    public defaultPlaceholder = $localize`Search`;\n    /** Styling hook for icon color. */\n    public searchIconColor = signal<string>(\"gray\");\n    /** Unique generated ID for fallback. */\n    private generatedInputId = `nui-search-input-${SearchComponent.nextUniqueId++}`;\n    /** Resolved input id (provided or generated). */\n    public resolvedInputId = computed(() =>\n        this.inputId() || this.generatedInputId\n    );\n    /** Resolved placeholder text. */\n    public resolvedPlaceholder = computed(() =>\n        this.placeholder() || `${this.defaultPlaceholder}...`\n    );\n    /** Whether the search button should be disabled (empty value). */\n    public isButtonDisabled = computed(() => !this.value()?.trim());\n    /** Accessible label text for the input (used by hidden label). */\n    public inputAriaLabel = $localize`Search`;\n    /** Accessible label for the cancel (clear) button. */\n    public cancelAriaLabel = $localize`Cancel search`;\n    /** Accessible label for the submit (search) button. */\n    public submitAriaLabel = $localize`Submit search`;\n\n    public getFilters(): IFilter<string> {\n        return {\n            type: \"string\",\n            value: this.value(),\n        };\n    }\n\n    public onCancel(): void {\n        this.value.set(\"\");\n        this.cancel.emit(this.value());\n        this.captureFocus.set(true);\n        this.focusChange.emit(true);\n    }\n\n    public onFocusChange(event: boolean): void {\n        this.captureFocus.set(event);\n        this.focusChange.emit(event);\n    }\n\n    public onInputChange(): void {\n        this.inputChange.emit(this.value());\n    }\n\n    public onKeyup(event: KeyboardEvent): void {\n        if (event.key === \"Enter\") {\n            this.onSearch();\n        } else if (event.key === \"Escape\" || event.key === \"Esc\") {\n            this.onCancel();\n        }\n    }\n\n    public onSearch(): void {\n        this.search.emit(this.value());\n    }\n}\n","<div class=\"nui-search__group input-group\" [class.has-error]=\"isInErrorState()\">\n    <div class=\"nui-search__input\">\n        <label\n            class=\"sr-only\"\n            [attr.id]=\"resolvedInputId() + '-label'\"\n            [attr.for]=\"resolvedInputId()\"\n            >{{ inputAriaLabel }}</label\n        >\n        <input\n            class=\"nui-search__input-control form-control\"\n            [attr.id]=\"resolvedInputId()\"\n            [attr.name]=\"name()\"\n            type=\"text\"\n            autocomplete=\"off\"\n            [(ngModel)]=\"value\"\n            [placeholder]=\"resolvedPlaceholder()\"\n            [attr.aria-labelledby]=\"resolvedInputId() + '-label'\"\n            [attr.aria-invalid]=\"isInErrorState()\"\n            [nuiSetFocus]=\"captureFocus()\"\n            (focusChange)=\"onFocusChange($event)\"\n            (input)=\"onInputChange()\"\n            (keyup)=\"onKeyup($event)\"\n        />\n        <div class=\"nui-search__button input-group-btn\">\n            @if (value()) {\n                <button\n                    nui-button\n                    type=\"reset\"\n                    [ariaLabel]=\"cancelAriaLabel\"\n                    [attr.aria-controls]=\"resolvedInputId()\"\n                    class=\"nui-search__button-cancel\"\n                    displayStyle=\"action\"\n                    icon=\"close\"\n                    (click)=\"onCancel()\"\n                ></button>\n            }\n            <button\n                nui-button\n                type=\"submit\"\n                [ariaLabel]=\"submitAriaLabel\"\n                [attr.aria-controls]=\"resolvedInputId()\"\n                class=\"nui-search__button-search\"\n                displayStyle=\"action\"\n                icon=\"search\"\n                [disabled]=\"isButtonDisabled()\"\n                [attr.aria-hidden]=\"isButtonDisabled() ? 'true' : null\"\n                (click)=\"onSearch()\"\n            ></button>\n        </div>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { SearchComponent } from \"./search.component\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [SearchComponent],\n    exports: [SearchComponent],\n})\nexport class NuiSearchModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayConfig } from \"@angular/cdk/overlay\";\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\n\nimport { CheckboxStatus, SelectionType } from \"./public-api\";\nimport {\n    IFilter,\n    IFilterPub,\n    ISelectorFilter,\n} from \"../../services/data-source/public-api\";\nimport { CheckboxComponent } from \"../checkbox/checkbox.component\";\nimport { CheckboxChangeEvent } from \"../checkbox/public-api\";\nimport { IMenuGroup, IMenuItem } from \"../menu/public-api\";\nimport { OVERLAY_WITH_POPUP_STYLES_CLASS } from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\n\n/**\n * @ignore\n * <example-url>./../examples/index.html#/selector</example-url>\n */\n\n/**\n * __Name :__\n * NUI Selector component.\n *\n * __Usage :__\n * Component provides different options to select elements\n * by emmiting appropriate event.\n * Checkbox and droplist allow to select \"All\" or \"None\" items.\n * Droplist has additional option to select \"All pages\". Component\n * has indication about which selection option is active now and\n * binding property to set indeterminate state.\n */\n@Component({\n    selector: \"nui-selector\",\n    host: {\n        class: \"nui-selector\",\n        tabindex: \"-1\",\n        \"[attr.aria-label]\": \"ariaLabel\",\n    },\n    templateUrl: \"./selector.component.html\",\n    styleUrls: [\"./selector.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class SelectorComponent\n    implements OnChanges, AfterViewInit, OnDestroy, IFilterPub\n{\n    /**\n     * resets selection, makes component appearance indeterminate\n     */\n    @Input()\n    public checkboxStatus: CheckboxStatus;\n\n    @Input()\n    public items: IMenuGroup[];\n\n    @Input()\n    public appendToBody: boolean;\n\n    @Input()\n    public ariaLabel: string = \"Selector\";\n\n    @Output()\n    public selectionChange = new EventEmitter<SelectionType>();\n\n    @ViewChild(\"checkbox\")\n    public checkbox: CheckboxComponent;\n\n    @ViewChild(\"popupArea\", { static: true }) popupArea: ElementRef;\n\n    @ViewChild(OverlayComponent) public overlay: OverlayComponent;\n\n    public customContainer: ElementRef | undefined;\n    public checkboxChecked = false;\n    public indeterminate = false;\n    public onDestroy$ = new Subject<void>();\n    public overlayConfig: OverlayConfig = {\n        panelClass: [OVERLAY_WITH_POPUP_STYLES_CLASS],\n    };\n\n    private status: SelectionType;\n\n    private selectionHasChanged = false;\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"checkboxStatus\"]) {\n            const checkboxStatus = changes[\"checkboxStatus\"].currentValue;\n            this.indeterminate =\n                checkboxStatus === CheckboxStatus.Indeterminate;\n            this.checkboxChecked = checkboxStatus === CheckboxStatus.Checked;\n        }\n        if (changes.appendToBody) {\n            this.customContainer = changes.appendToBody.currentValue\n                ? undefined\n                : this.popupArea;\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        const debounceTimeValue = 10;\n\n        this.checkbox.valueChange\n            .pipe(debounceTime(debounceTimeValue))\n            .subscribe(this.onCheckboxValueChange.bind(this));\n        this.overlay.clickOutside\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((_) => this.overlay.hide());\n        // TODO: should change programmatically in scope of NUI-5937\n        this.checkbox.checkboxLabel.nativeElement.setAttribute(\n            \"tabindex\",\n            \"-1\"\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.checkbox.valueChange.unsubscribe();\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    public getFilters(): IFilter<ISelectorFilter> {\n        const response = {\n            type: \"selector\",\n            value: {\n                selectorState: {\n                    checkboxStatus: this.checkboxStatus,\n                    selectorItems: this.items,\n                },\n                status: this.status,\n                selectionHasChanged: this.selectionHasChanged,\n            },\n        };\n        this.selectionHasChanged = false;\n\n        return response;\n    }\n\n    public handleSelectorClick(event: MouseEvent): void {\n        if (event.currentTarget !== event.target) {\n            return;\n        }\n\n        this.indeterminate = false;\n        this.checkboxChecked = !this.checkboxChecked;\n\n        const selection = this.checkboxChecked\n            ? SelectionType.All\n            : SelectionType.None;\n        this.status = selection;\n\n        this.selectionChange.emit(selection);\n    }\n\n    private onCheckboxValueChange(event: CheckboxChangeEvent): void {\n        this.indeterminate = false;\n        this.checkboxChecked = !this.checkboxChecked;\n\n        this.status = this.checkboxChecked\n            ? SelectionType.All\n            : SelectionType.None;\n\n        this.selectionHasChanged = true;\n\n        if (event.target.checked) {\n            // gives control to \"selectionChange\" stream\n            this.selectionChange.emit(SelectionType.All);\n        } else {\n            // gives control to \"selectionChange\" stream\n            this.selectionChange.emit(SelectionType.UnselectAll);\n        }\n    }\n\n    public handleItemClick(item: IMenuItem): void {\n        const selection = item.value || (item.title as SelectionType);\n        this.checkboxChecked =\n            selection === SelectionType.All ||\n            selection === SelectionType.AllPages;\n        this.status = selection;\n\n        this.selectionHasChanged = true;\n\n        // propagate selection\n        this.selectionChange.emit(selection);\n    }\n}\n","<div class=\"btn-group\" #toggleButton>\n    <button\n        nui-button\n        type=\"button\"\n        role=\"checkbox\"\n        [attr.aria-checked]=\"checkboxChecked\"\n        class=\"nui-selector__checkbox-button\"\n        [displayStyle]=\"'default'\"\n        (click)=\"handleSelectorClick($event)\"\n    >\n        <div class=\"nui-selector__checkbox-container\">\n            <nui-checkbox\n                #checkbox\n                [checked]=\"checkboxChecked\"\n                [indeterminate]=\"indeterminate\"\n            >\n            </nui-checkbox>\n        </div>\n    </button>\n    <button\n        nui-button\n        *ngIf=\"items?.length\"\n        type=\"button\"\n        class=\"nui-selector__toggle\"\n        ariaLabel=\"Open Selector Menu\"\n        [displayStyle]=\"'default'\"\n        [icon]=\"'caret-down'\"\n        (click)=\"overlay.toggle()\"\n    ></button>\n</div>\n\n<div #popupArea></div>\n\n<nui-overlay\n    #overlay\n    [toggleReference]=\"toggleButton\"\n    [overlayConfig]=\"overlayConfig\"\n    [customContainer]=\"customContainer\"\n>\n    <nui-menu-popup\n        [itemsSource]=\"items\"\n        (menuItemClicked)=\"handleItemClick($event)\"\n    ></nui-menu-popup>\n</nui-overlay>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { SelectorComponent } from \"./selector.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiCheckboxModule } from \"../checkbox/checkbox.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiCheckboxModule,\n        NuiMenuModule,\n        NuiButtonModule,\n        NuiOverlayModule,\n    ],\n    declarations: [SelectorComponent],\n    exports: [SelectorComponent],\n    providers: [],\n})\nexport class NuiSelectorModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const ANNOUNCER_OPEN_SORTER_LIST_MESSAGE_SUFFIX =\n    \"sorter items available\";\nexport const ANNOUNCER_CLOSE_SORTER_LIST_MESSAGE = \"Sorter menu closed\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ListKeyManager, LiveAnnouncer } from \"@angular/cdk/a11y\";\nimport { Injectable, QueryList } from \"@angular/core\";\nimport isNull from \"lodash/isNull\";\n\nimport {\n    ANNOUNCER_CLOSE_SORTER_LIST_MESSAGE,\n    ANNOUNCER_OPEN_SORTER_LIST_MESSAGE_SUFFIX,\n} from \"./constants\";\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { MenuItemBaseComponent } from \"../menu\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\n\n@Injectable()\nexport class SorterKeyboardService {\n    public overlay: OverlayComponent;\n    public menuItems: QueryList<MenuItemBaseComponent>;\n    private keyboardEventsManager: ListKeyManager<MenuItemBaseComponent>;\n\n    constructor(private liveAnnouncer: LiveAnnouncer) {}\n\n    public initKeyboardManager(): void {\n        this.keyboardEventsManager = new ListKeyManager(\n            this.menuItems\n        ).withVerticalOrientation();\n        // TODO Uncomment in the scope of NUI-6132\n        // this.keyboardEventsManager.setFirstItemActive();\n\n        // TODO Remove this in the scope of NUI-6132\n        this.keyboardEventsManager.setActiveItem(-1);\n    }\n\n    public handleKeydown(event: KeyboardEvent): void {\n        this.overlay.showing\n            ? this.handleOpenKeyDown(event)\n            : this.handleClosedKeyDown(event);\n    }\n\n    public getActiveItemIndex(): number | null {\n        return this.keyboardEventsManager.activeItemIndex;\n    }\n\n    public announceDropdown(): void {\n        const message = this.overlay.showing\n            ? `${this.menuItems.length} ${ANNOUNCER_OPEN_SORTER_LIST_MESSAGE_SUFFIX}`\n            : ANNOUNCER_CLOSE_SORTER_LIST_MESSAGE;\n        this.liveAnnouncer.announce(message);\n    }\n\n    private handleOpenKeyDown(event: KeyboardEvent): void {\n        this.keyboardEventsManager.activeItem?.setInactiveStyles();\n        if (\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_UP\n        ) {\n            this.keyboardEventsManager.onKeydown(event);\n            this.announceCurrentItem();\n        }\n\n        // TODO Remove this in the scope of NUI-6132\n        // prevent closing on enter when item is not focused\n        if (!this.hasActiveItem() && event.code === KEYBOARD_CODE.ENTER) {\n            event.preventDefault();\n        }\n\n        if (this.hasActiveItem() && event.code === KEYBOARD_CODE.ENTER) {\n            event.preventDefault();\n            this.keyboardEventsManager.activeItem?.menuItem.nativeElement.click();\n\n            // TODO Remove this in the scope of NUI-6132\n            this.keyboardEventsManager.setActiveItem(-1);\n        }\n\n        if (\n            event.code === KEYBOARD_CODE.TAB ||\n            event.code === KEYBOARD_CODE.ESCAPE\n        ) {\n            this.overlay.hide();\n            this.announceDropdown();\n\n            // TODO Remove this in the scope of NUI-6132\n            this.keyboardEventsManager.setActiveItem(-1);\n        }\n\n        this.keyboardEventsManager.activeItem?.setActiveStyles();\n    }\n\n    private handleClosedKeyDown(event: KeyboardEvent): void {\n        // prevent scrolling page on key down/key up when sorter focused\n        if (this.shouldPreventDefault(event)) {\n            event.preventDefault();\n        }\n    }\n\n    private hasActiveItem(): boolean {\n        if (\n            isNull(this.keyboardEventsManager.activeItem) ||\n            isNull(this.keyboardEventsManager.activeItemIndex)\n        ) {\n            return false;\n        }\n        return (\n            this.keyboardEventsManager.activeItem &&\n            this.keyboardEventsManager.activeItemIndex >= 0\n        );\n    }\n\n    private shouldPreventDefault(event: KeyboardEvent) {\n        return (\n            event.code === KEYBOARD_CODE.ARROW_DOWN ||\n            event.code === KEYBOARD_CODE.ARROW_UP\n        );\n    }\n\n    private announceCurrentItem() {\n        this.liveAnnouncer.announce(\n            `Sort by ${this.keyboardEventsManager?.activeItem?.menuItem.nativeElement.innerText}.`\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { OverlayConfig } from \"@angular/cdk/overlay\";\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    Renderer2,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _assign from \"lodash/assign\";\nimport _isEqual from \"lodash/isEqual\";\nimport _values from \"lodash/values\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { ISortedItem, ISorterChanges, SorterDirection } from \"./public-api\";\nimport { SorterKeyboardService } from \"./sorter-keyboard.service\";\nimport {\n    IFilter,\n    IFilterPub,\n    ISorterFilter,\n} from \"../../services/data-source/public-api\";\nimport { LoggerService } from \"../../services/log-service\";\nimport { MenuPopupComponent } from \"../menu\";\nimport { IMenuGroup, IMenuItem } from \"../menu/public-api\";\nimport { OVERLAY_WITH_POPUP_STYLES_CLASS } from \"../overlay/constants\";\nimport { OverlayComponent } from \"../overlay/overlay-component/overlay.component\";\n\n// <example-url>./../examples/index.html#/sorter</example-url>\n\n@Component({\n    selector: \"nui-sorter\",\n    host: {\n        class: \"nui-sorter\",\n    },\n    templateUrl: \"./sorter.component.html\",\n    styleUrls: [\"./sorter.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [SorterKeyboardService],\n    standalone: false,\n})\nexport class SorterComponent\n    implements OnChanges, OnInit, OnDestroy, AfterViewInit, IFilterPub\n{\n    @Input() appendToBody: boolean = false;\n    @Input() caption: string;\n\n    /**\n     * The string[] type for itemsSource is the legacy non-i18n-friendly type\n     * and it should be removed as an option in scope of NUI-5801\n     */\n    @Input() itemsSource: string[] | IMenuItem[];\n\n    @Input() selectedItem: string;\n    @Input() sortDirection: any;\n\n    @Output() sorterAction = new EventEmitter<ISorterChanges>();\n\n    @ViewChild(\"popupArea\", { static: true }) popupArea: ElementRef;\n    @ViewChild(OverlayComponent) public overlay: OverlayComponent;\n    @ViewChild(\"popup\") public menuPopup: MenuPopupComponent;\n\n    // mark this filter to be monitored by our datasource for any changes in order reset other filters(eg: pagination)\n    // before any new search is performed\n    public detectFilterChanges = true;\n\n    public customContainer: ElementRef | undefined;\n    public onDestroy$ = new Subject<void>();\n    public items: IMenuGroup[] = [\n        {\n            itemsSource: [],\n        },\n    ];\n    public overlayConfig: OverlayConfig = {\n        panelClass: [OVERLAY_WITH_POPUP_STYLES_CLASS],\n    };\n\n    @ViewChild(\"toggleRef\", { static: true }) private toggleRef: ElementRef;\n    private sortConfig: ISortedItem;\n    private sortIcons: { [key: string]: string } = {\n        [SorterDirection.ascending]: \"arrow-up\",\n        [SorterDirection.descending]: \"arrow-down\",\n    };\n    private menuKeyControlListeners: Function[] = [];\n\n    constructor(\n        private logger: LoggerService,\n        private sorterKeyboardService: SorterKeyboardService,\n        private elRef: ElementRef,\n        private renderer: Renderer2\n    ) {}\n\n    public ngOnInit(): void {\n        this.onAppendToBodyChange(this.appendToBody);\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (\n            changes.itemsSource &&\n            !_isEqual(\n                changes.itemsSource.previousValue,\n                changes.itemsSource.currentValue\n            )\n        ) {\n            if (\n                this.itemsSource?.length > 0 &&\n                typeof this.itemsSource[0] === \"string\"\n            ) {\n                this.logger\n                    .warn(`The 'string[]' type for the sorter's itemsSource input is deprecated as of Nova v9. \\\n                                  Instead, use type 'IMenuItem[]' which is internationalizable with title and value properties for each item.`);\n            }\n            this.initSelectedItem();\n            this.initPopupItems();\n        }\n\n        if (\n            changes.selectedItem &&\n            this.sortConfig?.sortBy !== changes.selectedItem.currentValue &&\n            !changes.selectedItem.firstChange\n        ) {\n            const oldValue = _assign({}, this.sortConfig, {\n                sortBy: changes.selectedItem.previousValue,\n            });\n\n            this.selectedItem = changes.selectedItem.currentValue;\n            this.sortConfig = _assign({}, this.sortConfig, {\n                sortBy: changes.selectedItem.currentValue,\n            });\n\n            this.triggerSorterAction(oldValue);\n\n            this.setPopupSelection();\n        }\n\n        if (\n            changes.sortDirection &&\n            !changes.sortDirection.firstChange &&\n            this.sortConfig?.direction !== changes.sortDirection.currentValue\n        ) {\n            const oldValue = this.sortConfig;\n            this.sortDirection = changes.sortDirection.currentValue;\n            this.sortConfig = _assign({}, this.sortConfig, {\n                direction: this.sortDirection,\n            });\n\n            this.triggerSorterAction(oldValue);\n        }\n\n        if (changes.appendToBody) {\n            this.onAppendToBodyChange(changes.appendToBody.currentValue);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.initSelectedItem();\n        this.initSortDirection();\n\n        this.sortConfig = {\n            sortBy: this.selectedItem,\n            direction: this.sortDirection,\n        };\n        this.overlay.clickOutside\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((_) => this.overlay.hide());\n\n        this.updateOverlayWidth();\n        this.initKeyboardService();\n        this.menuKeyControlListeners.push(\n            this.renderer.listen(\n                this.elRef.nativeElement,\n                \"keydown\",\n                (event: KeyboardEvent) => {\n                    this.sorterKeyboardService.handleKeydown(event);\n                }\n            )\n        );\n    }\n\n    public select(item: IMenuItem): void {\n        // perform update only if the new value actually changes\n        if (this.selectedItem !== item.value) {\n            const oldValue = this.sortConfig;\n\n            this.selectedItem = item.value;\n            this.sortConfig = _assign({}, this.sortConfig, {\n                sortBy: item.value,\n            });\n\n            this.updateOverlayWidth();\n            this.triggerSorterAction(oldValue);\n            this.setPopupSelection();\n            this.overlay.hide();\n        }\n    }\n\n    public toggleSortDirection(): void {\n        const oldValue = this.sortConfig;\n\n        this.sortDirection =\n            this.sortDirection === SorterDirection.ascending\n                ? SorterDirection.descending\n                : SorterDirection.ascending;\n        this.sortConfig = _assign({}, this.sortConfig, {\n            direction: this.sortDirection,\n        });\n        this.sorterAction.emit({ newValue: this.sortConfig, oldValue });\n    }\n\n    public getSelectedItem(): any {\n        return this.selectedItem;\n    }\n\n    public getSelectedItemTitle(): string {\n        return this.items[0].itemsSource.find(\n            (item: IMenuItem) => item.isSelected\n        )?.title;\n    }\n\n    public getSortIcon(): string {\n        return this.sortIcons[this.sortDirection];\n    }\n\n    public getFilters(): IFilter<ISorterFilter> {\n        return {\n            type: \"sorter\",\n            value: { ...this.sortConfig },\n        };\n    }\n\n    public updateOverlayWidth(): void {\n        this.overlayConfig.minWidth = (\n            this.toggleRef.nativeElement as HTMLElement\n        ).offsetWidth;\n    }\n\n    public getAriaLabelForSortingButton(): string {\n        return this.sortDirection === SorterDirection.descending\n            ? `${this.getSelectedItemTitle()}. Sorter direction - descending`\n            : `${this.getSelectedItemTitle()}. Sorter direction - ascending`;\n    }\n\n    public ngOnDestroy(): void {\n        this.menuKeyControlListeners.forEach((listener) => listener());\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    public toggleSorterMenu(): void {\n        this.overlay.toggle();\n        this.sorterKeyboardService.announceDropdown();\n    }\n\n    private initSelectedItem() {\n        // skip initialization in case we already have a value\n        // or if the itemsSource are lazy loaded\n        if (this.selectedItem || !this.itemsSource?.length) {\n            return;\n        }\n\n        const firstItem = this.itemsSource[0];\n        this.selectedItem =\n            typeof firstItem === \"string\"\n                ? firstItem\n                : (firstItem as IMenuItem).value;\n    }\n\n    private initPopupItems(): void {\n        this.items[0].itemsSource = (this.itemsSource as any[]).map(\n            (item: string | IMenuItem) => {\n                const menuItem: IMenuItem =\n                    typeof item === \"string\"\n                        ? { title: item, value: item }\n                        : (item as IMenuItem);\n                menuItem.isSelected = this.selectedItem === menuItem.value;\n                return menuItem;\n            }\n        );\n    }\n\n    private initSortDirection(): void {\n        if (_values(SorterDirection).indexOf(this.sortDirection) === -1) {\n            this.sortDirection = SorterDirection.ascending;\n        }\n    }\n\n    private setPopupSelection(): void {\n        this.items[0].itemsSource.forEach((popupItem: IMenuItem) => {\n            popupItem.isSelected = popupItem.value === this.selectedItem;\n        });\n    }\n\n    private triggerSorterAction(oldValue: ISortedItem): void {\n        this.sorterAction.emit({ newValue: this.sortConfig, oldValue });\n    }\n\n    private onAppendToBodyChange(appendToBody: boolean): void {\n        this.customContainer = appendToBody ? undefined : this.popupArea;\n    }\n\n    private initKeyboardService(): void {\n        this.sorterKeyboardService.menuItems = this.menuPopup?.menuItems;\n        this.sorterKeyboardService.overlay = this.overlay;\n        this.sorterKeyboardService.initKeyboardManager();\n    }\n}\n","<div>\n    <label *ngIf=\"caption\" class=\"nui-sorter__label\">{{ caption }}</label>\n    <div class=\"btn-group nui-sorter__popup\" #toggleRef>\n        <button\n            nui-button\n            type=\"button\"\n            class=\"nui-sorter__toggle-button\"\n            [icon]=\"getSortIcon()\"\n            [ariaLabel]=\"getAriaLabelForSortingButton()\"\n            (click)=\"toggleSortDirection()\"\n        >\n            <span class=\"nui-sorter__display-value\">\n                {{ getSelectedItemTitle() }}\n            </span>\n        </button>\n        <button\n            nui-button\n            type=\"button\"\n            class=\"nui-selector__toggle\"\n            (click)=\"toggleSorterMenu()\"\n            ariaLabel=\"Open Sorter Menu\"\n            icon=\"caret-down\"\n        ></button>\n    </div>\n\n    <div #popupArea></div>\n\n    <nui-overlay\n        #overlay\n        [toggleReference]=\"toggleRef\"\n        [overlayConfig]=\"overlayConfig\"\n        [customContainer]=\"customContainer\"\n    >\n        <nui-menu-popup\n            #popup\n            [itemsSource]=\"items\"\n            (menuItemClicked)=\"select($event)\"\n        ></nui-menu-popup>\n    </nui-overlay>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { SorterComponent } from \"./sorter.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\nimport { NuiOverlayModule } from \"../overlay/overlay.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiMenuModule,\n        NuiButtonModule,\n        NuiOverlayModule,\n    ],\n    declarations: [SorterComponent],\n    exports: [SorterComponent],\n    providers: [],\n})\nexport class NuiSorterModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkCellDef } from \"@angular/cdk/table\";\nimport { Directive, TemplateRef } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiCellDef]\",\n    providers: [{ provide: CdkCellDef, useExisting: TableCellDefDirective }],\n    standalone: false,\n})\nexport class TableCellDefDirective extends CdkCellDef {\n    constructor(public template: TemplateRef<any>) {\n        super(template);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkColumnDef } from \"@angular/cdk/table\";\nimport {\n    Directive,\n    Input,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n} from \"@angular/core\";\n\nimport { TableStateHandlerService } from \"../table-state-handler.service\";\nimport { ColumnTypes } from \"../types\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiColumnDef]\",\n    providers: [\n        { provide: CdkColumnDef, useExisting: TableColumnDefDirective },\n    ],\n    standalone: false,\n})\nexport class TableColumnDefDirective\n    extends CdkColumnDef\n    implements OnInit, OnChanges\n{\n    public get name(): string {\n        return super.name;\n    }\n    @Input(\"nuiColumnDef\")\n    public set name(value: string) {\n        super.name = value;\n    }\n    @Input() type: ColumnTypes;\n    @Input() columnWidth: number;\n\n    constructor(private tableStateHandlerService: TableStateHandlerService) {\n        super();\n    }\n\n    public ngOnInit(): void {\n        if (this.columnWidth) {\n            this.tableStateHandlerService.setColumnWidth(\n                this.name,\n                this.columnWidth\n            );\n        }\n\n        if (this.type === \"icon\") {\n            this.tableStateHandlerService.setAlignment(\n                this.name,\n                \"align-center\"\n            );\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.columnWidth && !changes.columnWidth.firstChange) {\n            this.tableStateHandlerService.setColumnWidth(\n                this.name,\n                changes.columnWidth.currentValue\n            );\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkCell } from \"@angular/cdk/table\";\nimport {\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n} from \"@angular/core\";\nimport { Subscription } from \"rxjs\";\nimport { filter } from \"rxjs/operators\";\n\nimport { TableColumnDefDirective } from \"./table-column-def.directive\";\nimport { TableStateHandlerService } from \"../table-state-handler.service\";\nimport { TableAlignmentOptions } from \"../types\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"nui-cell, td[nui-cell]\",\n    host: {\n        role: \"gridcell\",\n        class: \"nui-table__table-cell\",\n    },\n    standalone: false,\n})\nexport class TableCellDirective\n    extends CdkCell\n    implements OnInit, OnDestroy, OnChanges\n{\n    @Input() tooltipText: string;\n    @Input() alignment: TableAlignmentOptions;\n    public currentCellIndex: number;\n    private subscribeToDraggedOverCell: Subscription;\n    private resizeSubscription: Subscription;\n\n    @HostBinding(\"attr.title\")\n    get tooltip(): string {\n        return this.tooltipText;\n    }\n\n    @HostBinding(\"class.nui-table__table-cell--left-edge-action\")\n    leftEdgeActive: boolean;\n    @HostBinding(\"class.nui-table__table-cell--right-edge-action\")\n    rightEdgeActive: boolean;\n\n    // Prevents dragging of table cells content\n    @HostListener(\"mousedown\")\n    mouseDown(): void {\n        const selection: Selection | null = window.getSelection();\n        if (selection) {\n            selection.removeAllRanges();\n        }\n    }\n\n    constructor(\n        private columnDef: TableColumnDefDirective,\n        private elementRef: ElementRef,\n        private tableStateHandlerService: TableStateHandlerService,\n        private cd: ChangeDetectorRef\n    ) {\n        super(columnDef, elementRef);\n    }\n\n    public ngOnInit(): void {\n        const alignment = this.alignment\n            ? `align-${this.alignment}`\n            : this.tableStateHandlerService.getAlignment(this.columnDef.name);\n\n        this.elementRef.nativeElement.classList.add(alignment);\n        this.currentCellIndex =\n            this.tableStateHandlerService.tableColumns.indexOf(\n                this.columnDef.name\n            );\n\n        if (this.tableStateHandlerService.reorderable) {\n            this.subscribeToDraggedOverCell =\n                this.tableStateHandlerService.draggedOverCell.subscribe(\n                    (draggedOverCell) => {\n                        this.rightEdgeActive = this.leftEdgeActive = false;\n                        if (\n                            draggedOverCell?.cellIndex === this.currentCellIndex\n                        ) {\n                            this.rightEdgeActive =\n                                draggedOverCell?.dropAlignment === \"right\";\n                            this.leftEdgeActive =\n                                draggedOverCell?.dropAlignment === \"left\";\n                            this.cd.detectChanges();\n                        }\n                    }\n                );\n        }\n\n        if (this.tableStateHandlerService.resizable) {\n            this.resizeSubscription =\n                this.tableStateHandlerService.shouldHighlightEdge\n                    .pipe(\n                        filter(\n                            (value) =>\n                                value.columnIndex === this.currentCellIndex\n                        )\n                    )\n                    .subscribe(() => {\n                        // Anytime the event for this column is emitted state will change.\n                        this.rightEdgeActive = !this.rightEdgeActive;\n                    });\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.alignment && !changes.alignment.firstChange) {\n            const newAlignment = `align-${changes.alignment.currentValue}`;\n            const oldAlignment = `align-${changes.alignment.previousValue}`;\n            this.elementRef.nativeElement.classList.remove(oldAlignment);\n            this.elementRef.nativeElement.classList.add(newAlignment);\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.subscribeToDraggedOverCell) {\n            this.subscribeToDraggedOverCell.unsubscribe();\n        }\n\n        if (this.resizeSubscription) {\n            this.resizeSubscription.unsubscribe();\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkFooterCellDef } from \"@angular/cdk/table\";\nimport { Directive, TemplateRef } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiFooterCellDef]\",\n    providers: [\n        { provide: CdkFooterCellDef, useExisting: TableFooterCellDefDirective },\n    ],\n    standalone: false,\n})\nexport class TableFooterCellDefDirective extends CdkFooterCellDef {\n    constructor(public template: TemplateRef<any>) {\n        super(template);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkColumnDef, CdkFooterCell } from \"@angular/cdk/table\";\nimport { Directive, ElementRef } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"nui-footer-cell, td[nuiFooterCell]\",\n    host: {\n        class: \"mat-footer-cell\",\n        role: \"gridcell\",\n    },\n    standalone: false,\n})\nexport class TableFooterCellDirective extends CdkFooterCell {\n    constructor(columnDef: CdkColumnDef, elementRef: ElementRef) {\n        super(columnDef, elementRef);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkHeaderCellDef } from \"@angular/cdk/table\";\nimport { Directive, TemplateRef } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiHeaderCellDef]\",\n    providers: [\n        { provide: CdkHeaderCellDef, useExisting: TableHeaderCellDefDirective },\n    ],\n    standalone: false,\n})\nexport class TableHeaderCellDefDirective extends CdkHeaderCellDef {\n    constructor(public template: TemplateRef<any>) {\n        super(template);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Directive,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    Output,\n} from \"@angular/core\";\n\nimport { TableStateHandlerService } from \"../table-state-handler.service\";\n/** @ignore */\nexport enum TableResizePhase {\n    start = \"start\",\n    end = \"end\",\n}\n/** @ignore */\n@Directive({\n    selector: \"[nuiTableResizer]\",\n    standalone: false,\n})\nexport class TableResizerDirective {\n    @HostBinding(\"class\") hostClasses = \"nui-table__resizer\";\n\n    @Input() columnIndex: number;\n\n    @Output() resizerMovement = new EventEmitter<any>();\n\n    constructor(private tableStateHandlerService: TableStateHandlerService) {}\n\n    private mouseMoveHandler = (event: MouseEvent) => {\n        this.resizerMovement.emit(event.movementX);\n    };\n\n    private removeResizeListeners = () => {\n        document.removeEventListener(\"mousemove\", this.mouseMoveHandler);\n        document.removeEventListener(\"mouseup\", this.removeResizeListeners);\n        this.resizerMovement.emit(null);\n        // This needs to be after the sort click handler which is why it needs a setTimeout\n        setTimeout(() => {\n            this.tableStateHandlerService.emitResizeEvent(\n                this.columnIndex,\n                TableResizePhase.end\n            );\n        });\n    };\n\n    @HostListener(\"mousedown\", [\"$event\"])\n    onMouseDown(ev: MouseEvent): void {\n        // Event should be emitted to highlight all cells\n        this.tableStateHandlerService.emitResizeEvent(\n            this.columnIndex,\n            TableResizePhase.start\n        );\n        ev.preventDefault();\n        document.addEventListener(\"mouseup\", this.removeResizeListeners);\n        document.addEventListener(\"mousemove\", this.mouseMoveHandler);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkHeaderCell } from \"@angular/cdk/table\";\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Renderer2,\n    SimpleChanges,\n} from \"@angular/core\";\nimport _isNil from \"lodash/isNil\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport { fromEvent, Subscription } from \"rxjs\";\nimport { filter, pluck } from \"rxjs/operators\";\n\nimport { TableColumnDefDirective } from \"./table-column-def.directive\";\nimport { IDragEvent } from \"../../../common/directives/public-api\";\nimport { UtilService } from \"../../../services/util.service\";\nimport { FIXED_WIDTH_CLASS } from \"../constants\";\nimport { TableResizePhase } from \"../table-resizer/table-resizer.directive\";\nimport {\n    ColumnType,\n    ITableSortingState,\n    TableStateHandlerService,\n} from \"../table-state-handler.service\";\nimport { NonResizableColumnTypes, TableAlignmentOptions } from \"../types\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-header-cell, th[nui-header-cell]\",\n    host: {\n        role: \"columnheader\",\n        class: \"nui-table__table-header-cell\",\n    },\n    template: ` <ng-content></ng-content>\n        <nui-icon\n            *ngIf=\"sortingState.isColumnSorted\"\n            class=\"nui-table__sorting-icon\"\n            [icon]=\"sortingState.sortingIcon\"\n            iconColor=\"gray\"\n        ></nui-icon>\n        <span\n            *ngIf=\"isColumnResizable()\"\n            (click)=\"$event.stopPropagation()\"\n            nuiTableResizer\n            [columnIndex]=\"currentCellIndex\"\n            (resizerMovement)=\"onColumnWidthChange($event)\"\n        ></span>`,\n    standalone: false,\n})\nexport class TableHeaderCellComponent\n    extends CdkHeaderCell\n    implements OnInit, OnChanges, AfterViewInit, OnDestroy\n{\n    @Input() alignment: TableAlignmentOptions;\n    @Input() tooltipText: string;\n    @Input() isColumnSortingDisabled: boolean = false;\n    public currentCellIndex: number;\n    private resizeInProgress: boolean;\n    // Helps to show/hide edge highlight when cursor is outside of the resizable header cell\n    private isCursorInCell: boolean;\n    private resizeEventPhase: TableResizePhase;\n    private subscriptions: Subscription[] = [];\n    public resizable = false;\n    public sortingState: ITableSortingState;\n\n    // binding classes\n    @HostBinding(\"class.nui-table__icon-cell\")\n    get isIconCell(): boolean {\n        return this.columnDef.type === \"icon\";\n    }\n\n    /**\n     * Conditionally applies a fixed-width marker class for letting external entities\n     * know whether manual updates to the cell's width are allowed.\n     */\n    @HostBinding(`class.${FIXED_WIDTH_CLASS}`)\n    get fixedWidth(): boolean {\n        return this.isIconCell;\n    }\n\n    @HostBinding(\"class.nui-table__table-header-cell--sortable--dark\")\n    get shouldBeDarkOnSorting(): boolean {\n        return this.sortingState.isColumnSorted;\n    }\n\n    @HostBinding(\"class.nui-table__table-header-cell--reorderable--dark\")\n    get shouldBeDarkOnReorder(): boolean {\n        return this.leftEdgeActive || this.rightEdgeActive;\n    }\n\n    @HostBinding(\"class.nui-table__table-header-cell--sortable\")\n    get isSortable(): boolean {\n        return (\n            this.tableStateHandlerService.sortable &&\n            !this.isColumnSortingDisabled\n        );\n    }\n\n    @HostBinding(\"class.nui-table__table-header-cell--sortable--text-black\")\n    get isColumnSorted(): boolean {\n        return this.sortingState.isColumnSorted;\n    }\n\n    @HostBinding(\"attr.draggable\")\n    @HostBinding(\"class.nui-table__table-header-cell--reorderable\")\n    get isReorderable(): boolean {\n        return this.tableStateHandlerService.reorderable;\n    }\n\n    @HostBinding(\"attr.title\")\n    get tooltip(): string {\n        return this.tooltipText;\n    }\n\n    @HostBinding(\"class.nui-table__table-cell--left-edge-action\")\n    leftEdgeActive: boolean;\n    @HostBinding(\"class.nui-table__table-cell--right-edge-action\")\n    rightEdgeActive: boolean;\n\n    @HostListener(\"mouseover\")\n    mouseMovedOver(): void {\n        if (this.isColumnResizable() && !this.resizeInProgress) {\n            this.rightEdgeActive = this.isCursorInCell = true;\n        }\n    }\n\n    @HostListener(\"mouseleave\")\n    mouseMovedOut(): void {\n        // There are some of edge cases of incorrect highlighting that is covered with these booleans\n        this.isCursorInCell = false;\n        if (this.isColumnResizable() && this.resizeEventPhase !== \"start\") {\n            this.rightEdgeActive = false;\n        }\n    }\n\n    @HostListener(\"click\")\n    clicked(): void {\n        if (\n            this.tableStateHandlerService.sortable &&\n            !this.isColumnSortingDisabled &&\n            this.resizeEventPhase !== TableResizePhase.start\n        ) {\n            const cellIndex =\n                this.tableStateHandlerService.tableColumns.indexOf(\n                    this.columnDef.name\n                );\n            this.tableStateHandlerService.sortColumn(cellIndex);\n        }\n    }\n\n    // listening for drag n drop events\n    @HostListener(\"dragstart\", [\"$event\"])\n    dragStarted(event: IDragEvent): void {\n        if (this.isReorderable) {\n            const dragTarget = <Element>event.target;\n            const dragCellIndex =\n                this.tableStateHandlerService.getTargetElementCellIndex(event);\n\n            this.tableStateHandlerService.dragCellIndex = dragCellIndex;\n            event.stopPropagation();\n\n            if (!event.dataTransfer) {\n                throw new Error(\"dataTransfer is null\");\n            }\n\n            event.dataTransfer.effectAllowed = \"move\";\n\n            // Prevents dropping foreign elements into table header row\n            // Also drag n drop doesn't work in Firefox if no data is attached to event.dataTransfer\n            event.dataTransfer.setData(\"text\", dragCellIndex.toString());\n\n            const windowSelection: Selection | null = window.getSelection();\n            // Prevents dragging a halo of multiple elements, if being selected on screen\n            if (\n                !_isNil(windowSelection?.type) &&\n                windowSelection?.type === \"Range\"\n            ) {\n                windowSelection.removeAllRanges();\n                event.dataTransfer.setDragImage(\n                    dragTarget,\n                    dragTarget.clientWidth / 2,\n                    dragTarget.clientHeight / 2\n                );\n            }\n        }\n    }\n\n    @HostListener(\"drop\", [\"$event\"])\n    dropped(event: IDragEvent): void {\n        const dragCellIndex = this.tableStateHandlerService.dragCellIndex;\n        const dataTransferData = event.dataTransfer?.getData(\"text\");\n\n        event.stopPropagation();\n        event.preventDefault();\n        this.tableStateHandlerService.draggedOverCell.next(undefined);\n\n        if (\n            !_isNil(dragCellIndex) &&\n            !_isNil(dataTransferData) &&\n            dragCellIndex.toString() === dataTransferData\n        ) {\n            this.tableStateHandlerService.reorderColumnsOnDrop();\n        }\n    }\n\n    @HostListener(\"dragend\", [\"$event\"])\n    dragEnd(event: IDragEvent): void {\n        event.stopPropagation();\n        this.tableStateHandlerService.draggedOverCell.next(undefined);\n    }\n\n    constructor(\n        private columnDef: TableColumnDefDirective,\n        private elementRef: ElementRef,\n        private tableStateHandlerService: TableStateHandlerService,\n        private utilService: UtilService,\n        private zone: NgZone,\n        private renderer: Renderer2\n    ) {\n        super(columnDef, elementRef);\n\n        this.tableStateHandlerService.columnType = <ColumnType>{\n            columnName: this.columnDef.name,\n            columnType: this.columnDef.type || \"default\",\n        };\n    }\n\n    public ngOnInit(): void {\n        const alignment = this.alignment\n            ? `align-${this.alignment}`\n            : this.tableStateHandlerService.getAlignment(this.columnDef.name);\n\n        this.resizable = this.tableStateHandlerService.resizable;\n        this.elementRef.nativeElement.classList.add(alignment);\n        this.currentCellIndex =\n            this.tableStateHandlerService.tableColumns.indexOf(\n                this.columnDef.name\n            );\n        this.sortingState = this.tableStateHandlerService.getSortingState(\n            this.currentCellIndex\n        );\n\n        if (this.resizable) {\n            // Get initial width\n            const columnWidth = this.tableStateHandlerService.getColumnWidth(\n                this.columnDef.name\n            );\n\n            this.elementRef.nativeElement.style.width = columnWidth + \"px\";\n            this.subscriptions.push(\n                this.tableStateHandlerService.shouldHighlightEdge\n                    .pipe(\n                        filter((value) => {\n                            // When resize is in progress on other columns this one shouldn't be highlighted\n                            this.resizeInProgress =\n                                value.columnIndex !== this.currentCellIndex &&\n                                value.eventPhase === \"start\";\n                            return value.columnIndex === this.currentCellIndex;\n                        }),\n                        pluck(\"eventPhase\")\n                    )\n                    .subscribe((eventPhase: TableResizePhase) => {\n                        this.resizeEventPhase = eventPhase;\n                        this.rightEdgeActive = this.isCursorInCell;\n                    })\n            );\n        }\n        this.subscriptions.push(\n            this.tableStateHandlerService.columnWidthSubject.subscribe(() => {\n                const columnWidth =\n                    this.tableStateHandlerService.getColumnWidth(\n                        this.columnDef.name\n                    );\n                if (columnWidth > 45) {\n                    this.renderer.setStyle(this.elementRef.nativeElement, \"width\", columnWidth + \"px\");\n                }\n            })\n        );\n\n        if (this.isSortable) {\n            this.subscriptions.push(\n                this.tableStateHandlerService.sortingState.subscribe(() => {\n                    this.sortingState =\n                        this.tableStateHandlerService.getSortingState(\n                            this.currentCellIndex\n                        );\n                })\n            );\n        }\n\n        if (this.isReorderable) {\n            this.subscriptions.push(\n                this.tableStateHandlerService.draggedOverCell.subscribe(\n                    (draggedOverCell) => {\n                        this.rightEdgeActive = this.leftEdgeActive = false;\n                        if (\n                            draggedOverCell?.cellIndex === this.currentCellIndex\n                        ) {\n                            this.rightEdgeActive =\n                                draggedOverCell?.dropAlignment === \"right\";\n                            this.leftEdgeActive =\n                                draggedOverCell?.dropAlignment === \"left\";\n                        }\n                    }\n                )\n            );\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes.alignment && !changes.alignment.firstChange) {\n            const newAlignment = `align-${changes.alignment.currentValue}`;\n            const oldAlignment = `align-${changes.alignment.previousValue}`;\n            this.elementRef.nativeElement.classList.remove(oldAlignment);\n            this.elementRef.nativeElement.classList.add(newAlignment);\n        }\n    }\n\n    public ngAfterViewInit(): void {\n        this.zone.runOutsideAngular(() => {\n            this.subscriptions.push(\n                fromEvent<DragEvent>(\n                    this.elementRef.nativeElement,\n                    \"dragover\"\n                ).subscribe((event: DragEvent) => {\n                    event.stopPropagation();\n                    event.preventDefault();\n                    this.tableStateHandlerService.setDraggedOverCell(event);\n                })\n            );\n        });\n    }\n\n    public isColumnResizable(): boolean {\n        const isColumnTypeResizable = _isUndefined(\n            <NonResizableColumnTypes>this.columnDef.type\n        );\n        return this.tableStateHandlerService.resizable && isColumnTypeResizable;\n    }\n\n    public onColumnWidthChange(offset: number): void {\n        const currentWidth = this.tableStateHandlerService.getColumnWidth(this.columnDef.name);\n        const resultWidth = currentWidth + offset;\n\n        // resultWidth must be more than 45 because minimum width of the column is 46px\n        if (resultWidth > 45 || offset > 0) {\n            this.tableStateHandlerService.setColumnWidth(\n                this.columnDef.name,\n                resultWidth\n            );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.subscriptions.forEach((subscription) =>\n            subscription.unsubscribe()\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/**\n * These selectors are useful when we capture e.g. a click event on a higher level and want to prevent an action in case the event target was one of these.\n */\nexport const DEFAULT_INTERACTIVE_ELEMENTS = [\n    \"button\",\n    \"input[type='button']\",\n    \"a[href]\",\n];\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    CdkFooterRow,\n    CdkFooterRowDef,\n    CdkHeaderRow,\n    CdkHeaderRowDef,\n    CdkRow,\n    CdkRowDef,\n} from \"@angular/cdk/table\";\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    IterableDiffers,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _includes from \"lodash/includes\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { DEFAULT_INTERACTIVE_ELEMENTS } from \"../../../constants/interaction.constants\";\nimport { ISelectorState } from \"../../../services/public-api\";\nimport { CheckboxStatus, SelectionType } from \"../../selector/public-api\";\nimport { TableStateHandlerService } from \"../table-state-handler.service\";\nimport {\n    ClickableRowOptions,\n    RowHeightOptions,\n    TableSelectionMode,\n} from \"../types\";\n\n/* eslint-disable */\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiHeaderRowDef]\",\n    providers: [\n        { provide: CdkHeaderRowDef, useExisting: TableHeaderRowDefDirective },\n    ],\n    host: { role: \"row\" },\n    standalone: false\n})\nexport class TableHeaderRowDefDirective\n    extends CdkHeaderRowDef\n    implements OnInit, OnDestroy, OnChanges\n{\n    @Input() set nuiHeaderRowDef(value: any) {\n        this.columns = value ?? [];\n    }\n\n    @Input() set nuiHeaderRowDefSticky(value: boolean) {\n        this.sticky = value;\n    }\n\n    public tableColumnsSubscription: Subscription;\n\n    constructor(\n        template: TemplateRef<any>,\n        _differs: IterableDiffers,\n        private tableStateHandlerService: TableStateHandlerService\n    ) {\n        super(template, _differs);\n    }\n\n    public ngOnInit(): void {\n        this.tableStateHandlerService.tableColumns = Array.from(this.columns);\n\n        if (this.tableStateHandlerService.reorderable) {\n            // reordering columns when drop is fired on column\n            this.tableColumnsSubscription =\n                this.tableStateHandlerService.columnsState.subscribe(\n                    (tableColumns: string[]) => {\n                        this.columns = tableColumns;\n                    }\n                );\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges) {\n        super.ngOnChanges(changes);\n        if (changes.nuiHeaderRowDef) {\n            this.tableStateHandlerService.tableColumns =\n                changes.nuiHeaderRowDef.currentValue;\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.tableColumnsSubscription) {\n            this.tableColumnsSubscription.unsubscribe();\n        }\n    }\n}\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiRowDef]\",\n    providers: [{ provide: CdkRowDef, useExisting: TableRowDefDirective }],\n    standalone: false\n})\nexport class TableRowDefDirective<T>\n    extends CdkRowDef<T>\n    implements OnInit, OnDestroy\n{\n    @Input() set nuiRowDefColumns(value: any) {\n        this.columns = value ?? [];\n    }\n\n    @Input() set nuiRowDefWhen(value: (index: number, rowData: T) => boolean) {\n        this.when = value;\n    }\n\n    public tableColumnsSubscription: Subscription;\n\n    constructor(\n        template: TemplateRef<any>,\n        _differs: IterableDiffers,\n        private tableStateHandlerService: TableStateHandlerService\n    ) {\n        super(template, _differs);\n    }\n\n    public ngOnInit(): void {\n        this.tableStateHandlerService.tableColumns = Array.from(this.columns);\n\n        if (this.tableStateHandlerService.reorderable) {\n            // reordering columns when drop is fired on column\n            this.tableColumnsSubscription =\n                this.tableStateHandlerService.columnsState.subscribe(\n                    (tableColumns: string[]) => {\n                        this.columns = tableColumns;\n                    }\n                );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.tableColumnsSubscription) {\n            this.tableColumnsSubscription.unsubscribe();\n        }\n    }\n}\n\n/**\n * @ignore\n */\n\n@Directive({\n    selector: \"[nuiFooterRowDef]\",\n    providers: [\n        { provide: CdkFooterRowDef, useExisting: TableFooterRowDefDirective },\n    ],\n    standalone: false\n})\nexport class TableFooterRowDefDirective\n    extends CdkFooterRowDef\n    implements OnInit, OnDestroy\n{\n    @Input() set nuiFooterRowDef(value: any) {\n        this.columns = value ?? [];\n    }\n\n    @Input() set nuiFooterRowDefSticky(value: boolean) {\n        this.sticky = value;\n    }\n\n    public tableColumnsSubscription: Subscription;\n\n    constructor(\n        template: TemplateRef<any>,\n        _differs: IterableDiffers,\n        private tableStateHandlerService: TableStateHandlerService\n    ) {\n        super(template, _differs);\n    }\n\n    public ngOnInit(): void {\n        this.tableStateHandlerService.tableColumns = Array.from(this.columns);\n\n        if (this.tableStateHandlerService.reorderable) {\n            // reordering columns when drop is fired on column\n            this.tableColumnsSubscription =\n                this.tableStateHandlerService.columnsState.subscribe(\n                    (tableColumns: string[]) => {\n                        this.columns = tableColumns;\n                    }\n                );\n        }\n    }\n\n    public ngOnDestroy(): void {\n        if (this.tableColumnsSubscription) {\n            this.tableColumnsSubscription.unsubscribe();\n        }\n    }\n}\n\n/**\n * @ignore\n */\n\n@Component({\n    template: ` <th\n            *ngIf=\"\n                selectable ||\n                selectionMode === 'multi' ||\n                selectionMode === 'radio'\n            \"\n            nuiClickInterceptor\n            class=\"nui-table__table-header-cell nui-table__table-header-cell--selectable\"\n            [ngClass]=\"{ 'no-options': !hasOptions }\"\n        >\n            <nui-selector\n                class=\"nui-table__table-header-cell__selector\"\n                [ngClass]=\"{ 'no-options': !hasOptions }\"\n                [class.invisible]=\"selectionMode !== 'multi'\"\n                [appendToBody]=\"true\"\n                (selectionChange)=\"onSelectorChange($event)\"\n                [checkboxStatus]=\"selectorState.checkboxStatus\"\n                [items]=\"selectorState.selectorItems\"\n            >\n            </nui-selector>\n        </th>\n        <ng-container cdkCellOutlet></ng-container>`,\n    host: {\n        role: \"row\",\n        class: \"nui-table__table-header-row\",\n    },\n    selector: \"nui-header-row, tr[nui-header-row]\",\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: \"nuiHeaderRow\",\n    providers: [\n        { provide: CdkHeaderRow, useExisting: TableHeaderRowComponent },\n    ],\n    standalone: false\n})\nexport class TableHeaderRowComponent\n    extends CdkHeaderRow\n    implements OnInit, OnDestroy, AfterViewInit\n{\n    @Input() density: RowHeightOptions = \"default\";\n\n    public selectorState: ISelectorState = {\n        checkboxStatus: CheckboxStatus.Unchecked,\n        selectorItems: [],\n    };\n\n    public selectable;\n    public selectionMode: TableSelectionMode;\n    public selectionChangeSubscription: Subscription;\n    public dataSourceChangeSubscription: Subscription;\n\n    @HostBinding(\"class.nui-table__table-header-row_height_default\")\n    get isDensityDefault() {\n        return this.density.toLowerCase() === \"default\";\n    }\n\n    @HostBinding(\"class.nui-table__table-header-row_height_compact\")\n    get isDensityCompact() {\n        return this.density.toLowerCase() === \"compact\";\n    }\n\n    @HostBinding(\"class.nui-table__table-header-row_height_tiny\")\n    get isDensityTiny() {\n        return this.density.toLowerCase() === \"tiny\";\n    }\n\n    public get hasOptions(): boolean {\n        return this.selectorState.selectorItems.length > 0;\n    }\n\n    private onDestroy$ = new Subject<void>();\n\n    constructor(\n        private tableStateHandlerService: TableStateHandlerService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        super();\n        this.selectable = this.tableStateHandlerService.selectable;\n        this.selectionMode = this.tableStateHandlerService.selectionMode;\n    }\n\n    public ngOnInit(): void {\n        if (this.tableStateHandlerService.selectionEnabled) {\n            this.selectorState =\n                this.tableStateHandlerService.getSelectorState();\n            this.updateSelectorState();\n        }\n\n        // if dataSource changes we need to update selector state\n        this.dataSourceChangeSubscription =\n            this.tableStateHandlerService.dataSourceChanged\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(() => {\n                    this.updateSelectorState();\n                });\n\n        // when single row is selected we need to update selector state\n        // we also need to detect changes for selector state\n        this.selectionChangeSubscription =\n            this.tableStateHandlerService.selectionChanged\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(() => {\n                    this.updateSelectorState();\n                });\n\n        this.tableStateHandlerService.selectableChanged\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((selectable: boolean) => {\n                this.selectable = selectable;\n                this.changeDetectorRef.markForCheck();\n            });\n\n        this.tableStateHandlerService.selectionModeChanged\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((mode: TableSelectionMode) => {\n                this.selectionMode = mode;\n                this.changeDetectorRef.markForCheck();\n            });\n    }\n\n    public ngAfterViewInit(): void {\n        if (this.tableStateHandlerService.selectionEnabled) {\n            this.tableStateHandlerService.applyStickyStyles();\n        }\n    }\n\n    public onSelectorChange(selectorValue: SelectionType): void {\n        this.tableStateHandlerService.selection =\n            this.tableStateHandlerService.applySelector(selectorValue);\n        this.updateSelectorState();\n        this.tableStateHandlerService.selectionChanged.next(\n            this.tableStateHandlerService.selection\n        );\n    }\n\n    public updateSelectorState(): void {\n        this.selectorState = this.tableStateHandlerService.getSelectorState();\n        this.changeDetectorRef.detectChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n}\n\n/**\n * @ignore\n */\n\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\n@Component({\n    selector: \"nui-row, tr[nui-row]\",\n    template: ` <td\n            *ngIf=\"\n                selectable ||\n                (selectionMode &&\n                    (selectionMode === 'multi' || selectionMode === 'radio'))\n            \"\n            class=\"nui-table__table-cell nui-table__table-cell--selectable\"\n        >\n            <nui-radio\n                *ngIf=\"selectionMode === 'radio'\"\n                class=\"nui-table__table-cell__checkbox d-inline-block\"\n                [checked]=\"isRowSelected()\"\n                (valueChange)=\"rowSelected()\"\n                (click)=\"stopPropagation($event)\"\n                #rowSelectionElement\n            >\n            </nui-radio>\n            <nui-checkbox\n                *ngIf=\"selectionMode === 'multi'\"\n                class=\"nui-table__table-cell__checkbox d-inline-block\"\n                [checked]=\"isRowSelected()\"\n                (valueChange)=\"rowSelected()\"\n                (click)=\"stopPropagation($event)\"\n                #rowSelectionElement\n            >\n            </nui-checkbox>\n        </td>\n        <ng-container cdkCellOutlet></ng-container>`,\n    host: {\n        role: \"row\",\n        class: \"nui-table__table-row\",\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: \"nuiRow\",\n    providers: [{ provide: CdkRow, useExisting: TableRowComponent }],\n    standalone: false\n})\nexport class TableRowComponent extends CdkRow implements OnInit, OnDestroy {\n    @Input() density: RowHeightOptions = \"default\";\n    @Input() rowObject: Object;\n    @Input()\n    @HostBinding(\"class.nui-table__table-row--clickable\")\n    clickableRow = false;\n    @Input() clickableRowConfig: ClickableRowOptions = {\n        clickableSelectors: [\"nui-row\", \"tr[nui-row]\"],\n        ignoredSelectors: DEFAULT_INTERACTIVE_ELEMENTS,\n    };\n    public selectable;\n    public selectionMode: TableSelectionMode;\n    public selectionChangeSubscription: Subscription;\n\n    @HostBinding(\"class.nui-table__table-row--selected\")\n    get isSelected() {\n        return this.isRowSelected();\n    }\n\n    @HostBinding(\"class.nui-table__table-row_height_default\")\n    get isDensityDefault() {\n        return this.density.toLowerCase() === \"default\";\n    }\n\n    @HostBinding(\"class.nui-table__table-row_height_compact\")\n    get isDensityCompact() {\n        return this.density.toLowerCase() === \"compact\";\n    }\n\n    @HostBinding(\"class.nui-table__table-row_height_tiny\")\n    get isDensityTiny() {\n        return this.density.toLowerCase() === \"tiny\";\n    }\n\n    @ViewChild(\"rowSelectionElement\", { read: ElementRef, static: false })\n    private rowSelectionElement: ElementRef;\n\n    private onDestroy$ = new Subject<void>();\n\n    constructor(\n        private elementRef: ElementRef,\n        private tableStateHandlerService: TableStateHandlerService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        super();\n        this.selectable = this.tableStateHandlerService.selectable;\n        this.selectionMode = this.tableStateHandlerService.selectionMode;\n    }\n\n    public ngOnInit(): void {\n        const rowHeightClass = `nui-table__table-row_height_${this.density.toLowerCase()}`;\n        this.elementRef.nativeElement.classList.add(rowHeightClass);\n\n        // when selection changes we need to detect changes to check check-boxes\n        this.selectionChangeSubscription =\n            this.tableStateHandlerService.selectionChanged\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(() => {\n                    this.changeDetectorRef.detectChanges();\n                });\n\n        this.tableStateHandlerService.selectableChanged\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((selectable: boolean) => {\n                this.selectable = selectable;\n                this.changeDetectorRef.markForCheck();\n            });\n\n        this.tableStateHandlerService.selectionModeChanged\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe((mode: TableSelectionMode) => {\n                this.selectionMode = mode;\n                this.changeDetectorRef.markForCheck();\n            });\n    }\n\n    @HostListener(\"click\", [\"$event.target\"])\n    public rowClickHandler(target: HTMLElement): void {\n        if (\n            !this.tableStateHandlerService.selectionEnabled ||\n            !this.clickableRow ||\n            !this.clickableRowConfig.clickableSelectors.length\n        ) {\n            return;\n        }\n        const closestTableRow = target.closest(\n            this.clickableRowConfig.clickableSelectors.join(\",\")\n        );\n        if (!closestTableRow) {\n            return;\n        }\n        if (\n            this.clickableRowConfig.ignoredSelectors.length &&\n            target.closest(this.clickableRowConfig.ignoredSelectors.join(\",\"))\n        ) {\n            return;\n        }\n\n        if (this.selectionMode === TableSelectionMode.Single) {\n            this.rowSelected();\n            return;\n        }\n\n        const rowSelector: Element | null = closestTableRow.querySelector(\n            \".nui-table__table-cell__checkbox\"\n        );\n        if (rowSelector === this.rowSelectionElement?.nativeElement) {\n            this.rowSelected();\n        }\n    }\n\n    public rowSelected(): void {\n        this.tableStateHandlerService.handleRowSelect(this.rowObject);\n    }\n\n    /**\n     * We need to stop propagation of the checkbox click to prevent the row click handler from invoking the checkbox toggle functionality again\n     */\n    public stopPropagation(event: Event): void {\n        event.stopPropagation();\n    }\n\n    public isRowSelected(): boolean {\n        const rowObjectTrackBy = this.tableStateHandlerService.trackBy(\n            0,\n            this.rowObject\n        );\n\n        const includedRows = this.tableStateHandlerService.selection.include;\n        const excludedRows = this.tableStateHandlerService.selection.exclude;\n        if (this.tableStateHandlerService.selection.isAllPages) {\n            // case when we unselect one page by checkbox\n            if (this.tableStateHandlerService.selection.exclude.length > 0) {\n                return !_includes(excludedRows, rowObjectTrackBy);\n            }\n            return true;\n        }\n\n        return includedRows.length > 0\n            ? _includes(includedRows, rowObjectTrackBy)\n            : false;\n    }\n\n    public ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n}\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-footer-row, tr[nui-footer-row]\",\n    template: \"<ng-container cdkCellOutlet></ng-container>\",\n    host: {\n        class: \"nui-footer-row\",\n        role: \"row\",\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: \"nuiFooterRow\",\n    providers: [\n        { provide: CdkFooterRow, useExisting: TableFooterRowComponent },\n    ],\n    standalone: false\n})\nexport class TableFooterRowComponent extends CdkFooterRow {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CdkTableModule } from \"@angular/cdk/table\";\nimport { NgModule, Type } from \"@angular/core\";\n\nimport { TableCellDefDirective } from \"./table-cell/table-cell-def.directive\";\nimport { TableCellDirective } from \"./table-cell/table-cell.directive\";\nimport { TableColumnDefDirective } from \"./table-cell/table-column-def.directive\";\nimport { TableFooterCellDefDirective } from \"./table-cell/table-footer-cell-def.directive\";\nimport { TableFooterCellDirective } from \"./table-cell/table-footer-cell.directive\";\nimport { TableHeaderCellDefDirective } from \"./table-cell/table-header-cell-def.directive\";\nimport { TableHeaderCellComponent } from \"./table-cell/table-header-cell.component\";\nimport { TableResizerDirective } from \"./table-resizer/table-resizer.directive\";\nimport {\n    TableFooterRowComponent,\n    TableFooterRowDefDirective,\n    TableHeaderRowComponent,\n    TableHeaderRowDefDirective,\n    TableRowComponent,\n    TableRowDefDirective,\n} from \"./table-row/table-row.component\";\nimport { SliceRangePipe } from \"./table-virtual-scroll/slice-range.pipe\";\nimport { TableStickyHeaderDirective } from \"./table-virtual-scroll/table-sticky-header.directive\";\nimport {\n    TableVirtualScrollDirective,\n    TableVirtualScrollLinearDirective,\n} from \"./table-virtual-scroll/table-virtual-scroll.directive\";\nimport { TableComponent } from \"./table.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiCheckboxModule } from \"../checkbox/checkbox.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiRadioModule } from \"../radio/radio.module\";\nimport { NuiSelectModule } from \"../select/select.module\";\nimport { NuiSelectorModule } from \"../selector/selector.module\";\n\nconst DECLARATIONS_EXPORTS: Array<Type<any> | any[]> = [\n    TableComponent,\n    TableHeaderRowDefDirective,\n    TableResizerDirective,\n    TableCellDefDirective,\n    TableRowDefDirective,\n    TableFooterRowDefDirective,\n    TableHeaderRowComponent,\n    TableRowComponent,\n    TableFooterRowComponent,\n    TableHeaderCellDefDirective,\n    TableHeaderCellComponent,\n    TableCellDirective,\n    TableFooterCellDefDirective,\n    TableFooterCellDirective,\n    TableColumnDefDirective,\n    TableVirtualScrollDirective,\n    TableVirtualScrollLinearDirective,\n    TableStickyHeaderDirective,\n    SliceRangePipe,\n];\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiRadioModule,\n        NuiSelectModule,\n        NuiSelectorModule,\n        NuiCheckboxModule,\n        NuiIconModule,\n        CdkTableModule,\n    ],\n    declarations: DECLARATIONS_EXPORTS,\n    exports: DECLARATIONS_EXPORTS,\n})\nexport class NuiTableModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { IQuickPickPresetDictionary } from \"../public-api\";\n\n@Component({\n    selector: \"nui-quick-picker\",\n    templateUrl: \"./quick-picker.component.html\",\n    styleUrls: [\"./quick-picker.component.less\"],\n    encapsulation: ViewEncapsulation.Emulated,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class QuickPickerComponent {\n    @Input() presets: IQuickPickPresetDictionary;\n    @Input() pickerTitle: string;\n    @Input() presetsTitle: string = $localize`Quick picks`;\n\n    @Input() selectedPreset?: string;\n\n    /**\n     * To control an order of presetKeys\n     */\n    @Input() public presetKeysOrder: string[];\n\n    /** callback to invoke on selecting specific preset */\n    @Output() public presetSelected = new EventEmitter<string>();\n\n    public get presetKeys(): string[] {\n        return this.presetKeysOrder || Object.keys(this.presets);\n    }\n\n    constructor(public changeDetector: ChangeDetectorRef) {}\n\n    public selectPreset(key: string): void {\n        this.presetSelected.emit(key);\n    }\n\n    public isPresetSelected(key: string): boolean {\n        return this.selectedPreset === key;\n    }\n}\n","<div class=\"nui-quick-picker\">\n    <div class=\"nui-quick-picker__presets\">\n        <h4 class=\"nui-quick-picker-header nui-quick-picker__presets-header\">\n            {{ presetsTitle }}\n        </h4>\n        <div\n            *ngFor=\"let key of presetKeys\"\n            (click)=\"selectPreset(key)\"\n            [ngClass]=\"{\n                'nui-quick-picker__preset--selected': isPresetSelected(key)\n            }\"\n            class=\"nui-quick-picker__preset\"\n        >\n            {{ presets[key].name }}\n        </div>\n    </div>\n    <div class=\"nui-quick-picker__divider\"></div>\n    <div class=\"nui-quick-picker__picker\">\n        <h4 class=\"nui-quick-picker-header nui-quick-picker__picker-header\">\n            {{ pickerTitle }}\n        </h4>\n        <ng-content></ng-content>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport extend from \"lodash/extend\";\nimport isUndefined from \"lodash/isUndefined\";\nimport moment, { Duration, Moment } from \"moment/moment\";\n\nimport { ITimeframe, ITimeFramePresetDictionary } from \"../public-api\";\n\n/**\n * __Name : __\n * Timeframe service\n *\n * __Usage :__\n * Used to get time frames via time patterns or presets\n */\n/**\n * @ignore\n */\n@Injectable()\nexport class TimeframeService {\n    public static cloneTimeFrame(timeFrame: ITimeframe): ITimeframe {\n        return {\n            ...timeFrame,\n            startDatetime: timeFrame.startDatetime.clone(),\n            endDatetime: timeFrame.endDatetime.clone(),\n        };\n    }\n\n    public defaultPresets: ITimeFramePresetDictionary = {\n        lastHour: {\n            name: $localize`Last hour`,\n            startDatetimePattern: { hours: -1 },\n            endDatetimePattern: {},\n        },\n        last12Hours: {\n            name: $localize`Last 12 hours`,\n            startDatetimePattern: { hours: -12 },\n            endDatetimePattern: {},\n        },\n        last24Hours: {\n            name: $localize`Last 24 hours`,\n            startDatetimePattern: { hours: -24 },\n            endDatetimePattern: {},\n        },\n        last5Days: {\n            name: $localize`Last 5 days`,\n            startDatetimePattern: { days: -5 },\n            endDatetimePattern: {},\n        },\n        last7Days: {\n            name: $localize`Last 7 days`,\n            startDatetimePattern: { days: -7 },\n            endDatetimePattern: {},\n        },\n        last30Days: {\n            name: $localize`Last 30 days`,\n            startDatetimePattern: { days: -30 },\n            endDatetimePattern: {},\n        },\n    };\n\n    public currentPresets: ITimeFramePresetDictionary = extend(\n        {},\n        this.defaultPresets\n    );\n\n    constructor() {}\n\n    /**\n     *\n     * __Description:__ Get timeframe from patterns of start and end points in time\n     * @param startDatetimePattern\n     * @param endDatetimePattern\n     * @param baseDatetime\n     */\n    public getTimeframe(\n        startDatetimePattern: any,\n        endDatetimePattern: any,\n        baseDatetime?: string\n    ): ITimeframe {\n        // check input parameters\n        if (isUndefined(startDatetimePattern)) {\n            throw new Error(\"Parameter 'startDatetimePattern' is undefined\");\n        }\n\n        if (isUndefined(endDatetimePattern)) {\n            throw new Error(\"Parameter 'endDateTimePattern' is undefined\");\n        }\n\n        const startDatetime = moment(baseDatetime).add(startDatetimePattern);\n        const endDatetime = moment(baseDatetime).add(endDatetimePattern);\n\n        return {\n            startDatetime: startDatetime,\n            endDatetime: endDatetime,\n            // @ts-ignore: preventing breaking default flow;\n            selectedPresetId: null,\n        };\n    }\n\n    /**\n     * __Description:__ Get timeframe by preset id, using the list of pre-defined presets\n\n     */\n    public getTimeframeByPresetId(\n        id: string | undefined,\n        baseDatetime?: string\n    ): ITimeframe {\n        // check input parameters\n        if (isUndefined(id)) {\n            throw new Error(\"Parameter 'id' is undefined\");\n        }\n\n        const startDatetime = moment(baseDatetime).add(\n            this.currentPresets[id].startDatetimePattern\n        );\n        const endDatetime = moment(baseDatetime).add(\n            this.currentPresets[id].endDatetimePattern\n        );\n\n        return {\n            startDatetime: startDatetime,\n            endDatetime: endDatetime,\n            selectedPresetId: id,\n            title: this.currentPresets[id].name,\n        };\n    }\n\n    /**\n     * __Description:__ Updates start and end time of timeframe according to preset if selected\n     *\n     * @param timeFrame timeframe to be updated\n     * @param presets presets to look at. Defaults to service's currentPresets\n     * @param baseDatetime date that should be used for relative time calculations. Defaults to now.\n     * @returns updated clone of timeframe with startDatetime and endDatetime reconciled with selectedPresetId\n     */\n    public reconcileTimeframe = (\n        timeFrame: ITimeframe,\n        presets?: ITimeFramePresetDictionary,\n        baseDatetime?: Moment\n    ): ITimeframe => {\n        if (!presets) {\n            presets = this.currentPresets;\n        }\n        if (!baseDatetime) {\n            baseDatetime = moment();\n        }\n\n        const preset =\n            timeFrame.selectedPresetId && presets[timeFrame.selectedPresetId];\n        return preset\n            ? {\n                  ...timeFrame,\n                  startDatetime: baseDatetime\n                      .clone()\n                      .add(preset.startDatetimePattern),\n                  endDatetime: baseDatetime\n                      .clone()\n                      .add(preset.endDatetimePattern),\n              }\n            : TimeframeService.cloneTimeFrame(timeFrame);\n    };\n\n    /**\n     * __Description:__ Get the list of all default presets\n\n     */\n    public getDefaultPresets(): ITimeFramePresetDictionary {\n        return this.defaultPresets;\n    }\n\n    /**\n     * __Description:__ Add custom presets to existing list of default presets\n     * @param presets\n     */\n    public extendCurrentPresets(presets: ITimeFramePresetDictionary): void {\n        extend(this.currentPresets, presets);\n    }\n\n    /**\n     * __Description:__ Compare two timeframes, return false if they are not equal\n     */\n    public isEqual(\n        firstTimeFrame: ITimeframe,\n        secondTimeFrame: ITimeframe,\n        units: moment.unitOfTime.Base = \"minutes\"\n    ): boolean {\n        return (\n            firstTimeFrame &&\n            secondTimeFrame &&\n            firstTimeFrame.endDatetime.isSame(\n                secondTimeFrame.endDatetime,\n                units\n            ) &&\n            firstTimeFrame.startDatetime.isSame(\n                secondTimeFrame.startDatetime,\n                units\n            )\n        );\n    }\n\n    /**\n     * __Description:__ Compare two timeframe durations, return false if they are not equal\n     */\n    public isEqualDuration(\n        firstTimeFrame: ITimeframe,\n        secondTimeFrame: ITimeframe,\n        units: moment.unitOfTime.Base = \"minutes\"\n    ): boolean {\n        return (\n            firstTimeFrame &&\n            secondTimeFrame &&\n            firstTimeFrame.startDatetime.diff(\n                firstTimeFrame.endDatetime,\n                units\n            ) ===\n                secondTimeFrame.startDatetime.diff(\n                    secondTimeFrame.endDatetime,\n                    units\n                )\n        );\n    }\n\n    /**\n     * __Description:__\n     * Adds the specified duration to startDatetime and endDatetime and returns a new timeframe.\n     * Note: Input timeframe is not mutated.\n     *\n     * @param {ITimeframe} timeFrame The timeframe to shift\n     * @param {Duration} duration The duration of the timeframe shift\n     * @returns {ITimeframe} The shifted timeframe\n     */\n    public shiftTimeFrame(\n        timeFrame: ITimeframe,\n        duration: Duration\n    ): ITimeframe {\n        return {\n            startDatetime: timeFrame.startDatetime.clone().add(duration),\n            endDatetime: timeFrame.endDatetime.clone().add(duration),\n            // @ts-ignore: preventing breaking default flow;\n            selectedPresetId: null,\n        };\n    }\n\n    /**\n     * __Description:__\n     * Returns the difference between timeFrame's startDatetime and endDatetime as moment.Duration\n     *\n     * @param {ITimeframe} timeFrame\n     * @returns {Duration}\n     */\n    public getDuration(timeFrame: ITimeframe): Duration {\n        return moment.duration(\n            timeFrame.endDatetime.diff(timeFrame.startDatetime)\n        );\n    }\n\n    /**\n     * __Description:__\n     * Checks timeFrame \"startDatetime\" and \"endDatetime\" attributes for moment validity\n     *\n     * @param {ITimeframe} tf\n     * @returns {Boolean}\n     */\n    public areTimeFrameDatesValid(tf: ITimeframe): boolean {\n        const { startDatetime, endDatetime } = tf;\n        const startValid = startDatetime && startDatetime.isValid();\n        const endValid = endDatetime && endDatetime.isValid();\n\n        return startValid && endValid;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _cloneDeep from \"lodash/cloneDeep\";\nimport { Moment } from \"moment/moment\";\nimport moment from \"moment/moment\";\n\nimport { ITimeframe, ITimeFramePreset } from \"./public-api\";\nimport { TimeframeService } from \"./services/timeframe.service\";\n\n// <example-url>./../examples/index.html#/time-frame-picker</example-url>\n\n@Component({\n    selector: \"nui-time-frame-picker\",\n    templateUrl: \"./time-frame-picker.component.html\",\n    styleUrls: [\"./time-frame-picker.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false,\n})\nexport class TimeFramePickerComponent implements OnChanges, OnInit {\n    /**  earliest selectable date */\n    @Input() minDate: Moment;\n    /**  latest selectable date */\n    @Input() maxDate: Moment;\n    /** model of timepicker */\n    @Input() startModel: ITimeframe;\n    /** Allows popup box to be attached to document.body */\n    @Input() appendToBody: boolean;\n\n    public model: ITimeframe;\n\n    /** callback to be invoked on model change */\n    @Output() public changed = new EventEmitter<ITimeframe>();\n\n    public isFocused: boolean;\n    public modelDefault: any;\n\n    public distanceToEndDate: number; // to keep distance between start and end-date\n\n    constructor(\n        private timeFrameService: TimeframeService,\n        public changeDetector: ChangeDetectorRef\n    ) {}\n\n    public ngOnChanges(changes: any): void {\n        if (changes[\"startModel\"]) {\n            this.model = TimeframeService.cloneTimeFrame(this.startModel);\n            this.validateCombination();\n        }\n    }\n\n    public ngOnInit(): void {\n        if (this.startModel) {\n            this.model = TimeframeService.cloneTimeFrame(this.startModel);\n            this.validateCombination();\n        }\n    }\n\n    public selectPreset(key: string, value: ITimeFramePreset): void {\n        const timeframe = this.timeFrameService.getTimeframe(\n            value.startDatetimePattern,\n            value.endDatetimePattern\n        );\n        timeframe.selectedPresetId = key;\n        this.model = timeframe;\n    }\n\n    public isPresetSelected(key: string): boolean {\n        return this.model && this.model.selectedPresetId === key;\n    }\n\n    public onChangeInternalStart(event: any): void {\n        this.model.startDatetime = event;\n        this.onChangeInternal();\n    }\n\n    public onChangeInternalEnd(event: any): void {\n        this.model.endDatetime = event;\n        this.onChangeInternal();\n    }\n\n    public onBlurInternal(): void {\n        this.validateCombination();\n\n        if (!this.model.startDatetime || !this.model.endDatetime) {\n            this.model = _cloneDeep(this.modelDefault);\n        } else {\n            this.modelDefault = _cloneDeep(this.model);\n        }\n        this.isFocused = false;\n    }\n\n    public onFocusInternal(): void {\n        this.modelDefault = _cloneDeep(this.model);\n        this.isFocused = true;\n    }\n\n    private validateCombination() {\n        if (this.model.startDatetime && this.model.endDatetime) {\n            if (this.model.startDatetime >= this.model.endDatetime) {\n                this.model.endDatetime = moment(\n                    this.model.startDatetime.valueOf() + this.distanceToEndDate\n                );\n                this.model.selectedPresetId = undefined;\n                this.model.title = undefined;\n            } else {\n                this.updateDistanceToEndDate(\n                    this.model.startDatetime,\n                    this.model.endDatetime\n                );\n            }\n        }\n    }\n\n    private updateDistanceToEndDate(\n        newStartDatetime: Date | Moment,\n        newEndDatetime: Date | Moment\n    ) {\n        const startMoment = moment(newStartDatetime);\n        const endMoment = moment(newEndDatetime);\n\n        if (startMoment.isValid() && endMoment.isValid()) {\n            this.distanceToEndDate =\n                newEndDatetime.valueOf() - newStartDatetime.valueOf();\n        }\n    }\n\n    private onChangeInternal() {\n        if (!this.isFocused) {\n            this.validateCombination();\n        }\n        // clear 'selectedPresetId' and 'title' values\n        if (this.model.selectedPresetId) {\n            const timeFrame = this.timeFrameService.getTimeframeByPresetId(\n                this.model.selectedPresetId\n            );\n\n            if (\n                !this.model.startDatetime ||\n                !this.model.endDatetime ||\n                !this.timeFrameService.isEqualDuration(this.model, timeFrame)\n            ) {\n                this.model.selectedPresetId = undefined;\n                this.model.title = undefined;\n            }\n        }\n        this.changed.emit(this.model);\n    }\n}\n","<div class=\"nui-time-frame-picker\">\n    <div class=\"nui-time-frame-picker__date-times\">\n        <label class=\"nui-time-frame-picker__label\" i18n>Start</label>\n        <span\n            class=\"nui-time-frame-picker__date-time nui-time-frame-picker__date-time_start\"\n        >\n            <nui-date-time-picker\n                [minDate]=\"minDate\"\n                [maxDate]=\"maxDate\"\n                [model]=\"model.startDatetime\"\n                (modelChanged)=\"onChangeInternalStart($event)\"\n                (focus)=\"onFocusInternal()\"\n                (blur)=\"onBlurInternal()\"\n                [appendToBody]=\"appendToBody\"\n            ></nui-date-time-picker>\n        </span>\n        <label class=\"nui-time-frame-picker__label\" i18n>End</label>\n        <span\n            class=\"nui-time-frame-picker__date-time nui-time-frame-picker__date-time_end\"\n        >\n            <nui-date-time-picker\n                [minDate]=\"minDate\"\n                [maxDate]=\"maxDate\"\n                [model]=\"model.endDatetime\"\n                (modelChanged)=\"onChangeInternalEnd($event)\"\n                (focus)=\"onFocusInternal()\"\n                (blur)=\"onBlurInternal()\"\n                [appendToBody]=\"appendToBody\"\n            ></nui-date-time-picker>\n        </span>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n} from \"@angular/core\";\nimport moment, { Moment } from \"moment/moment\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { LoggerService } from \"../../../services/log-service\";\nimport { ITimeframe } from \"../../time-frame-picker/public-api\";\nimport { QuickPickerComponent } from \"../../time-frame-picker/quick-picker/quick-picker.component\";\nimport { TimeframeService } from \"../../time-frame-picker/services/timeframe.service\";\nimport { TimeFramePickerComponent } from \"../../time-frame-picker/time-frame-picker.component\";\n\n/**\n *\n * <div class=\"card card-inverse card-warning mb-3\">\n *   <h4 class=\"card-header\">This is a Convenience Component!</h4>\n *   <div class=\"card-block\">\n *     <p class=\"card-text\">\n *       Please check the section under the <strong>Additional Documentation</strong> sub-menu for more details and usage examples.\n *     </p>\n *   </div>\n *   <div class=\"card-footer\">\n *     <a href=\"../additional-documentation/convenience-components.html\" class=\"card-link\">Read more...</a>\n *   </div>\n * </div>\n *\n */\n@Component({\n    selector: \"nui-time-frame-bar\",\n    templateUrl: \"./time-frame-bar.component.html\",\n    styleUrls: [\"./time-frame-bar.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: { role: \"spinbutton\" },\n    standalone: false,\n})\nexport class TimeFrameBarComponent\n    implements AfterContentInit, OnChanges, OnDestroy\n{\n    /** Earliest selectable date */\n    @Input() minDate: Moment;\n    /** Latest selectable date */\n    @Input() maxDate: Moment;\n\n    /** Current time frame value */\n    @Input() timeFrame: ITimeframe = {\n        startDatetime: moment(undefined),\n        endDatetime: moment(undefined),\n    };\n    @Output() timeFrameChange = new EventEmitter<ITimeframe>();\n\n    /** Current index in zoom history */\n    @Input() historyIndex = 0;\n\n    /** Emits an event when \"Zoom Out\" is clicked */\n    @Output() undo = new EventEmitter();\n    /** Emits an event when \"Clear\" is clicked */\n    @Output() clear = new EventEmitter();\n\n    @ContentChild(TimeFramePickerComponent)\n    timeFramePicker: TimeFramePickerComponent;\n    @ContentChild(QuickPickerComponent) quickPicker: QuickPickerComponent;\n\n    public presets;\n    public pickerTimeframe: ITimeframe;\n    public closePopoverSubject = new Subject<void>();\n    public changed: boolean = false;\n    public isLeftmostRange = false;\n    public isRightmostRange = false;\n    public humanizedTimeframe: string;\n    public readonly defaultPickerTitle = $localize`:Label indicating that the user can select a custom start date and/or end date:Custom Range`;\n\n    private readonly destroy$ = new Subject<void>();\n\n    constructor(\n        public timeframeService: TimeframeService,\n        private logger: LoggerService,\n        private changeDetectorRef: ChangeDetectorRef\n    ) {\n        this.presets = this.timeframeService.getDefaultPresets();\n    }\n\n    public ngAfterContentInit(): void {\n        if (!this.timeFramePicker) {\n            throw new Error(\n                \"TimeFramePickerComponent must be present in 'timeFrameSelection' slot\"\n            );\n        }\n\n        if (\n            this.timeFramePicker.minDate ||\n            this.timeFramePicker.maxDate ||\n            this.timeFramePicker.startModel\n        ) {\n            this.logger\n                .warn(`minDate, maxDate, and startModel inputs set on the TimeFramePickerComponent will be ignored. Use the minDate,\nmaxDate, and timeFrame inputs on the TimeFrameBarComponent instead.`);\n        }\n\n        this.timeFramePicker.model = this.pickerTimeframe;\n        this.timeFramePicker.minDate = this.minDate;\n        this.timeFramePicker.maxDate = this.maxDate;\n        this.timeFramePicker.changed\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((tf: ITimeframe) => this.updatePickerTf(tf));\n\n        if (this.quickPicker) {\n            this.quickPicker.presets =\n                this.quickPicker.presets ||\n                this.timeframeService.getDefaultPresets();\n            this.quickPicker.pickerTitle =\n                undefined === this.quickPicker.pickerTitle\n                    ? this.defaultPickerTitle\n                    : this.quickPicker.pickerTitle;\n            this.quickPicker.presetSelected\n                .pipe(takeUntil(this.destroy$))\n                .subscribe((presetKey: string) =>\n                    this.handlePresetSelection(presetKey)\n                );\n        }\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes[\"timeFrame\"]) {\n            const value = changes[\"timeFrame\"].currentValue;\n            this.isLeftmostRange =\n                this.minDate && this.minDate.diff(value.startDatetime) >= 0;\n            this.isRightmostRange =\n                this.maxDate && this.maxDate.diff(value.endDatetime) <= 0;\n            this.pickerTimeframe = TimeframeService.cloneTimeFrame(value);\n            this.humanizedTimeframe = this.timeframeService\n                .getDuration(this.timeFrame)\n                .humanize();\n        }\n    }\n\n    public onPopoverShown(): void {\n        this.timeFramePicker.model = this.pickerTimeframe;\n        this.timeFramePicker.changeDetector.markForCheck();\n\n        if (this.quickPicker) {\n            this.quickPicker.selectedPreset = this.timeFrame.selectedPresetId;\n            this.quickPicker.changeDetector.markForCheck();\n        }\n    }\n\n    public onUndo(): void {\n        this.undo.emit();\n    }\n\n    public onClear(): void {\n        this.clear.emit();\n    }\n\n    public updatePickerTf(value: ITimeframe): void {\n        this.pickerTimeframe = value;\n        this.changed = !this.timeframeService.isEqual(\n            this.pickerTimeframe,\n            this.timeFrame\n        );\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public handlePresetSelection(presetKey: string): void {\n        this.pickerTimeframe =\n            this.timeframeService.getTimeframeByPresetId(presetKey);\n\n        this.quickPicker.selectedPreset = presetKey;\n        this.quickPicker.changeDetector.markForCheck();\n\n        this.closePopover(true);\n    }\n\n    public closePopover(confirmed = false): void {\n        if (confirmed) {\n            this.changeTimeFrame(\n                TimeframeService.cloneTimeFrame(this.pickerTimeframe)\n            );\n        }\n        this.closePopoverSubject.next();\n        this.changed = false;\n    }\n\n    public shiftRange(factor: number): void {\n        const tf = this.timeFrame;\n        const shiftDuration = moment.duration(\n            factor * tf.endDatetime.diff(tf.startDatetime)\n        );\n        this.changeTimeFrame(\n            this.timeframeService.shiftTimeFrame(tf, shiftDuration)\n        );\n    }\n\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n    }\n\n    private changeTimeFrame(value: ITimeframe) {\n        this.timeFrameChange.emit(value);\n    }\n}\n","<div class=\"nui-time-frame-bar py-2\">\n    <div class=\"left-content pr-4\">\n        <ng-content select=\"[leftContent]\"></ng-content>\n    </div>\n    <div\n        class=\"prev\"\n        nuiTooltip=\"{{ humanizedTimeframe }} before\"\n        i18n-nuiTooltip=\"e.g. '7 days before' or 'an hour before'\"\n    >\n        <button\n            nui-button\n            type=\"button\"\n            icon=\"caret-left\"\n            displayStyle=\"action\"\n            [disabled]=\"isLeftmostRange\"\n            (click)=\"shiftRange(-1)\"\n        ></button>\n    </div>\n    <div class=\"picker-label d-inline-flex px-3\">\n        <nui-popover\n            trigger=\"click\"\n            [template]=\"popoverTimeFramePicker\"\n            [hasPadding]=\"false\"\n            [closePopover]=\"closePopoverSubject\"\n            [modal]=\"true\"\n            (shown)=\"onPopoverShown()\"\n            [unlimited]=\"true\"\n        >\n            <div\n                class=\"picker-label-content d-inline-flex align-items-center nui-text-link\"\n            >\n                <ng-content></ng-content>\n            </div>\n        </nui-popover>\n    </div>\n    <div\n        class=\"next\"\n        nuiTooltip=\"{{ humanizedTimeframe }} later\"\n        i18n-nuiTooltip=\"e.g. '7 days later' or 'an hour later'\"\n    >\n        <button\n            nui-button\n            type=\"button\"\n            icon=\"caret-right\"\n            displayStyle=\"action\"\n            [disabled]=\"isRightmostRange\"\n            (click)=\"shiftRange(1)\"\n        ></button>\n    </div>\n    <div class=\"right-content d-flex pl-4\">\n        <div class=\"pr-3\">\n            <button\n                nui-button\n                class=\"undo ml-1\"\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"undo\"\n                *ngIf=\"historyIndex > 1\"\n                (click)=\"onUndo()\"\n                nuiTooltip=\"Undo\"\n                i18n-nuiTooltip\n            ></button>\n            <button\n                nui-button\n                class=\"clear ml-1\"\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"reset\"\n                *ngIf=\"historyIndex > 0\"\n                (click)=\"onClear()\"\n                nuiTooltip=\"Reset to default\"\n                i18n-nuiTooltip\n            ></button>\n        </div>\n        <ng-content select=\"[rightContent]\"></ng-content>\n    </div>\n</div>\n\n<ng-template #popoverTimeFramePicker>\n    <div [ngClass]=\"{ 'px-3 py-2': !quickPicker }\">\n        <ng-content select=\"[timeFrameSelection]\"></ng-content>\n    </div>\n    <nui-dialog-footer *ngIf=\"changed\">\n        <button\n            nui-button\n            type=\"button\"\n            displayStyle=\"action\"\n            class=\"cancel mr-3\"\n            (click)=\"closePopover()\"\n            i18n\n        >\n            Cancel\n        </button>\n        <button\n            nui-button\n            type=\"button\"\n            displayStyle=\"primary\"\n            class=\"use\"\n            (click)=\"closePopover(true)\"\n            i18n=\"\n                Imperative indicating that the user would like to apply, or use,\n                the current value\n            \"\n        >\n            Use\n        </button>\n    </nui-dialog-footer>\n</ng-template>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\nimport { ITimeframe } from \"./public-api\";\n\n/**\n * Pipe used for formatting ITimeframe values\n *\n * __Usage :__\n *\n *   value | timeFrame:formatString\n *\n * __Parameters  :__\n *\n * value - value to be converted\n *\n * momentFormat - Optional string of format tokens\n *\n * __Example :__\n *\n *   <code>{{ myTimeFrame | timeFrame }}</code>\n *\n * or\n *\n *   <code>{{ myTimeFrame | timeFrame: \"MMMM Do YYYY, h:mm:ss a\" }}</code>\n *\n */\n\n@Pipe({\n    name: \"timeFrame\",\n    standalone: false,\n})\nexport class TimeFrameFormatPipe implements PipeTransform {\n    transform(timeFrame: ITimeframe, momentFormat: string = \"LLL\"): string {\n        return timeFrame\n            ? timeFrame.title ||\n                  `${timeFrame.startDatetime.format(\n                      momentFormat\n                  )} - ${timeFrame.endDatetime.format(momentFormat)}`\n            : \"\";\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { QuickPickerComponent } from \"./quick-picker/quick-picker.component\";\nimport { TimeframeService } from \"./services/timeframe.service\";\nimport { TimeFrameFormatPipe } from \"./time-frame-format.pipe\";\nimport { TimeFramePickerComponent } from \"./time-frame-picker.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiDateTimePickerModule } from \"../date-time-picker/date-time-picker.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiMenuModule, NuiDateTimePickerModule],\n    declarations: [\n        QuickPickerComponent,\n        TimeFramePickerComponent,\n        TimeFrameFormatPipe,\n    ],\n    exports: [\n        QuickPickerComponent,\n        TimeFramePickerComponent,\n        TimeFrameFormatPipe,\n    ],\n    providers: [TimeframeService],\n})\nexport class NuiTimeFramePickerModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { TimeFrameBarComponent } from \"./time-frame-bar.component\";\nimport { NuiCommonModule } from \"../../../common/common.module\";\nimport { NuiButtonModule } from \"../../button/button.module\";\nimport { NuiDatePickerModule } from \"../../date-picker/date-picker.module\";\nimport { NuiDialogModule } from \"../../dialog/dialog.module\";\nimport { NuiIconModule } from \"../../icon/icon.module\";\nimport { NuiPopoverModule } from \"../../popover/popover.module\";\nimport { NuiTimeFramePickerModule } from \"../../time-frame-picker/time-frame-picker.module\";\nimport { NuiTimePickerModule } from \"../../time-picker/time-picker.module\";\nimport { NuiTooltipModule } from \"../../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiButtonModule,\n        NuiCommonModule,\n        NuiDatePickerModule,\n        NuiDialogModule,\n        NuiIconModule,\n        NuiPopoverModule,\n        NuiTimeFramePickerModule,\n        NuiTimePickerModule,\n        NuiTooltipModule,\n    ],\n    declarations: [TimeFrameBarComponent],\n    exports: [TimeFrameBarComponent],\n    providers: [],\n})\nexport class NuiTimeFrameBarModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from \"@angular/core\";\n\nimport { ToolbarItemDisplayStyle, ToolbarItemType } from \"./public-api\";\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-toolbar-item\",\n    template: \"<ng-content></ng-content>\",\n    host: { class: \"nui-toolbar-item\" },\n    standalone: false,\n})\nexport class ToolbarItemComponent implements AfterContentInit {\n    @Input() public type = ToolbarItemType.primary;\n    @Input() public icon: string;\n    @Input() public title: string;\n\n    /**\n     * Property for add destructive style to toolbar item.\n     * Destructive item should be added always last by user.\n     */\n    @Input() public displayStyle = ToolbarItemDisplayStyle.action;\n\n    public menuHidden: boolean;\n\n    @Output() public actionDone = new EventEmitter();\n\n    public get isDestructive(): boolean {\n        return this.displayStyle === ToolbarItemDisplayStyle.destructive;\n    }\n\n    public ngAfterContentInit(): void {\n        this.menuHidden = this.type === ToolbarItemType.secondary;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, ContentChildren, Input, QueryList } from \"@angular/core\";\n\nimport { ToolbarItemComponent } from \"./toolbar-item.component\";\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-toolbar-group\",\n    template: ` <ng-content></ng-content> `,\n    standalone: false,\n})\nexport class ToolbarGroupComponent {\n    @Input() title: string;\n\n    @ContentChildren(ToolbarItemComponent)\n    public items: QueryList<ToolbarItemComponent>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-toolbar-message\",\n    template: \"<ng-content></ng-content>\",\n    standalone: false,\n})\nexport class ToolbarMessageComponent {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component } from \"@angular/core\";\n\n/**\n * @ignore\n */\n\n@Component({\n    selector: \"nui-toolbar-splitter\",\n    template: \"\",\n    host: { class: \"nui-toolbar-splitter nui-flex-item-grow\" },\n    standalone: false,\n})\nexport class ToolbarSplitterComponent {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\nimport { KEYBOARD_CODE } from \"../../constants/keycode.constants\";\nimport { MenuComponent } from \"../menu\";\n\n@Injectable()\nexport class ToolbarKeyboardService {\n    private toolbarItems: HTMLElement[] = [];\n    private menu: MenuComponent | undefined;\n\n    public setToolbarItems(items: HTMLElement[], menu?: MenuComponent): void {\n        this.toolbarItems = items;\n        this.menu = menu;\n    }\n\n    public onKeyDown(event: KeyboardEvent): void {\n        const { code } = event;\n\n        if (\n            code === KEYBOARD_CODE.ARROW_LEFT ||\n            code === KEYBOARD_CODE.ARROW_RIGHT\n        ) {\n            event.preventDefault();\n            this.navigateByArrow(code);\n        }\n\n        if (code === KEYBOARD_CODE.TAB) {\n            this.closeMenuIfOpened();\n        }\n    }\n\n    private navigateByArrow(code: KEYBOARD_CODE): void {\n        const activeEl = document.activeElement;\n        const activeIndex = this.toolbarItems.indexOf(activeEl as HTMLElement);\n        const first = this.toolbarItems[0];\n        const last = this.toolbarItems[this.toolbarItems.length - 1];\n\n        if (code === KEYBOARD_CODE.ARROW_LEFT) {\n            activeEl === first ? this.focusLast() : this.focusLeft(activeIndex);\n        }\n\n        if (code === KEYBOARD_CODE.ARROW_RIGHT && activeIndex !== -1) {\n            activeEl === last\n                ? this.focusFirst()\n                : this.focusRight(activeIndex);\n        }\n    }\n\n    private focusFirst(): void {\n        this.toolbarItems[0].focus();\n        this.closeMenuIfOpened();\n    }\n\n    private focusLast(): void {\n        this.toolbarItems[this.toolbarItems.length - 1].focus();\n    }\n\n    private focusRight(index: number) {\n        this.toolbarItems[index + 1]?.focus();\n    }\n\n    private focusLeft(index: number) {\n        this.toolbarItems[index - 1]?.focus();\n        this.closeMenuIfOpened();\n    }\n\n    private closeMenuIfOpened() {\n        if (this.menu && this.menu?.popup?.isOpen) {\n            this.menu.popup.isOpen = false;\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Input,\n    NgZone,\n    OnDestroy,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport { merge, Subject, Subscription } from \"rxjs\";\nimport { debounceTime, take, takeUntil } from \"rxjs/operators\";\n\nimport {\n    IToolbarGroupContent,\n    IToolbarSelectionState,\n    ToolbarItemDisplayStyle,\n    ToolbarItemType,\n} from \"./public-api\";\nimport { ToolbarGroupComponent } from \"./toolbar-group.component\";\nimport { ToolbarItemComponent } from \"./toolbar-item.component\";\nimport { ToolbarKeyboardService } from \"./toolbar-keyboard.service\";\nimport { LoggerService } from \"../../services/log-service\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MenuComponent } from \"../menu\";\n\n/**\n * NUI wrapper for toolbar control. It groups toolbar items (nui-toolbar-item),\n * which can be aligned to the left or to the right side of the bar. Items are aligned to the left by default.\n * Use nui-toolbar-splitter to determine the place where the right alignment starts.\n * Use nui-toolbar-divider to display a vertical line between items.\n * <example-url>./../examples/index.html#/toolbar</example-url>\n */\n\n@Component({\n    selector: \"nui-toolbar\",\n    templateUrl: \"./toolbar.component.html\",\n    host: {\n        class: \"nui-toolbar nui-strip-layout nui-flex-container\",\n        role: \"toolbar\",\n    },\n    styleUrls: [\"./toolbar.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    providers: [ToolbarKeyboardService],\n    standalone: false,\n})\nexport class ToolbarComponent implements AfterViewInit, OnDestroy {\n    @ContentChildren(ToolbarGroupComponent)\n    public groups: QueryList<ToolbarGroupComponent>;\n\n    @ContentChildren(ToolbarItemComponent, { descendants: true })\n    public items: QueryList<ToolbarItemComponent>;\n\n    @Input()\n    /**\n     * selectionEnabled: boolean which allows to show selected section\n     */\n    @HostBinding(\"class.nui-toolbar--active\")\n    public selectionEnabled: boolean;\n    /**\n     * In selection mode allows to show current selected item and total of selected items\n     */\n    @Input() public selectedItems: IToolbarSelectionState;\n\n    @Input()\n    @HostBinding(\"class.nui-toolbar--shadowed\")\n    public boxShadow: boolean = true;\n\n    @ViewChild(\"toolbarContainer\")\n    public toolbarContainer: ElementRef;\n\n    @Input()\n    public noEmptyMessage: boolean = false;\n\n    /**\n     * Passed to the toolbar menu\n     */\n    @Input()\n    public appendToBody: boolean = false;\n\n    @ViewChild(\"menuComponent\") public menu: MenuComponent;\n\n    @ViewChildren(\"toolbarButtons\")\n    public toolbarButtons: QueryList<ButtonComponent>;\n\n    public commandGroups: IToolbarGroupContent[] = [];\n    public menuGroups: IToolbarGroupContent[] = [];\n    public showMenu = true;\n    public allItemsHidden = false;\n    public commandsTitle = $localize`Commands`;\n    public moreTitle = $localize`More`;\n\n    private lastChildBorder: number;\n    private toolbarItems: HTMLElement[] = [];\n    private childrenSubscription: Subscription;\n    private destructiveItems: any[];\n    private destroy$: Subject<void> = new Subject<void>();\n\n    constructor(\n        public element: ElementRef,\n        private changeDetector: ChangeDetectorRef,\n        private logger: LoggerService,\n        private ngZone: NgZone,\n        private keyboardService: ToolbarKeyboardService\n    ) {}\n\n    @HostListener(\"keydown\", [\"$event\"])\n    onKeyDown(event: KeyboardEvent): void {\n        this.keyboardService.onKeyDown(event);\n    }\n\n    public ngAfterViewInit(): void {\n        this.splitToolbarItems();\n        this.childrenSubscription = merge(\n            this.groups.changes,\n            this.items.changes\n        )\n            .pipe(debounceTime(20))\n            .subscribe(() => {\n                // timeout is needed for updating actual querylist. without it splitToolbarItems won't get new element in groups' arrays\n                setTimeout(() => {\n                    this.splitToolbarItems();\n                }, 0);\n            });\n        this.ngZone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(() => {\n                this.moveToolbarItems();\n            });\n        this.destructiveItems = [];\n        this.groups.forEach((group: ToolbarGroupComponent) => {\n            const isDestructiveItem = group.items.filter(\n                (item: ToolbarItemComponent) =>\n                    item.displayStyle === ToolbarItemDisplayStyle.destructive\n            );\n            if (isDestructiveItem.length) {\n                this.destructiveItems.push(isDestructiveItem);\n                if (\n                    (this.destructiveItems.length === 1 &&\n                        this.destructiveIsLastItem) ||\n                    this.destructiveItems.length > 1\n                ) {\n                    this.logger.error(\n                        \"Only one tool-bar-item with type destructive may be defined, and it must be the last item in last group\"\n                    );\n                }\n            }\n        });\n        this.subscribeToToolbarStepsChanges();\n    }\n\n    public ngOnDestroy(): void {\n        this.childrenSubscription.unsubscribe();\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    public onClickToolbarBtn(\n        event: MouseEvent,\n        commandItem: ToolbarItemComponent\n    ): void {\n        event.stopPropagation();\n        (event.target as HTMLButtonElement).focus();\n        commandItem.actionDone.emit();\n    }\n\n    public moveToolbarItems(): void {\n        this.makeAllItemsVisible();\n\n        const containerBorder = Math.floor(\n            this.toolbarContainer.nativeElement.getBoundingClientRect().right\n        );\n        this.lastChildBorder = Math.floor(\n            this.toolbarContainer.nativeElement.lastElementChild.getBoundingClientRect()\n                .right\n        );\n\n        while (\n            containerBorder < this.lastChildBorder &&\n            this.commandGroups.length > 0\n        ) {\n            this.commandGroups.forEach(\n                (\n                    group: IToolbarGroupContent,\n                    index: number,\n                    groups: IToolbarGroupContent[]\n                ) => {\n                    if (index === groups.length - 1) {\n                        group.items.forEach(\n                            (\n                                item: ToolbarItemComponent,\n                                index: number,\n                                items: ToolbarItemComponent[]\n                            ) => {\n                                if (index === items.length - 1) {\n                                    item.menuHidden = true;\n                                }\n                            }\n                        );\n                    }\n                }\n            );\n            this.splitToolbarItems();\n            this.lastChildBorder = Math.floor(\n                this.toolbarContainer.nativeElement.lastElementChild.getBoundingClientRect()\n                    .right\n            );\n        }\n    }\n\n    public splitToolbarItems(): void {\n        this.commandGroups = [];\n        this.menuGroups = [];\n        this.groups.forEach((group: ToolbarGroupComponent) => {\n            const commandGroupItems = group.items.filter(\n                (item) => !item.menuHidden\n            );\n            const menuGroupItems = group.items.filter(\n                (item) => !!item.menuHidden\n            );\n\n            if (commandGroupItems.length) {\n                this.commandGroups.push({ items: commandGroupItems });\n            }\n            if (menuGroupItems.length) {\n                this.menuGroups.push({\n                    items: menuGroupItems,\n                    title: group.title,\n                });\n            }\n        });\n        this.showMenu = this.menuGroups.length > 0;\n        this.allItemsHidden = this.commandGroups.length === 0;\n        this.changeDetector.detectChanges();\n    }\n\n    public makeAllItemsVisible(): void {\n        this.groups.forEach((group: ToolbarGroupComponent) => {\n            group.items.forEach((item: ToolbarItemComponent) => {\n                if (item.type === ToolbarItemType.primary) {\n                    item.menuHidden = false;\n                }\n            });\n        });\n        this.splitToolbarItems();\n    }\n\n    public handleSelectionState(): string {\n        if (this.selectionEnabled) {\n            if (!_isEmpty(this.selectedItems)) {\n                const itemSelected = $localize`${this.selectedItems.current} of ${this.selectedItems.total} selected`;\n                const allItemSelected = $localize`All ${this.selectedItems.total} selected`;\n                return this.selectedItems.current === this.selectedItems.total\n                    ? allItemSelected\n                    : itemSelected;\n            }\n        }\n        if (_isEmpty(this.selectedItems)) {\n            return \"\";\n        }\n        return this.selectedItems.current === this.selectedItems.total\n            ? $localize`All ${this.selectedItems.total} selected`\n            : $localize`${this.selectedItems.current} of ${this.selectedItems.total} selected`;\n    }\n\n    public get menuTitle(): string {\n        return this.allItemsHidden ? this.commandsTitle : this.moreTitle;\n    }\n\n    public get destructiveIsLastItem(): boolean {\n        return (\n            this.groups.last.items.last.displayStyle !==\n            ToolbarItemDisplayStyle.destructive\n        );\n    }\n\n    private subscribeToToolbarStepsChanges(): void {\n        this.toolbarButtons.changes\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((buttons: QueryList<ButtonComponent>) => {\n                this.toolbarItems = buttons\n                    .toArray()\n                    .slice()\n                    .map((b) => b[\"el\"].nativeElement as HTMLElement)\n                    .filter((el) => !!el);\n\n                if (this.menu) {\n                    // In case all buttons are hidden within the Commands menu we want this menu to receive the focus\n                    // If at least one button is visible in the toolbar it should receive the focus first upon navigating onto the toolbar\n                    const tabIndex = buttons.length ? \"-1\" : \"0\";\n\n                    this.menu.menuToggle.nativeElement.setAttribute(\n                        \"tabindex\",\n                        tabIndex\n                    );\n                    this.toolbarItems.push(this.menu.menuToggle.nativeElement);\n                }\n\n                this.keyboardService.setToolbarItems(\n                    this.toolbarItems,\n                    this.menu\n                );\n            });\n    }\n}\n","<div\n    class=\"nui-toolbar-content\"\n    nuiResizeObserver\n    (containerResize)=\"moveToolbarItems()\"\n    #toolbarContainer\n>\n    <div class=\"nui-toolbar-content__dynamic\">\n        <ng-template\n            ngFor\n            let-i=\"index\"\n            let-commandGroup\n            let-last=\"last\"\n            [ngForOf]=\"commandGroups\"\n        >\n            <ng-template\n                ngFor\n                let-commandItem\n                let-j=\"index\"\n                [ngForOf]=\"commandGroup.items\"\n            >\n                <!-- (!i && !j) is used for set focusable state to first element first group -->\n                <button\n                    nui-button\n                    type=\"button\"\n                    #toolbarButtons\n                    [tabindex]=\"!i && !j ? 0 : -1\"\n                    (click)=\"onClickToolbarBtn($event, commandItem)\"\n                    [displayStyle]=\"\n                        commandItem.displayStyle === 'main'\n                            ? 'primary'\n                            : commandItem.displayStyle\n                    \"\n                    [ngClass]=\"{\n                        'nui-toolbar-primary-item':\n                            commandItem.displayStyle === 'main'\n                    }\"\n                    [icon]=\"commandItem.icon\"\n                >\n                    <span>{{ commandItem.title }}</span>\n                </button>\n            </ng-template>\n            <nui-divider\n                *ngIf=\"!last || showMenu\"\n                isVertical=\"true\"\n                size=\"extra-small\"\n            ></nui-divider>\n        </ng-template>\n        <nui-menu\n            displayStyle=\"action\"\n            #menuComponent\n            [appendToBody]=\"appendToBody\"\n            [title]=\"menuTitle\"\n            *ngIf=\"showMenu\"\n        >\n            <ng-template ngFor let-menuGroup [ngForOf]=\"menuGroups\">\n                <nui-menu-group [header]=\"menuGroup.title\">\n                    <ng-template ngFor let-menuItem [ngForOf]=\"menuGroup.items\">\n                        <nui-menu-action\n                            [type]=\"\n                                menuItem.isDestructive\n                                    ? 'destructive'\n                                    : 'default'\n                            \"\n                            [icon]=\"menuItem.icon\"\n                            (click)=\"menuItem.actionDone.emit()\"\n                            >{{ menuItem.title }}\n                        </nui-menu-action>\n                    </ng-template>\n                </nui-menu-group>\n            </ng-template>\n        </nui-menu>\n        <ng-container>\n            <nui-toolbar-message\n                *ngIf=\"allItemsHidden && !showMenu && !noEmptyMessage\"\n            >\n                <ng-container *ngIf=\"selectionEnabled\" i18n\n                    >No actions available for this selection</ng-container\n                >\n                <ng-container *ngIf=\"!selectionEnabled\" i18n\n                    >No actions available</ng-container\n                >\n            </nui-toolbar-message>\n            <ng-content select=\"nui-toolbar-message\"></ng-content>\n        </ng-container>\n    </div>\n    <div class=\"nui-toolbar-content__embedded\">\n        <ng-container *ngIf=\"selectionEnabled\">\n            <div class=\"nui-toolbar-content__select\">\n                {{ handleSelectionState() }}\n            </div>\n        </ng-container>\n        <ng-content></ng-content>\n        <ng-content select=\".nui-toolbar-embedded\"></ng-content>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { ToolbarGroupComponent } from \"./toolbar-group.component\";\nimport { ToolbarItemComponent } from \"./toolbar-item.component\";\nimport { ToolbarMessageComponent } from \"./toolbar-message.component\";\nimport { ToolbarSplitterComponent } from \"./toolbar-splitter.component\";\nimport { ToolbarComponent } from \"./toolbar.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiDividerModule } from \"../divider/divider.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiMenuModule } from \"../menu/menu.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiIconModule,\n        NuiMenuModule,\n        NuiDividerModule,\n        NuiButtonModule,\n    ],\n    declarations: [\n        ToolbarComponent,\n        ToolbarItemComponent,\n        ToolbarMessageComponent,\n        ToolbarSplitterComponent,\n        ToolbarGroupComponent,\n    ],\n    exports: [\n        ToolbarComponent,\n        ToolbarItemComponent,\n        ToolbarMessageComponent,\n        ToolbarSplitterComponent,\n        ToolbarGroupComponent,\n    ],\n    providers: [],\n})\nexport class NuiToolbarModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { CustomValidationMessageComponent } from \"./custom-validation-message/custom-validation-message.component\";\nimport { ValidationMessageComponent } from \"./validation-message.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [NuiCommonModule, NuiIconModule],\n    declarations: [\n        ValidationMessageComponent,\n        CustomValidationMessageComponent,\n    ],\n    exports: [ValidationMessageComponent, CustomValidationMessageComponent],\n    providers: [],\n})\nexport class NuiValidationMessageModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n} from \"@angular/core\";\n\nimport { IWizardSelectionEvent, IWizardStepComponent } from \"./public-api\";\nimport { IBusyConfig } from \"../busy/public-api\";\n\n/**\n * Component that provides wizard step functionality.\n */\n@Component({\n    selector: \"nui-wizard-step\",\n    templateUrl: \"./wizard-step.component.html\",\n    standalone: false,\n})\nexport class WizardStepComponent\n    implements IWizardStepComponent, OnInit, OnChanges\n{\n    /**\n     * Template for step.\n     */\n    @Input() public stepTemplate: TemplateRef<any>;\n    /**\n     * Check is form inside step valid.\n     */\n    @Input() public stepControl?: boolean;\n\n    /**\n     * The title of the step.\n     */\n    @Input() public title: string;\n\n    /**\n     * A more compact form of the title (ex: \"EULA\").\n     */\n    @Input() public shortTitle?: string;\n\n    /**\n     * The description of the step.\n     */\n    @Input() public description?: string;\n\n    /**\n     * Default:'Next'. Text for the Next button.\n     */\n    @Input() public nextText: string;\n    /**\n     * Hide step\n     */\n    @Input() public hidden = false;\n    /**\n     * Disables step\n     */\n    @Input() public disabled?: boolean;\n    /**\n     * Evaluated when the step is entered.\n     */\n    @Output() public enter = new EventEmitter<IWizardSelectionEvent | void>();\n    /**\n     * Evaluated when validity of the step is changed.\n     */\n    @Output() public valid = new EventEmitter<boolean>();\n\n    /**\n     * Evaluated when the step is exited.\n     */\n    @Output() public exit = new EventEmitter<IWizardSelectionEvent | void>();\n    /**\n     * Evaluated when trying to go to the next step.\n     */\n    @Output() public next = new EventEmitter<IWizardSelectionEvent | void>();\n\n    /**\n     *\n     * Options for busy state. Default: no busy state, with clear empty busy component when set to true\n     */\n    public busyConfig: IBusyConfig = {\n        busy: false,\n    };\n\n    public visited = false;\n    public active = false;\n    public complete = false;\n    public icon = \"step\";\n    public iconColor = \"\";\n    public inputsList: string[] = [];\n\n    constructor() {}\n\n    public ngOnInit(): void {\n        this.nextText = this.nextText || $localize`Next`;\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (this.inputsList.length === 0) {\n            this.inputsList = Object.keys(changes);\n        }\n        if (changes[\"stepControl\"]) {\n            this.valid.emit(this.stepControl);\n        }\n    }\n\n    /**\n     * Set flags for step entering and emits enter event\n     */\n    public enterStep = (event?: IWizardSelectionEvent): void => {\n        this.enter.emit(event);\n    };\n\n    /**\n     * Set flags for step exiting and emits exit event\n     */\n    public exitStep = (event?: IWizardSelectionEvent): void => {\n        this.exit.emit(event);\n    };\n\n    public nextStep = (event?: IWizardSelectionEvent): void => {\n        this.next.emit(event);\n    };\n\n    public applyEnteringStep = (): void => {\n        this.active = true;\n        this.icon = \"step-active\";\n        this.iconColor = \"black\";\n    };\n\n    public applyExitingStep = (): void => {\n        this.active = false;\n        this.visited = true;\n        this.icon = \"step-complete\";\n        this.iconColor = \"\";\n    };\n}\n","<div\n    class=\"nui-wizard__step animated\"\n    [ngClass]=\"{ 'nui-wizard__step--active': active }\"\n    nui-busy\n    [busy]=\"busyConfig.busy\"\n>\n    <div>\n        <h2 class=\"nui-wizard__step-title\">{{ title }}</h2>\n        <ng-container *ngTemplateOutlet=\"stepTemplate\"></ng-container>\n    </div>\n    <nui-spinner\n        [percent]=\"busyConfig.percent\"\n        [allowCancel]=\"busyConfig.allowCancel\"\n        [message]=\"busyConfig.message\"\n    >\n    </nui-spinner>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport {\n    AfterContentInit,\n    AfterViewChecked,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n    ViewContainerRef,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport _find from \"lodash/find\";\nimport _findIndex from \"lodash/findIndex\";\nimport _isUndefined from \"lodash/isUndefined\";\nimport { BehaviorSubject } from \"rxjs\";\n\nimport {\n    IWizardSelectionEvent,\n    IWizardStepComponent,\n    IWizardWaitEvent,\n} from \"./public-api\";\nimport { WizardStepComponent } from \"./wizard-step.component\";\nimport { LoggerService } from \"../../services/log-service\";\n\n// <example-url>./../examples/index.html#/wizard</example-url>\n\n/**\n * Component that provides wizard functionality.\n */\n@Component({\n    selector: \"nui-wizard\",\n    templateUrl: \"./wizard.component.html\",\n    styleUrls: [\"./wizard.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class WizardComponent\n    implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy\n{\n    private static placeholderFinishText = \"Action\"; // as a placeholder \"Action\" does not need to be i18n\n\n    @ContentChildren(WizardStepComponent) steps: QueryList<WizardStepComponent>;\n    @ViewChildren(\"stepTitle\") stepTitles: QueryList<ElementRef>;\n    @ViewChild(\"container\", { read: ViewContainerRef }) dynamicStep: any;\n\n    /**\n     * Set to true to show the \"Finish\" button at any point during the wizard process.\n     *(default: false)\n     */\n    @Input() public canFinish = false;\n    /**\n     * Set to true to enable overflow in wizard body container.\n     */\n    @Input() public enableScroll: boolean = false;\n    /**\n     * Use this to set wizard body container height.\n     */\n    @Input() public bodyContainerHeight: string;\n    /**\n     * Overrides the default text on the finish step button.\n     *(default: 'Action')\n     */\n    @Input() public finishText = WizardComponent.placeholderFinishText;\n    /**\n     * Use this to stretch lines between step labels according to largest label width.\n     *(default: false)\n     */\n    @Input() public stretchStepLines: boolean = false;\n    /**\n     * Evaluated when a step is selected.\n     */\n    @Output() public selectionChange =\n        new EventEmitter<IWizardSelectionEvent>();\n    /**\n     * Evaluated when the user attempts to cancel the wizard.\n     */\n    @Output() public cancel = new EventEmitter<boolean>();\n    /**\n     * Evaluated when the user completes the wizard.\n     */\n    @Output() public finish = new EventEmitter();\n    /**\n     * Emits when next button is clicked.\n     */\n    @Output() public next = new EventEmitter();\n    /**\n     * Emits when Back button is clicked.\n     */\n    @Output() public back = new EventEmitter();\n\n    public currentStep?: WizardStepComponent;\n    public stepLineWidth: number = 65;\n    public navigationControl: BehaviorSubject<IWizardWaitEvent> =\n        new BehaviorSubject<IWizardWaitEvent>({\n            busyState: { busy: false },\n            allowStepChange: true,\n        });\n    private selectionEvent: IWizardSelectionEvent;\n    private stepIndex: number;\n    private previousStepIndex = 0;\n    private futureStep?: WizardStepComponent;\n\n    private arraySteps: any[];\n    private dynamicSubscriptions = new Map();\n    private dynamicRefs = new Map();\n\n    constructor(\n        private changeDetector: ChangeDetectorRef,\n        private viewContainerRef: ViewContainerRef,\n        private logger: LoggerService\n    ) {}\n\n    public ngOnInit(): void {\n        if (this.finishText === WizardComponent.placeholderFinishText) {\n            this.logger\n                .warn(`WizardComponent input \"finishText\" is using placeholder text\n\"${WizardComponent.placeholderFinishText}\". A value should be specified.`);\n        }\n    }\n\n    public ngAfterContentInit(): void {\n        const activeTabs = this.steps.filter((item) => item.active);\n        this.arraySteps = this.steps.toArray();\n        if (activeTabs.length === 0) {\n            this.currentStep = this.steps.first;\n            this.selectStep(this.currentStep);\n            this.changeDetector.detectChanges();\n        }\n        this.steps.toArray().forEach((step: WizardStepComponent) => {\n            step.valid.subscribe((event: any) => {\n                if (!_isUndefined(event)) {\n                    this.handleStepControl(step);\n                }\n            });\n        });\n        this.navigationControl.subscribe((value) => {\n            if (this.currentStep) {\n                this.currentStep.busyConfig = value.busyState;\n            }\n            if (\n                value.allowStepChange &&\n                !_isUndefined(this.futureStep) &&\n                this.currentStep !== this.futureStep\n            ) {\n                this.enterAnotherStep();\n                this.futureStep = undefined;\n            }\n        });\n    }\n\n    public ngAfterViewChecked(): void {\n        if (this.stretchStepLines) {\n            this.stepLineWidth = Math.round(this.getLargestLabelWidth() / 2);\n            this.changeDetector.detectChanges();\n        }\n    }\n\n    public ngOnDestroy(): void {\n        this.steps\n            .toArray()\n            .forEach((step: WizardStepComponent) => step.valid.unsubscribe());\n        this.navigationControl.unsubscribe();\n    }\n\n    public addStepDynamic(\n        wizardStep: IWizardStepComponent,\n        indexToInsert: number\n    ): IWizardStepComponent {\n        const componentRef = this.dynamicStep.createComponent(WizardStepComponent);\n        const instance: IWizardStepComponent = componentRef.instance;\n        const wizardStepInputs = this.getInputsAndOutputs(wizardStep);\n\n        wizardStepInputs.forEach((key) => {\n            instance[key] = wizardStep[key];\n        });\n        this.handleStepControl(componentRef.instance);\n\n        const subscription = instance.valid?.subscribe((event: any) => {\n            if (!_isUndefined(event)) {\n                instance.stepControl = wizardStep.stepControl;\n                this.handleStepControl(componentRef.instance);\n            }\n        });\n\n        this.dynamicRefs.set(instance, componentRef);\n        this.dynamicSubscriptions.set(instance, subscription);\n        this.arraySteps.splice(indexToInsert, 0, componentRef.instance);\n        this.steps.reset([]);\n        this.steps.reset(this.arraySteps);\n        return componentRef.instance;\n    }\n\n    public removeStep(index: number): void {\n        const steps = this.steps.toArray();\n\n        if (index < 1 || index > steps.length - 1) {\n            return;\n        }\n\n        const stepToRemove = steps[index];\n\n        if (this.currentStep === stepToRemove) {\n            this.onBackClick();\n        }\n\n        this.onRemoveDynamic(stepToRemove);\n        this.arraySteps.splice(index, 1);\n        this.steps.reset([]);\n        this.steps.reset(this.arraySteps);\n        this.stepIndex = this.steps\n            .toArray()\n            .findIndex((s) => s === this.currentStep);\n    }\n\n    public disableStep(step: WizardStepComponent): void {\n        const indexOfStep = this.arraySteps.indexOf(step);\n        const toDisable = this.arraySteps[indexOfStep];\n        toDisable.disabled = true;\n        this.changeDetector.detectChanges();\n    }\n\n    public enableStep(step: WizardStepComponent): void {\n        const indexOfStep = this.arraySteps.indexOf(step);\n        const toDisable = this.arraySteps[indexOfStep];\n        toDisable.disabled = false;\n        this.changeDetector.detectChanges();\n    }\n\n    public hideStep(step: WizardStepComponent): void {\n        const indexOfStep = this.arraySteps.indexOf(step);\n        const toHide = this.arraySteps[indexOfStep];\n        toHide.hidden = true;\n    }\n\n    public showStep(step: WizardStepComponent): void {\n        const indexOfStep = this.arraySteps.indexOf(step);\n        const visibleStep = this.arraySteps[indexOfStep];\n        visibleStep.hidden = false;\n    }\n\n    public resetStep(step: WizardStepComponent): void {\n        let index = this.arraySteps.findIndex((s) => s === step);\n        const length = this.arraySteps.length;\n\n        for (index; index < length; index++) {\n            const stepToReset = this.arraySteps[index];\n\n            stepToReset.visited = false;\n            stepToReset.complete = false;\n            stepToReset.icon = \"step\";\n        }\n\n        if (this.currentStep) {\n            this.currentStep.complete = false;\n        }\n    }\n\n    public goToStep(stepIndex: number): void {\n        this.selectStep(this.arraySteps[stepIndex]);\n    }\n\n    public selectStep(step: WizardStepComponent): void {\n        if (!step.disabled) {\n            this.futureStep = step;\n            this.currentStep?.exitStep({\n                selectedIndex: this.arraySteps.indexOf(this.futureStep),\n                selectedStep: this.futureStep,\n                previouslySelectedStep: this.arraySteps[this.stepIndex],\n                previouslySelectedIndex: this.stepIndex,\n            });\n            if (this.navigationControl.value.allowStepChange) {\n                this.enterAnotherStep();\n            }\n        }\n    }\n\n    public onBackClick(): void {\n        if (!_isUndefined(this.stepIndex)) {\n            let previousStep = this.arraySteps[this.stepIndex - 1];\n            if (previousStep.hidden || previousStep.disabled) {\n                previousStep = _find(\n                    this.arraySteps.slice(0).reverse(),\n                    (step) => !step.hidden,\n                    _findIndex(\n                        this.arraySteps.slice(0).reverse(),\n                        this.arraySteps[this.stepIndex]\n                    ) + 1\n                );\n            }\n            this.selectStep(previousStep);\n            this.back.emit();\n        }\n    }\n\n    public onNextClick(): void {\n        let nextStep = this.arraySteps[this.stepIndex + 1];\n        this.handleStepControl(this.currentStep);\n        this.currentStep?.nextStep({\n            selectedIndex: this.stepIndex,\n            selectedStep: this.currentStep,\n            previouslySelectedStep: this.currentStep,\n            previouslySelectedIndex: this.stepIndex,\n        });\n        if (\n            nextStep.hidden ||\n            (nextStep.disabled && !_isUndefined(nextStep.stepControl))\n        ) {\n            // this disabled does not let user to go forward when next is disabled. Needs to be changed after validation\n            nextStep = _find(\n                this.arraySteps,\n                (step) => !step.hidden,\n                this.stepIndex + 1\n            );\n        }\n        if (this.currentStep) {\n            if (\n                _isUndefined(this.currentStep?.stepControl) ||\n                this.currentStep?.stepControl\n            ) {\n                this.currentStep.complete = true;\n            }\n            if (nextStep.disabled && !nextStep.visited) {\n                this.currentStep.complete = false;\n            }\n        }\n        this.selectStep(nextStep);\n        this.next.emit();\n    }\n\n    public onFinishClick(): void {\n        this.finish.emit();\n    }\n\n    public onCancelClick(): void {\n        this.cancel.emit(\n            this.steps.toArray().filter((step) => step.complete).length !== 0\n        );\n    }\n\n    public enterAnotherStep(): void {\n        this.currentStep?.applyExitingStep();\n        this.futureStep?.enterStep();\n        this.currentStep = this.futureStep;\n        this.currentStep?.applyEnteringStep();\n        this.stepIndex = this.arraySteps.indexOf(this.currentStep);\n        this.selectionEvent = {\n            selectedIndex: this.stepIndex,\n            selectedStep: this.currentStep,\n            previouslySelectedStep: this.arraySteps[this.previousStepIndex],\n            previouslySelectedIndex: this.previousStepIndex,\n        };\n        this.selectionChange.emit(this.selectionEvent);\n        this.previousStepIndex = this.stepIndex;\n    }\n\n    private disableFollowingSteps(): void {\n        this.arraySteps.slice(this.stepIndex + 1).map((item) => {\n            item.disabled = true;\n        });\n    }\n\n    private enableFollowingSteps(): void {\n        this.arraySteps.slice(this.stepIndex + 1).map((item) => {\n            item.disabled = false;\n        });\n    }\n\n    private getInputsAndOutputs(compType: IWizardStepComponent): string[] {\n        const inputs = compType.inputsList;\n        const outputs = Object.keys(compType).filter(\n            (key) => compType[key] instanceof EventEmitter\n        );\n        return [...inputs, ...outputs];\n    }\n\n    private handleStepControl(step?: WizardStepComponent) {\n        if (!_isUndefined(step?.stepControl)) {\n            if (step?.stepControl) {\n                this.enableFollowingSteps();\n            } else {\n                this.disableFollowingSteps();\n            }\n        }\n    }\n\n    private getLargestLabelWidth() {\n        const widths = this.stepTitles.map(\n            (title) => title.nativeElement.offsetWidth\n        );\n\n        return Math.round(Math.max(...widths));\n    }\n\n    private onRemoveDynamic(step: WizardStepComponent): void {\n        const dynamicSubscription = this.dynamicSubscriptions.get(step);\n        const ref = this.dynamicRefs.get(step);\n\n        if (ref) {\n            ref.destroy();\n        }\n\n        if (dynamicSubscription) {\n            dynamicSubscription.unsubscribe();\n        }\n    }\n}\n","<div class=\"nui-wizard\">\n    <div\n        class=\"nui-wizard__header\"\n        [class.nui-wizard__header--lines-stretched]=\"stretchStepLines\"\n    >\n        <ul class=\"nui-wizard__header-steps\" *ngIf=\"steps\">\n            <li\n                *ngFor=\"let step of steps; let first = first; let last = last\"\n                (click)=\"selectStep(step)\"\n                [ngClass]=\"{\n                    'nui-wizard__header-step--first': first,\n                    'nui-wizard__header-step--last': last,\n                    'nui-wizard__header-step--visited': step.visited,\n                    'nui-wizard__header-step--disabled':\n                        step.disabled ||\n                        !step.visited ||\n                        currentStep?.busyConfig.busy,\n                    'nui-wizard__header-step--active': step.active,\n                    'nui-wizard__header-step--complete': step.complete\n                }\"\n                class=\"nui-wizard__header-step\"\n            >\n                <div\n                    class=\"nui-wizard__header-step-container\"\n                    *ngIf=\"!step.hidden\"\n                >\n                    <div class=\"nui-wizard__header-step-row\">\n                        <div class=\"nui-wizard__header-step-col\">\n                            <div class=\"nui-wizard__header-step-content\">\n                                <span class=\"nui-wizard__header-step-link\">\n                                    <span\n                                        class=\"nui-wizard__header-step-title\"\n                                        #stepTitle\n                                    >\n                                        {{\n                                            step.shortTitle || step.title\n                                        }}</span\n                                    >\n                                    <div\n                                        class=\"nui-wizard__header-step-link-container\"\n                                    >\n                                        <div\n                                            class=\"nui-wizard__header-step-col nui-wizard__header-step-col-right\"\n                                        >\n                                            <div\n                                                class=\"nui-wizard__header-step-line\"\n                                                [ngStyle]=\"{\n                                                    'min-width.px':\n                                                        stepLineWidth\n                                                }\"\n                                            ></div>\n                                        </div>\n                                        <nui-icon\n                                            [icon]=\"step.icon\"\n                                            [iconColor]=\"step.iconColor\"\n                                        ></nui-icon>\n                                        <div\n                                            class=\"nui-wizard__header-step-col nui-wizard__header-step-col-left\"\n                                        >\n                                            <div\n                                                class=\"nui-wizard__header-step-line\"\n                                                [ngStyle]=\"{\n                                                    'min-width.px':\n                                                        stepLineWidth\n                                                }\"\n                                            ></div>\n                                        </div>\n                                    </div>\n                                </span>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </li>\n        </ul>\n    </div>\n    <div\n        class=\"nui-wizard__container\"\n        [class.show-scroll]=\"enableScroll\"\n        [style.height]=\"bodyContainerHeight\"\n    >\n        <ng-content></ng-content>\n        <ng-template #container></ng-template>\n    </div>\n    <div class=\"nui-wizard__footer\">\n        <button\n            nui-button\n            type=\"button\"\n            (click)=\"onCancelClick()\"\n            class=\"nui-wizard__cancel-button\"\n        >\n            <span i18n>Cancel</span>\n        </button>\n        <ng-content select=\"[nui-button]\"></ng-content>\n        <button\n            *ngIf=\"!steps.first.active\"\n            nui-button\n            type=\"button\"\n            class=\"nui-wizard__back-button\"\n            [isBusy]=\"currentStep?.busyConfig?.busy\"\n            [icon]=\"'caret-left'\"\n            (click)=\"onBackClick()\"\n        >\n            <span i18n>Back</span>\n        </button>\n        <button\n            *ngIf=\"!steps.last.active\"\n            nui-button\n            type=\"button\"\n            class=\"nui-wizard__next-button\"\n            [isBusy]=\"currentStep?.busyConfig?.busy\"\n            [displayStyle]=\"'primary'\"\n            [icon]=\"'caret-right'\"\n            [iconRight]=\"true\"\n            (click)=\"onNextClick()\"\n        >\n            <span>{{ currentStep?.nextText }}</span>\n        </button>\n        <button\n            *ngIf=\"canFinish || steps.last.active\"\n            nui-button\n            type=\"button\"\n            class=\"nui-wizard__finish-button\"\n            [displayStyle]=\"'primary'\"\n            (click)=\"onFinishClick()\"\n        >\n            <span>{{ finishText }}</span>\n        </button>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { NgModule } from \"@angular/core\";\n\nimport { WizardStepComponent } from \"./wizard-step.component\";\nimport { WizardComponent } from \"./wizard.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiBusyModule } from \"../busy/busy.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiSpinnerModule } from \"../spinner/spinner.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        NuiCommonModule,\n        NuiButtonModule,\n        NuiBusyModule,\n        NuiIconModule,\n        NuiSpinnerModule,\n    ],\n    declarations: [WizardComponent, WizardStepComponent],\n    exports: [WizardComponent, WizardStepComponent],\n    providers: [],\n})\nexport class NuiWizardModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, Inject, Input } from \"@angular/core\";\n\nimport { IToastService } from \"../../toast/public-api\";\nimport { ToastService } from \"../../toast/toast.service\";\n\n/** @ignore */\n@Component({\n    templateUrl: \"./copy-text.component.html\",\n    selector: \"nui-copy-text\",\n    styleUrls: [\"./copy-text.component.less\"],\n    standalone: false,\n})\nexport class CopyTextComponent {\n    // file to which the copy applies\n    @Input()\n    public fileContent: string;\n    public copyTooltip = $localize`copy snippet to clipboard`;\n\n    constructor(@Inject(ToastService) private toastService: IToastService) {}\n\n    public onSnippetCopied(): void {\n        this.toastService.info({\n            message: $localize`Code snippet copied to clipboard`,\n            options: {\n                timeOut: 2000,\n                extendedTimeOut: 1000,\n            },\n        });\n    }\n}\n","<div class=\"nui-copy-text__overlay\">\n    <button\n        nui-button\n        type=\"button\"\n        [nuiTooltip]=\"copyTooltip\"\n        icon=\"copy\"\n        iconColor=\"primary-blue\"\n        (clipboardSuccess)=\"onSnippetCopied()\"\n        nuiClipboard=\"{{ fileContent }}\"\n    ></button>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nimport {\n    Component,\n    Input,\n    ViewEncapsulation,\n} from \"@angular/core\";\nimport hljs from \"highlight.js\";\n\n/**\n * <example-url>./../examples/index.html#/code</example-url><br />\n */\n\n/**\n * @ignore\n * Purpose of this component is to format and colorize your source code snippets.\n * Optionally you can\n * specify a programming language to be used for highlighting, otherwise an automated detection will be used. This\n * directive is encapsulating Highlight.js library.\n *\n * Consumer needs to set up languages which need to be supported. It must happen before CodeComponent is rendered.\n * The best place is parent page/component's onInit() or in app initializer\n * example:\n *\n * import hljs from \"highlight.js\";\n *\n * where \"highlight.js\" should be used as alias to regular \"highlight.js/lib/core.js\"\n * to avoid loading all languages. And then just load what you really need, e.g. typescript\n *\n *\n * __Name:__\n *\n * NUI Code component.\n *\n * __Usage:__\n *\n * ```html\n * <nui-example-code [code]=[code]><nui-example-code>\n * ```\n *\n */\n@Component({\n    selector: \"nui-example-code\",\n    templateUrl: \"./example-code.component.html\",\n    styleUrls: [\"./example-code.component.less\"],\n    encapsulation: ViewEncapsulation.None,\n    standalone: false,\n})\nexport class ExampleCodeComponent {\n    /**\n     * Programming language used (auto-detect if not present) - see\n     * https://highlightjs.org/static/demo/ for possible values\n     */\n    @Input() public language: string = \"typescript\";\n\n    public codeText = \"\";\n    @Input() set code(c: string) {\n        const code = c.trim();\n        if (!code) {\n            return;\n        }\n        this.codeText = hljs.highlight(code, { language: this.language }).value;\n    }\n}\n","<div class=\"hljs nui-example-code\" [innerHTML]=\"codeText\"></div>\n","export const ANGULAR_JSON = `{\n    \"version\": 1,\n    \"newProjectRoot\": \"projects\",\n    \"projects\": {\n        \"demo\": {\n            \"root\": \"\",\n            \"sourceRoot\": \"src\",\n            \"projectType\": \"application\",\n            \"prefix\": \"app\",\n            \"schematics\": {},\n            \"architect\": {\n                \"build\": {\n                    \"builder\": \"@angular-devkit/build-angular:browser\",\n                    \"options\": {\n                        \"outputPath\": \"dist/demo\",\n                        \"index\": \"src/index.html\",\n                        \"main\": \"src/main.ts\",\n                        \"polyfills\": \"src/polyfills.ts\",\n                        \"tsConfig\": \"tsconfig.json\",\n                        \"assets\": [],\n                        \"styles\": [\n                            \"src/styles.less\",\n                            \"./node_modules/@nova-ui/bits/bundles/css/styles.css\",\n                            \"./node_modules/@nova-ui/charts/bundles/css/styles.css\"\n                        ],\n                        \"scripts\": []\n                    },\n                    \"configurations\": {\n                        \"production\": {\n                            \"fileReplacements\": [\n                                {}\n                            ],\n                            \"optimization\": true,\n                            \"outputHashing\": \"all\",\n                            \"sourceMap\": false,\n                            \"extractCss\": true,\n                            \"namedChunks\": false,\n                            \"aot\": true,\n                            \"extractLicenses\": true,\n                            \"vendorChunk\": false,\n                            \"buildOptimizer\": true\n                        }\n                    }\n                },\n                \"serve\": {\n                    \"builder\": \"@angular-devkit/build-angular:dev-server\",\n                    \"options\": {\n                        \"browserTarget\": \"demo:build\"\n                    },\n                    \"configurations\": {\n                        \"production\": {\n                            \"browserTarget\": \"demo:build:production\"\n                        }\n                    }\n                },\n                \"extract-i18n\": {\n                    \"builder\": \"@angular-devkit/build-angular:extract-i18n\",\n                    \"options\": {\n                        \"browserTarget\": \"demo:build\"\n                    }\n                },\n                \"test\": {\n                    \"builder\": \"@angular-devkit/build-angular:karma\",\n                    \"options\": {\n                        \"polyfills\": \"src/polyfills.ts\",\n                        \"tsConfig\": \"tsconfig.json\",\n                        \"styles\": [],\n                        \"scripts\": [],\n                        \"assets\": []\n                    }\n                },\n                \"lint\": {\n                    \"builder\": \"@angular-devkit/build-angular:tslint\",\n                    \"options\": {\n                        \"tsConfig\": [\n                            \"tsconfig.json\"\n                        ],\n                        \"exclude\": [\n                            \"**/node_modules/**\"\n                        ]\n                    }\n                }\n            }\n        }\n    },\n    \"defaultProject\": \"demo\"\n}`;\n","export const APP_COMPONENT = `import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"nui-example-app\",\n    template: \"<router-outlet></router-outlet>\"\n})\nexport class AppComponent {};`;\n","export const APP_MODULE = (\n    filenamePrefix: string,\n    context: string,\n    imports: string,\n    mainComponentName: string,\n    componentNames: string,\n    customRoutes: boolean,\n    chartsImport?: boolean,\n    dashboardsImport?: boolean\n): string =>\n    `import { BrowserModule } from \"@angular/platform-browser\";\\n` +\n    \"import { BrowserAnimationsModule } from '@angular/platform-browser/animations';\\n\" +\n    \"import { FormsModule, ReactiveFormsModule } from '@angular/forms';\\n\" +\n    \"import { HttpClientModule } from '@angular/common/http';\\n\" +\n    `import { NgModule, TRANSLATIONS, TRANSLATIONS_FORMAT } from \"@angular/core\";\\n` +\n    `import { RouterModule } from \"@angular/router\";\\n` +\n    `import { AppComponent } from \"./app.component\";\\n` +\n    `${customRoutes ? `import { ROUTES } from \"./routes\";` : \"\"}\\n` +\n    \"import {\\n\" +\n    \"    NuiButtonModule,\\n\" +\n    \"    NuiCheckboxModule,\\n\" +\n    \"    NuiCommonModule,\\n\" +\n    \"    NuiDividerModule,\\n\" +\n    \"    NuiIconModule,\\n\" +\n    \"    NuiMessageModule,\\n\" +\n    \"    NuiImageModule,\\n\" +\n    \"    NuiMenuModule,\\n\" +\n    \"    NuiPopupModule,\\n\" +\n    \"    NuiSwitchModule,\\n\" +\n    \"    NuiSelectModule,\\n\" +\n    \"    NuiSelectV2Module,\\n\" +\n    \"    NuiSpinnerModule,\\n\" +\n    \"    NuiTabsModule,\\n\" +\n    \"    NuiTextboxModule,\\n\" +\n    \"    NuiTooltipModule,\\n\" +\n    \"    NuiLayoutModule,\\n\" +\n    \"    NuiOverlayModule,\\n\" +\n    \"    NuiOverlayAdditionsModule,\\n\" +\n    \"    NuiBreadcrumbModule,\\n\" +\n    \"    NuiBusyModule,\\n\" +\n    \"    NuiChipsModule,\\n\" +\n    \"    NuiColorPickerModule,\\n\" +\n    \"    NuiContentModule,\\n\" +\n    \"    NuiDatePickerModule,\\n\" +\n    \"    NuiDateTimePickerModule,\\n\" +\n    \"    NuiDialogModule,\\n\" +\n    \"    NuiExpanderModule,\\n\" +\n    \"    NuiFormFieldModule,\\n\" +\n    \"    NuiPaginatorModule,\\n\" +\n    \"    NuiPanelModule,\\n\" +\n    \"    NuiPopoverModule,\\n\" +\n    \"    NuiProgressModule,\\n\" +\n    \"    NuiRadioModule,\\n\" +\n    \"    NuiRepeatModule,\\n\" +\n    \"    NuiSearchModule,\\n\" +\n    \"    NuiSelectorModule,\\n\" +\n    \"    NuiSorterModule,\\n\" +\n    \"    NuiTableModule,\\n\" +\n    \"    NuiTimeFrameBarModule,\\n\" +\n    \"    NuiTimeFramePickerModule,\\n\" +\n    \"    NuiTimePickerModule,\\n\" +\n    \"    NuiToastModule,\\n\" +\n    \"    NuiToolbarModule,\\n\" +\n    \"    NuiValidationMessageModule,\\n\" +\n    \"    NuiWizardModule,\\n\" +\n    \"    NuiWizardV2Module,\\n\" +\n    \"} from '@nova-ui/bits';\\n\" +\n    `${\n        chartsImport\n            ? `import { NuiChartsModule } from \"@nova-ui/charts\";\\n`\n            : \"\"\n    }` +\n    \"\\n\" +\n    `${\n        dashboardsImport\n            ? `import { NuiDashboardsModule } from \"@nova-ui/dashboards\";\\n`\n            : \"\"\n    }` +\n    \"\\n\" +\n    `${imports}\\n` +\n    \"\\n\" +\n    \"@NgModule({\\n\" +\n    `    declarations: [AppComponent, ${componentNames}],\\n` +\n    \"    imports: [\\n\" +\n    \"        BrowserModule,\\n\" +\n    \"        BrowserModule,\\n\" +\n    \"        BrowserAnimationsModule,\\n\" +\n    \"        FormsModule,\\n\" +\n    \"        ReactiveFormsModule,\\n\" +\n    \"        HttpClientModule,\\n\" +\n    \"        NuiButtonModule,\\n\" +\n    \"        NuiCheckboxModule,\\n\" +\n    \"        NuiCommonModule,\\n\" +\n    \"        NuiDividerModule,\\n\" +\n    \"        NuiIconModule,\\n\" +\n    \"        NuiMessageModule,\\n\" +\n    \"        NuiImageModule,\\n\" +\n    \"        NuiMenuModule,\\n\" +\n    \"        NuiPopupModule,\\n\" +\n    \"        NuiSwitchModule,\\n\" +\n    \"        NuiSelectModule,\\n\" +\n    \"        NuiSelectV2Module,\\n\" +\n    \"        NuiSpinnerModule,\\n\" +\n    \"        NuiTabsModule,\\n\" +\n    \"        NuiTextboxModule,\\n\" +\n    \"        NuiTooltipModule,\\n\" +\n    \"        NuiLayoutModule,\\n\" +\n    \"        NuiOverlayModule,\\n\" +\n    \"        NuiOverlayAdditionsModule,\\n\" +\n    \"        NuiBreadcrumbModule,\\n\" +\n    \"        NuiBusyModule,\\n\" +\n    \"        NuiChipsModule,\\n\" +\n    \"        NuiColorPickerModule,\\n\" +\n    \"        NuiContentModule,\\n\" +\n    \"        NuiDatePickerModule,\\n\" +\n    \"        NuiDateTimePickerModule,\\n\" +\n    \"        NuiDialogModule,\\n\" +\n    \"        NuiExpanderModule,\\n\" +\n    \"        NuiFormFieldModule,\\n\" +\n    \"        NuiPaginatorModule,\\n\" +\n    \"        NuiPanelModule,\\n\" +\n    \"        NuiPopoverModule,\\n\" +\n    \"        NuiProgressModule,\\n\" +\n    \"        NuiRadioModule,\\n\" +\n    \"        NuiRepeatModule,\\n\" +\n    \"        NuiSearchModule,\\n\" +\n    \"        NuiSelectorModule,\\n\" +\n    \"        NuiSorterModule,\\n\" +\n    \"        NuiTableModule,\\n\" +\n    \"        NuiTimeFrameBarModule,\\n\" +\n    \"        NuiTimeFramePickerModule,\\n\" +\n    \"        NuiTimePickerModule,\\n\" +\n    \"        NuiToastModule,\\n\" +\n    \"        NuiToolbarModule,\\n\" +\n    \"        NuiValidationMessageModule,\\n\" +\n    \"        NuiWizardModule,\\n\" +\n    \"        NuiWizardV2Module,\\n\" +\n    `${chartsImport ? \"        NuiChartsModule,\" : \"\"}` +\n    `${dashboardsImport ? \"        NuiDashboardsModule,\" : \"\"}` +\n    `        RouterModule.forRoot(${\n        customRoutes\n            ? getCustomRoute(context)\n            : getDefaultRoute(context, mainComponentName)\n    })\\n` +\n    \"    ],\\n\" +\n    \"    bootstrap: [AppComponent]\\n\" +\n    \"})\\n\" +\n    \"export class AppModule {}\\n\";\n\nconst getDefaultRoute = (context: string, mainComponentName: string): string =>\n    `[{path: \"\", redirectTo: \"${context}\",pathMatch: \"full\"},\\n` +\n    `{path: \"${context}\", component: ${mainComponentName} }]`;\n\nconst getCustomRoute = (context: string): string =>\n    `[{path: \"\", redirectTo: \"${context}\",pathMatch: \"full\"},\\n` +\n    `{path: \"${context}\", children: ROUTES }]`;\n","export const INDEX = `\n<!DOCTYPE html>\n<html class=\"nui nui-demo\" lang=\"en\">\n<head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"/>\n    <meta name=\"description\" />\n    <meta name=\"keywords\" />\n    <title>Nova Nui</title>\n</head>\n<body>\n    <nui-example-app></nui-example-app>\n</body>\n</html>`;\n","export const MAIN = `import \"./polyfills\";\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\n\nimport { AppModule } from \"./app/app.module\";\n\nplatformBrowserDynamic()\n    .bootstrapModule(AppModule)\n    .catch(err => console.log(err));`;\n","export const PACKAGE_JSON = {\n    name: \"nova-example-app\",\n    version: \"0.0.0\",\n    dependencies: {\n        \"@angular/animations\": \"\",\n        \"@angular/cdk\": \"\",\n        \"@angular/common\": \"\",\n        \"@angular/compiler\": \"\",\n        \"@angular/core\": \"\",\n        \"@angular/forms\": \"\",\n        \"@angular/localize\": \"\",\n        \"@angular/platform-browser\": \"\",\n        \"@angular/platform-browser-dynamic\": \"\",\n        \"@angular/router\": \"\",\n        \"@nova-ui/bits\": \"\",\n        \"@nova-ui/charts\": \"\",\n        \"@nova-ui/dashboards\": \"\",\n        \"core-js\": \"\",\n        \"highlight.js\": \"\",\n        lodash: \"\",\n        moment: \"\",\n        rxjs: \"\",\n        tslib: \"\",\n        \"zone.js\": \"\",\n    },\n    devDependencies: {\n        \"@angular-devkit/build-angular\": \"\",\n        \"@angular/cli\": \"\",\n        \"@angular/compiler-cli\": \"\",\n        \"@types/node\": \"\",\n        typescript: \"\",\n    },\n};\n","export const POLYFILLS =\n    \"/**\\n\" +\n    \" * This file includes polyfills needed by Angular and is loaded before the app.\\n\" +\n    \" * You can add your own extra polyfills to this file.\\n\" +\n    \" *\\n\" +\n    \" * This file is divided into 2 sections:\\n\" +\n    \" *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.\\n\" +\n    \" *   2. Application imports. Files imported after ZoneJS that should be loaded before your main\\n\" +\n    \" *      file.\\n\" +\n    \" *\\n\" +\n    ` * The current setup is for so-called \"evergreen\" browsers; the last versions of browsers that\\n` +\n    \" * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),\\n\" +\n    \" * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.\\n\" +\n    \" *\\n\" +\n    \" * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html\\n\" +\n    \" */\\n\" +\n    \"\\n\" +\n    \"/***************************************************************************************************\\n\" +\n    \" * BROWSER POLYFILLS\\n\" +\n    \" */\\n\" +\n    \"\\n\" +\n    \"/** IE9, IE10 and IE11 requires all of the following polyfills. **/\\n\" +\n    \"// import 'core-js/es6/symbol';\\n\" +\n    \"// import 'core-js/es6/object';\\n\" +\n    \"// import 'core-js/es6/function';\\n\" +\n    \"// import 'core-js/es6/parse-int';\\n\" +\n    \"// import 'core-js/es6/parse-float';\\n\" +\n    \"// import 'core-js/es6/number';\\n\" +\n    \"// import 'core-js/es6/math';\\n\" +\n    \"// import 'core-js/es6/string';\\n\" +\n    \"// import 'core-js/es6/date';\\n\" +\n    \"// import 'core-js/es6/array';\\n\" +\n    \"// import 'core-js/es6/regexp';\\n\" +\n    \"// import 'core-js/es6/map';\\n\" +\n    \"// import 'core-js/es6/weak-map';\\n\" +\n    \"// import 'core-js/es6/set';\\n\" +\n    \"\\n\" +\n    \"/** IE10 and IE11 requires the following for NgClass support on SVG elements */\\n\" +\n    \"// import 'classlist.js';  // Run `npm install --save classlist.js`.\\n\" +\n    \"\\n\" +\n    \"/** IE10 and IE11 requires the following for the Reflect API. */\\n\" +\n    \"// import 'core-js/es6/reflect';\\n\" +\n    \"\\n\" +\n    \"/** Evergreen browsers require these. **/\\n\" +\n    \"// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.\\n\" +\n    `import \"core-js/proposals/reflect-metadata\";\\n` +\n    \"\\n\" +\n    \"/**\\n\" +\n    \" * Required to support Web Animations `@angular/platform-browser/animations`.\\n\" +\n    \" * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation\\n\" +\n    \" **/\\n\" +\n    \"// import 'web-animations-js';  // Run `npm install --save web-animations-js`.\\n\" +\n    \"\\n\" +\n    \"/***************************************************************************************************\\n\" +\n    \" * Zone JS is required by default for Angular itself.\\n\" +\n    \" */\\n\" +\n    `import \"zone.js\"; // Included with Angular CLI.\\n` +\n    \"\\n\" +\n    \"/***************************************************************************************************\\n\" +\n    \" * APPLICATION IMPORTS\\n\" +\n    \" */\\n\" +\n    \"\\n\" +\n    \"\\n\" +\n    \"/***************************************************************************************************\\n\" +\n    \" * APPLICATION IMPORTS\\n\" +\n    \" */\\n\" +\n    `import \"@angular/localize/init\";\\n`;\n","export const TSCONFIG_JSON = `{\n    \"compileOnSave\": false,\n    \"compilerOptions\": {\n        \"baseUrl\": \"./\",\n        \"outDir\": \"./dist/out-tsc\",\n        \"sourceMap\": true,\n        \"declaration\": false,\n        \"downlevelIteration\": true,\n        \"experimentalDecorators\": true,\n        \"esModuleInterop\": true,\n        \"moduleResolution\": \"node\",\n        \"importHelpers\": true,\n        \"target\": \"es2020\",\n        \"module\": \"es2020\",\n        \"typeRoots\": [\n            \"node_modules/@types\"\n        ],\n        \"lib\": [\n            \"es2020\",\n            \"dom\"\n        ]\n    },\n    \"angularCompilerOptions\": {\n        \"enableIvy\": true,\n        \"fullTemplateTypeCheck\": true,\n        \"strictTemplates\": true,\n        \"strictInjectionParameters\": true\n    }\n}`;\n","import { ANGULAR_JSON } from \"../live-example-files/angular.json\";\nimport { APP_COMPONENT } from \"../live-example-files/app.component\";\nimport { APP_MODULE } from \"../live-example-files/app.module\";\nimport { INDEX } from \"../live-example-files/index.html\";\nimport { MAIN } from \"../live-example-files/main\";\nimport { PACKAGE_JSON } from \"../live-example-files/package.json\";\nimport { POLYFILLS } from \"../live-example-files/polyfills\";\nimport { TSCONFIG_JSON } from \"../live-example-files/tsconfig.json\";\nimport { FileMetadata } from \"../services/sources.service\";\n\nexport const createAngularApp = (\n    filenamePrefix: string,\n    context: string,\n    sources: FileMetadata[],\n    packageJson: any,\n    packageJsonLib: any,\n    latestNovaVersion: string\n): { files: Record<string, object> } => {\n    let files: Record<string, object> = {\n        \"src/index.html\": {\n            content: getIndex(filenamePrefix),\n        },\n        \"src/main.ts\": {\n            content: getMainFile(),\n        },\n        \"src/polyfills.ts\": {\n            content: getPolyfills(),\n        },\n        \"src/styles.less\": {\n            content: getStyles(),\n        },\n        \"angular.json\": {\n            content: getAngular(),\n        },\n        \"package.json\": {\n            content: getPackage(\n                packageJson,\n                latestNovaVersion\n            ),\n        },\n        \"src/app/app.module.ts\": {\n            content: getAppModule(\n                sources,\n                filenamePrefix,\n                context,\n                packageJsonLib\n            ),\n        },\n        \"src/app/app.component.ts\": {\n            content: getAppComponent(),\n        },\n        \"tsconfig.json\": {\n            content: getTSConfig(),\n        },\n    };\n\n    sources\n        .forEach((source: FileMetadata) => {\n            files = Object.assign(files, {\n                [`src/app/${source.filePath}`]: { content: source.fileContent },\n            });\n        });\n\n    return { files: files };\n};\n\nexport const getMainFile = (): string => MAIN;\nexport const getIndex = (componentSelector: string): string =>\n    INDEX.replace(\"${componentSelector}\", componentSelector);\n\nexport const getAppModule = (\n    sources: FileMetadata[],\n    filenamePrefix: string,\n    context: string,\n    packageJson: any\n): string => {\n    const mainComponentName = getMainComponentName(sources, filenamePrefix);\n    const componentNames = sources && sources\n        .filter((source: FileMetadata) => source.fileType === \"ts\")\n        .map((source: FileMetadata) => getComponentName(source))\n        .join(\",\");\n    const imports = sources\n        .filter((source: FileMetadata) => source.fileType === \"ts\")\n        .filter((source: FileMetadata) => source.fileName !== `routes.ts`)\n        .map(\n            (source) =>\n                `import { ${getComponentName(\n                    source\n                )} } from \"./${source.filePath.slice(\n                    0,\n                    -source.fileType.length - 1\n                )}\"`\n        )\n        .join(\"\\n\");\n    const libPackage = packageJson.name;\n    const chartsImport = libPackage === \"@nova-ui/charts\";\n    const dashboardsImport = libPackage === \"@nova-ui/dashboards\";\n    const customRoutes = !!sources.find(\n        (source: FileMetadata) => source.fileName === \"routes.ts\"\n    );\n\n    return APP_MODULE(\n        filenamePrefix,\n        context,\n        imports,\n        mainComponentName,\n        componentNames,\n        customRoutes,\n        chartsImport,\n        dashboardsImport\n    );\n};\n\nexport const getStyles = (): string => ``;\n\nexport const getAngular = (): string => ANGULAR_JSON;\n\nexport const getTSConfig = (): string => TSCONFIG_JSON;\n\nexport const getPolyfills = (): string => POLYFILLS;\n\nexport const getPackage = (\n    packageJson: any,\n    latestNovaVersion: string\n): string => {\n    const libPackage = packageJson;\n    const newPackage = PACKAGE_JSON;\n\n    const getVersion = (name: string): string =>\n        libPackage.devDependencies[name];\n\n    const dependencies = [\n        \"@angular/animations\",\n        \"@angular/cdk\",\n        \"@angular/common\",\n        \"@angular/compiler\",\n        \"@angular/core\",\n        \"@angular/forms\",\n        \"@angular/localize\",\n        \"@angular/platform-browser\",\n        \"@angular/platform-browser-dynamic\",\n        \"@angular/router\",\n        \"d3\",\n        \"d3-selection-multi\",\n        \"d3-shape\",\n        \"angular-gridster2\",\n        \"core-js\",\n        \"highlight.js\",\n        \"lodash\",\n        \"moment\",\n        \"rxjs\",\n        \"tslib\",\n        \"zone.js\",\n    ];\n\n    const devDependencies = [\n        \"@angular-devkit/build-angular\",\n        \"@angular/cli\",\n        \"@angular/compiler-cli\",\n        \"@types/node\",\n        \"typescript\",\n    ];\n\n    dependencies.forEach((dependency: string) =>\n        getVersion(dependency)\n            ? ((newPackage.dependencies as Record<string, string>)[dependency] =\n                  getVersion(dependency))\n            : null\n    );\n\n    devDependencies.forEach(\n        (devDependency: string) =>\n            ((newPackage.dependencies as Record<string, string>)[\n                devDependency\n            ] = getVersion(devDependency))\n    );\n\n    // last released nova\n    newPackage.dependencies[\"@nova-ui/bits\"] = latestNovaVersion;\n    newPackage.dependencies[\"@nova-ui/charts\"] = latestNovaVersion;\n    newPackage.dependencies[\"@nova-ui/dashboards\"] = latestNovaVersion;\n\n    return JSON.stringify(newPackage, null, \" \");\n};\n\nexport const getMainComponentName = (\n    sources: FileMetadata[],\n    filenamePrefix: string\n): string => {\n    const mainComponent = sources\n        .filter((source: FileMetadata) => source.fileType === \"ts\")\n        .find((source: FileMetadata) =>\n            source.fileName.includes(filenamePrefix)\n        );\n    return getComponentName(mainComponent as any);\n};\n\nexport const getComponentName = (source: FileMetadata): string => {\n    const matches: RegExpMatchArray | null | undefined =\n        source?.fileContent?.match && source?.fileContent?.match(/class (\\w+Component)/);\n    return (matches || [])[1]; // capture exported component name\n};\n\nexport const getAppComponent = (): string => APP_COMPONENT;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { InjectionToken } from \"@angular/core\";\n\nimport { CodeSourceFiles } from \"../types\";\n\n// This should not be here, but Angular DI is not recognizing this token when it in scope of docsModule\n// In any case doc helpers will be moved in separate preject and this will not be here\nexport const DEMO_PATH_TOKEN = new InjectionToken<CodeSourceFiles>(\"DemoPathToken\");\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable, Optional } from \"@angular/core\";\nimport { compressToBase64 } from \"lz-string\";\n\nimport { createAngularApp } from \"./code-sandbox-files\";\nimport { DEMO_PATH_TOKEN } from \"../../../constants/path.constants\";\nimport {FileMetadata} from \"../services/sources.service\";\n\n/** @dynamic */\n@Injectable({\n    providedIn: \"root\",\n})\nexport class CodeSandboxService {\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        @Optional() @Inject(DEMO_PATH_TOKEN) private config: any\n    ) {}\n\n    async open(prefix: string, sources: any): Promise<void> {\n        async function mainVersion(packageName: string) {\n            // only fetch tiny-tarball\n            const res = await fetch(\n                \"https://registry.npmjs.org/\" + packageName,\n                {\n                    headers: new Headers({\n                        Accept: \"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*\",\n                    }),\n                }\n            );\n            const json = await res.json();\n            return json[\"dist-tags\"].latest;\n        }\n\n        const form: HTMLFormElement = this.document.createElement(\"form\");\n\n        const latestNovaVersion = await mainVersion(\"@nova-ui/bits\");\n\n        const packageLib = sources.find(\n            (source: FileMetadata) => source.fileName === \"package.json\"\n        )?.fileContent ?? \"\";\n\n        const files = createAngularApp(\n            prefix,\n            this.config.context,\n            sources,\n            packageLib.default,\n            packageLib.default,\n            latestNovaVersion\n        );\n        // TODO fix modification of less files\n        // const modifySources = (source: string) => // Handle non-existent less references that are just killing plunker\n        //     source.replace(/^.*@import \\(reference\\).*$/gm, \"/* NUI LESS VARIABLES ARE NOT SUPPORTED YET */\");\n\n        // TODO add support for translations\n        // form.append(this.formInput(\"translations\", \"ts\", translations));\n\n        form.style.display = \"none\";\n        form.setAttribute(\"method\", \"POST\");\n        form.setAttribute(\n            \"action\",\n            \"https://codesandbox.io/api/v1/sandboxes/define\"\n        );\n        form.setAttribute(\"target\", \"_blank\");\n\n        const parameters = this.compress(files);\n        this.addHiddenInput(form, \"parameters\", parameters);\n\n        this.document.body.appendChild(form);\n        form.submit();\n        document.body.removeChild(form);\n    }\n\n    addHiddenInput(form: HTMLFormElement, name: string, value: any): void {\n        const input = document.createElement(\"input\");\n        input.type = \"hidden\";\n        input.name = name;\n        input.value = value;\n        form.appendChild(input);\n    }\n\n    compress(object: Record<string, object>): string {\n        return compressToBase64(JSON.stringify(object))\n            .replace(/\\+/g, \"-\") // Convert '+' to '-'\n            .replace(/\\//g, \"_\") // Convert '/' to '_'\n            .replace(/=+$/, \"\"); // Remove ending '='\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Inject, Injectable, Optional } from \"@angular/core\";\n\nimport { DEMO_PATH_TOKEN } from \"../../../constants/path.constants\";\nimport { LoggerService } from \"../../../services/log-service\";\nimport { CodeSourceFiles } from \"../../../types\";\n\n/** @ignore */\n@Injectable()\nexport class SourcesService {\n    constructor(\n        private logger: LoggerService,\n        @Optional()\n        @Inject(DEMO_PATH_TOKEN)\n        private config: CodeSourceFiles\n    ) {}\n\n    public async getSourcesByFilenamePrefix(\n        filenamePrefix: string\n    ): Promise<FileMetadata[]> {\n        if (!this.config.context) {\n            this.logger.error(\n                `You need to configure SourceService in the module where you import NuiDocsModule e.g. {` +\n                    ` provide: DEMO_PATH_TOKEN, useValue: getDemoFiles(<example>) }`\n            );\n            return [];\n        }\n\n        const contentFiles = await Promise.all(\n            this.config.files.map(async (file) =>\n                file.content().then((content) => ({\n                    content,\n                    path: file.path,\n                }))\n            )\n        );\n        const filteredContentFiles = contentFiles.filter(\n            (file) =>\n                file.path.includes(`${filenamePrefix}/`) ||\n                file.path.includes(\"package.json\")\n        );\n\n        return filteredContentFiles.map((file) => ({\n            filePath: this.getTrimmedFilePath(file.path, filenamePrefix),\n            fileContent: file.content,\n            fileType: this.getFileType(file.path),\n            fileName: this.getFilename(file.path),\n        })) as FileMetadata[];\n    }\n\n    private getFilename(filePath: string): string {\n        return filePath.split(\"/\").pop() ?? \"\";\n    }\n\n    private getFileType(filePath: string): string {\n        return filePath.split(\".\").pop() ?? \"\";\n    }\n\n    private getTrimmedFilePath(\n        filePath: string,\n        filenamePrefix: string\n    ): string {\n        return filePath.slice(\n            filePath.indexOf(filenamePrefix) + filenamePrefix.length + 1\n        );\n    }\n}\n\nexport interface FileMetadata {\n    filePath: string;\n    fileContent: string;\n    fileType: string;\n    fileName: string;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, Input, OnInit } from \"@angular/core\";\nimport hljs from \"highlight.js\";\nimport javascript from \"highlight.js/lib/languages/javascript\";\nimport json from \"highlight.js/lib/languages/json\";\nimport less from \"highlight.js/lib/languages/less\";\nimport typescript from \"highlight.js/lib/languages/typescript\";\nimport xml from \"highlight.js/lib/languages/xml\";\n\nimport { CodeSandboxService } from \"./code-sandbox.service\";\nimport { FileMetadata, SourcesService } from \"../services/sources.service\";\n\n/**\n * @dynamic\n * @ignore\n */\n@Component({\n    templateUrl: \"./example-wrapper.component.html\",\n    selector: \"nui-example-wrapper\",\n    styleUrls: [\"./example-wrapper.component.less\"],\n    standalone: false,\n})\nexport class ExampleWrapperComponent implements OnInit {\n    // Prefix of the example component's filenames\n    @Input() filenamePrefix: string = \"\";\n\n    // Title to be displayed at the top of the example\n    @Input() exampleTitle: string = \"\";\n\n    // Indicates whether the source code is being displayed\n    @Input() showSource = false;\n\n    public componentSources: FileMetadata[];\n\n    constructor(\n        private sourcesService: SourcesService,\n        private codeSandboxService: CodeSandboxService\n    ) {\n        hljs.registerLanguage(\"typescript\", typescript);\n        hljs.registerLanguage(\"javascript\", javascript);\n        hljs.registerLanguage(\"xml\", xml);\n        hljs.registerLanguage(\"json\", json);\n        hljs.registerLanguage(\"less\", less);\n    }\n\n    public getTooltip(): string {\n        return this.showSource ? \"Hide source code\" : \"Show source code\";\n    }\n\n    public async openCodeSandboxExample(): Promise<void> {\n        await this.codeSandboxService.open(\n            this.filenamePrefix,\n            this.componentSources\n        );\n    }\n\n    public async ngOnInit(): Promise<void> {\n        this.componentSources =\n            await this.sourcesService.getSourcesByFilenamePrefix(\n                this.filenamePrefix\n            ) ?? [];\n    }\n\n    public getExampleComponents(fileType: string): string {\n        return (\n            this.componentSources?.find(\n                (component) =>\n                    component.fileName.includes(this.filenamePrefix) &&\n                    component.fileType === fileType\n            )?.fileContent ?? \"\"\n        );\n    }\n}\n","<div class=\"nui-example-wrapper__container\">\n    <div class=\"nui-example-wrapper__header\">\n        <h4 class=\"nui-example-wrapper__title\">{{ exampleTitle }}</h4>\n        <div>\n            <button\n                nui-button\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"{{\n                    showSource ? 'double-caret-up' : 'double-caret-down'\n                }}\"\n                title=\"Show source\"\n                [nuiTooltip]=\"getTooltip()\"\n                tooltipPlacement=\"bottom\"\n                (click)=\"showSource = !showSource\"\n            ></button>\n            <button\n                nui-button\n                type=\"button\"\n                displayStyle=\"action\"\n                icon=\"external-link\"\n                title=\"Open in CodeSandbox\"\n                nuiTooltip=\"Open in Code Sandbox (only self-contained examples are opened properly)\"\n                tooltipPlacement=\"bottom\"\n                (click)=\"openCodeSandboxExample()\"\n            ></button>\n        </div>\n    </div>\n    <div *ngIf=\"showSource\" class=\"nui-example-wrapper__source\">\n        <nui-tab-group>\n            <nui-tab *ngIf=\"!!getExampleComponents('html')\" heading=\"HTML\">\n                <div class=\"media-body\">\n                    <nui-copy-text\n                        fileContent=\"{{ getExampleComponents('html') }}\"\n                    ></nui-copy-text>\n                    <nui-example-code language=\"html\" [code]=\"getExampleComponents('html')\" />\n                </div>\n            </nui-tab>\n            <nui-tab *ngIf=\"!!getExampleComponents('ts')\" heading=\"Typescript\">\n                <nui-copy-text\n                    fileContent=\"{{ getExampleComponents('ts') }}\"\n                ></nui-copy-text>\n                <div class=\"media-body\">\n                    <nui-example-code language=\"typescript\" [code]=\"getExampleComponents('ts')\" />\n                </div>\n            </nui-tab>\n            <nui-tab *ngIf=\"!!getExampleComponents('less')\" heading=\"Less\">\n                <nui-copy-text\n                    fileContent=\"{{ getExampleComponents('less') }}\"\n                ></nui-copy-text>\n                <div class=\"media-body\">\n                    <nui-example-code\n                        *ngIf=\"!!getExampleComponents('less'); else noLess\"\n                        [code]=\"getExampleComponents('less')\"/>\n                    <ng-template #noLess>\n                        <nui-image image=\"no-data-to-show\"></nui-image>\n                    </ng-template>\n                </div>\n            </nui-tab>\n        </nui-tab-group>\n    </div>\n    <div class=\"nui-example-wrapper__content\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component, OnInit } from \"@angular/core\";\nimport { Router, RoutesRecognized } from \"@angular/router\";\nimport defaults from \"lodash/defaults\";\nimport { filter, map } from \"rxjs/operators\";\n\nimport { ISrlcDetails, SrlcStage } from \"./public-api\";\n\n/** @ignore */\n@Component({\n    selector: \"nui-srlc-indicator\",\n    templateUrl: \"./srlc-indicator.component.html\",\n    standalone: false,\n})\nexport class SrlcIndicatorComponent implements OnInit {\n    constructor(private router: Router) {}\n\n    public globalSrlc: ISrlcDetails = {\n        stage: SrlcStage.preAlpha,\n        eolDate: new Date(\"1/1/2100\"),\n        hideIndicator: false,\n    };\n\n    public componentSrlc: ISrlcDetails;\n\n    public ngOnInit(): void {\n        this.router.events\n            .pipe(\n                filter((event) => event instanceof RoutesRecognized),\n                map((event) => {\n                    let route = (<RoutesRecognized>event).state.root;\n                    while (route.firstChild) {\n                        route = route.firstChild;\n                    }\n                    return route;\n                })\n            )\n            .subscribe((route) => {\n                const routeDataSrlc = (route.data || {}).srlc;\n                this.componentSrlc = defaults(\n                    routeDataSrlc || {},\n                    this.globalSrlc\n                );\n            });\n    }\n\n    public getMessageType = (): string => {\n        switch (this.componentSrlc.stage) {\n            case SrlcStage.preAlpha:\n                return \"critical\";\n            case SrlcStage.alpha:\n                return \"warning\";\n            case SrlcStage.beta:\n                return \"info\";\n            case SrlcStage.ga:\n                return \"ok\";\n            case SrlcStage.support:\n                return \"hint\";\n            case SrlcStage.eol:\n                return \"error\";\n            default:\n                return \"error\";\n        }\n    };\n\n    public getMessageText = (): string => {\n        switch (this.componentSrlc.stage) {\n            case SrlcStage.preAlpha:\n                return `<strong>Under Development</strong> DO NOT USE. This component is under active development and significant,\n                    API breaking changes are still expected. Its use will not be supported.`;\n            case SrlcStage.alpha:\n                // eslint-disable-next-line max-len\n                return `<strong>Alpha</strong> USE AT YOUR OWN RISK. This component may be unstable, include defects and is still subject to API breaking changes.\n                    We encourage prototypical use and feedback - but won't support production use.`;\n            case SrlcStage.beta:\n                return `<strong>Beta</strong> This component is in the final testing stage. It should be quite stable,\n                    but some defects may still exist. Keep an eye on it!`;\n            case SrlcStage.ga:\n                return `<strong>Production Ready</strong> Available for production use - see documented examples below.`;\n            case SrlcStage.support:\n                return `<strong>Deprecated</strong> Sorry, but we no longer recommend using this component.\n                    Only critical issues are going to be fixed.\n                    End Of Life is scheduled to <strong>${this.componentSrlc.eolDate?.toDateString()}</strong>.`;\n            case SrlcStage.eol:\n                return `<strong>Not Supported</strong> Sorry, but this component is not supported any more!`;\n            default:\n                return `Current state of this component is unknown. Please, contact Nova team for more details.`;\n        }\n    };\n}\n","<nui-message\n    [type]=\"getMessageType()\"\n    [allowDismiss]=\"false\"\n    *ngIf=\"!!componentSrlc && !componentSrlc.hideIndicator\"\n>\n    <span [innerHTML]=\"getMessageText()\"></span>\n</nui-message>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DOCUMENT } from \"@angular/common\";\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from \"@angular/core\";\nimport { ActivatedRoute, NavigationEnd, Router } from \"@angular/router\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { filter, map } from \"rxjs/operators\";\n\n/** @dynamic */\n@Injectable({\n    providedIn: \"root\",\n})\nexport class ThemeSwitchService {\n    /** @ignore BehaviorSubject indicating whether we should display theme switcher */\n    public showThemeSwitcherSubject: BehaviorSubject<boolean> =\n        new BehaviorSubject<boolean>(false);\n\n    /** BehaviorSubject indicating whether dark mode is enabled */\n    public isDarkModeEnabledSubject: BehaviorSubject<boolean | null> =\n        new BehaviorSubject<boolean | null>(null);\n\n    /** Should route be refreshed after theme switching */\n    public withRefreshRoute: boolean = false;\n\n    /** Keep information about preferred dark color scheme on OS */\n    private darkThemePreference: MediaQueryList;\n\n    private renderer: Renderer2;\n\n    constructor(\n        private rendererFactory: RendererFactory2,\n        private router: Router,\n        private _route: ActivatedRoute,\n        @Inject(DOCUMENT) private document: Document\n    ) {\n        /** Getting renderer instance */\n        this.renderer = this.rendererFactory.createRenderer(null, null);\n\n        this.router.events\n            .pipe(\n                filter((event) => event instanceof NavigationEnd),\n                map(() => {\n                    let route = this._route.root;\n                    while (route.firstChild) {\n                        route = route.firstChild;\n                    }\n                    return route;\n                })\n            )\n            .subscribe((route) => {\n                const showThemeSwitcher = (route.snapshot.data || {})\n                    .showThemeSwitcher;\n\n                if (typeof showThemeSwitcher === \"undefined\") {\n                    return;\n                }\n\n                this.showThemeSwitcherSubject.next(showThemeSwitcher);\n\n                if (showThemeSwitcher) {\n                    /** Case when route is changed on the same page (see on breadcrumb component docs page) */\n                    if (\n                        typeof this.isDarkModeEnabledSubject.getValue() ===\n                        \"boolean\"\n                    ) {\n                        this.darkThemePreference = window.matchMedia(\n                            \"(prefers-color-scheme: dark)\"\n                        );\n                        return;\n                    }\n\n                    this.enableColorSchemePreferenceHandling();\n                } else {\n                    /** Reset to light theme */\n                    this.darkModePreferenceHandler(false);\n\n                    this.disableColorSchemePreferenceHandling();\n                }\n            });\n    }\n\n    /**\n     * Use this method to manually toggle your app between light and dark theme\n     *\n     * @param isDarkModeEnabled Use true for dark theme and false for light theme\n     */\n    public setDarkTheme(isDarkModeEnabled: boolean): void {\n        this.darkModePreferenceHandler(isDarkModeEnabled);\n    }\n\n    /**\n     * Use this method to configure the service to synchronize your app's theme with the user's\n     * light/dark mode system preference\n     */\n    public enableColorSchemePreferenceHandling(): void {\n        this.darkThemePreference = window.matchMedia(\n            \"(prefers-color-scheme: dark)\"\n        );\n\n        /** First call to set initial theme */\n        this.darkModePreferenceHandler(this.darkThemePreference.matches);\n\n        /** If browser supports subscribing to MediaQueryList event we do it */\n        if (typeof this.darkThemePreference.addEventListener === \"function\") {\n            this.darkThemePreference.addEventListener(\n                \"change\",\n                this.darkModePreferenceHandler\n            );\n        }\n    }\n\n    /**\n     * Use this method to disable synchronization of your app's theme with the user's light/dark mode\n     * system preference\n     */\n    public disableColorSchemePreferenceHandling(): void {\n        if (\n            this.darkThemePreference &&\n            typeof this.darkThemePreference.removeEventListener === \"function\"\n        ) {\n            this.darkThemePreference.removeEventListener(\n                \"change\",\n                this.darkModePreferenceHandler\n            );\n        }\n    }\n\n    private darkModePreferenceHandler = (\n        event: MediaQueryListEvent | boolean\n    ) => {\n        const isDarkModeEnabled =\n            typeof event === \"boolean\" ? event : event.matches;\n        const isDarkPrevColorMode = this.isDarkModeEnabledSubject.getValue();\n        const demoContainerElement = this.document.children[0];\n\n        /** Adding class \"dark-nova-theme\" to html element we make dark mode, otherwise - light mode */\n        this.renderer[isDarkModeEnabled ? \"addClass\" : \"removeClass\"](\n            demoContainerElement,\n            \"dark-nova-theme\"\n        );\n\n        /**\n         * Reiniting route in case when theme is switching forced\n         * It allows to avoid reiniting route while application is started\n         */\n        if (\n            isDarkPrevColorMode !== null &&\n            isDarkPrevColorMode !== isDarkModeEnabled &&\n            this.withRefreshRoute\n        ) {\n            this.reInitRoute();\n        }\n\n        this.isDarkModeEnabledSubject.next(isDarkModeEnabled);\n    };\n\n    private reInitRoute() {\n        /**\n         * Logic for refreshing route\n         */\n        const scrolledElement = this.document.children[0];\n        const currentScrollTopPosition = scrolledElement.scrollTop;\n        const originalShouldReuseRoute =\n            this.router.routeReuseStrategy.shouldReuseRoute;\n\n        this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n        this.router.navigated = false;\n\n        this.router.navigate([this.router.url]).then(() => {\n            this.router.routeReuseStrategy.shouldReuseRoute =\n                originalShouldReuseRoute;\n\n            /** After reiniting route we should restore scroll position */\n            setTimeout(\n                () => (scrolledElement.scrollTop = currentScrollTopPosition)\n            );\n        });\n    }\n}\n\nexport default ThemeSwitchService;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Component } from \"@angular/core\";\n\nimport { ThemeSwitchService } from \"../../../services/theme-switch.service\";\n\n/**\n * @ignore\n */\n@Component({\n    selector: \"nui-theme-switcher\",\n    templateUrl: \"./theme-switcher.component.html\",\n    standalone: false,\n})\nexport class ThemeSwitcherComponent {\n    constructor(public themeSwitcherService: ThemeSwitchService) {}\n\n    onThemeChange(isDarkThemeEnabled: boolean): void {\n        this.themeSwitcherService.setDarkTheme(isDarkThemeEnabled);\n    }\n}\n","<nui-switch\n    (valueChange)=\"onThemeChange($event)\"\n    [value]=\"themeSwitcherService.isDarkModeEnabledSubject | async\"\n    i18n\n>\n    Dark theme\n</nui-switch>\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { RouterModule } from \"@angular/router\";\n\nimport { CopyTextComponent } from \"./copy-text/copy-text.component\";\nimport { ExampleCodeComponent } from \"./example-code/example-code.component\";\nimport { CodeSandboxService } from \"./example-wrapper/code-sandbox.service\";\nimport { ExampleWrapperComponent } from \"./example-wrapper/example-wrapper.component\";\nimport { SourcesService } from \"./services/sources.service\";\nimport { SrlcIndicatorComponent } from \"./srlc-indicator/srlc-indicator.component\";\nimport { ThemeSwitcherComponent } from \"./theme-switcher/theme-switcher.component\";\nimport { NuiCommonModule } from \"../../common/common.module\";\nimport { NuiButtonModule } from \"../button/button.module\";\nimport { NuiIconModule } from \"../icon/icon.module\";\nimport { NuiImageModule } from \"../image/image.module\";\nimport { NuiMessageModule } from \"../message/message.module\";\nimport { NuiSelectModule } from \"../select/select.module\";\nimport { NuiSwitchModule } from \"../switch/switch.module\";\nimport { NuiTabsModule } from \"../tabgroup/tabs.module\";\nimport { NuiToastModule } from \"../toast/toast.module\";\nimport { NuiTooltipModule } from \"../tooltip/tooltip.module\";\n\n/**\n * @ignore\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        RouterModule,\n        NuiCommonModule,\n        NuiMessageModule,\n        NuiSelectModule,\n        NuiTabsModule,\n        NuiToastModule,\n        NuiTooltipModule,\n        NuiIconModule,\n        NuiButtonModule,\n        NuiSwitchModule,\n        NuiImageModule,\n    ],\n    exports: [\n        CommonModule,\n        RouterModule,\n        CopyTextComponent,\n        ExampleWrapperComponent,\n        SrlcIndicatorComponent,\n        ThemeSwitcherComponent,\n        ExampleCodeComponent,\n    ],\n    declarations: [\n        CopyTextComponent,\n        ExampleWrapperComponent,\n        SrlcIndicatorComponent,\n        ThemeSwitcherComponent,\n        ExampleCodeComponent,\n    ],\n    providers: [SourcesService, CodeSandboxService],\n})\nexport class NuiDocsModule {}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { SimpleChange, SimpleChanges } from \"@angular/core\";\n/**\n *\n * Same as Partial<T> but goes deeper and makes all of its properties and sub-properties Partial<T>.\n */\nexport type DeepPartial<T> = T extends object\n    ? { [K in keyof T]?: DeepPartial<T[K]> }\n    : T;\n\nexport interface ComponentChange<T, P extends keyof T> extends SimpleChange {\n    previousValue: T[P];\n    currentValue: T[P];\n}\n\nexport type ComponentChanges<T> = {\n    [P in keyof T]?: ComponentChange<T, P>;\n} & SimpleChanges;\n\nexport interface CodeSourceFiles {\n    context: string;\n    files: { path: string; content: () => Promise <any> }[];\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport const scrollConstants = {\n    verticalScrollPercentage: 30,\n    horizontalScrollPercentage: 30,\n    checkIntervalInMs: 30,\n    accelerationFactor: 0.5,\n    dragOverThrottleInMs: 100,\n    adornerUpdateThrottleInMs: 16,\n};\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./button.constants\";\nexport * from \"./dragdrop.constants\";\nexport * from \"./event.constants\";\nexport * from \"./images.constants\";\nexport * from \"./interaction.constants\";\nexport * from \"./keycode.constants\";\nexport * from \"./path.constants\";\nexport * from \"./popover.constants\";\nexport * from \"./regex.constants\";\nexport * from \"./resize.constants\";\nexport * from \"./unit-conversion.constants\";\nexport * from \"./wizard.constants\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\n/** @ignore */\nexport interface IDropEvent {\n    event: DragEvent;\n    payload: any;\n}\n/** @ignore */\nexport interface IDragPayload {\n    data: any;\n    isExternal: boolean;\n}\n/** @ignore */\nexport interface IDropValidator {\n    isValidDropTarget(payload: any, isExternal?: boolean): boolean;\n}\n/** @ignore */\nexport interface IDragState {\n    isInProgress: boolean;\n    payload?: any;\n}\n\n/**\n * @ignore\n * This approach fixes Safari issue \"ReferenceError: Can't find variable: DragEvent\" on dev mode\n * */\nexport type IDragEvent = DragEvent;\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./click-filter/public-api\";\nexport * from \"./dragdrop/public-api\";\nexport * from \"./resizer/public-api\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport clone from \"lodash/clone\";\nimport setWith from \"lodash/setWith\";\n\n/**\n * This an immutable equivalent of lodash \"set\" function\n *\n * @param object\n * @param path\n * @param value\n */\nexport function immutableSet<T>(object: T, path: string, value: any): T {\n    return path.length === 0\n        ? value\n        : setWith(clone(object) as any, path, value, clone);\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { AbstractControl } from \"@angular/forms\";\n\n/**\n * Removes the specified errors from a form control\n *\n * @param field\n * @param errorKeys\n */\nexport function removeErrors(\n    field: AbstractControl,\n    ...errorKeys: string[]\n): void {\n    if (!field.errors) {\n        return;\n    }\n\n    for (const errorKey of errorKeys) {\n        if (errorKey && field.errors[errorKey]) {\n            delete field.errors[errorKey];\n        }\n    }\n\n    if (Object.keys(field.errors).length === 0) {\n        field.setErrors(null);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport function traverse(\n    obj: { [x: string]: any },\n    fn: (obj: any, path: string[]) => any,\n    path: string[] = []\n): void {\n    // eslint-disable-next-line\n    for (const k in obj) {\n        const newPath = [...path, k];\n        if (obj[k] && typeof obj[k] === \"object\") {\n            traverse(obj[k], fn, newPath);\n        } else {\n            fn(obj[k], newPath);\n        }\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./uuid\";\nexport * from \"./immutable-set\";\nexport * from \"./remove-errors\";\nexport * from \"./traverse\";\nexport * from \"./nameof\";\nexport * from \"./color.helper\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport { NuiButtonModule } from \"./lib/button/button.module\";\n\nexport { NuiCheckboxModule } from \"./lib/checkbox/checkbox.module\";\nexport { NuiCommonModule } from \"./common/common.module\";\nexport { NuiDividerModule } from \"./lib/divider/divider.module\";\nexport { NuiDragDropModule } from \"./lib/dragdrop/dragdrop.module\";\nexport { NuiIconModule } from \"./lib/icon/icon.module\";\nexport { NuiMessageModule } from \"./lib/message/message.module\";\nexport { NuiImageModule } from \"./lib/image/image.module\";\nexport { NuiMenuModule } from \"./lib/menu/menu.module\";\nexport { NuiPopupModule } from \"./lib/popup/popup.module\";\nexport { NuiSwitchModule } from \"./lib/switch/switch.module\";\nexport { NuiSelectModule } from \"./lib/select/select.module\";\nexport { NuiSelectV2Module } from \"./lib/select-v2/select-v2.module\";\nexport { NuiSpinnerModule } from \"./lib/spinner/spinner.module\";\nexport { NuiTabsModule } from \"./lib/tabgroup/tabs.module\";\nexport { NuiTextboxModule } from \"./lib/textbox/textbox.module\";\nexport { NuiTooltipModule } from \"./lib/tooltip/tooltip.module\";\nexport { NuiLayoutModule } from \"./lib/layout/layout.module\";\nexport { NuiOverlayModule } from \"./lib/overlay/overlay.module\";\nexport { NuiOverlayAdditionsModule } from \"./lib/overlay/overlay-additions.module\";\n\nexport { NuiBreadcrumbModule } from \"./lib/breadcrumb/breadcrumb.module\";\nexport { NuiBusyModule } from \"./lib/busy/busy.module\";\nexport { NuiChipsModule } from \"./lib/chips/chips.module\";\nexport { NuiColorPickerModule } from \"./lib/color-picker/color-picker.module\";\nexport { NuiContentModule } from \"./lib/content/content.module\";\nexport { NuiDatePickerModule } from \"./lib/date-picker/date-picker.module\";\nexport { NuiDateTimePickerModule } from \"./lib/date-time-picker/date-time-picker.module\";\nexport { NuiDialogModule } from \"./lib/dialog/dialog.module\";\nexport { NuiExpanderModule } from \"./lib/expander/expander.module\";\nexport { NuiFormFieldModule } from \"./lib/form-field/form-field.module\";\nexport { NuiFreetypeQueryModule } from \"./lib/freetype-query-builder/freetype-query-builder.module\";\nexport { NuiPaginatorModule } from \"./lib/paginator/paginator.module\";\nexport { NuiPanelModule } from \"./lib/panel/panel.module\";\nexport { NuiPopoverModule } from \"./lib/popover/popover.module\";\nexport { NuiProgressModule } from \"./lib/progress/progress.module\";\nexport { NuiRadioModule } from \"./lib/radio/radio.module\";\nexport { NuiRepeatModule } from \"./lib/repeat/repeat.module\";\nexport { NuiRiskScoreModule } from \"./lib/risk-score/risk-score.module\";\nexport { NuiSearchModule } from \"./lib/search/search.module\";\nexport { NuiSelectorModule } from \"./lib/selector/selector.module\";\nexport { NuiSorterModule } from \"./lib/sorter/sorter.module\";\nexport { NuiTableModule } from \"./lib/table/table.module\";\nexport { NuiTimeFrameBarModule } from \"./lib/convenience/time-frame-bar/time-frame-bar.module\";\nexport { NuiTimeFramePickerModule } from \"./lib/time-frame-picker/time-frame-picker.module\";\nexport { NuiTimePickerModule } from \"./lib/time-picker/time-picker.module\";\nexport { NuiToastModule } from \"./lib/toast/toast.module\";\nexport { NuiToolbarModule } from \"./lib/toolbar/toolbar.module\";\nexport { NuiValidationMessageModule } from \"./lib/validation-message/validation-message.module\";\nexport { NuiWizardModule } from \"./lib/wizard/wizard.module\";\nexport { NuiWizardV2Module } from \"./lib/wizard-v2/wizard.module\";\n\nexport { NuiDocsModule } from \"./lib/docs/docs.module\";\n\nexport * from \"./lib/public-api\";\nexport * from \"./types\";\nexport * from \"./constants/public-api\";\nexport * from \"./common/directives/public-api\";\nexport * from \"./services/public-api\";\nexport * from \"./validators\";\nexport * from \"./environment\";\nexport * from \"./functions/public-api\";\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { CollectionViewer, DataSource } from \"@angular/cdk/collections\";\nimport { Injectable } from \"@angular/core\";\nimport _cloneDeep from \"lodash/cloneDeep\";\nimport _forEach from \"lodash/forEach\";\nimport isEqual from \"lodash/isEqual\";\nimport isNil from \"lodash/isNil\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\n\nimport {\n    IDataField,\n    IDataFieldsConfig,\n    IFilter,\n    IFilteringOutputs,\n    IFilteringParticipant,\n    IFilteringParticipants,\n    IFilters,\n} from \"./public-api\";\n\n@Injectable()\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport abstract class DataSourceService<\n    T,\n    F extends IFilters = IFilters,\n    D = any\n> extends DataSource<T> {\n    public dataSubject: BehaviorSubject<T[]>;\n    public outputsSubject: Subject<IFilteringOutputs>;\n    public dataFieldsConfig: IDataFieldsConfig;\n\n    protected _previousFilters: F;\n\n    protected _components: IFilteringParticipants;\n\n    constructor() {\n        super(); // in future dataSource in cdk may have some constructor.\n        this.dataSubject = new BehaviorSubject<T[]>([]); // in general we do not have data at this point - that's why empty array\n        this.outputsSubject = new Subject<any>(); // some empty state\n        this.dataFieldsConfig = {\n            dataFields$: new BehaviorSubject<IDataField[]>([]),\n        };\n    }\n\n    public set componentTree(components: IFilteringParticipants) {\n        this._components = components;\n    }\n\n    public registerComponent(components: IFilteringParticipants): void {\n        this._components = {\n            ...this._components,\n            ...components,\n        };\n    }\n\n    public deregisterComponent(componentKey: string): void {\n        delete this._components?.[componentKey];\n    }\n\n    public resetFilterComponent(componentName: string): boolean {\n        const component =\n            this._components?.[componentName]?.componentInstance;\n        if (component?.resetFilter) {\n            component.resetFilter();\n            return true;\n        }\n        return false;\n    }\n\n    public abstract getFilteredData(filters: F): Promise<IFilteringOutputs>;\n\n    public connect(\n        collectionViewer: CollectionViewer\n    ): Observable<T[] | ReadonlyArray<T>> {\n        return this.dataSubject.asObservable();\n    }\n\n    public disconnect(collectionViewer: CollectionViewer): void {\n        this.dataSubject.complete();\n    }\n\n    public async applyFilters(): Promise<void> {\n        // store a copy of the filters to avoid altering the stored values by reference\n        const filters = _cloneDeep(this.getFilters());\n\n        this.beforeApplyFilters(filters);\n        await this.afterApplyFilters(filters);\n    }\n\n    public getFilter(\n        componentName: keyof IFilteringParticipants\n    ): F | undefined {\n        const filter = this._components[componentName];\n        if (!filter) {\n            throw new Error(\n                `Invalid filter name '${componentName}' requested; available filter names are: ${Object.keys(\n                    this._components\n                )}`\n            );\n        }\n\n        return filter?.componentInstance?.getFilters() as F;\n    }\n\n    public getFilters(): F {\n        const filters: F = {} as F;\n\n        // Merge current filters\n        _forEach(\n            this._components,\n            (\n                node: IFilteringParticipant,\n                componentName: keyof IFilteringParticipants\n            ) => {\n                (filters as IFilters)[componentName] =\n                    this.getFilter(componentName);\n            }\n        );\n\n        return filters;\n    }\n\n    public get monitoredFilters(): string[] {\n        const filters: string[] = [];\n\n        _forEach(\n            this._components,\n            (\n                node: IFilteringParticipant,\n                componentName: keyof IFilteringParticipants\n            ) => {\n                if (node.componentInstance?.detectFilterChanges === true) {\n                    filters.push(componentName as string);\n                }\n            }\n        );\n\n        return filters;\n    }\n\n    // check if a specific filter changed\n    public filterChanged(\n        filterName: keyof IFilteringParticipants,\n        currentFilterValue?: IFilter<any>\n    ): boolean {\n        // retrieve provided value if provided, otherwise get a fresh one\n        const filterValue = (currentFilterValue ?? this.getFilter(filterName))\n            ?.value;\n        return (\n            !isNil(filterValue) &&\n            this._previousFilters &&\n            !isEqual(filterValue, this._previousFilters[filterName]?.value)\n        );\n    }\n\n    // checks if any of the filters specified by name have changed from the previous evaluation\n    public filtersChanged(\n        filters: F,\n        ...filterNames: (keyof IFilteringParticipants)[]\n    ): boolean {\n        for (let i = 0; i < filterNames.length; i++) {\n            const filterName = filterNames[i];\n            if (this.filterChanged(filterName, filters[filterName])) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    public computeFiltersChange(filters: F): boolean {\n        return this.filtersChanged(filters, ...this.monitoredFilters);\n    }\n\n    protected beforeApplyFilters(filters: F): void {}\n\n    protected async afterApplyFilters(filters: F): Promise<void> {\n        this.outputsSubject.next(await this.getFilteredData(filters));\n\n        this._previousFilters = this.getFilters();\n    }\n\n    protected shouldResetFilters(filters: F): boolean {\n        const filtersChanged = this.computeFiltersChange(filters);\n        if (filtersChanged) {\n            this.resetFilters(filters);\n        }\n\n        return filtersChanged;\n    }\n\n    protected resetFilters(filters: F): void {\n        _forEach(filters, (node, key) => {\n            const filter = this._components[key].componentInstance;\n            if (filter?.resetFilter) {\n                filter.resetFilter();\n                node.value = filter.getFilters().value;\n            }\n        });\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { DataSourceService } from \"./data-source.service\";\nimport { IFilteringOutputs, IFilters } from \"./public-api\";\n\n/**\n * Basic data source service for front-end filtering\n */\nexport class NoopDataSourceService<T> extends DataSourceService<T> {\n    public async getFilteredData(\n        filters: IFilters\n    ): Promise<IFilteringOutputs> {\n        return filters;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Subject } from \"rxjs\";\n\nimport {\n    IDataSourceFeature,\n    IDataSourceFeatures,\n    IDataSourceFeaturesConfiguration,\n} from \"./public-api\";\n\nexport class DataSourceFeatures implements IDataSourceFeaturesConfiguration {\n    public featuresChanged = new Subject<IDataSourceFeatures>();\n\n    private supportedFeatures: IDataSourceFeatures;\n\n    constructor(features: IDataSourceFeatures = {}) {\n        this.supportedFeatures = features;\n    }\n\n    public getSupportedFeatures(): IDataSourceFeatures {\n        return this.supportedFeatures;\n    }\n\n    public setSupportedFeatures(features: IDataSourceFeatures): void {\n        this.supportedFeatures = features;\n        this.featuresChanged.next(features);\n    }\n\n    public getFeatureConfig(key: string): IDataSourceFeature | undefined {\n        return this.supportedFeatures?.[key];\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, OnDestroy, Optional, SkipSelf } from \"@angular/core\";\nimport _forEach from \"lodash/forEach\";\nimport _omit from \"lodash/omit\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n\nimport { INovaFilters } from \"./data-source/public-api\";\nimport {\n    IFilteringParticipant,\n    IFilteringParticipants,\n    IFilterPub,\n    IFilters,\n} from \"./public-api\";\n\n/**\n * <example-url>./../examples/index.html#/common/data-filter-service</example-url>\n */\n@Injectable()\nexport class DataFilterService implements IFilterPub, OnDestroy {\n    protected _filters: IFilteringParticipants = {};\n    public filteringSubject: Subject<void> = new Subject<void>();\n    public onDestroy$ = new Subject<void>();\n    private destroySubscriptions: Subscription[] = [];\n    constructor(@Optional() @SkipSelf() public parent: DataFilterService) {\n        if (this.parent) {\n            this.parent.filteringSubject\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(() => {\n                    this.filteringSubject.next();\n                });\n        }\n    }\n\n    public registerFilter(filter: IFilteringParticipants): void {\n        this._filters = {\n            ...this._filters,\n            ...filter,\n        };\n\n        // subscribing to onDestroy of filtering components to remove them from memory when this components are destroyed\n        _forEach(this._filters, (node: IFilteringParticipant, key: string) => {\n            if (node.componentInstance.onDestroy$) {\n                this.destroySubscriptions.push(\n                    node.componentInstance.onDestroy$.subscribe(() => {\n                        this.unregisterFilters([key]);\n                    })\n                );\n            }\n        });\n        this.filteringSubject.next();\n    }\n\n    public unregisterFilters(filtersToUnregister: string[]): void {\n        this._filters = _omit(this._filters, filtersToUnregister);\n        this.filteringSubject.next();\n    }\n\n    public getFilters(): INovaFilters {\n        let filters: IFilters = {};\n\n        if (this.parent) {\n            filters = this.parent.getFilters();\n        }\n\n        // Merge current filters\n        _forEach(this._filters, (node: IFilteringParticipant, key: string) => {\n            const getFilters =\n                node &&\n                node.componentInstance &&\n                node.componentInstance.getFilters;\n            if (typeof getFilters === \"function\") {\n                filters[key] = node.componentInstance.getFilters();\n            }\n        });\n        return filters;\n    }\n\n    public applyFilters(): void {\n        this.filteringSubject.next();\n    }\n\n    public ngOnDestroy(): void {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n        this.destroySubscriptions.forEach((subscription) =>\n            subscription.unsubscribe()\n        );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\n\nimport { INovaFilteringOutputs } from \"./data-source/public-api\";\nimport { SelectionModel } from \"./public-api\";\nimport { RepeatSelectionMode } from \"../lib/repeat/types\";\nimport { SelectionType } from \"../lib/selector/public-api\";\nimport { SelectorService } from \"../lib/selector/selector.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ListService {\n    constructor(private selectorService: SelectorService) {}\n\n    /**\n     * Updates the selector checkbox status, selector menu items, and the repeat selected items.\n     *\n     * @param {INovaFilteringOutputs} state The filtering outputs state\n     *\n     * @returns {INovaFilteringOutputs} The updated state\n     */\n    public updateSelectionState(\n        state: INovaFilteringOutputs\n    ): INovaFilteringOutputs {\n        const selection = new SelectionModel(state.selector?.selection ?? {});\n        const itemsSource = (state.repeat && state.repeat.itemsSource) || [];\n        const paginator = state.paginator || { total: undefined };\n\n        const selectedItems = this.selectorService.getSelectedItems(\n            selection,\n            itemsSource\n        );\n        const outputState = {\n            ...state,\n            repeat: {\n                itemsSource,\n                ...state.repeat,\n                selectedItems,\n            },\n            selector: {\n                ...state.selector,\n                selection,\n                selectorState: this.selectorService.getSelectorState(\n                    selection,\n                    itemsSource.length,\n                    selectedItems.length,\n                    paginator.total,\n                    selection.include.length\n                ),\n            },\n        };\n\n        return outputState;\n    }\n\n    /**\n     * Updates the selector selection state, selector checkbox status, selector menu items, and the\n     * selected items in the repeat based on the items in the provided list and the specified selection\n     * mode.\n     *\n     * @param {any[]} selectedItems The items to select\n     * @param {RepeatSelectionMode} selectionMode The mode to use for selection\n     * @param {INovaFilteringOutputs} state The filtering outputs state\n     *\n     * @returns {INovaFilteringOutputs} The updated state\n     */\n    public selectItems(\n        selectedItems: any[],\n        selectionMode: RepeatSelectionMode,\n        state: INovaFilteringOutputs\n    ): INovaFilteringOutputs {\n        if (!state.selector || !state.selector.selection) {\n            throw new Error(\"State must contain selector property\");\n        }\n\n        if (!state.repeat) {\n            throw new Error(\"State must contain repeat property\");\n        }\n\n        if (!state.paginator) {\n            throw new Error(\"State must contain paginator property\");\n        }\n\n        const outputState = {\n            ...state,\n            selector: {\n                ...state.selector,\n                selection: this.selectorService.selectItems(\n                    state.selector.selection,\n                    selectedItems,\n                    state.repeat.itemsSource,\n                    selectionMode\n                ),\n            },\n        };\n\n        return this.updateSelectionState(outputState);\n    }\n\n    /**\n     * Updates the selector selection state, selector checkbox status, selector menu items, and the\n     * selected items in the repeat based on the selection type.\n     *\n     * @param {SelectionType} selectionType The selection type to apply\n     * @param {INovaFilteringOutputs} state The filtering outputs state\n     *\n     * @returns {INovaFilteringOutputs} The updated state\n     */\n    public applySelector(\n        selectionType: SelectionType,\n        state: INovaFilteringOutputs\n    ): INovaFilteringOutputs {\n        if (!state.selector || !state.selector.selection) {\n            throw new Error(\"State must contain selector property\");\n        }\n\n        if (!state.repeat) {\n            throw new Error(\"State must contain repeat property\");\n        }\n\n        if (!state.paginator) {\n            throw new Error(\"State must contain paginator property\");\n        }\n\n        const outputState = {\n            ...state,\n            selector: {\n                ...state.selector,\n                selection: this.selectorService.applySelector(\n                    state.selector.selection,\n                    state.repeat.itemsSource,\n                    selectionType,\n                    state.paginator.total\n                ),\n            },\n        };\n\n        return this.updateSelectionState(outputState);\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport _forEach from \"lodash/forEach\";\nimport _get from \"lodash/get\";\nimport _intersection from \"lodash/intersection\";\nimport _isEqual from \"lodash/isEqual\";\nimport _orderBy from \"lodash/orderBy\";\n\nimport { DataSourceService } from \"./data-source.service\";\nimport {\n    IFilter,\n    IFilterGroup,\n    IFilteringOutputs,\n    IFilterItem,\n    IMultiFilterMetadata,\n    INovaFilteringOutputs,\n    INovaFilters,\n} from \"./public-api\";\nimport { SorterDirection } from \"../../lib/sorter/public-api\";\nimport { SearchService } from \"../search.service\";\n\n/** @ignore */\ninterface ComparisonItems {\n    previousValue: any;\n    currentValue: any;\n}\n\n/**\n * <example-url>./../examples/index.html#/common/data-source-service/deprecated-client-side</example-url>\n * @deprecated in v11 - use ClientSideDataSource instead - Removal: NUI-5796\n */\n@Injectable()\nexport class LocalFilteringDataSource<\n    T,\n    F extends INovaFilters = INovaFilters\n> extends DataSourceService<T, F> {\n    protected _allData: T[];\n    protected _allCategoriesResult: IFilteringOutputs = {};\n    protected _searchProps: string[] = [];\n\n    // cache used to store our previous fetched results while scrolling\n    // and more data is automatically fetched from the backend\n    protected virtualScrollData: T[] = [];\n\n    constructor(protected searchService: SearchService) {\n        super();\n    }\n\n    public setData(initialData: T[] = []): void {\n        this._allData = initialData;\n    }\n\n    public setSearchProperties(properties: string[]): void {\n        this._searchProps = properties;\n    }\n\n    public async getFilteredData(filters: F): Promise<INovaFilteringOutputs> {\n        let nextChunk: T[] = this.prepareData();\n\n        // APPLY SEARCH USING CHECKBOX VALUES\n        const searchTerm: string | undefined = filters?.search?.value;\n        // APPLY SEARCH\n        if (searchTerm) {\n            nextChunk = this.searchHandler(searchTerm);\n        }\n\n        const multiFiltersArr: IFilterGroup<\n            IFilter<string[], IMultiFilterMetadata>\n        >[] = this.extractMultiFilters(filters);\n        // APPLY FILTERS with type 'string[]' if any\n        if (multiFiltersArr?.length) {\n            nextChunk = this.multiFilterHandler(nextChunk, multiFiltersArr);\n        }\n\n        const numberOfItems = nextChunk.length;\n\n        // RESET PAGINATION if needed\n        const filtersChanged = this.filtersChanged(\n            filters,\n            this.setItemsToCompare(\n                filters,\n                nextChunk,\n                searchTerm,\n                multiFiltersArr\n            )\n        );\n\n        if (filtersChanged) {\n            if (filters?.paginator) {\n                const size =\n                    filters.paginator.value.end - filters.paginator.value.start;\n                filters.paginator.value.start = 0;\n                filters.paginator.value.end = size;\n            }\n\n            if (filters.virtualScroll) {\n                // reset virtual scroll items\n                this.virtualScrollData = [];\n            }\n        }\n\n        nextChunk = <T[]>this.sortingHandler(filters, nextChunk);\n        nextChunk = this.paginationHandler(filters, nextChunk);\n        nextChunk = this.virtualScrollHandler(filters, nextChunk);\n\n        return {\n            repeat: {\n                itemsSource: nextChunk,\n            },\n            paginator: {\n                total: numberOfItems,\n                reset: filtersChanged,\n            },\n            ...this._allCategoriesResult,\n        };\n    }\n\n    protected prepareData(): T[] {\n        return this._allData;\n    }\n\n    protected searchHandler(searchTerm: any): T[] {\n        return this.searchService.search(\n            this._allData,\n            this._searchProps,\n            searchTerm\n        );\n    }\n\n    protected multiFilterHandler(nextChunk: T[], multiFiltersArr: any): T[] {\n        const allCategoriesArr: IFilterItem<string[]>[] = multiFiltersArr.map(\n            (el: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>) =>\n                this.getAllCategories(el)\n        );\n        if (multiFiltersArr.length) {\n            const filteredResult = this.searchThru(multiFiltersArr, nextChunk);\n            const selectedFilters = this.getSelectedFilters(multiFiltersArr);\n            // if some filters selected and filter result = 0, returning empty array\n            if (filteredResult.length || selectedFilters.length) {\n                nextChunk = _intersection(...filteredResult);\n            }\n        }\n        // count number of occurrences of every item\n        this._allCategoriesResult = this.countAvailableResults(\n            allCategoriesArr,\n            nextChunk\n        );\n        return nextChunk;\n    }\n\n    protected sortingHandler(filters: any, nextChunk: T[]): T[] {\n        if (\n            _get(filters, \"sorter.value.sortBy\") &&\n            _get(filters, \"sorter.value.direction\")\n        ) {\n            // Original direction means that sorting is not needed\n            if (filters.sorter.value.direction !== SorterDirection.original) {\n                return _orderBy(\n                    nextChunk,\n                    filters.sorter.value.sortBy,\n                    filters.sorter.value.direction\n                );\n            }\n        }\n        return nextChunk;\n    }\n\n    protected paginationHandler(filters: any, nextChunk: T[]): T[] {\n        if (filters?.paginator) {\n            return nextChunk.slice(\n                filters.paginator.value.start,\n                filters.paginator.value.end\n            );\n        }\n        return nextChunk;\n    }\n\n    protected virtualScrollHandler(filters: any, nextChunk: T[]): T[] {\n        let data = nextChunk;\n        if (filters?.virtualScroll) {\n            data = nextChunk.slice(\n                filters.virtualScroll.value.start,\n                filters.virtualScroll.value.end\n            );\n\n            // for virtual scroll we must always append current chunk to the previous ones\n            data = this.virtualScrollData = this.virtualScrollData.concat(data);\n        }\n\n        return data;\n    }\n\n    /**\n     * @deprecated in v11 - Use filtersChanged instead - Removal: NUI-5796\n     */\n    protected paginationReset(filters: any, itemsToCompare: any): boolean {\n        return this.filtersChanged(filters, itemsToCompare);\n    }\n\n    public filtersChanged(filters: any, itemsToCompare: any): boolean {\n        if (this._previousFilters) {\n            if (this.isValueChanged(itemsToCompare)) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    protected setItemsToCompare(\n        filters: F,\n        nextChunk: T[],\n        searchTerm: string | undefined,\n        multiFiltersArr: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[]\n    ): ComparisonItems[] {\n        // GET FILTERS from previous filtering\n        const previousSortBy = _get(\n            this._previousFilters,\n            \"sorter.value.sortBy\"\n        );\n        const previousDirection = _get(\n            this._previousFilters,\n            \"sorter.value.direction\"\n        );\n        const previousSearchTerm = _get(this._previousFilters, \"search.value\");\n        const previousMultiFiltersArr = this.extractMultiFilters(\n            this._previousFilters\n        );\n\n        const sortBy = _get(filters, \"sorter.value.sortBy\");\n        const direction = _get(filters, \"sorter.value.direction\");\n\n        const itemsToCompare: ComparisonItems[] = [];\n        itemsToCompare.push({\n            previousValue: previousSortBy,\n            currentValue: sortBy,\n        });\n        itemsToCompare.push({\n            previousValue: previousDirection,\n            currentValue: direction,\n        });\n        itemsToCompare.push({\n            previousValue: previousSearchTerm,\n            currentValue: searchTerm,\n        });\n        itemsToCompare.push({\n            previousValue: previousMultiFiltersArr,\n            currentValue: multiFiltersArr,\n        });\n        return itemsToCompare;\n    }\n\n    protected extractMultiFilters(\n        filters: F\n    ): IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[] {\n        const multiFilterArr: IFilterGroup<\n            IFilter<string[], IMultiFilterMetadata>\n        >[] = [];\n        _forEach(filters, (value, key) => {\n            if (value?.type === \"string[]\") {\n                multiFilterArr.push({ [key]: value } as any);\n            }\n        });\n        return multiFilterArr;\n    }\n\n    private getSelectedFilters(\n        multiFiltersArr: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[]\n    ): string[] {\n        return multiFiltersArr.reduce(\n            (\n                prev: string[],\n                curr: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>\n            ) => prev.concat(curr[Object.keys(curr)[0]].value),\n            []\n        );\n    }\n\n    private countAvailableResults(\n        allCategoriesArr: IFilterItem<string[]>[],\n        nextChunk: T[]\n    ): IFilterGroup<IFilterItem<number>> {\n        const allCategoriesResult: IFilterGroup<IFilterItem<number>[]>[] =\n            allCategoriesArr.map((el, index) => {\n                const key: string = Object.keys(el)[0];\n                const valuesArr: string[] = allCategoriesArr[index][key];\n                const resultArr = valuesArr.map((element: string) => {\n                    const r: T[] = this.searchService.search(\n                        nextChunk,\n                        [key],\n                        element\n                    );\n                    return { [element]: r.length };\n                });\n                return { [key]: resultArr };\n            });\n\n        return (\n            allCategoriesResult\n                // convert array to an object\n                .reduce((prev: any, curr: any) => {\n                    const [prop] = Object.keys(curr);\n                    // convert array to an object\n                    const newObj = curr[prop].reduce(\n                        (previous: any, current: any) => {\n                            const [property] = Object.keys(current);\n                            previous[property] = current[property];\n                            return previous;\n                        },\n                        {}\n                    );\n                    prev[prop] = newObj;\n                    return prev;\n                }, {})\n        );\n    }\n\n    private searchThru(\n        arrToMap: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[],\n        arrToSearchIn: T[]\n    ) {\n        // We are filtering out filter groups which doesn't have selected filters. If filters are not present,\n        // it means that filtered data with this filters should not participate in intersection\n        return arrToMap\n            .filter((arr) => !!arr[Object.keys(arr)[0]].value.length)\n            .map(\n                (\n                    multiFilter: IFilterGroup<\n                        IFilter<string[], IMultiFilterMetadata>\n                    >\n                ) => {\n                    const [prop] = Object.keys(multiFilter);\n                    return (\n                        multiFilter[prop].value // extract value array\n                            // find matches\n                            .map((el: string) =>\n                                this.searchService.search(\n                                    arrToSearchIn,\n                                    [prop],\n                                    el\n                                )\n                            )\n                            // flatten returned multidimensional arrays\n                            .reduce(\n                                (prev: T[], curr: T[]) => prev.concat(curr),\n                                []\n                            )\n                    );\n                }\n            );\n    }\n\n    private getAllCategories(\n        multiFilter: IFilterGroup<IFilter<string[], IMultiFilterMetadata>>\n    ) {\n        if (!multiFilter) {\n            return;\n        }\n        const [prop] = Object.keys(multiFilter);\n        const { metadata }: IFilter<string[], IMultiFilterMetadata> =\n            multiFilter[prop];\n        return { [prop]: metadata?.allCategories };\n    }\n\n    private isValueChanged(valuesArr: ComparisonItems[]) {\n        for (const { previousValue, currentValue } of valuesArr) {\n            if (!_isEqual(previousValue, currentValue)) {\n                return true;\n            }\n        }\n        return false;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable } from \"@angular/core\";\nimport _forEach from \"lodash/forEach\";\nimport _get from \"lodash/get\";\nimport _orderBy from \"lodash/orderBy\";\n\nimport { DataSourceService } from \"./data-source.service\";\nimport {\n    IFilter,\n    IFilterGroup,\n    IMultiFilterMetadata,\n    INovaFilteringOutputs,\n    INovaFilters,\n} from \"./public-api\";\nimport { SorterDirection } from \"../../lib/sorter/public-api\";\nimport { SearchService } from \"../search.service\";\n\n/**\n * <example-url>./../examples/index.html#/common/data-source-service/client-side</example-url>\n */\n@Injectable()\nexport class ClientSideDataSource<\n    T,\n    F extends INovaFilters = INovaFilters\n> extends DataSourceService<T, F> {\n    protected _allData: T[];\n    protected _searchProps: string[] = [];\n\n    // cache used to store our previous fetched results while scrolling\n    // and more data is automatically fetched from the backend\n    protected virtualScrollData: T[] = [];\n\n    constructor(protected searchService: SearchService) {\n        super();\n    }\n\n    public setData(initialData: T[] = []): void {\n        this._allData = initialData;\n    }\n\n    public setSearchProperties(properties: string[]): void {\n        this._searchProps = properties;\n    }\n\n    public async getFilteredData(filters: F): Promise<INovaFilteringOutputs> {\n        let nextChunk: T[] = this.prepareData(filters);\n\n        // APPLY SEARCH USING CHECKBOX VALUES\n        const searchTerm: string | undefined = filters?.search?.value;\n        // APPLY SEARCH\n        if (searchTerm) {\n            nextChunk = this.searchHandler(searchTerm);\n        }\n\n        const numberOfItems = nextChunk.length;\n\n        if (this.shouldResetFilters(filters) && filters?.virtualScroll) {\n            // reset virtual scroll items\n            this.virtualScrollData = [];\n        }\n\n        nextChunk = <T[]>this.sortingHandler(filters, nextChunk);\n        nextChunk = this.paginationHandler(filters, nextChunk);\n        nextChunk = this.virtualScrollHandler(filters, nextChunk);\n\n        return {\n            repeat: {\n                itemsSource: nextChunk,\n            },\n            paginator: {\n                total: numberOfItems,\n            },\n        };\n    }\n\n    protected prepareData(filters: F): T[] {\n        return this._allData;\n    }\n\n    protected searchHandler(searchTerm: any): T[] {\n        return this.searchService.search(\n            this._allData,\n            this._searchProps,\n            searchTerm\n        );\n    }\n\n    protected sortingHandler(filters: any, nextChunk: T[]): T[] {\n        if (\n            _get(filters, \"sorter.value.sortBy\") &&\n            _get(filters, \"sorter.value.direction\")\n        ) {\n            // Original direction means that sorting is not needed\n            if (filters.sorter.value.direction !== SorterDirection.original) {\n                return _orderBy(\n                    nextChunk,\n                    filters.sorter.value.sortBy,\n                    filters.sorter.value.direction\n                );\n            }\n        }\n        return nextChunk;\n    }\n\n    protected paginationHandler(filters: any, nextChunk: T[]): T[] {\n        if (filters?.paginator) {\n            return nextChunk.slice(\n                filters.paginator.value.start,\n                filters.paginator.value.end\n            );\n        }\n        return nextChunk;\n    }\n\n    protected virtualScrollHandler(filters: any, nextChunk: T[]): T[] {\n        let data = nextChunk;\n        if (filters?.virtualScroll) {\n            data = nextChunk.slice(\n                filters.virtualScroll.value.start,\n                filters.virtualScroll.value.end\n            );\n\n            // for virtual scroll we must always append current chunk to the previous ones\n            data = this.virtualScrollData = this.virtualScrollData.concat(data);\n        }\n\n        return data;\n    }\n\n    protected extractMultiFilters(\n        filters: F\n    ): IFilterGroup<IFilter<string[], IMultiFilterMetadata>>[] {\n        const multiFilterArr: IFilterGroup<\n            IFilter<string[], IMultiFilterMetadata>\n        >[] = [];\n        _forEach(filters, (value, key) => {\n            if (value?.type === \"string[]\") {\n                multiFilterArr.push({ [key]: value } as any);\n            }\n        });\n        return multiFilterArr;\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { Injectable, OnDestroy } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { switchMap, takeUntil, tap } from \"rxjs/operators\";\n\nimport { DataSourceService } from \"./data-source.service\";\nimport { IFilteringOutputs, IFilters } from \"./public-api\";\n\n/**\n * <example-url>./../examples/index.html#/common/server-side-data-source</example-url>\n */\n@Injectable()\nexport abstract class ServerSideDataSource<\n        T,\n        F extends IFilters = IFilters,\n        D extends IFilters = IFilters\n    >\n    extends DataSourceService<T>\n    implements OnDestroy\n{\n    public busy = new BehaviorSubject(false);\n\n    protected applyFilters$ = new Subject<F>();\n    protected destroy$: Subject<void> = new Subject<void>();\n\n    constructor() {\n        super();\n\n        this.setupFilters();\n    }\n\n    protected setupFilters(): void {\n        this.applyFilters$\n            .pipe(\n                tap((filters) => this.beforeApplyFilters(filters)),\n                switchMap((filters: F) => this.getBackendData(filters)),\n                tap(async (data: D) => this.afterApplyFilters(data)),\n                takeUntil(this.destroy$)\n            )\n            .subscribe();\n    }\n\n    // make sure we clean upon service destruction\n    public ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n        this.busy.complete();\n    }\n\n    protected beforeApplyFilters(filters: F): void {\n        // show the loader\n        this.busy.next(true);\n\n        this.shouldResetFilters(filters);\n    }\n\n    protected async afterApplyFilters(data: D): Promise<void> {\n        await super.afterApplyFilters(data);\n\n        // no matter if the backend response was successful or not,\n        // we need to hide our loader and reset the filters\n        this.busy.next(false);\n    }\n\n    public async applyFilters(): Promise<void> {\n        this.applyFilters$.next(this.getFilters() as F);\n    }\n\n    public abstract getFilteredData(data: D): Promise<IFilteringOutputs>;\n\n    protected abstract getBackendData(filters: F): Observable<D>;\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nimport { ListRange } from \"@angular/cdk/collections\";\nimport { CdkVirtualScrollViewport } from \"@angular/cdk/scrolling\";\nimport { Injectable } from \"@angular/core\";\nimport isUndefined from \"lodash/isUndefined\";\nimport { merge, MonoTypeOperatorFunction, Observable, of } from \"rxjs\";\nimport { filter, map, takeWhile, tap } from \"rxjs/operators\";\n\nimport { IFilter, IFilterPub } from \"./data-source/public-api\";\nimport { IVirtualPageConfig, IVirtualViewportResetOptions } from \"./public-api\";\n\n/** @ignore */\nconst DEFAULT_RANGE: ListRange = { start: 0, end: 0 };\n\n/**\n * <example-url>./../examples/index.html#/common/virtual-viewport-manager</example-url>\n */\n@Injectable()\nexport class VirtualViewportManager implements IFilterPub {\n    private _viewportRef: CdkVirtualScrollViewport;\n    private _currentPageRange: ListRange = DEFAULT_RANGE;\n    private _pageSize: number;\n\n    /**\n     * Entry point for VirtualViewportManager\n     * @param  viewportRef - CDK Viewport reference on which you want to perform observations\n     * @returns self (VirtualViewportManager)\n     */\n    public setViewport(\n        viewportRef: CdkVirtualScrollViewport\n    ): VirtualViewportManager {\n        if (this._viewportRef) {\n            throw new Error(\"Viewport is already set\");\n        }\n        if (!viewportRef) {\n            throw new Error(\"Invalid viewport provided\");\n        }\n\n        this._viewportRef = viewportRef;\n\n        this.checkViewportUntilValid();\n\n        return this;\n    }\n\n    public get currentPageRange(): Readonly<ListRange> {\n        return this._currentPageRange;\n    }\n\n    /**\n     * Observes the changes of viewport and emits when current range has been rendered\n     * and a new one should be loaded\n     * @param  config accepts and IVirtualPageConfig which contains page observer's configuration\n     * It is requiring pageSize prop to be set to delegate responsibility of pagination to ViewportManager\n     * @returns Stream of pages with fixed size\n     */\n    public observeNextPage$(config: IVirtualPageConfig): Observable<ListRange> {\n        if (!this._viewportRef) {\n            throw new Error(\"Please provide the viewport\");\n        }\n\n        this._pageSize = config.pageSize;\n\n        this.updateCurrentPage({ start: 0, end: config.pageSize });\n\n        // Note: renderedRangeStream does not emit \"first page\" which can be a problem\n        const streamParticipants: Observable<ListRange>[] = [\n            this._viewportRef.renderedRangeStream,\n        ];\n        const shouldEmitFirstPage = !isUndefined(config.emitFirstPage)\n            ? config.emitFirstPage\n            : true;\n        if (shouldEmitFirstPage) {\n            streamParticipants.push(of(this.currentPageRange));\n        }\n\n        return merge(...streamParticipants).pipe(\n            this.mapToPageSize(config.pageSize)\n        );\n    }\n\n    public getFilters(): IFilter<ListRange> {\n        return {\n            type: \"virtualScroll\",\n            value: this.currentPageRange,\n        };\n    }\n\n    /**\n     * Resetting viewportManager to initial state\n     * @param  options In case VirtualViewportManager is used along with filters (sorting, search...)\n     * we can prevent default behaviour of emitting firstPageEvent and let user to set first batch of data\n     * @returns void\n     */\n    public reset(\n        options: IVirtualViewportResetOptions = { emitFirstPage: true }\n    ): void {\n        if (!this._viewportRef) {\n            // Note: If there is no viewportRef or it been invoked\n            // prematurely we will suppress that method call;\n            return;\n        }\n\n        // Note: Since we're relying on Viewport's renderedRangeStream\n        // we need to scroll on top to be reset the stream to it's starting point\n        this._viewportRef.scrollToOffset(0);\n        // Note: Setting the end value equal to pageSize to avoid ViewportManager\n        // incrementing the current page and emitting first page event\n        this._currentPageRange = {\n            ...DEFAULT_RANGE,\n            end: options.emitFirstPage ? 0 : this._pageSize,\n        };\n        // Note: Skipping one tick to let CDK Viewport update his internal properties\n        setTimeout(() => {\n            // Note: Resetting the viewport to initial state\n            this._viewportRef.setRenderedRange(DEFAULT_RANGE);\n            this._viewportRef.checkViewportSize();\n        });\n    }\n\n    private updateCurrentPage(range: ListRange): ListRange {\n        return (this._currentPageRange = range);\n    }\n\n    // Note: Temporary fix related to the CDK Viewport bug\n    // https://github.com/angular/components/issues/15622\n    // To ensure that CDK Viewport got correct parameters\n    // we recheck the viewport size if it is equal to 0\n    private checkViewportUntilValid(): void {\n        this._viewportRef\n            .elementScrolled()\n            .pipe(\n                takeWhile(() => this._viewportRef.getViewportSize() === 0),\n                tap(() => this._viewportRef.checkViewportSize())\n            )\n            .subscribe();\n    }\n\n    protected mapToPageSize(\n        pageSize: number\n    ): MonoTypeOperatorFunction<ListRange> {\n        return (source: Observable<ListRange>) =>\n            source.pipe(\n                // Note: We have to reduce number of events to only pagination related,\n                // By emitting only when previous page range was scrolled to the end\n                filter(\n                    (renderedRange: ListRange) =>\n                        this.currentPageRange.end <= renderedRange.end\n                ),\n                map((range, index) => {\n                    // Note: Avoiding incrementation for the first emission\n                    if (index === 0) {\n                        return this.currentPageRange;\n                    }\n                    return this.updateCurrentPage({\n                        start: this.currentPageRange.end,\n                        end: this.currentPageRange.end + pageSize,\n                    });\n                })\n            );\n    }\n}\n","// © 2022 SolarWinds Worldwide, LLC. All rights reserved.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to\n//  deal in the Software without restriction, including without limitation the\n//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n//  sell copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n\nexport * from \"./nui-api\";\n\n// Every component should be exported from here directly to avoid strange metadata aliasing\nexport { BreadcrumbComponent } from \"./lib/breadcrumb/breadcrumb.component\";\nexport { ContentComponent } from \"./lib/content/content.component\";\nexport { ExpanderComponent } from \"./lib/expander/expander.component\";\nexport { MessageComponent } from \"./lib/message/message.component\";\nexport { DividerComponent } from \"./lib/divider/divider.component\";\nexport { RadioComponent } from \"./lib/radio/radio-group.component\";\nexport { RadioGroupComponent } from \"./lib/radio/radio-group.component\";\nexport { CheckboxComponent } from \"./lib/checkbox/checkbox.component\";\nexport { CheckboxGroupComponent } from \"./lib/checkbox/checkbox-group.component\";\nexport { ColorPickerComponent } from \"./lib/color-picker/color-picker.component\";\nexport { ChipComponent } from \"./lib/chips/chip/chip.component\";\nexport { ChipsComponent } from \"./lib/chips/chips.component\";\nexport { ChipsOverflowComponent } from \"./lib/chips/chips-overflow/chips-overflow.component\";\nexport { DraggableComponent } from \"./lib/dragdrop/draggable.component\";\nexport { DroppableComponent } from \"./lib/dragdrop/droppable.component\";\nexport { IconComponent } from \"./lib/icon/icon.component\";\nexport { SpinnerComponent } from \"./lib/spinner/spinner.component\";\nexport { SwitchComponent } from \"./lib/switch/switch.component\";\nexport { PaginatorComponent } from \"./lib/paginator/paginator.component\";\nexport { ProgressComponent } from \"./lib/progress/progress.component\";\nexport { PanelComponent } from \"./lib/panel/panel.component\";\nexport { ButtonComponent } from \"./lib/button/button.component\";\nexport { BusyComponent } from \"./lib/busy/busy.component\";\nexport { ImageComponent } from \"./lib/image/image.component\";\nexport { SearchComponent } from \"./lib/search/search.component\";\nexport { TextboxComponent } from \"./lib/textbox/textbox.component\";\nexport { RepeatItemComponent } from \"./lib/repeat/repeat-item/repeat-item.component\";\nexport { RepeatComponent } from \"./lib/repeat/repeat.component\";\nexport { RiskScoreComponent } from \"./lib/risk-score/risk-score.component\";\nexport { MenuActionComponent } from \"./lib/menu/menu-item/menu-action/menu-action.component\";\nexport { MenuComponent } from \"./lib/menu/menu/menu.component\";\nexport { MenuGroupComponent } from \"./lib/menu/menu-item/menu-group/menu-group.component\";\nexport { MenuItemBaseComponent } from \"./lib/menu/menu-item/menu-item/menu-item-base\";\nexport { MenuLinkComponent } from \"./lib/menu/menu-item/menu-link/menu-link.component\";\nexport { MenuOptionComponent } from \"./lib/menu/menu-item/menu-option/menu-option.component\";\nexport { MenuPopupComponent } from \"./lib/menu/menu-popup/menu-popup.component\";\nexport { MenuSwitchComponent } from \"./lib/menu/menu-item/menu-switch/menu-switch.component\";\nexport { WizardStepComponent } from \"./lib/wizard/wizard-step.component\";\nexport { WizardComponent } from \"./lib/wizard/wizard.component\";\nexport { ToastComponent } from \"./lib/toast/toast.component\";\nexport { PopupDeprecatedComponent } from \"./lib/popup/popup.component\";\nexport { PopupToggleDirective } from \"./lib/popup/popup-toggle.directive\";\nexport { SelectorComponent } from \"./lib/selector/selector.component\";\nexport { PopoverComponent } from \"./lib/popover/popover.component\";\nexport { PopupComponent } from \"./lib/popup-adapter/popup-adapter.component\";\nexport { PopoverModalComponent } from \"./lib/popover/popover-modal.component\";\nexport { SelectComponent } from \"./lib/select/select.component\";\nexport { SelectV2OptionComponent } from \"./lib/select-v2/option/select-v2-option.component\";\nexport { SelectV2OptionGroupComponent } from \"./lib/select-v2/option-group/select-v2-option-group.component\";\nexport { ComboboxV2OptionHighlightDirective } from \"./lib/select-v2/combobox-v2-option-highlight/combobox-v2-option-highlight.directive\";\nexport { OverlayItemComponent } from \"./lib/overlay/overlay-item/overlay-item.component\";\nexport { OverlayComponent } from \"./lib/overlay/overlay-component/overlay.component\";\nexport { OverlayArrowComponent as ArrowComponent } from \"./lib/overlay/arrow-component/overlay-arrow.component\";\nexport { SelectV2Component } from \"./lib/select-v2/select/select-v2.component\";\nexport { ComboboxV2Component } from \"./lib/select-v2/combobox-v2/combobox-v2.component\";\nexport { MarkAsSelectedItemDirective } from \"./lib/select-v2/mark-as-selected-item.directive\";\nexport { ComboboxComponent } from \"./lib/select/combobox/combobox.component\";\nexport { BaseSelect } from \"./lib/select/base-select\";\nexport { DatePickerComponent } from \"./lib/date-picker/date-picker.component\";\nexport { TimePickerComponent } from \"./lib/time-picker/time-picker.component\";\nexport { TimeFramePickerComponent } from \"./lib/time-frame-picker/time-frame-picker.component\";\nexport { DateTimePickerComponent } from \"./lib/date-time-picker/date-time-picker.component\";\nexport { SorterComponent } from \"./lib/sorter/sorter.component\";\nexport { DialogComponent } from \"./lib/dialog/dialog.component\";\nexport { NuiDialogRef } from \"./lib/dialog/dialog-ref\";\nexport { DialogHeaderComponent } from \"./lib/dialog/dialog-header.component\";\nexport { DialogFooterComponent } from \"./lib/dialog/dialog-footer.component\";\nexport { DialogBackdropComponent } from \"./lib/dialog/dialog-backdrop.component\";\nexport { ConfirmationDialogComponent } from \"./lib/dialog/confirmation-dialog.component\";\nexport { TableComponent } from \"./lib/table/table.component\";\nexport {\n    TableFooterRowComponent,\n    TableHeaderRowComponent,\n    TableRowComponent,\n    TableFooterRowDefDirective,\n    TableRowDefDirective,\n    TableHeaderRowDefDirective,\n} from \"./lib/table/table-row/table-row.component\";\nexport { CardComponent } from \"./lib/layout/card/card.component\";\nexport { CardGroupComponent } from \"./lib/layout/card-group/card-group.component\";\nexport { SheetComponent } from \"./lib/layout/sheet/sheet.component\";\nexport { SheetGroupComponent } from \"./lib/layout/sheet-group/sheet-group.component\";\nexport { TableHeaderCellComponent } from \"./lib/table/table-cell/table-header-cell.component\";\nexport { TableFooterCellDefDirective } from \"./lib/table/table-cell/table-footer-cell-def.directive\";\nexport { TableFooterCellDirective } from \"./lib/table/table-cell/table-footer-cell.directive\";\nexport { TableHeaderCellDefDirective } from \"./lib/table/table-cell/table-header-cell-def.directive\";\nexport { TableColumnDefDirective } from \"./lib/table/table-cell/table-column-def.directive\";\nexport { TableCellDirective } from \"./lib/table/table-cell/table-cell.directive\";\nexport { TableCellDefDirective } from \"./lib/table/table-cell/table-cell-def.directive\";\nexport { TableResizerDirective } from \"./lib/table/table-resizer/table-resizer.directive\";\nexport { ToolbarComponent } from \"./lib/toolbar/toolbar.component\";\nexport { ToolbarGroupComponent } from \"./lib/toolbar/toolbar-group.component\";\nexport { ToolbarItemComponent } from \"./lib/toolbar/toolbar-item.component\";\nexport { ToolbarMessageComponent } from \"./lib/toolbar/toolbar-message.component\";\nexport { ToolbarSplitterComponent } from \"./lib/toolbar/toolbar-splitter.component\";\nexport { ValidationMessageComponent } from \"./lib/validation-message/validation-message.component\";\nexport { TextboxNumberComponent } from \"./lib/textbox/textbox-number/textbox-number.component\";\nexport { FormFieldComponent } from \"./lib/form-field/form-field.component\";\nexport { TabGroupComponent } from \"./lib/tabgroup/tab-group/tab-group.component\";\nexport { TabHeadingCustomTemplateRefDirective } from \"./lib/tabgroup/tab/tab-heading-custom-template-ref.directive\";\nexport { TabHeadingDirective } from \"./lib/tabgroup/tab/tab-heading.directive\";\nexport { TabComponent } from \"./lib/tabgroup/tab/tab.component\";\nexport { ClickFilterDirective } from \"./common/directives/click-filter/click-filter.directive\";\nexport { ClipboardDirective } from \"./common/directives/clipboard/clipboard.directive\";\nexport { DraggableDirective } from \"./common/directives/dragdrop/draggable.directive\";\nexport { DroppableDirective } from \"./common/directives/dragdrop/droppable.directive\";\nexport { ResizeObserverDirective } from \"./common/directives/resize-observer/resize-observer.directive\";\nexport { ResizerDirective } from \"./common/directives/resizer/resizer.directive\";\nexport { ResizeDirective } from \"./common/directives/resize/resize.directive\";\nexport { SetFocusDirective } from \"./common/directives/set-focus/set-focus.directive\";\nexport { TooltipDirective } from \"./lib/tooltip/tooltip.directive\";\nexport { ZoomContentDirective } from \"./common/directives/zoom-content/zoom-content.directive\";\nexport { FreetypeQueryBuilderComponent } from \"./lib/freetype-query-builder/freetype-query-builder.component\";\nexport { TextHighlightOverlayComponent } from \"./lib/freetype-query-builder/text-highlight-overlay/text-highlight-overlay-component\";\n\n// these are not public, but v9 ng-packgr complains without them\nexport { ThemeSwitcherComponent } from \"./lib/docs/theme-switcher/theme-switcher.component\";\nexport { ClickInterceptorDirective } from \"./common/directives/click-interceptor/click-interceptor.directive\";\nexport { MenuItemComponent } from \"./lib/menu/menu-item/menu-item/menu-item.component\";\nexport { TabHeadingComponent } from \"./lib/tabgroup/tab-heading/tab-heading.component\";\nexport { TabHeadingGroupComponent } from \"./lib/tabgroup/tab-heading-group/tab-heading-group.component\";\nexport { TooltipComponent } from \"./lib/tooltip/tooltip.component\";\n\nexport { LayoutResizerComponent } from \"./lib/layout/layout-resizer/layout-resizer.component\";\nexport { TimeFrameBarComponent } from \"./lib/convenience/time-frame-bar/time-frame-bar.component\";\nexport { QuickPickerComponent } from \"./lib/time-frame-picker/quick-picker/quick-picker.component\";\nexport { CopyTextComponent } from \"./lib/docs/copy-text/copy-text.component\";\nexport { ExampleWrapperComponent } from \"./lib/docs/example-wrapper/example-wrapper.component\";\nexport { ExampleCodeComponent } from \"./lib/docs/example-code/example-code.component\";\nexport { SrlcIndicatorComponent } from \"./lib/docs/srlc-indicator/srlc-indicator.component\";\n\n// Pipes\nexport { HighlightPipe } from \"./pipes/highlight.pipe\";\nexport { LimitToPipe } from \"./pipes/limit-to.pipe\";\nexport { MapKeyValuePipe } from \"./pipes/map-key-value.pipe\";\nexport { TimeFrameFormatPipe } from \"./lib/time-frame-picker/time-frame-format.pipe\";\nexport { UnitConversionPipe } from \"./pipes/unit-conversion.pipe\";\n\n// Every Service should be exposed as well\nexport { IconService } from \"./lib/icon/icon.service\";\nexport { DragAndDropService } from \"./common/directives/dragdrop/drag-and-drop.service\";\nexport { BreadcrumbStateService } from \"./lib/breadcrumb/breadcrumb-state.service\";\nexport { NoopDataSourceService } from \"./services/data-source/noop-data-source.service\";\nexport { DataSourceService } from \"./services/data-source/data-source.service\";\nexport { DataSourceFeatures } from \"./services/data-source/data-source-features\";\nexport { DataFilterService } from \"./services/data-filter.service\";\nexport { DialogStackService } from \"./lib/dialog/dialog-stack.service\";\nexport { DialogService } from \"./lib/dialog/dialog.service\";\nexport { DomUtilService } from \"./services/dom-util.service\";\nexport { EdgeDetectionService } from \"./services/edge-detection.service\";\nexport { EventPropagationService } from \"./services/event-propagation.service\";\nexport { HistoryStorage } from \"./services/history-storage\";\nexport { ListService } from \"./services/list.service\";\nexport { LoggerService } from \"./services/log-service\";\nexport {\n    NotificationHandler,\n    NotificationService,\n} from \"./services/notification-service\";\nexport { PositionService } from \"./services/position.service\";\nexport { SearchService } from \"./services/search.service\";\nexport { SelectorService } from \"./lib/selector/selector.service\";\nexport { UtilService } from \"./services/util.service\";\nexport { TimeframeService } from \"./lib/time-frame-picker/services/timeframe.service\";\nexport { ToastContainerService } from \"./lib/toast/toast-container.service\";\nexport { ToastService } from \"./lib/toast/toast.service\";\nexport { ToastDirective } from \"./lib/toast/toast.directive\";\nexport { ThemeSwitchService } from \"./services/theme-switch.service\";\nexport { TransientCacheService } from \"./services/transient-cache.service\";\nexport { TableStateHandlerService } from \"./lib/table/table-state-handler.service\";\nexport { UnitConversionService } from \"./services/unit-conversion.service\";\nexport { LocalFilteringDataSource } from \"./services/data-source/local-filtering-data-source.service\";\nexport { ClientSideDataSource } from \"./services/data-source/client-side-data-source.service\";\nexport { ServerSideDataSource } from \"./services/data-source/server-side-source.service\";\nexport { EventBusService } from \"./services/event-bus.service\";\nexport { EventBus } from \"./services/event-bus\";\nexport { MenuKeyControlService } from \"./lib/menu/menu-key-control.service\";\nexport { VirtualViewportManager } from \"./services/virtual-viewport-manager.service\";\nexport { OverlayContainerService } from \"./lib/overlay/overlay-container.service\";\nexport { OverlayPositionService } from \"./lib/overlay/overlay-position.service\";\nexport { OverlayService } from \"./lib/overlay/overlay.service\";\nexport { ColorService } from \"./lib/color-picker/color.service\";\n\n\n// External tokens also should be exposed here\nexport { DEMO_PATH_TOKEN } from \"./constants/path.constants\";\n\n// Animations expose\nexport { expand } from \"./animations/expand\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.NuiEnvironment","i1","i1.LoggerService","i3.IconComponent","_isUndefined","isEmpty","i1.UnitConversionService","includes","isObject","isNil","i1.UtilService","i1.EventBusService","isEqual","scrollConstants","i1.DragAndDropService","forEach","filter","i2.EventBusService","isFinite","IMAGES_PRESET","i2","i2.IconComponent","i3.ButtonComponent","_isNull","i2.OverlayContainerService","isMouseEvent","some","i1.OverlayPositionService","i2.OverlayService","i3","i4.EventBusService","i6","i3.ClickInterceptorDirective","i4.OverlayComponent","i2.DividerComponent","i1.MenuGroupComponent","i2.CheckboxComponent","i2.SwitchComponent","_isFunction","i3.MenuActionComponent","i4.MenuItemComponent","i5.MenuLinkComponent","i6.MenuOptionComponent","i7.MenuSwitchComponent","i1.MenuKeyControlService","i4.PopupToggleDirective","i5.PopupComponent","i6.MenuPopupComponent","take","i1.PositionService","i2.EdgeDetectionService","i1.EdgeDetectionService","i3.LoggerService","i4.PopupContainerService","i5.ClickInterceptorDirective","i1.OptionKeyControlService","i2.OverlayComponent","i2.OverlayPositionService","i2.SelectedItemsKeyControlService","i4","i5.ButtonComponent","i6.TooltipDirective","i7","i8.OverlayComponent","i1.HighlightPipe","_isNumber","_keys","i2.TableStateHandlerService","i5","i1.ErrorStateMatcher","assign","i4.TooltipDirective","_isBoolean","i3.OverlayArrowComponent","i3.PopoverPositionService","i1.PopoverComponent","i2.TooltipDirective","i3.WizardStepHeaderComponent","i4.WizardFooterComponent","i5.WizardOverflowComponent","i5.OverlayComponent","_isString","i2.SpinnerComponent","_debounce","_every","_isArray","_escape","i2.MenuKeyControlService","i4.LoggerService","i6.PopupToggleDirective","i7.PopupComponent","i8.IconComponent","i9.TextboxComponent","i10.ButtonComponent","i11.MenuActionComponent","i12.MenuGroupComponent","i13.HighlightPipe","i2.LoggerService","i4.MenuActionComponent","i5.MenuComponent","i6.MenuGroupComponent","i2.ButtonComponent","i4.CheckboxComponent","i5.RadioComponent","i7.RepeatItemComponent","i3.TabHeadingCustomTemplateRefDirective","i1.TabGroupComponent","i1.TabComponent","i3.TooltipDirective","i1.TabNavigationService","i3.SpinnerComponent","i1.ChipsOverflowService","i3.ChipComponent","i1.ChipsComponent","i1.ColorService","i4.SelectV2Component","i5.SelectV2OptionComponent","i6.IconComponent","_each","i1.DatePickerInnerComponent","_defaults","i2.TextboxComponent","i5.YearPickerComponent","i6.MonthPickerComponent","i7.DatePickerInnerComponent","i8.DayPickerComponent","i1.TimePickerKeyboardService","i5.MenuPopupComponent","i1.DatePickerComponent","i2.TimePickerComponent","i2.SetFocusDirective","i4.ButtonComponent","i1.NuiActiveDialog","i4.DialogHeaderComponent","i5.DialogFooterComponent","i1.DialogStackService","_forOwn","i3.PopoverComponent","i1.OverlayContainerService","i1.ToastServiceBase","i2.ToastPackage","i4.IconComponent","i1.NotificationService","i2.ToastContainerService","i2.ToastService","i3.FreeTypeQueryUtilsService","i5.DividerComponent","i7.SelectV2Component","i8.SelectV2OptionComponent","i9.SelectV2OptionGroupComponent","i10.TextHighlightOverlayComponent","i11.HighlightPipe","find","_clone","i2.PopupContainerService","i6.ButtonComponent","i8.SelectV2Component","i9.SelectV2OptionComponent","i3.ResizerDirective","i3.MenuPopupComponent","i2.SorterKeyboardService","i4.MenuPopupComponent","i6.OverlayComponent","i1.TableStateHandlerService","i1.TableColumnDefDirective","i3.UtilService","i5.IconComponent","i6.TableResizerDirective","i4.SelectorComponent","i6.RadioComponent","i7.CheckboxComponent","i1.TimeframeService","i2.DateTimePickerComponent","i6.PopoverComponent","i7.TooltipDirective","i2.ToolbarKeyboardService","i4.ResizeObserverDirective","i5.MenuActionComponent","i6.MenuComponent","i7.MenuGroupComponent","i8.DividerComponent","i9.ButtonComponent","i10.ToolbarMessageComponent","i2.BusyComponent","i1.ClipboardDirective","i1.SourcesService","i2.CodeSandboxService","i4.TabComponent","i5.TabGroupComponent","i7.ButtonComponent","i8.ImageComponent","i9.CopyTextComponent","i10.ExampleCodeComponent","i3.MessageComponent","i1.ThemeSwitchService","i1.SelectorService","i1.SearchService"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IAOY;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,KAAiB;AACjB,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AACpC,CAAC,EAHW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACzB1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;IACY;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,UAAA,CAAA,GAAA,mBAA8B;AAC9B,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,SAAA,CAAA,IAAA,CAAA,GAAA,kBAAuB;AACvB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,YAAsB;AACtB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,eAAqB;AACzB,CAAC,EAPW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;ACrBrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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CA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA2BA;AA+BA;AACM,MAAO,iBACT,SAAQ,YAAY,CAAA;AASpB,IAAA,WAAA,CACI,KAA8B,EAC9B,uBAAyE,EACzE,KAAwB,EACjB,aAA4B,EAAA;QAEnC,KAAK,CAAC,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC;QAFpD,IAAA,CAAA,aAAa,GAAb,aAAa;IAGxB;AAEO,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;IAC9B;IAEO,kBAAkB,GAAA;;;QAGrB,UAAU,CAAC,MAAK;YACZ,KAAK,CAAC,kBAAkB,EAAE;AAE1B,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,iBAAiB,EAAE;YAC5B;AAEA,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AAC7B,QAAA,CAAC,CAAC;;;QAIF,KAAK,CACD,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CACnD,CAAC,SAAS,CA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,YAAY,EAAE;wBACV,iBAAiB;wBACjB,uBAAuB;wBACvB,sBAAsB;wBACtB,sBAAsB;wBACtB,oBAAoB;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAClD,iBAAA;;;AC7ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAM,eAAe,GAAG;AAC3B,IAAA,wBAAwB,EAAE,EAAE;AAC5B,IAAA,0BAA0B,EAAE,EAAE;AAC9B,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,kBAAkB,EAAE,GAAG;AACvB,IAAA,oBAAoB,EAAE,GAAG;AACzB,IAAA,yBAAyB,EAAE,EAAE;;;AC1BjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;AAMG;SACa,YAAY,CAAI,MAAS,EAAE,IAAY,EAAE,KAAU,EAAA;AAC/D,IAAA,OAAO,IAAI,CAAC,MAAM,KAAK;AACnB,UAAE;AACF,UAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;AAC3D;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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"}