{"version":3,"file":"sentinel-one-singularity-ui.mjs","sources":["../../../projects/singularity-ui-lib/src/lib/modules/form-controls/slide-toggle/slide-toggle/slide-toggle.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/slide-toggle/slide-toggle.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/slide-toggle/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/enums/toast-notification-types.enum.ts","../../../projects/singularity-ui-lib/src/lib/utils/guid.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/services/toast-notification.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/toast-notification/toast-notification.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/toast-notification/toast-notification.component.html","../../../projects/singularity-ui-lib/src/lib/modules/pipes/safe-html/safe-html.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/pipes/safe-html/safe-html.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/toast-notification.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/toast-notification/public-api.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/consts/dark.consts.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/consts/light.consts.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/enums/color-palette-theme.enum.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/color-palette.service.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/utils/color-palette.utils.ts","../../../projects/singularity-ui-lib/src/lib/services/color-palette/public-api.ts","../../../projects/singularity-ui-lib/src/lib/decorators/set-timeout.decorator.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/input/input/input.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/input/input/input.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/input/input.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/input/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/progress-bar/progress-bar/progress-bar.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/progress-bar/progress-bar/progress-bar.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/progress-bar/progress-bar.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/progress-bar/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/tooltip-container/tooltip-container.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/tooltip-container/tooltip-container.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/utils/tooltip.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/services/tooltip.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/tooltip.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/progress-step/progress-step.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/progress-step/progress-step.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/tooltip.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/progress-step/progress-step.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/progress-step/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/breadcrumbs/breadcrumbs/breadcrumbs.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/breadcrumbs/breadcrumbs/breadcrumbs.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/breadcrumbs/breadcrumbs.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/breadcrumbs/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/paginator/services/paginator.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/paginator/paginator/paginator.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/paginator/paginator/paginator.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/paginator/paginator.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/paginator/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-footer/dialog-footer/dialog-footer.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-footer/dialog-footer/dialog-footer.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-footer/dialog-footer.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-footer/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/tooltip/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/help-tooltip/help-tooltip/help-tooltip.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/help-tooltip/help-tooltip/help-tooltip.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/help-tooltip/help-tooltip.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/help-tooltip/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/arrow-key-navigation/arrow-key-navigation.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/arrow-key-navigation/arrow-key-navigation.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/arrow-key-navigation/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side/click-out-side.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side/click-out-side.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side-no-drag/click-out-side-no-drag.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side-no-drag/click-out-side-no-drag.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/click-out-side-no-drag/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/context-menu/context-menu.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/context-menu/context-menu.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/context-menu/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/disable-copy/disable-copy.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/disable-copy/disable-copy.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/disable-copy/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/dynamic-component/dynamic-component.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/dynamic-component/dynamic-component.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/dynamic-component/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/ellipsis/ellipsis.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/ellipsis/ellipsis.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/ellipsis/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/forms/form-submit.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/forms/form-submit.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/forms/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/input-auto-focus/input-auto-focus.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/input-auto-focus/input-auto-focus.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/input-auto-focus/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/mat-checkbox-size/mat-checkbox-size.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/mat-checkbox-size/mat-checkbox-size.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/mat-checkbox-size/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/scroll-out-event/scroll-out-event.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/scroll-out-event/scroll-out-event.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/scroll-out-event/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/textarea-autosize/textarea-autosize.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/textarea-autosize/textarea-autosize.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/textarea-autosize/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/debounce-click/debounce-click.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/debounce-click/debounce-click.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/debounce-click/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/summary-box/summary-box/summary-box.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/summary-box/summary-box/summary-box.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/summary-box/summary-box.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/summary-box/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-visualization/chart/chart/chart.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-visualization/chart/chart/chart.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-visualization/chart/chart.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-visualization/chart/models/chart.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-visualization/chart/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/toggle-arrow/toggle-arrow/toggle-arrow.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/toggle-arrow/toggle-arrow.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/toggle-arrow/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/info-box/info-box/info-box.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/info-box/info-box/info-box.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/info-box/info-box.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/info-box/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/box/box/box.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/box/box/box.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/box/box.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/box/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/animation/animations.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/dialog-side-nav/dialog-side-nav.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/dialog-side-nav/dialog-side-nav.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/consts/dialog-side-nav.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/services/dialog-side-nav.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-header/dialog-side-nav-header.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-header/dialog-side-nav-header.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-footer/dialog-side-nav-footer.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-footer/dialog-side-nav-footer.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-container/dialog-side-nav-container.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-container/dialog-side-nav-container.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-body/dialog-side-nav-body.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/components/dialog-side-nav-body/dialog-side-nav-body.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/dialog-side-nav.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-side-nav/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/chip/consts/chip.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/chip/chip/chip.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/chip/chip/chip.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/chip/chip.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/chip/public-api.ts","../../../projects/singularity-ui-lib/src/lib/utils/color.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/color-picker/consts/color-picker.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/color-picker/color-picker/color-picker.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/color-picker/color-picker/color-picker.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/color-picker/color-picker.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/color-picker/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/uploader/models/upload-action.interface.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/uploader/uploader/uploader.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/uploader/uploader/uploader.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/uploader/uploader.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/uploader/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/enums/skin-options.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/enums/drop-down-menu-position-options.enum.ts","../../../projects/singularity-ui-lib/src/lib/services/http-call/enums/sing-http-methods.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/consts/drop-down.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/drop-down.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/enums/drop-down-event-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/services/drop-down-event-messages/drop-down-event-messages.operatoes.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/services/drop-down-event-messages/drop-down-event-messages.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/drop-down-inputs-validation.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/classes/selected-state.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/selected-items-state.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/enums/drop-down-selection-changes-action-types.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/trigger-toggle-arrow/trigger-toggle-arrow.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/trigger-toggle-arrow/trigger-toggle-arrow.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-trigger/default-trigger.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-trigger/default-trigger.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/drop-down-search/drop-down-search.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/drop-down-search/drop-down-search.component.html","../../../projects/singularity-ui-lib/src/lib/enums/event-code-options.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/directives/drop-down-dynamic.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/dynamic-drop-down-item-container/dynamic-drop-down-item-container.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/dynamic-drop-down-item-container/dynamic-drop-down-item-container.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/loader/loader.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/loader/loader.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/empty-search-state/empty-search-state/empty-search-state.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/empty-search-state/empty-search-state/empty-search-state.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/directives/drop-down-arrow-manager.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/pipes/drop-down-filter-items.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/pipes/drop-down-asc-sort.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-items/default-drop-down-items.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-items/default-drop-down-items.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-menu-container/default-drop-down-menu-container.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-menu-container/default-drop-down-menu-container.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/services/nested-menu-state.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/pipes/drop-down-capitalize-first-letter.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-item/default-drop-down-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components/default-drop-down-item/default-drop-down-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/consts/drop-down-dynamic-component-map.consts.ts","../../../projects/singularity-ui-lib/src/lib/services/http-call/utils/sing-http-call.utils.ts","../../../projects/singularity-ui-lib/src/lib/services/http-call/services/sing-http-call.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/services/drop-down-server-side.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/directives/drop-down-menu-style.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/directives/drop-down-menu-reposition.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/drop-down/drop-down.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/drop-down/drop-down.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/connection-loader/connection-loader.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/directives/component-view.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/pipes/get-value.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/simple-table/simple-table.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/simple-table/simple-table.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components-export/default-drop-down-footer/default-drop-down-footer.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components-export/default-drop-down-footer/default-drop-down-footer.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/pulse-loader/pulse-loader.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/pulse-loader/pulse-loader.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/loader.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/empty-search-state/empty-search-state.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components-export/nested-server-drop-down-container/nested-server-drop-down-container.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/components-export/nested-server-drop-down-container/nested-server-drop-down-container.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/drop-down.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/simple-table.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/simple-table/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/loader/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/empty-search-state/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/enums/drop-down-selected-state-mapper-actions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/selected-state-mapper.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/time-zone-dropdown-items.const.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/utils/day-dropdown-items.const.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/drop-down/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/consts/chips-input.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/utils/selected-chips-state.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/utils/chips-input.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/enums/chips-action.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/services/chips-input-server-side.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/pipes/filter/filter.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/chips-input/chips-input.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/chips-input/chips-input.component.html","../../../projects/singularity-ui-lib/src/lib/modules/pipes/filter/filter.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/chips-input.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/chips-input/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-body/body-right-checkbox/body-right-checkbox.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-body/body-right-checkbox/body-right-checkbox.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/pipes/num-of-selected-children.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-head/head-left-checkbox/head-left-checkbox.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-head/head-left-checkbox/head-left-checkbox.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/enums/collapsible-group-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-head/head-right-checkbox/head-right-checkbox.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-head/head-right-checkbox/head-right-checkbox.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-body/body-left-checkbox/body-left-checkbox.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/outlet-body/body-left-checkbox/body-left-checkbox.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible/animations/open-close.animation.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible/collapsible/collapsible.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible/collapsible/collapsible.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/directives/create-dynamic-component.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/collapsible-group/collapsible-group.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/collapsible-group/collapsible-group.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible/collapsible.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/collapsible-group.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible-group/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/collapsible/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/search/search/search.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/search/search/search.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/search/search.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/search/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/monaco/monaco/monaco.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/monaco/monaco/monaco.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/monaco/monaco.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/monaco/enums/monaco.enums.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/monaco/public-api.ts","../../../projects/singularity-ui-lib/src/lib/utils/date-time/date-time.util.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/utils/range-time-picker.util.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/validators/time-picker.validator.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/utils/time-picker.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/consts/time-picker.consts.ts","../../../projects/singularity-ui-lib/src/lib/utils/reactive-form-utils/reactive-form.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/time-picker/time-picker-reactive-form-implementation.class.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/components/time-option-item/time-option-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/components/time-option-item/time-option-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/components/time-options/time-options.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/components/time-options/time-options.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/time-picker/time-picker.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/time-picker/time-picker.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/time-picker.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/time-picker/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/range-time-picker/range-time-picker-reactive-form-implementation.class.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/range-time-picker/range-time-picker.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/range-time-picker/range-time-picker.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/range-time-picker.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-time-picker/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/enums/range-datepicker-out-actions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/components/range-datepicker-time/range-datepicker-time.validator.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/consts/range-datepicker.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/components/range-datepicker-time/range-datepicker-time.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/components/range-datepicker-time/range-datepicker-time.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/enums/range-datepicker-in-actions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/enums/range-datepicker-time-format.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/enums/range-datepicker-skin.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/range-datepicker/range-datepicker-utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/enums/range-datepicker-custom-select-actions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/components/placeholder/placeholder.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/components/placeholder/placeholder.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/range-datepicker/range-datepicker.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/range-datepicker/range-datepicker.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/range-datepicker.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/range-datepicker/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/aside-list/aside-list/aside-list.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/aside-list/aside-list/aside-list.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/aside-list/aside-list.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/aside-list/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/side-list-display/side-list-display/side-list-display.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/side-list-display/side-list-display/side-list-display.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/side-list-display/side-list-display.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/side-list-display/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/floating-error/components/floating-error/floating-error.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/floating-error/components/floating-error/floating-error.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/floating-error/floating-error.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/floating-error/floating-error.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/floating-error/public-api.ts","../../../projects/singularity-ui-lib/src/lib/services/http-call/models/public-api.ts","../../../projects/singularity-ui-lib/src/lib/services/http-call/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/main-left-nav/main-left-nav/main-left-nav.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/main-left-nav/main-left-nav/main-left-nav.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/main-left-nav/main-left-nav.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/main-left-nav/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-header/dialog-header/dialog-header.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-header/dialog-header/dialog-header.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-header/dialog-header.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog-header/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs/consts/page-tabs.consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs/page-one-tab/page-one-tab.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs/page-one-tab/page-one-tab.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs/page-tabs.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs/page-tabs.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/page-tabs.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/page-tabs/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dynamic-dialog/dynamic-dialog/dynamic-dialog.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dynamic-dialog/dynamic-dialog/dynamic-dialog.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dynamic-dialog/dynamic-dialog.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dynamic-dialog/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/confirmation-dialog/confirmation-dialog/ConfirmTypeEnum.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/confirmation-dialog/confirmation-dialog/confirmation-dialog.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/confirmation-dialog/confirmation-dialog.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/confirmation-dialog/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/form-footer-buttons/form-footer-buttons/form-footer-buttons.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/form-footer-buttons/form-footer-buttons/form-footer-buttons.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/form-footer-buttons/form-footer-buttons.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/form-footer-buttons/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/sub-page-navigation/sub-page-navigation/sub-page-navigation.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/sub-page-navigation/sub-page-navigation/sub-page-navigation.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/sub-page-navigation/sub-page-navigation.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/sub-page-navigation/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/pipes/safe-html/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog/services/dialog.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog/components/dialog-body/dialog-body.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog/components/dialog-body/dialog-body.component.html","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog/dialog.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/popups/dialog/public-api.ts","../../../projects/singularity-ui-lib/src/lib/utils/date-time/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/form-info/form-info.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/form-info/form-info.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/components-export/form-info-icon/form-info-icon.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/components-export/form-info-body/form-info-body.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/form-info.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/form-info/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/multi-select-button/enums/skinOptions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/multi-select-button/multi-select-button/multi-select-button.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/multi-select-button/multi-select-button/multi-select-button.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/multi-select-button/multi-select-button.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/multi-select-button/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/enums/alert-types.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/animations/alert-close.animation.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/alert/alert.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/alert/alert.component.html","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/components/alert-content/alert-content.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/alert.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/layout/alert/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/infinite-scroll/infinite-scroll/infinite-scroll.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/infinite-scroll/infinite-scroll/infinite-scroll.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/infinite-scroll/infinite-scroll.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/infinite-scroll/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-tab-time/model/time-consts.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/enums/query-collection-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/change-saved-filter-name/filter-change-set-name.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/change-saved-filter-name/filter-change-set-name.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/filter-message.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/manage-actions/enums/dependency-status.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/filter-panel-events.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/filter-panel-event.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/filter-panel-animation.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/consts/filter-column-default-sort.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/providers/filter-preferences.provider.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/filter-preferences.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/consts/free-text-autocomplete-container-class.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/filter-item-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/enums/filter-Item-operator.enum.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/consts/query-consts.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-free-text/utils/csv.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/models/filter-item-value.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/models/filter-item.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/filter-service/filter.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/filter-communication.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-free-text/filter-free-text.service.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/models/query-collection.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/filter-panel/filter-panel.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/enums/save-filter-actions.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/saved-filters-list/saved-filters-api.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/saved-filters-list/saved-filters-list.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/services/manage-actions/manage-filter-actions.service.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/validation/query-validation.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/models/query-collection-listener.model.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/listener/query-listener.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/actions/query-collection-actions.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/logs/query-collection-logs.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/actions/query-actions.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/core/register/query-register.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/scope-pane-filters.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-scope-dropdown/filter-scope-dropdown.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-scope-dropdown/filter-scope-dropdown.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-scope-dropdown/filter-scope-dropdown.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/pipes/display-special-characters.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-search-bar/filter-search-bar.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-search-bar/filter-search-bar.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-tab-time/model/time-utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-tab-time/tab-time.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-tab-time/tab-time.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/models/filter-list-state.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-list-sort-dropdown/filter-list-sort-dropdown.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-list-sort-dropdown/filter-list-sort-dropdown.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-search/filter-search.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-search/filter-search.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/pipes/filter.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/pipes/sort-filter-value-list.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-multi/filter-multi.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-multi/filter-multi.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/pipes/order-by-sum.pipe.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-radio/filter-radio.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-radio/filter-radio.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-time-range/filter-time-range.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-time-range/filter-time-range.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-minmax/filter-minmax.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-minmax/filter-minmax.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-list-factory.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list-factory/filter-list-factory.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/free-text-icon-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-free-text/utils/free-text-icon-mapper.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/directives/autocomplete-keyboard-navigation.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/utils/autocomplete-keyboard-navigation.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/directives/autocomplete-keyboard-navigation-activate-option.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/components/autocomplete.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/components/autocomplete.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-free-text/filter-free-text.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-free-text/filter-free-text.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-select-fields/filter-select-fields.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-select-fields/filter-select-fields.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-select-fields/filter-select-fields.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/list-components/filter-list.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/saved-filters-list/saved-filters-list.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/saved-filters/saved-filters-list/saved-filters-list.component.html","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/filter-panel.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/filter-panel.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/autocomplete.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/filter-panel.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/filter-operator.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/models/filter-value.interface.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/enums/filter-type.enum.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/models/filter.model.ts","../../../projects/singularity-ui-lib/src/lib/modules/data-table/filter-panel/public-api.ts","../../../projects/singularity-ui-lib/src/lib/services/query-collection/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/inline-svg-module/inline-svg.service.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/inline-svg-module/inline-svg-module.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/inline-svg-module/inline-svg-module.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/directives/inline-svg-module/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/utils/candy-box.utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/directives/enforce-app-item-svg-dimensions.directive.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/components/candy-app-item/candy-app-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/components/candy-app-item/candy-app-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/candy-box/candy-box.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/candy-box/candy-box.component.html","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/candy-box.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/navigation/candy-box/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/inline-hierarchy-selector/inline-hierarchy-selector.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/inline-hierarchy-selector/inline-hierarchy-selector.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/components/inline-hierarchy-selector-item/inline-hierarchy-selector-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/components/inline-hierarchy-selector-item/inline-hierarchy-selector-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/components/inline-hierarchy-selector-idle-item/inline-hierarchy-selector-idle-item.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/components/inline-hierarchy-selector-idle-item/inline-hierarchy-selector-idle-item.component.html","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/inline-hierarchy-selector.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/inline-hierarchy-selector/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/form-controls/autocomplete/public-api.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/skeleton/utils/skeleton-utils.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/skeleton/skeleton/skeleton.component.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/skeleton/skeleton/skeleton.component.html","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/skeleton/skeleton.module.ts","../../../projects/singularity-ui-lib/src/lib/modules/buttons-and-indicators/skeleton/public-api.ts","../../../projects/singularity-ui-lib/src/public-api.ts","../../../projects/singularity-ui-lib/src/sentinel-one-singularity-ui.ts"],"sourcesContent":["import {\n  Component,\n  OnInit,\n  ChangeDetectionStrategy,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef,\n  forwardRef,\n} from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'sing-slide-toggle',\n  template: `\n    <label class=\"sing-slide-toggle\" [class.disabled]=\"disabled\" (click)=\"onChange($event)\">\n      <input type=\"checkbox\" [checked]=\"checked\" />\n      <span class=\"back\">\n        <span class=\"toggle\" [class.red]=\"!checked\"></span>\n        <span class=\"label on\">{{ checkedText }}</span>\n        <span class=\"label off\">{{ uncheckedText }}</span>\n      </span>\n    </label>\n  `,\n  styleUrls: ['./slide-toggle.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingSlideToggleComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingSlideToggleComponent implements OnInit, ControlValueAccessor {\n  /**\n   * In case we want to control the checked value from outside,\n   * for example: confirmation dialog before changing the value\n   */\n  @Input() shouldToggleImmediate = false;\n  @Input() disabled = false;\n\n  @Input() set checked(checked: boolean) {\n    if (checked !== this._checked) {\n      this._checked = checked;\n      this.cdr.markForCheck();\n    }\n  }\n\n  get checked(): boolean {\n    return this._checked;\n  }\n\n  @Output() toggleChange = new EventEmitter<boolean>();\n\n  public checkedText = 'ON';\n  public uncheckedText = 'OFF';\n  private _checked = false;\n  private toggleControl: FormControl | undefined;\n\n  /**\n   * Called when the toggle is changed.\n   * Part of the ValueAccessor (reactive form).\n   */\n  _onTouched: () => any = () => {};\n\n  constructor(private formBuilder: FormBuilder, private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.toggleControl = this.formBuilder.control(this.checked);\n  }\n\n  onChange(event: MouseEvent): void {\n    const value = !this.checked;\n    event.preventDefault();\n    if (!this.shouldToggleImmediate) {\n      this.checked = value;\n      this.toggleControl?.setValue(value);\n    }\n    this.toggleChange.emit(value);\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn: (newVal: any) => any): void {\n    this.toggleControl?.registerOnChange((newVal: any) => {\n      fn(newVal);\n    });\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   */\n  registerOnTouched(fn: any): void {\n    this._onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   */\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   */\n  writeValue(checked: boolean): void {\n    this.checked = checked;\n    this.toggleControl?.setValue(checked);\n    this.cdr.markForCheck();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSlideToggleComponent } from './slide-toggle/slide-toggle.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [CommonModule, ReactiveFormsModule],\n  declarations: [SingSlideToggleComponent],\n  exports: [SingSlideToggleComponent],\n})\nexport class SingSlideToggleModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './slide-toggle.module';\nexport * from './slide-toggle/slide-toggle.component';\n","export enum ToastNotificationTypes {\n  info = 'info',\n  success = 'success',\n  warning = 'warning',\n  error = 'error',\n}\n","export class Guid {\n  public static validator = new RegExp('^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$', 'i');\n\n  public static EMPTY = '00000000-0000-0000-0000-000000000000';\n\n  private value: string;\n\n  public static isGuid(guid: any) {\n    const value: string = guid.toString();\n    return guid && (guid instanceof Guid || Guid.validator.test(value));\n  }\n\n  public static create(): Guid {\n    return new Guid([Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join('-'));\n  }\n\n  public static createEmpty(): Guid {\n    return new Guid('emptyguid');\n  }\n\n  public static parse(guid: string): Guid {\n    return new Guid(guid);\n  }\n\n  public static raw(): string {\n    return [Guid.gen(2), Guid.gen(1), Guid.gen(1), Guid.gen(1), Guid.gen(3)].join('-');\n  }\n\n  private static gen(count: number) {\n    let out = '';\n    for (let i = 0; i < count; i++) {\n      // tslint:disable-next-line:no-bitwise\n      out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n    }\n    return out;\n  }\n\n  private constructor(guid: string) {\n    if (!guid) {\n      throw new TypeError('Invalid argument; `value` has no value.');\n    }\n\n    this.value = Guid.EMPTY;\n\n    if (guid && Guid.isGuid(guid)) {\n      this.value = guid;\n    }\n  }\n\n  public equals(other: Guid): boolean {\n    // Comparing string `value` against provided `guid` will auto-call\n    // toString on `guid` for comparison\n    return Guid.isGuid(other) && this.value === other.toString();\n  }\n\n  public isEmpty(): boolean {\n    return this.value === Guid.EMPTY;\n  }\n\n  public toString(): string {\n    return this.value;\n  }\n\n  public toJSON(): any {\n    return {\n      value: this.value,\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastNotificationMessage } from '../models/toast-notification-message.interface';\nimport { ToastNotificationTypes } from '../enums/toast-notification-types.enum';\nimport { Guid } from '../../../../utils/guid.utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ToastNotificationService {\n  private readonly _toastNotificationMessage = new Subject<ToastNotificationMessage[]>();\n  public toastNotificationMessage$ = this._toastNotificationMessage.asObservable();\n  private toasts: ToastNotificationMessage[] = [];\n\n  /**\n   * show toast\n   * @param message\n   */\n  public showToast(message: ToastNotificationMessage): void {\n    /**\n     * the unique value by default is true.\n     * in case we get undefined we will set unique prop to true\n     */\n    if (message.unique === void 0) {\n      message.unique = true;\n    }\n    if (this.allowToPushMessage(message)) {\n      message.id = message.id || Guid.create().toString();\n      message.showClose = message.showClose ?? true;\n      this.removeWithTimeout(message);\n      this.toasts.unshift(message);\n      this._toastNotificationMessage.next(this.toasts);\n    }\n  }\n\n  /**\n   * hide message\n   * @param id\n   */\n  hideMessage(id: string | undefined): void {\n    if (id) {\n      this.toasts = this.toasts.filter((toast) => toast.id !== id);\n      this._toastNotificationMessage.next(this.toasts);\n    }\n  }\n\n  /**\n   * show success toast\n   * @param content\n   * @param timeout\n   * @param unique set to true in order to prevent displaying the same message multiple times\n   */\n  public success(content: string, timeout?: number, unique = true): void {\n    this.showToast({ content, type: ToastNotificationTypes.success, timeout, unique });\n  }\n\n  /**\n   * show error toast\n   * @param content\n   * @param timeout\n   * @param unique set to true in order to prevent displaying the same message multiple times\n   */\n  public error(content: string, timeout?: number, unique = true): void {\n    this.showToast({ content, type: ToastNotificationTypes.error, timeout, unique });\n  }\n\n  /**\n   * show warning toast\n   * @param content\n   * @param timeout\n   * @param unique set to true in order to prevent displaying the same message multiple times\n   */\n  public warning(content: string, timeout?: number, unique = true): void {\n    this.showToast({ content, type: ToastNotificationTypes.warning, timeout, unique });\n  }\n\n  /**\n   * show info toast\n   * @param content\n   * @param timeout\n   * @param unique set to true in order to prevent displaying the same message multiple times\n   */\n  public info(content: string, timeout?: number, unique = true): void {\n    this.showToast({ content, type: ToastNotificationTypes.info, timeout, unique });\n  }\n\n  /**\n   * remove item when timeout pass\n   * @param message\n   */\n  private removeWithTimeout(message: ToastNotificationMessage): void {\n    const { id, timeout } = message;\n    const defaultTimeOut = this.calcDefaultTimeOut(message);\n    message._timeoutId = setTimeout(() => {\n      this.hideMessage(id);\n    }, timeout ?? defaultTimeOut);\n  }\n\n  /**\n   * calc default timeout.\n   * as we can get different messages length we check\n   * the proper timeout by checking the number of words in the message.\n   * the min timeout is 5 sec\n   * the max timeout is 15 sec\n   * @param message\n   */\n  private calcDefaultTimeOut(message: ToastNotificationMessage): number {\n    const minTimeout = 5_000;\n    const maxTimeout = 15_000;\n    const numOfWords = this.calcNumOfWords(message);\n    let defaultTimeOut = numOfWords * 400 + 1_000; // 400ms for each word + 1s extra\n    if (defaultTimeOut < minTimeout) {\n      defaultTimeOut = minTimeout;\n    } else if (defaultTimeOut > maxTimeout) {\n      defaultTimeOut = maxTimeout;\n    }\n    return defaultTimeOut;\n  }\n\n  /**\n   * calc the number of words in the message\n   * replace(/<[^>]*>/g, '') >> remove html tags\n   * replace(/\\s\\s+/g, ' ') >> remove multiple spaces with single space\n   */\n  private calcNumOfWords(message: ToastNotificationMessage) {\n    return (\n      message?.content\n        ?.replace(/<[^>]*>/g, '')\n        ?.replace(/\\s\\s+/g, ' ')\n        ?.trim()\n        ?.split(' ')?.length ?? 1\n    );\n  }\n\n  /**\n   * check if allowed to add a message to the list of the messages.\n   * - only if we get unique true we will check if it already exists.\n   * - in case content is empty we will not show the toast message.\n   *\n   * in case unique is true and we get the same text we init the timeout of the current message\n   * @param message\n   */\n  private allowToPushMessage(message: ToastNotificationMessage): boolean {\n    let allow = true;\n    if (message.unique) {\n      const currentDisplayToastMessage = this.toasts.find((existMessage) => existMessage.content === message.content);\n      if (currentDisplayToastMessage) {\n        clearTimeout(currentDisplayToastMessage._timeoutId);\n        this.removeWithTimeout(currentDisplayToastMessage);\n        allow = false;\n      }\n    }\n    if (!message?.content?.length) {\n      allow = false;\n    }\n    return allow;\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ToastNotificationService } from '../services/toast-notification.service';\nimport { Observable } from 'rxjs';\nimport { ToastNotificationMessage } from '../models/toast-notification-message.interface';\nimport { isFunction } from 'lodash';\n\n@Component({\n  selector: 'sing-toast-notification',\n  templateUrl: './toast-notification.component.html',\n  styleUrls: ['./toast-notification.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingToastNotificationComponent {\n  public readonly firstAlertTopPosition = 45;\n  public readonly spaceBetweenAlert = 10;\n  toastNotificationMessage$: Observable<ToastNotificationMessage[]> = this.toastNotificationService\n    .toastNotificationMessage$;\n\n  constructor(public toastNotificationService: ToastNotificationService) {}\n\n  /**\n   * on toast click we check if we need to execute callback.\n   * Example when it can be used:\n   * to open a dialog from toast.\n   */\n  toastClicked(event: MouseEvent, toast: ToastNotificationMessage): void {\n    if (isFunction(toast.toastClicked)) {\n      toast.toastClicked(event, toast);\n    }\n  }\n}\n","<div\n  *ngFor=\"let toast of toastNotificationMessage$ | async; let i = index; let first = first\"\n  [attr.data-mgmtAutomationId]=\"'toasterContainer_' + (toast?.automationPostFix || i)\"\n  [class.padding-when-no-close-btn]=\"!toast?.showClose\"\n  class=\"toast {{ toast?.type }} showToaster\"\n  aria-live=\"assertive\"\n>\n  <ng-container *ngTemplateOutlet=\"toast?.href ? asLink : asText; context: { toast: toast, i: i }\"></ng-container>\n  <i\n    *ngIf=\"toast?.showClose\"\n    data-mgmtAutomationId=\"toast-close-btn\"\n    class=\"close-btn mgmt-x\"\n    (click)=\"toastNotificationService.hideMessage(toast?.id)\"\n  >\n  </i>\n</div>\n\n<!--Toast as Text-->\n<ng-template #asText let-toast=\"toast\" let-i=\"i\">\n  <span\n    class=\"content\"\n    [attr.data-mgmtAutomationId]=\"'toasterContent_' + (toast?.automationPostFix || i)\"\n    [innerHTML]=\"toast?.content\"\n    (click)=\"toastClicked($event, toast)\"\n  ></span>\n</ng-template>\n\n<!--Toast as Link-->\n<ng-template #asLink let-toast=\"toast\" let-i=\"i\">\n  <a\n    [attr.data-mgmtAutomationId]=\"'toasterLink_' + (toast?.automationPostFix || i)\"\n    class=\"link\"\n    target=\"_blank\"\n    [href]=\"toast?.href\"\n  >\n    {{ toast?.content }}\n  </a>\n</ng-template>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n/**\n * This pipe use as DomSanitizer\n * Example of use\n * <div [innerHtml]=\"htmlSnippet | singSafeHtmlPipe\"></div>\n */\n@Pipe({\n  name: 'singSafeHtmlPipe'\n})\nexport class SingSafeHtmlPipe implements PipeTransform {\n\n  constructor(private sanitized: DomSanitizer) {}\n\n  transform(value: string): SafeHtml {\n    return this.sanitized.bypassSecurityTrustHtml(value);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSafeHtmlPipe } from './safe-html.pipe';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingSafeHtmlPipe],\n  exports: [SingSafeHtmlPipe]\n})\nexport class SingSafeHtmlModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingToastNotificationComponent } from './toast-notification/toast-notification.component';\nimport { SingSafeHtmlModule } from '../../pipes/safe-html/safe-html.module';\n\n@NgModule({\n  imports: [CommonModule, SingSafeHtmlModule],\n  declarations: [SingToastNotificationComponent],\n  exports: [SingToastNotificationComponent],\n})\nexport class SingToastNotificationModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './toast-notification.module';\nexport * from './toast-notification/toast-notification.component';\nexport * from './services/toast-notification.service';\nexport * from './enums/toast-notification-types.enum';\nexport * from './models/toast-notification-message.interface';\n","export const DARK_THEME: Record<string, string> = {\n  '--s1-P-90-color': '#FCFAFE',\n  '--s1-P-80-color': '#F6F2FE',\n  '--s1-P-70-color': '#EFE5FD',\n  '--s1-P-60-color': '#D4BFF9',\n  '--s1-P-50-color': '#9978FF',\n  '--s1-P-40-color': '#8C69F6',\n  '--s1-P-30-color': '#9665F4',\n  '--s1-P-20-color': '#D4BFF9',\n  '--s1-P-10-color': '#4D00E8',\n  '--s1-P-5-color': '#520CB2',\n  '--s1-P-2-color': '#472489',\n  '--s1-P-1-color': '#101010',\n  '--s1-S-80-color': '#F7FBFF',\n  '--s1-S-50-color': '#2495FE',\n  '--s1-S-1-color': '#2263C9',\n  '--s1-N-100-color': '#FFFFFF',\n  '--s1-N-90-color': '#F5F5F5',\n  '--s1-N-80-color': '#F4F4F4',\n  '--s1-N-70-color': '#E9E9E9',\n  '--s1-N-60-color': '#A3A3A3',\n  '--s1-N-50-color': '#9D9D9D',\n  '--s1-N-40-color': '#696969',\n  '--s1-N-30-color': '#525252',\n  '--s1-N-20-color': '#4A4A4A',\n  '--s1-N-15-color': '#2B2B2B',\n  '--s1-N-10-color': '#181818',\n  '--s1-N-0-color': '#282828',\n  '--s1-R-80-color': '#9C315D',\n  '--s1-R-50-color': '#ED001B',\n  '--s1-R-10-color': '#6B0606',\n  '--s1-Y-50-color': '#FF6004',\n  '--s1-Y-10-color': '#6A4207',\n  '--s1-G-50-color': '#06847D',\n  '--s1-G-10-color': '#044C1D',\n  '--s1-B-80-color': '#F7FBFF',\n  '--s1-B-50-color': '#2495FE',\n  '--s1-D-90-color': '#301BAA',\n  '--s1-D-80-color': '#7B3FF2',\n  '--s1-D-70-color': '#B99CF1',\n  '--s1-D-60-color': '#E404DD',\n  '--s1-D-50-color': '#58AEFF',\n  '--s1-D-40-color': '#5291FF',\n  '--s1-D-30-color': '#52E9EF',\n  '--s1-D-20-color': '#5B6770',\n  '--s1-D-15-color': '#EDF1FB',\n  '--s1-D-10-color': '#A0AAAD',\n  '--s1-D-5-color': '#CFD3D4',\n  '--s1-shadow-2': '0 1px 5px 0 rgba(0,0,0,0.1),0 3px 1px -2px rgba(0,0,0,0.25),0 2px 2px 0 rgba(0,0,0,0.1)',\n  '--s1-shadow-6':\n    '0px 1px 18px rgba(0, 0, 0, 0.9), 0px 6px 10px rgba(0, 0, 0, 0.9), 0px 3px 5px -1px rgba(0, 0, 0, 0.9)',\n  '--s1-shadow-16':\n    '0px 6px 30px 5px rgba(0, 0, 0, 0.9), 0px 16px 24px 2px rgba(0, 0, 0, 0.9), 0px 8px 10px -5px rgba(0, 0, 0, 0.9)',\n  '--s1-shadow-table-freeze-column': '-11px 0 20px 13px rgba(0,0,0,0.5)',\n  '--s1-backdrop-color': 'rgba(0,0,0,0.7)',\n} as const;\n","export const LIGHT_THEME: Record<string, string> = {\n  '--s1-P-90-color': '#0000cd',\n  '--s1-P-80-color': '#0500db',\n  '--s1-P-70-color': '#3500e0',\n  '--s1-P-60-color': '#4d00e8',\n  '--s1-P-50-color': '#5b05ee',\n  '--s1-P-40-color': '#7b3ff2',\n  '--s1-P-30-color': '#9665f4',\n  '--s1-P-20-color': '#b694f6',\n  '--s1-P-10-color': '#d4bff9',\n  '--s1-P-5-color': '#efe5fd',\n  '--s1-P-2-color': '#f6f2fe',\n  '--s1-P-1-color': '#fcfafe',\n  '--s1-S-80-color': '#2263c9',\n  '--s1-S-50-color': '#2495fe',\n  '--s1-S-1-color': '#f7fbff',\n  '--s1-N-100-color': '#000000',\n  '--s1-N-90-color': '#262626',\n  '--s1-N-80-color': '#434343',\n  '--s1-N-70-color': '#555555',\n  '--s1-N-60-color': '#757575',\n  '--s1-N-50-color': '#9d9d9d',\n  '--s1-N-40-color': '#c4c4c4',\n  '--s1-N-30-color': '#d9d9d9',\n  '--s1-N-20-color': '#e9e9e9',\n  '--s1-N-15-color': '#f4f4f4',\n  '--s1-N-10-color': '#f5f5f5',\n  '--s1-N-0-color': '#ffffff',\n  '--s1-R-80-color': '#692340',\n  '--s1-R-50-color': '#ED001B',\n  '--s1-R-10-color': '#fab9c9',\n  '--s1-Y-50-color': '#FF6004',\n  '--s1-Y-10-color': '#fbe9ca',\n  '--s1-G-50-color': '#06847d',\n  '--s1-G-10-color': '#d2e4e3',\n  '--s1-B-80-color': '#2263c9',\n  '--s1-B-50-color': '#2495fe',\n  '--s1-D-90-color': '#301baa',\n  '--s1-D-80-color': '#7b3ff2',\n  '--s1-D-70-color': '#b99cf1',\n  '--s1-D-60-color': '#e404dd',\n  '--s1-D-50-color': '#58aeff',\n  '--s1-D-40-color': '#5291ff',\n  '--s1-D-30-color': '#52e9ef',\n  '--s1-D-20-color': '#5b6770',\n  '--s1-D-15-color': '#edf1fb',\n  '--s1-D-10-color': '#a0aaad',\n  '--s1-D-5-color': '#cfd3d4',\n  '--s1-shadow-2': '0 1px 5px 0 rgba(0, 0, 0, 0.1), 0 3px 1px -2px rgba(0, 0, 0, 0.25), 0 2px 2px 0 rgba(0, 0, 0, 0.1)',\n  '--s1-shadow-6':\n    '0 3px 5px -1px rgba(0, 0, 0, 0.08), 0 6px 10px 0 rgba(0, 0, 0, 0.08), 0 1px 18px 0 rgba(0, 0, 0, 0.08)',\n  '--s1-shadow-16':\n    '0 8px 10px -5px rgba(0, 0, 0, 0.12), 0 16px 24px 2px rgba(0, 0, 0, 0.1), 0 6px 30px 5px rgba(0, 0, 0, 0.12)',\n  '--s1-shadow-table-freeze-column': '-11px 0 20px 13px rgba(0, 0, 0, 0.16)',\n  '--s1-backdrop-color': 'rgba(0, 0, 0, 0.32)',\n} as const;\n","export enum ColorPaletteThemeOptions {\n  light = 'light',\n  dark = 'dark',\n}\n","import { Injectable } from '@angular/core';\nimport { DARK_THEME } from './consts/dark.consts';\nimport { LIGHT_THEME } from './consts/light.consts';\nimport { ColorPaletteThemeOptions } from './enums/color-palette-theme.enum';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ColorPaletteService {\n  private _themeState$ = new BehaviorSubject<ColorPaletteThemeOptions>(null);\n  public themeState$ = this._themeState$.asObservable();\n\n  public setTheme(theme: ColorPaletteThemeOptions): void {\n    switch (theme) {\n      case ColorPaletteThemeOptions.light: {\n        this.updateToLightTheme();\n        break;\n      }\n      case ColorPaletteThemeOptions.dark: {\n        this.updateToDarkTheme();\n        break;\n      }\n      default: {\n        this.updateToLightTheme();\n      }\n    }\n  }\n\n  /**\n   * update css color palette variables.\n   *\n   * this method gets the color palette as a key value object\n   * the key is the name of the color and the value is the color\n   *\n   * @param colorPalette\n   */\n  private updateColorPalette(colorPalette: Record<string, string>): void {\n    Object.keys(colorPalette).forEach((key: string) => {\n      document.documentElement.style.setProperty(key, colorPalette[key]);\n    });\n  }\n\n  private updateToDarkTheme(): void {\n    this.updateColorPalette(DARK_THEME);\n    this._themeState$.next(ColorPaletteThemeOptions.dark);\n  }\n\n  private updateToLightTheme(): void {\n    this.updateColorPalette(LIGHT_THEME);\n    this._themeState$.next(ColorPaletteThemeOptions.light);\n  }\n}\n","import { DARK_THEME } from '../consts/dark.consts';\nimport { LIGHT_THEME } from '../consts/light.consts';\nimport { cloneDeep } from 'lodash';\nimport { ColorPaletteThemeOptions } from '../enums/color-palette-theme.enum';\n\nexport function getConstColors(): Record<string, Record<string, string>> {\n  return cloneDeep({\n    [ColorPaletteThemeOptions.dark]: DARK_THEME,\n    [ColorPaletteThemeOptions.light]: LIGHT_THEME,\n  });\n}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './color-palette.service';\nexport * from './enums/color-palette-theme.enum';\nexport * from './utils/color-palette.utils';\n","/**\n * Decorator for setTimeout\n * @param {number} milliseconds\n * @returns {(target, key, descriptor) => any}\n */\nexport function timeout(milliseconds = 0) {\n  return function (target, key, descriptor) {\n    const originalMethod = descriptor.value;\n\n    descriptor.value = function (...args) {\n      setTimeout(() => {\n        originalMethod.apply(this, args);\n      }, milliseconds);\n    };\n\n    return descriptor;\n  };\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { timeout } from '../../../../decorators/set-timeout.decorator';\n\n@Component({\n  selector: 'sing-input',\n  templateUrl: './input.component.html',\n  styleUrls: ['./input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingInputComponent implements AfterViewInit, OnDestroy {\n  public disabled = false;\n  @Input() singValidateOnInit = false;\n  @ViewChild('inputContainerRef', { read: ElementRef }) inputContainerRef!: ElementRef;\n  private observer!: MutationObserver;\n  isInput = true;\n\n  constructor(private renderer: Renderer2, private er: ElementRef, private cdr: ChangeDetectorRef) {}\n\n  @timeout()\n  ngAfterViewInit(): void {\n    const element = this.inputContainerRef.nativeElement.querySelector('input, textarea');\n    this.isInput = element.tagName.toLowerCase() === 'input';\n    this.cdr.markForCheck();\n    this.observer = new MutationObserver((mutations: MutationRecord[]) => {\n      mutations.forEach((mutation) => {\n        if (mutation.type == 'attributes' && mutation.attributeName === 'disabled') {\n          this.updateDisable(element);\n        }\n        if (mutation.type == 'attributes' && mutation.attributeName === 'class') {\n          this.updateError(element);\n        }\n      });\n    });\n\n    this.observer.observe(element, { attributes: true, childList: false, subtree: true, characterData: true });\n    // on init update error and disable indication\n    if (this.singValidateOnInit) {\n      this.updateError(element);\n      this.updateDisable(element);\n    }\n  }\n\n  updateError(element) {\n    const classes = element.getAttribute('class');\n    const errorContainer = this.er.nativeElement.getElementsByClassName('sing-under-row')[0];\n    if (classes?.includes('ng-invalid')) {\n      this.renderer.addClass(errorContainer, 'sing-error');\n    } else {\n      this.renderer.removeClass(errorContainer, 'sing-error');\n    }\n  }\n\n  updateDisable(element) {\n    const btnElement = this.inputContainerRef.nativeElement.querySelector('button');\n    if (element.getAttribute('disabled') === '') {\n      this.renderer.addClass(this.inputContainerRef.nativeElement, 'sing-disabled');\n      if (btnElement) {\n        btnElement.disabled = true;\n      }\n    } else {\n      this.renderer.removeClass(this.inputContainerRef.nativeElement, 'sing-disabled');\n      if (btnElement) {\n        btnElement.disabled = false;\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.observer?.disconnect();\n  }\n}\n","<div #inputContainerRef [class.is-input]=\"isInput\" class=\"sing-input\">\n  <ng-content select=\"i[singPos=start]\"></ng-content>\n  <ng-content select=\"i[singPos=end]\"></ng-content>\n  <ng-content select=\"button[singPos=start]\"></ng-content>\n  <ng-content select=\"input, textarea\"></ng-content>\n  <ng-content select=\"button[singPos=end]\"></ng-content>\n</div>\n<div class=\"sing-under-row\">\n  <div class=\"s1-error-text\">\n    <ng-content select=\"[singError],[singWarning],[singAsyncError]\"></ng-content>\n  </div>\n  <div class=\"sing-counter\">\n    <ng-content select=\"[singCounter]\"></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInputComponent } from './input/input.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingInputComponent],\n  exports: [SingInputComponent],\n})\nexport class SingInputModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './input.module';\nexport * from './input/input.component';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-progress-bar',\n  templateUrl: './progress-bar.component.html',\n  styleUrls: ['./progress-bar.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingProgressBarComponent {\n  private _percentage = 0;\n  inlineText = 'Uploading';\n\n  get percentage(): number {\n    return this._percentage;\n  }\n\n  @Input()\n  set percentage(percentage: number) {\n    this._percentage = percentage > 100 ? 100 : percentage;\n  }\n}\n","<div class='progress-bar-wrapper'>\n  <div class='uploading-text' ng-if='percentage > 0'>{{inlineText}}</div>\n  <div class='progress-bar-container'>\n    <div [style.width]=\"percentage + '%'\" class='bar active progress-bar-stripes'></div>\n  </div>\n\n  <div class='number' ng-if='percentage > 0'>{{ percentage }}%</div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingProgressBarComponent } from './progress-bar/progress-bar.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingProgressBarComponent],\n  exports: [SingProgressBarComponent],\n})\nexport class SingProgressBarModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './progress-bar.module';\nexport * from './progress-bar/progress-bar.component';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\n\n@Component({\n  selector: 'sing-tooltip-container',\n  templateUrl: './tooltip-container.component.html',\n  styleUrls: ['./tooltip-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipContainerComponent {\n  @Input() tooltip!: TemplateRef<any>;\n  @Input() tooltipContext: Record<string, any> | null = null;\n  @Input() tooltipClass = '';\n  @Input() automationId = '';\n  @Output() mouseEnter = new EventEmitter<any>();\n  @Output() mouseLeave = new EventEmitter<any>();\n}\n","<div class=\"s1-tooltip {{tooltipClass}}\"\n     (mouseenter)=\"mouseEnter.emit($event)\"\n     (mouseleave)=\"mouseLeave.emit($event)\"\n     [attr.data-mgmtAutomationId]=\"automationId\">\n  <ng-template [ngTemplateOutlet]=\"tooltip\" [ngTemplateOutletContext]=\"tooltipContext\"></ng-template>\n</div>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\n\nfunction getTopCenterPosition(offset = 10): ConnectionPositionPair {\n  return {\n    originX: 'center',\n    originY: 'top',\n    overlayX: 'center',\n    overlayY: 'bottom',\n    offsetY: -offset,\n  };\n}\n\nfunction getRightCenterPosition(offset = 10): ConnectionPositionPair {\n  return {\n    originX: 'end',\n    originY: 'center',\n    overlayX: 'start',\n    overlayY: 'center',\n    offsetX: offset,\n  };\n}\n\nfunction getBottomCenterPosition(offset = 10): ConnectionPositionPair {\n  return {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'center',\n    overlayY: 'top',\n    offsetY: offset,\n  };\n}\n\nfunction getLeftCenterPosition(offset = 10): ConnectionPositionPair {\n  return {\n    originX: 'start',\n    originY: 'center',\n    overlayX: 'end',\n    overlayY: 'center',\n    offsetX: -offset,\n  };\n}\n\nexport function getTopPosition(offset: number): ConnectionPositionPair[] {\n  return [\n    getTopCenterPosition(offset),\n    getBottomCenterPosition(offset),\n    getRightCenterPosition(offset),\n    getLeftCenterPosition(offset),\n  ];\n}\n\nexport function getRightPosition(offset: number): ConnectionPositionPair[] {\n  return [\n    getRightCenterPosition(offset),\n    getTopCenterPosition(offset),\n    getBottomCenterPosition(offset),\n    getLeftCenterPosition(offset),\n  ];\n}\n\nexport function getBottomPosition(offset: number): ConnectionPositionPair[] {\n  return [\n    getBottomCenterPosition(offset),\n    getRightCenterPosition(offset),\n    getTopCenterPosition(offset),\n    getLeftCenterPosition(offset),\n  ];\n}\n\nexport function getLeftPosition(offset: number): ConnectionPositionPair[] {\n  return [\n    getLeftCenterPosition(offset),\n    getBottomCenterPosition(offset),\n    getRightCenterPosition(offset),\n    getTopCenterPosition(offset),\n  ];\n}\n","import { ComponentRef, Injectable, TemplateRef } from '@angular/core';\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { SingTooltipPosition } from '../models/tooltip-position.type';\nimport { TooltipContainerComponent } from '../tooltip-container/tooltip-container.component';\nimport { getBottomPosition, getLeftPosition, getRightPosition, getTopPosition } from '../utils/tooltip.utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TooltipService {\n  private _overlayRef!: OverlayRef | null;\n  private _componentRef!: ComponentRef<any> | null;\n\n  /**\n   * indicator if side-nav open or not\n   */\n  public get isTooltipVisible(): boolean {\n    return !!this._overlayRef;\n  }\n\n  /**\n   * this element holds our tooltip\n   */\n  public get overlayElement(): HTMLElement {\n    return this._overlayRef.overlayElement;\n  }\n\n  constructor(private overlay: Overlay) {}\n\n  /**\n   * Show dialog sid-nav\n   */\n  public show(\n    tooltip: TemplateRef<any>,\n    tooltipContext: Record<string, any> | null,\n    origin: HTMLElement,\n    position: SingTooltipPosition,\n    automationId: string,\n    offset: number,\n    tooltipClass: string\n  ): ComponentRef<TooltipContainerComponent> {\n    if (!this.isTooltipVisible) {\n      this._overlayRef = this.overlay.create(this.getOverlayConfig(origin, position, offset));\n      this._componentRef = this.initTooltipComponent(tooltip, automationId, tooltipClass, tooltipContext);\n    }\n    return this._componentRef;\n  }\n\n  /**\n   * hide sid-nav\n   */\n  public hide(): void {\n    if (this.isTooltipVisible) {\n      this._overlayRef?.detach();\n      this._overlayRef = null;\n      this._componentRef = null;\n    }\n  }\n\n  /**\n   * init tooltip component with configuration\n   */\n  private initTooltipComponent(\n    tooltip: TemplateRef<any>,\n    automationId: string,\n    tooltipClass: string,\n    tooltipContext: Record<string, any> | null\n  ): ComponentRef<TooltipContainerComponent> {\n    const tooltipComponentRef = this.attachTooltipContainer();\n    tooltipComponentRef.instance.tooltip = tooltip;\n    tooltipComponentRef.instance.automationId = automationId;\n    tooltipComponentRef.instance.tooltipClass = tooltipClass;\n    tooltipComponentRef.instance.tooltipContext = tooltipContext;\n    return tooltipComponentRef;\n  }\n\n  /**\n   * attach tooltip to overlay container\n   */\n  private attachTooltipContainer(): ComponentRef<TooltipContainerComponent> {\n    const containerPortal = new ComponentPortal(TooltipContainerComponent, null);\n    return this._overlayRef.attach(containerPortal);\n  }\n\n  private getOverlayConfig(origin: HTMLElement, position: SingTooltipPosition, offset: number): OverlayConfig {\n    return new OverlayConfig({\n      hasBackdrop: false,\n      backdropClass: 'sing-tooltip-backdrop',\n      panelClass: 'sing-tooltip-panel',\n      positionStrategy: this.getOverlayPosition(origin, position, offset),\n      scrollStrategy: this.overlay.scrollStrategies.reposition(),\n    });\n  }\n\n  private getOverlayPosition(origin: HTMLElement, position: SingTooltipPosition, offset: number): PositionStrategy {\n    return this.overlay\n      .position()\n      .flexibleConnectedTo(origin)\n      .withPositions(this.getPositions(position, offset))\n      .withPush(false);\n  }\n\n  private getPositions(position: SingTooltipPosition, offset: number): ConnectionPositionPair[] {\n    switch (position) {\n      case 'above': {\n        return getTopPosition(offset);\n      }\n      case 'right': {\n        return getRightPosition(offset);\n      }\n      case 'below': {\n        return getBottomPosition(offset);\n      }\n      case 'left': {\n        return getLeftPosition(offset);\n      }\n      default: {\n        return getTopPosition(offset);\n      }\n    }\n  }\n}\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  HostListener,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  TemplateRef,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { SingTooltipPosition } from './models/tooltip-position.type';\nimport { TooltipService } from './services/tooltip.service';\nimport { TooltipContainerComponent } from './tooltip-container/tooltip-container.component';\nimport { isNil } from 'lodash';\n\n@Directive({\n  selector: '[singTooltip]',\n  providers: [TooltipService],\n  exportAs: 'singTooltip',\n})\nexport class TooltipDirective implements OnInit, OnDestroy {\n  @Input('singTooltip') tooltip!: TemplateRef<any>;\n  @Input('singTooltipContext') tooltipContext: Record<string, any> | null = null;\n  @Input('singTooltipShowDelay') showDelay = 0;\n  @Input('singTooltipHideDelay') hideDelay = 0;\n  @Input('singTooltipPosition') position: SingTooltipPosition = 'above';\n  @Input('singTooltipShowTriggerEventName') showTriggerEventName: string | null = 'mouseenter';\n  @Input('singTooltipHideTriggerEventName') hideTriggerEventName: string | null = 'mouseleave';\n  @Input('singTooltipAutomationId') automationId = '';\n  @Input('singTooltipOffset') offset = 10;\n  @Input('singTooltipDisabled') disable = false;\n  @Input('singTooltipCloseOnEscape') closeOnEscape = false;\n  @Input('singTooltipCloseOnClickOutside') closeOnClickOutside = false;\n  @Input('singTooltipClass') tooltipClass = '';\n  @Input('singTooltipKeepOpenOnTemplateHover') keepOpenOnTemplateHover = false;\n\n  private hostElementVisible = false;\n  private itWasShow = false;\n  private killShowTimeout: any;\n  private killHideTimeout: any;\n  private observer!: IntersectionObserver;\n  readonly ngUnSubscribe: Subject<void> = new Subject<void>();\n  readonly scrollEvent$ = fromEvent(document, 'scroll', { capture: true }).pipe(takeUntil(this.ngUnSubscribe));\n\n  /**\n   * check if tooltip is visible.\n   */\n  get isTooltipVisible(): boolean {\n    return this.tooltipService.isTooltipVisible;\n  }\n\n  constructor(private elementRef: ElementRef, private tooltipService: TooltipService, private ngZone: NgZone) {}\n\n  public ngOnInit(): void {\n    this.initListenShowAndHideEvents();\n    this.initListenScrollEvent();\n    this.intersectionObserverOnHostElement();\n  }\n\n  public ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n    this.observer.unobserve(this.elementRef.nativeElement);\n  }\n\n  /**\n   * show tooltip\n   */\n  public show(): void {\n    if (this.isValidTemplateRef() && !isNil(this.tooltip) && !this.disable) {\n      this.killShowTimeout = setTimeout(() => {\n        const componentRef = this.tooltipService.show(\n          this.tooltip,\n          this.tooltipContext,\n          this.elementRef.nativeElement,\n          this.position,\n          this.automationId,\n          this.offset,\n          this.tooltipClass\n        );\n        this.attachEventListensAfterTooltipIsOpen(componentRef);\n      }, this.showDelay);\n    }\n  }\n\n  /**\n   * hide tooltip\n   */\n  public hide(): void {\n    clearTimeout(this.killShowTimeout);\n    if (this.isTooltipVisible) {\n      this.killHideTimeout = setTimeout(() => {\n        this.tooltipService.hide();\n      }, this.hideDelay);\n    }\n  }\n\n  /**\n   * toggle between show and hide tooltip\n   */\n  public toggle(): void {\n    if (this.isTooltipVisible) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  /**\n   * start listening to events in order to show and hide tooltip.\n   * in order to prevent listening -> init the inputs as null.\n   * For example:\n   * [singTooltipShowTriggerEventName]=\"null\"\n   * [singTooltipHideTriggerEventName]=\"null\"\n   */\n  private initListenShowAndHideEvents(): void {\n    if (this.showTriggerEventName) {\n      fromEvent(this.elementRef.nativeElement, this.showTriggerEventName)\n        .pipe(takeUntil(this.ngUnSubscribe))\n        .subscribe(this.show.bind(this));\n    }\n\n    if (this.hideTriggerEventName) {\n      fromEvent(this.elementRef.nativeElement, this.hideTriggerEventName)\n        .pipe(takeUntil(this.ngUnSubscribe))\n        .subscribe(this.hide.bind(this));\n    }\n  }\n\n  /**\n   * subscribe to tooltip component events if needed\n   */\n  attachEventListensAfterTooltipIsOpen(component: ComponentRef<TooltipContainerComponent>): void {\n    // if user send keep open we subscribe to mouse enter/leave and keep the tooltip open or closed\n    if (this.keepOpenOnTemplateHover && this.isValidTemplateRef()) {\n      // add delay so that mouse leave of the trigger element(button...) will not close until mouse enter in tooltip\n      this.hideDelay = this.hideDelay || 300;\n      component.instance.mouseEnter.subscribe(() => clearTimeout(this.killHideTimeout));\n      component.instance.mouseLeave.subscribe(this.hide.bind(this));\n    }\n  }\n\n  /**\n   * listen to scroll event.\n   * we have some scenario we need to handle when tooltip is displayed.\n   *\n   * Step 1: Hide tooltip in case it's visible.\n   * Step 2: reposition tooltip if the directive host element is still in hover mode\n   *         or the tooltip was show will scroll and the showTriggerEventName is different from 'mouseenter'\n   *\n   * NOTE: the scrollEvent$ includes the unsubscribe in the declaration.\n   */\n  private initListenScrollEvent(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.scrollEvent$.subscribe(() => {\n        if (this.isTooltipVisible) {\n          this.ngZone.run(() => {\n            this.hide();\n            this.itWasShow = true;\n          });\n        }\n      });\n      this.scrollEvent$.pipe(debounceTime(200)).subscribe(() => {\n        if (\n          this.isDirectiveHostElementHasHoverAttribute() ||\n          (this.itWasShow && this.showTriggerEventName !== 'mouseenter')\n        ) {\n          this.ngZone.run(() => {\n            if (this.hostElementVisible) {\n              this.show();\n              this.itWasShow = false;\n            }\n          });\n        }\n      });\n    });\n  }\n\n  /**\n   * check if the directive host element is currently hovered.\n   */\n  private isDirectiveHostElementHasHoverAttribute(): boolean {\n    const directiveHostElement = this.elementRef?.nativeElement;\n    return directiveHostElement?.parentElement?.querySelector(':hover') === directiveHostElement;\n  }\n\n  /**\n   * check the given is valid template ref\n   */\n  private isValidTemplateRef(): boolean {\n    let valid = false;\n    if (this.tooltip instanceof TemplateRef || isNil(this.tooltip)) {\n      valid = true;\n    } else {\n      console.error('[singTooltip] the given singTooltip is not TemplateRef!');\n    }\n    return valid;\n  }\n\n  /**\n   * listen to host element to check if it's visible in the viewport.\n   * The \"hostElementVisible\" flag helps us avoid unnecessary calculations for the tooltip visibility\n   * when the host element is outside of the viewport\n   */\n  private intersectionObserverOnHostElement(): void {\n    this.ngZone.runOutsideAngular(() => {\n      this.observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => {\n        entries.find((entry: IntersectionObserverEntry) => {\n          const isHostElement = entry.target === this.elementRef.nativeElement;\n          if (isHostElement) {\n            this.hostElementVisible = entry.isIntersecting;\n          }\n          return isHostElement;\n        });\n      }, {});\n      this.observer.observe(this.elementRef.nativeElement);\n    });\n  }\n\n  /**\n   * check if need to start close side-nav.\n   * when user clicks on escape\n   */\n  @HostListener('document:keydown.escape', ['$event'])\n  escapeClicked() {\n    if (this.closeOnEscape) {\n      this.hide();\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  handleOutsideClick(event: any) {\n    if (\n      this.closeOnClickOutside &&\n      this.isTooltipVisible &&\n      !this.tooltipService?.overlayElement?.contains(event.target)\n    ) {\n      this.hide();\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild\n} from '@angular/core';\n\n@Component({\n  selector: 'sing-progress-step',\n  templateUrl: './progress-step.component.html',\n  styleUrls: ['./progress-step.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressStepComponent implements AfterViewInit {\n  @Input() progressStepOrientation: 'vertical' | 'horizontal' = 'horizontal';\n  @Input() title: string;\n  @Input() progressItems: Array<{ name: string; disabled?: boolean, tooltip?: string, clickableStep?: boolean }>;\n  @Input() clickableSteps: boolean;\n\n  _activeItem: number;\n  @Input()\n  set activeItem(activeItem: number) {\n    if (this.progressItems[activeItem]?.disabled) {\n      return;\n    }\n    this._activeItem = activeItem;\n    if (this._activeItem > this.topVisitedItem) {\n      this.topVisitedItem = this._activeItem;\n    }\n    let progressLineIndicator = '0';\n    if (activeItem > 0 && this.progressLineIndicators?.length && this.progressLineIndicators[activeItem]) {\n      progressLineIndicator = `${this.progressLineIndicators[activeItem]}px`;\n    }\n    this.progressBarElementRef?.nativeElement?.style?.setProperty(\n      this.progressStepOrientation === 'horizontal'? '--progress-line-indicator-width' : '--progress-line-indicator-height',\n      progressLineIndicator\n    );\n  }\n\n  get activeItem(): number {\n    return this._activeItem;\n  }\n\n  topVisitedItem = 0;\n\n  @Output() stepClicked = new EventEmitter<number>();\n  @ViewChild('progressBar') progressBarElementRef: ElementRef;\n  private progressLineIndicators = [];\n\n  ngAfterViewInit(): void {\n    this.progressStepOrientation === 'horizontal' ?\n      this.updateProgressLineIndicatorsHorizontal()\n      : this.updateProgressLineIndicatorsVertical();\n  }\n\n  private updateProgressLineIndicatorsHorizontal() {\n    const firstStepPointPosition = this.progressBarElementRef?.nativeElement?.getBoundingClientRect()?.left;\n    const steps = this.progressBarElementRef?.nativeElement?.querySelectorAll('.step');\n    if (steps) {\n      steps.forEach((stepElement) => {\n        const { width, left } = stepElement.getBoundingClientRect();\n        this.progressLineIndicators.push(+left + +width / 2 - firstStepPointPosition);\n      });\n    }\n  }\n\n  private updateProgressLineIndicatorsVertical() {\n    const firstStepPointPosition = this.progressBarElementRef?.nativeElement?.getBoundingClientRect()?.top;\n    const steps = this.progressBarElementRef?.nativeElement?.querySelectorAll('.step');\n    if (steps) {\n      steps.forEach((stepElement) => {\n        const { width, top } = stepElement.getBoundingClientRect();\n        this.progressLineIndicators.push(+top + +width / 2 - firstStepPointPosition - 15);\n      });\n    }\n  }\n\n  onStepClicked(stepIndex: number) {\n    if (!this.progressItems[stepIndex]?.disabled || this.progressItems[stepIndex].clickableStep) {\n      this.stepClicked.emit(stepIndex);\n    }\n  }\n}\n","<div class=\"title\">{{ title }}</div>\n<ul class=\"progress-bar\"\n    [ngClass]=\"progressStepOrientation\"\n    #progressBar\n    *ngIf=\"progressItems\">\n  <li\n    *ngFor=\"let item of progressItems; let i = index\"\n    class=\"step\"\n    (click)=\"onStepClicked(i)\"\n    [class.clickable-step]=\"clickableSteps\"\n    [class.has-tooltip]=\"item.tooltip\"\n    [class.disabled]=\"item.disabled\"\n    [class.active]=\"i === activeItem\"\n    [class.completed]=\"i <= topVisitedItem && !item.disabled\"\n    [attr.data-mgmtAutomationId]=\"'Step' + i\"\n    [singTooltip]=\"item.tooltip && tooltipTemplateRef\"\n    [singTooltipContext]=\"{data: item.tooltip}\"\n  >\n    <i\n      [class.fix-position]=\"stepName?.getBoundingClientRect().height === 32\"\n      [class.mgmt-edit-new]=\"i <= topVisitedItem && i !== activeItem\"></i>\n    <span #stepName class=\"step-name\">{{ item.name }}</span>\n  </li>\n  <ng-template #tooltipTemplateRef let-data=\"data\">\n    <div>{{data}}</div>\n  </ng-template>\n</ul>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipContainerComponent } from './tooltip-container/tooltip-container.component';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [TooltipContainerComponent, TooltipDirective],\n  exports: [TooltipDirective],\n})\nexport class SingTooltipModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ProgressStepComponent } from './progress-step.component';\nimport { SingTooltipModule } from '../tooltip/tooltip.module';\n\n@NgModule({\n  declarations: [ProgressStepComponent],\n  imports: [CommonModule, SingTooltipModule],\n  exports: [ProgressStepComponent],\n})\nexport class SingProgressStepModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './progress-step.module';\nexport * from './progress-step.component';\n","import { ChangeDetectionStrategy, Component, Input, Output, TemplateRef, EventEmitter } from '@angular/core';\nimport { Breadcrumb } from '../models/breadcrumb.interface';\nimport { cloneDeep } from 'lodash';\n\n@Component({\n  selector: 'sing-breadcrumbs',\n  templateUrl: './breadcrumbs.component.html',\n  styleUrls: ['./breadcrumbs.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingBreadcrumbsComponent {\n  _breadcrumbs: Breadcrumb[] = [];\n  @Input()\n  set breadcrumbs(breadcrumbs: Breadcrumb[]) {\n    this._breadcrumbs = cloneDeep(breadcrumbs);\n  }\n\n  get breadcrumbs(): Breadcrumb[] {\n    return this._breadcrumbs;\n  }\n\n  @Input() textTemplateRef?: TemplateRef<any>;\n  @Input() separatorTemplateRef?: TemplateRef<any>;\n\n  /**\n   * use it as 2-way data binding like this:\n   * [(breadcrumbs)]=\"breadcrumbs\"\n   * That way our breadcrumbs host sync with the breadcrumbs component model.\n   */\n  @Output() breadcrumbsChange = new EventEmitter<Breadcrumb[]>();\n  /**\n   * each time breadcrumb is clicked notify the host which breadcrumb clicked.\n   */\n  @Output() readonly breadcrumbClicked = new EventEmitter<Breadcrumb>();\n\n  /**\n   * on breadcrumb clicked.\n   * in case it's the last breadcrumb we do nothing.\n   */\n  public clicked(index: number, breadcrumb: Breadcrumb, isLast: boolean): void {\n    if (!isLast) {\n      this.breadcrumbs = this.breadcrumbs.slice(0, index + 1);\n      this.breadcrumbsChange.emit(this.breadcrumbs);\n      this.breadcrumbClicked.emit(breadcrumb);\n    }\n  }\n\n  public trackBy(index: number): number {\n    return index;\n  }\n}\n","<ng-container *ngFor=\"let bc of breadcrumbs; let index = index; let isLast = last; trackBy: trackBy\">\n\n  <div\n    [attr.data-mgmtAutomationId]=\"'breadcrumb-text-' + index\"\n    class=\"bc-item\"\n    [class.last]=\"isLast\"\n    (click)=\"clicked(index, bc, isLast)\">\n    <!--Placeholder for Breadcrumb Text Template-->\n    <ng-container\n      [ngTemplateOutlet]=\"textTemplateRef ? textTemplateRef : defaultBreadcrumbTextTemplate\"\n      [ngTemplateOutletContext]=\"{index:index, isLast:isLast, bc: bc}\">\n    </ng-container>\n  </div>\n\n  <div class=\"separator\" *ngIf=\"!isLast\">\n    <!--Placeholder for Breadcrumb Separator Template-->\n    <ng-container\n      [ngTemplateOutlet]=\"separatorTemplateRef ? separatorTemplateRef : defaultBreadcrumbSeparatorTemplate\"\n      [ngTemplateOutletContext]=\"{index:index, isLast:isLast, bc: bc}\">\n    </ng-container>\n  </div>\n\n</ng-container>\n\n<!--Default Breadcrumb Text Template-->\n<ng-template let-index=\"index\" let-isLast=\"isLast\" let-bc=\"bc\" #defaultBreadcrumbTextTemplate>\n  <span class=\"default-bc-item\" [class.last]=\"isLast\">{{bc?.text}}</span>\n</ng-template>\n\n<!--Default Breadcrumb Separator Template-->\n<ng-template let-isLast=\"isLast\" #defaultBreadcrumbSeparatorTemplate>\n  <i class=\"mgmt-breadcrumb-arrow\"></i>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingBreadcrumbsComponent } from './breadcrumbs/breadcrumbs.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingBreadcrumbsComponent],\n  exports: [SingBreadcrumbsComponent],\n})\nexport class SingBreadcrumbsModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './breadcrumbs.module';\nexport * from './breadcrumbs/breadcrumbs.component';\nexport * from './models/breadcrumb.interface';\n","import { Injectable } from '@angular/core';\nimport { PaginatorPage } from '../models/paginator-page.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class PaginatorService {\n  /**\n   * create new page instance\n   * @param {number} pageNumber\n   * @param {boolean} selected\n   * @param numOfEntityPerPage\n   * @returns {PaginatorPage} new page object\n   */\n  createNewPage(pageNumber: number, selected: boolean, numOfEntityPerPage: number): PaginatorPage {\n    if (!pageNumber || pageNumber < 1) {\n      pageNumber = 1;\n    }\n    return {\n      pageNumber,\n      selected,\n      skip: (pageNumber - 1) * numOfEntityPerPage,\n    };\n  }\n\n  initPaginatorPage(): PaginatorPage {\n    return {\n      pageNumber: 0,\n      selected: false,\n      skip: 0,\n    };\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnChanges, Output } from '@angular/core';\nimport { PaginatorPage } from '../models/paginator-page.interface';\nimport { PaginatorService } from '../services/paginator.service';\nimport { isNil } from 'lodash';\n\n@Component({\n  selector: 'sing-paginator',\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingPaginatorComponent implements OnChanges {\n  /** mandatory string */\n  @Input() id = '';\n\n  /**\n   * the number of pages to display.\n   * in case 0 nothing will display.\n   * the default value is 10.\n   */\n  @Input() maxVisiblePages = 10;\n\n  /**\n   * set the selected page number.\n   * should be > 0.\n   * the default value is 1\n   */\n  @Input() selectedPage = 1;\n\n  /**\n   * mandatory number.\n   * the total server entities.\n   */\n  @Input() totalServerEntities = -1;\n\n  /**\n   * mandatory number.\n   * num of entity display per page.\n   */\n  @Input() numOfEntityPerPage = -1;\n\n  /**\n   * if true: displays only the selected page.\n   */\n  @Input() showSelectedPageOnly = false;\n\n  /**\n   * on page change event emitted with the selected Page.\n   * the selected page is from type PaginatorPage which contains the skip value\n   */\n  @Output() pageChange = new EventEmitter<PaginatorPage>();\n\n  /**\n   * emit an event if the pagination should be displayed or hidden\n   */\n  @Output() showPaginationChanged = new EventEmitter<boolean>();\n\n  @HostBinding('class.pagination-hidden') paginationHiddenClass = false;\n  public pages: PaginatorPage[] = [];\n  public currentSelected: PaginatorPage = this.paginationService.initPaginatorPage();\n  private previousSelected: PaginatorPage = this.paginationService.initPaginatorPage();\n  public maxPageNumber = -1;\n  private _maxVisiblePages = 10;\n  public _showPagination = true;\n\n  constructor(private paginationService: PaginatorService) {}\n\n  /**\n   * init pagination on input change\n   */\n  ngOnChanges(): void {\n    this.init();\n  }\n\n  /**\n   * init pagination component\n   */\n  init(): void {\n    if (this.totalServerEntities > 0) {\n      this.setDefaultProperties();\n      this.calcMaxPageNumber();\n      this.checkValidInputs();\n      this.inputToInt();\n      this.initPages();\n      this.reRenderPagination();\n      this.syncCurrentSelectedWithPages();\n    }\n    this.showPagination();\n  }\n\n  /**\n   * set component properties to default\n   */\n  setDefaultProperties(): void {\n    this.pages = [];\n    this.currentSelected = this.paginationService.initPaginatorPage();\n    this.previousSelected = this.paginationService.initPaginatorPage();\n    this.maxPageNumber = -1;\n    this._maxVisiblePages = this.maxVisiblePages >= 0 ? this.maxVisiblePages : this._maxVisiblePages;\n  }\n\n  /**\n   * check if given inputs are valid\n   */\n  checkValidInputs(): void {\n    if (this.id === undefined || this.id === '') {\n      console.error('id is mandatory for sing-pagination component');\n    }\n    if (this.totalServerEntities === undefined || this.totalServerEntities === -1) {\n      console.error('totalServerEntities is mandatory for sing-pagination component');\n    }\n    if (this.numOfEntityPerPage === undefined || this.numOfEntityPerPage === -1) {\n      console.error('numOfEntityPerPage is mandatory for sing-pagination component');\n    }\n    if (this.getMaxPageNumber() < this.selectedPage) {\n      console.error('selectedPage can not be greater than maxPageNumber');\n      this.selectedPage = this.getMaxPageNumber();\n    }\n    if (this._maxVisiblePages < 0 || isNil(this._maxVisiblePages)) {\n      console.error('maxVisiblePages should be >= 0');\n      this._maxVisiblePages = 10;\n    }\n    if (this.selectedPage < 1) {\n      console.error('selectedPage should be > 0');\n      this.selectedPage = 1;\n    }\n    if (this.maxPageNumber < this._maxVisiblePages) {\n      console.error('maxPageNumber should be >= maxVisiblePages');\n    }\n  }\n\n  /**\n   * convert to int in case one of the given inputs is a string\n   */\n  inputToInt(): void {\n    this._maxVisiblePages = parseInt(this._maxVisiblePages.toString(), 10);\n    this.selectedPage = parseInt(this.selectedPage.toString(), 10);\n    this.totalServerEntities = parseInt(this.totalServerEntities.toString(), 10);\n    this.numOfEntityPerPage = parseInt(this.numOfEntityPerPage.toString(), 10);\n  }\n\n  /**\n   * sync the currentSelected object with the object in pages\n   */\n  syncCurrentSelectedWithPages(): void {\n    for (let i = 0; i < this.pages.length; i++) {\n      if (this.pages[i].pageNumber === this.currentSelected?.pageNumber) {\n        this.pages[i] = this.currentSelected;\n      }\n    }\n  }\n\n  /**\n   * calc the max page number\n   */\n  calcMaxPageNumber(): void {\n    this.maxPageNumber = this.getMaxPageNumber();\n    if (this._maxVisiblePages > this.maxPageNumber) {\n      this._maxVisiblePages = this.maxPageNumber;\n    }\n  }\n\n  /**\n   * get the max page number\n   * @returns {number} max page number\n   */\n  getMaxPageNumber(): number {\n    return Math.ceil(this.totalServerEntities / this.numOfEntityPerPage);\n  }\n\n  /**\n   * init pagination pages\n   */\n  initPages(): void {\n    for (let i = 0; i < this._maxVisiblePages; i++) {\n      this.pages.push(\n        this.paginationService.createNewPage(i + 1, i === this.selectedPage - 1, this.numOfEntityPerPage)\n      );\n    }\n    this.setCurrentSelected();\n  }\n\n  /**\n   * set currentSelected page object\n   */\n  setCurrentSelected(): void {\n    this.currentSelected = this.paginationService.createNewPage(this.selectedPage, true, this.numOfEntityPerPage);\n  }\n\n  /**\n   * on previous click\n   * update the new selected page\n   * emit out the new page selected\n   */\n  onPreviousClick(): void {\n    const previousPage = this.getPreviousPage();\n    this.onPageChange(previousPage);\n  }\n\n  /**\n   * on next click\n   * update the new selected page\n   * emit out the new page selected\n   */\n  onNextClick(): void {\n    const nextPage = this.getNextPage();\n    this.onPageChange(nextPage);\n  }\n\n  /**\n   * get previous page\n   * @returns {PaginatorPage}\n   */\n  getPreviousPage(): PaginatorPage {\n    const previousPageNumber = this.currentSelected.pageNumber - 1;\n    let previousPage = this.pages.find((page: PaginatorPage) => page.pageNumber === previousPageNumber);\n    // create previousPage in case it isn't found\n    if (!previousPage) {\n      previousPage = this.paginationService.createNewPage(previousPageNumber, false, this.numOfEntityPerPage);\n    }\n    return previousPage;\n  }\n\n  /**\n   * get next page\n   * @returns {PaginatorPage}\n   */\n  getNextPage(): PaginatorPage {\n    const nextPageNumber = this.currentSelected.pageNumber + 1;\n    let nextPage = this.pages.find((page: PaginatorPage) => page.pageNumber === nextPageNumber);\n    // create nextPage in case it isn't found\n    if (!nextPage) {\n      nextPage = this.paginationService.createNewPage(nextPageNumber, false, this.numOfEntityPerPage);\n    }\n    return nextPage;\n  }\n\n  /**\n   * emit out the selected page\n   * @param {PaginatorPage} page\n   */\n  onPageChange(page: PaginatorPage): void {\n    this.previousSelected = this.currentSelected;\n    this.setNewSelectedPage(page);\n    this.reRenderPagination();\n    this.pageChange.emit(page);\n  }\n\n  /**\n   * calc the display pages\n   */\n  reRenderPagination(): void {\n    if (this.currentSelected) {\n      // check if need to set selected in the middle\n      if (!this.isMaxPageNumberExist() || this.isBackPagination()) {\n        // first set the selected page in the array\n        const newPages = [this.currentSelected];\n        const middle = Math.floor(this._maxVisiblePages / 2) + 1;\n        // populate the new array with pages on the left\n        for (let i = 1; i < middle; i++) {\n          const pageNumber = this.currentSelected.pageNumber - i;\n          if (pageNumber > 0) {\n            newPages.unshift(this.paginationService.createNewPage(pageNumber, false, this.numOfEntityPerPage));\n          } else {\n            break;\n          }\n        }\n        const startIndex = newPages.length;\n        let stopIndex = this._maxVisiblePages - newPages.length + startIndex;\n        // populate the new array with pages on the right\n        for (let i = startIndex; i < stopIndex; i++) {\n          const pageNumber = newPages[newPages.length - 1].pageNumber + 1;\n          if (this.maxPageNumber >= pageNumber) {\n            newPages.push(this.paginationService.createNewPage(pageNumber, false, this.numOfEntityPerPage));\n          }\n        }\n        // in case the new array length < maxVisiblePages we need to populate the left array with the missing pages\n        if (newPages.length < this._maxVisiblePages) {\n          stopIndex = this._maxVisiblePages - newPages.length + 1;\n          for (let i = 1; i < stopIndex; i++) {\n            const pageNumber = newPages[0].pageNumber - 1;\n            if (pageNumber > 0) {\n              newPages.unshift(this.paginationService.createNewPage(pageNumber, false, this.numOfEntityPerPage));\n            } else {\n              break;\n            }\n          }\n        }\n\n        this.pages = newPages;\n      }\n    }\n  }\n\n  /**\n   * check if use go back\n   * @returns {boolean}\n   */\n  isBackPagination(): boolean {\n    return this.previousSelected && this.previousSelected.pageNumber > this.currentSelected.pageNumber;\n  }\n\n  /**\n   * check if max page number exists in the pages array\n   * @returns {boolean} true if exists, false otherwise\n   */\n  isMaxPageNumberExist(): boolean {\n    const lastIndex = this.pages.length - 1;\n    const lastPage = this.pages[lastIndex];\n    return this.maxPageNumber === lastPage.pageNumber;\n  }\n\n  /**\n   * set the new selected page\n   * @param {PaginatorPage} page\n   */\n  setNewSelectedPage(page: PaginatorPage): void {\n    this.unSelectSelectedPage();\n    page.selected = true;\n    this.currentSelected = page;\n  }\n\n  /**\n   * unselect the current selected page\n   */\n  unSelectSelectedPage(): void {\n    this.currentSelected.selected = false;\n  }\n\n  /**\n   * show pagination in case _maxVisiblePages > 1 and totalServerEntities are > 0\n   * @returns {boolean} true in case _maxVisiblePages > 1 and totalServerEntities are > 0, false otherwise\n   */\n  showPagination(): void {\n    this._showPagination = this._maxVisiblePages > 1 && this.totalServerEntities > 0;\n    this.paginationHiddenClass = !this._showPagination;\n    this.showPaginationChanged.emit(this._showPagination);\n  }\n}\n","<div class=\"pagination-theme-default\" *ngIf=\"_showPagination\">\n\n  <!--Previous-->\n  <button\n    type=\"button\"\n    data-mgmtAutomationId=\"LeftArrow\"\n    class=\"previous\"\n    aria-label=\"previous\"\n    [disabled]=\"currentSelected.pageNumber <= 1\"\n    [id]=\"id + '_pagination_previous'\"\n    (click)=\"$event.stopPropagation();onPreviousClick()\">\n    <i class=\"previous-icon\"></i>\n  </button>\n\n  <!--Page Numbers-->\n  <a\n    [attr.data-mgmtAutomationId]=\"'PageNumber' + currentSelected?.pageNumber\"\n    *ngIf=\"showSelectedPageOnly; else showPageNumbers\"\n    [id]=\"id + '_pagination_' + currentSelected?.pageNumber\"\n    class=\"selected-page-only\">\n    {{currentSelected?.pageNumber}}\n  </a>\n\n  <ng-template #showPageNumbers>\n    <a\n      [attr.data-mgmtAutomationId]=\"'PageNumber' + page.pageNumber\"\n      class=\"number\"\n      *ngFor=\"let page of pages\"\n      [id]=\"id + '_pagination_' + page.pageNumber\"\n      (click)=\"$event.stopPropagation(); onPageChange(page)\"\n      [ngClass]=\"{'selected':page.selected}\">\n      {{page.pageNumber}}\n    </a>\n  </ng-template>\n\n  <!--Next-->\n  <button\n    type=\"button\"\n    data-mgmtAutomationId=\"RightArrow\"\n    class=\"next\"\n    aria-label=\"next\"\n    [disabled]=\"currentSelected.pageNumber >= maxPageNumber\"\n    [id]=\"id + '_pagination_next'\"\n    (click)=\"$event.stopPropagation();onNextClick()\">\n    <i class=\"next-icon\"></i>\n  </button>\n\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingPaginatorComponent } from './paginator/paginator.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingPaginatorComponent],\n  exports: [SingPaginatorComponent],\n})\nexport class SingPaginatorModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './paginator.module';\nexport * from './paginator/paginator.component';\nexport * from './models/paginator-page.interface';\nexport * from './services/paginator.service';\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { JustifyContent } from '../../../../shared/alignment.model';\n\n@Component({\n  selector: 'sing-dialog-footer',\n  templateUrl: './dialog-footer.component.html',\n  styleUrls: ['./dialog-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingDialogFooterComponent {\n  @HostBinding('class.align-start')\n  get alignStart() {\n    return this.justifyContent === 'start';\n  }\n\n  @HostBinding('class.align-center')\n  get alignCenter() {\n    return this.justifyContent === 'center';\n  }\n\n  @HostBinding('class.align-end')\n  get alignEnd() {\n    return this.justifyContent === 'end';\n  }\n\n  @HostBinding('class.align-space-between')\n  get alignSpaceBetween() {\n    return this.justifyContent === 'space-between';\n  }\n\n  @Input()\n  justifyContent: JustifyContent;\n}\n","<ng-content>\n</ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDialogFooterComponent } from './dialog-footer/dialog-footer.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingDialogFooterComponent],\n  exports: [SingDialogFooterComponent],\n})\nexport class SingDialogFooterModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dialog-footer.module';\nexport * from './dialog-footer/dialog-footer.component';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './tooltip.module';\nexport * from './tooltip.directive';\nexport * from './services/tooltip.service';\nexport * from './models/tooltip-position.type';\nexport * from './tooltip-container/tooltip-container.component';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { LegacyTooltipPosition as TooltipPosition } from '@angular/material/legacy-tooltip';\n\n@Component({\n  selector: 'sing-help-tooltip',\n  templateUrl: './help-tooltip.component.html',\n  styleUrls: ['./help-tooltip.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingHelpTooltipComponent {\n  @Input() helpText = '';\n  @Input() icon = 'mgmt-q-mark';\n  @Input() position: TooltipPosition = 'below';\n}\n","<i\n  *ngIf='helpText'\n  [matTooltipPosition]='position'\n  class='help-icon {{icon}}'\n  matTooltip='{{helpText}}'\n  matTooltipClass='tooltip-break-line'>\n</i>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\nimport { SingHelpTooltipComponent } from './help-tooltip/help-tooltip.component';\n\n@NgModule({\n  imports: [CommonModule, MatTooltipModule],\n  declarations: [SingHelpTooltipComponent],\n  exports: [SingHelpTooltipComponent],\n})\nexport class SingHelpTooltipModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './help-tooltip.module';\nexport * from './help-tooltip/help-tooltip.component';\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, Renderer2 } from '@angular/core';\n\nenum EventCodeOptions {\n  ArrowDown = 'ArrowDown',\n  ArrowUp = 'ArrowUp',\n}\n\n/**\n * this directive helps us with the up/down key presses\n * in order to set host element in focus\n */\n@Directive({\n  selector: '[singArrowKeyNavigation]',\n})\nexport class SingArrowKeyNavigationDirective implements AfterViewInit {\n  /**\n   * let the host element to know when the element is focused\n   */\n  @Output() focusSet = new EventEmitter<void>();\n\n  constructor(private elementRef: ElementRef, public renderer: Renderer2) {}\n\n  ngAfterViewInit(): void {\n    // we add to each host element tabindex = 0. so now the element can set focus\n    this.renderer.setAttribute(this.elementRef.nativeElement, 'tabindex', '0');\n  }\n\n  /**\n   * listen to keydown events on the host element\n   * for key down: we find the next element sibling and set it in focus\n   * for key up: we find the previous element sibling and set it in focus\n   * if the key code is not one of the above - do nothing\n   * @param event\n   */\n  @HostListener('keydown', ['$event'])\n  onKeydownHandler(event: KeyboardEvent) {\n    let elementToFocus;\n    switch (event.code) {\n      case EventCodeOptions.ArrowDown: {\n        elementToFocus = (event.target as Element).nextElementSibling;\n        break;\n      }\n      case EventCodeOptions.ArrowUp: {\n        elementToFocus = (event.target as Element).previousElementSibling;\n        break;\n      }\n    }\n    this.setElementFocus(elementToFocus);\n  }\n\n  /**\n   * set element in focus and emit an event to the host element\n   * that it is now in focus\n   * @param elementToFocus\n   */\n  setElementFocus(elementToFocus: any): void {\n    if (elementToFocus) {\n      elementToFocus.focus();\n      this.focusSet.emit();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingArrowKeyNavigationDirective } from './arrow-key-navigation.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingArrowKeyNavigationDirective],\n  exports: [SingArrowKeyNavigationDirective],\n})\nexport class SingArrowKeyNavigationModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './arrow-key-navigation.directive';\nexport * from './arrow-key-navigation.module';\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n  selector: '[singClickOutSide]',\n})\nexport class SingClickOutSideDirective {\n  @Input() singClickOutSideActive = true;\n\n  @Output()\n  clickOutSide: EventEmitter<any> = new EventEmitter();\n\n  constructor(private elementRef: ElementRef) {}\n\n  @HostListener('document:click', ['$event'])\n  handleOutsideClick(event: { target: any }) {\n    if (this.singClickOutSideActive) {\n      if (!this.elementRef.nativeElement.contains(event.target)) {\n        this.clickOutSide.emit(event);\n      }\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingClickOutSideDirective } from './click-out-side.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingClickOutSideDirective],\n  exports: [SingClickOutSideDirective],\n})\nexport class SingClickOutSideModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './click-out-side.directive';\nexport * from './click-out-side.module';\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n/**\n * the original 'singClickOutSide' also catches mouseup after drag and trigger click\n * meaning if the use copy something and the mouse leave the box it will trigger click outside\n * this solution capture mousedown and compare the location on mouse up if the different it will not trigger click\n * meaning the user did not 'drag' the mouse\n * https://stackoverflow.com/questions/6042202/how-to-distinguish-mouse-click-and-drag#answer-59741870\n */\n@Directive({\n  selector: '[singClickOutsideNoDrag]',\n})\nexport class SingClickOutSideNoDragDirective {\n  private mouseDownX;\n  private mouseDownY;\n\n  // pixels that the user can move, and it still considers click and not drag\n  @Input() mouseDistanceThresholdPx = 6;\n  @Input() singClickOutSideNoDragActive = true;\n\n  @Output()\n  clickOutSide: EventEmitter<any> = new EventEmitter();\n\n  constructor(private elementRef: ElementRef) {}\n\n  @HostListener('document:mousedown', ['$event'])\n  handleMouseDown(event: MouseEvent) {\n    this.mouseDownX = event.pageX;\n    this.mouseDownY = event.pageY;\n  }\n\n  @HostListener('document:mouseup', ['$event'])\n  handleMouseUp(event: MouseEvent) {\n    if (this.singClickOutSideNoDragActive && this.isMouseDragged(event)) {\n      if (!this.elementRef.nativeElement.contains(event.target)) {\n        this.clickOutSide.emit(event);\n      }\n    }\n  }\n\n  private isMouseDragged({ pageX: mouseUpX, pageY: mouseUpY }: MouseEvent): boolean {\n    const diffX = Math.abs(mouseUpX - this.mouseDownX);\n    const diffY = Math.abs(mouseUpY - this.mouseDownY);\n    return diffX < this.mouseDistanceThresholdPx && diffY < this.mouseDistanceThresholdPx;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingClickOutSideNoDragDirective } from './click-out-side-no-drag.directive';\n\n@NgModule({\n  declarations: [SingClickOutSideNoDragDirective],\n  imports: [CommonModule],\n  exports: [SingClickOutSideNoDragDirective],\n})\nexport class SingClickOutSideNoDragModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './click-out-side-no-drag.directive';\nexport * from './click-out-side-no-drag.module';\n","import { ChangeDetectorRef, Directive, HostListener, Input, OnDestroy, ViewContainerRef } from '@angular/core';\nimport { ComponentType, Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\ninterface Point {\n  x: number;\n  y: number;\n}\n\n@Directive({\n  selector: '[singContextMenu]',\n})\nexport class SingContextMenuDirective implements OnDestroy {\n  @Input()\n  singContextMenuTemplate!: ComponentType<any>;\n\n  overlayRef?: OverlayRef;\n\n  @HostListener('scroll', ['$event'])\n  @HostListener('window:wheel', ['$event'])\n  @HostListener('document:mousedown', ['$event']) // mousedown is used for when the user clicks outside of the context menu directive\n  @HostListener('document:click', ['$event']) // click is used for when the user clicks inside of the context menu directive\n  deleteComponent() {\n    this.dispose();\n  }\n\n  @HostListener('contextmenu', ['$event'])\n  onContextMenu(e: MouseEvent) {\n    e.preventDefault();\n    this.dispose();\n    this.createComponent(e);\n  }\n\n  constructor(\n    private viewContainerRef: ViewContainerRef,\n    private changeDetectorRef: ChangeDetectorRef,\n    private overlay: Overlay\n  ) {}\n\n  ngOnDestroy() {\n    this.dispose();\n  }\n\n  createComponent(origin: Point) {\n    this.overlayRef = this.overlay.create(\n      new OverlayConfig({\n        hasBackdrop: true,\n        backdropClass: 'popover-backdrop',\n        scrollStrategy: this.overlay.scrollStrategies.reposition(),\n        positionStrategy: this.overlay\n          .position()\n          .flexibleConnectedTo(origin)\n          .withPositions([\n            {\n              originX: 'center',\n              originY: 'center',\n              overlayX: 'center',\n              overlayY: 'center',\n            },\n          ])\n          .withPush(true),\n      })\n    );\n    const comp = new ComponentPortal(this.singContextMenuTemplate);\n    this.overlayRef.attach(comp);\n  }\n\n  private dispose() {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingContextMenuDirective } from './context-menu.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingContextMenuDirective],\n  exports: [SingContextMenuDirective],\n})\nexport class SingContextMenuModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './context-menu.directive';\nexport * from './context-menu.module';\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n  selector: '[singDisableCopy]',\n})\nexport class SingDisableCopyDirective {\n  @HostListener('copy', ['$event']) blockCopy(e: KeyboardEvent) {\n    e.preventDefault();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDisableCopyDirective } from './disable-copy.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingDisableCopyDirective],\n  exports: [SingDisableCopyDirective],\n})\nexport class SingDisableCopyModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './disable-copy.directive';\nexport * from './disable-copy.module';\n","import {\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  Input,\n  OnInit,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport { isObject } from 'lodash';\n\n/**\n * dynamic component generator directive\n * dynamicComponentClass: pass the dynamic component class name\n * inputs: pass an object with keys which represent the component @Input name and the value to set\n */\n@Directive({\n  selector: '[singDynamicComponentDirective]',\n})\nexport class SingDynamicComponentDirective implements OnInit {\n  @Input() dynamicComponentClass!: Type<any>;\n  @Input() inputs: any;\n\n  componentFactory: ComponentFactory<any> | undefined = undefined;\n  component!: ComponentRef<any> | null;\n\n  constructor(private resolver: ComponentFactoryResolver, private container: ViewContainerRef) {}\n\n  ngOnInit(): void {\n    this.container.clear();\n    this.componentFactory = void 0;\n    this.component = null;\n    this.componentFactory = this.resolver.resolveComponentFactory<any>(this.dynamicComponentClass);\n    this.component = this.container.createComponent(this.componentFactory);\n\n    this.updateComponentInputs();\n  }\n\n  /**\n   * update component inputs\n   */\n  updateComponentInputs(): void {\n    const validInputs = this.inputs && isObject(this.inputs) && Object.keys(this.inputs).length;\n    if (this.component && validInputs && this.componentFactory && this.componentFactory.inputs) {\n      this.componentFactory.inputs.forEach((input: any) => {\n        if (this.component && this.inputs.hasOwnProperty(input.propName)) {\n          this.component.instance[input.propName] = this.inputs[input.propName];\n        }\n      });\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDynamicComponentDirective } from './dynamic-component.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingDynamicComponentDirective],\n  exports: [SingDynamicComponentDirective],\n})\nexport class SingDynamicComponentModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dynamic-component.directive';\nexport * from './dynamic-component.module';\n","import {\n  MAT_LEGACY_TOOLTIP_DEFAULT_OPTIONS as MAT_TOOLTIP_DEFAULT_OPTIONS,\n  MAT_LEGACY_TOOLTIP_SCROLL_STRATEGY as MAT_TOOLTIP_SCROLL_STRATEGY,\n  MatLegacyTooltip as MatTooltip,\n  LegacyTooltipPosition as TooltipPosition,\n} from '@angular/material/legacy-tooltip';\nimport { Directive, ElementRef, Inject, Input, NgZone, OnDestroy, Optional, ViewContainerRef } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { ScrollDispatcher } from '@angular/cdk/scrolling';\nimport { Platform } from '@angular/cdk/platform';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { DOCUMENT } from '@angular/common';\nimport { ToastNotificationService } from '../../popups/toast-notification/services/toast-notification.service';\nimport { isFunction } from 'lodash';\n\n@Directive({\n  selector: '[singEllipsis]',\n})\nexport class SingEllipsisDirective extends MatTooltip implements OnDestroy {\n  elementRef: ElementRef;\n  eventListener: any;\n\n  @Input('position') set tooltipPosition(tooltipPosition: TooltipPosition) {\n    this.position = tooltipPosition;\n  }\n\n  /**\n   * sometimes we need a different show tooltip condition.\n   * In this case we can pass a function that return boolean.\n   * in case the function return true the tooltip will display.\n   */\n  @Input('singEllipsisShowCondition') showCondition: (hostElement: HTMLElement) => boolean;\n  /**\n   * Text to copy instead of the tooltip's text.\n   */\n  @Input() textToCopy: string;\n\n  constructor(\n    public toastService: ToastNotificationService,\n    private deviceService: DeviceDetectorService,\n    _overlay: Overlay,\n    _elementRef: ElementRef,\n    _scrollDispatcher: ScrollDispatcher,\n    _viewContainerRef: ViewContainerRef,\n    _ngZone: NgZone,\n    _platform: Platform,\n    _ariaDescriber: AriaDescriber,\n    _focusMonitor: FocusMonitor,\n    @Optional()\n    @Inject(MAT_TOOLTIP_DEFAULT_OPTIONS)\n    _defaultOptions: any,\n    @Inject(MAT_TOOLTIP_SCROLL_STRATEGY) _scrollStrategy: any,\n    @Optional() _dir: Directionality,\n    @Inject(DOCUMENT) _document: any\n  ) {\n    // init base MatTooltip class\n    super(\n      _overlay,\n      _elementRef,\n      _scrollDispatcher,\n      _viewContainerRef,\n      _ngZone,\n      _platform,\n      _ariaDescriber,\n      _focusMonitor,\n      _scrollStrategy,\n      _dir,\n      _defaultOptions,\n      _document\n    );\n\n    // keep reference to element (since base is not public)\n    this.elementRef = _elementRef;\n\n    /**\n     * we set this to 'DEFAULT VALUE'\n     * since angular material will not start to listen to mouse enter when message\n     * is an empty string.\n     * this value will be overridden when show() method gets executed\n     */\n    this.message = 'DEFAULT VALUE';\n\n    // adds ellipsis class\n    const element: HTMLElement = _elementRef.nativeElement;\n    element.classList.add('ellipsis');\n    // adds tooltip class for displaying clipboard message + adding os class for better message\n    this.tooltipClass = `clipboard ${this.deviceService.os.toLowerCase()}`;\n\n    // adds click event for copying to clipboard\n    this.eventListener = (event: {\n      stopPropagation: () => void;\n      preventDefault: () => void;\n      clipboardData: { setData: (arg0: string, arg1: string) => void };\n    }) => this.copyToClipboard(event);\n    // element.addEventListener('click', this.eventListener);\n    // adds copy event (CTRL+C) for copying to clipboard\n    document.addEventListener('copy', this.eventListener);\n  }\n\n  show(delay: number = this.showDelay): void {\n    const { innerText } = <HTMLElement>this.elementRef.nativeElement;\n\n    if (this.showTooltip()) {\n      // set message to the content text\n      this.message = innerText;\n      // calls base show\n      super.show(delay);\n    }\n  }\n\n  /**\n   * check if need to show tooltip\n   */\n  showTooltip(): boolean {\n    let _showTooltip = false;\n    // overrides show - checks if content of element is bigger than visible in ellipsis\n    const { offsetHeight, offsetWidth, scrollWidth, scrollHeight } = <HTMLElement>this.elementRef.nativeElement;\n    if (isFunction(this.showCondition)) {\n      _showTooltip = this.showCondition(this.elementRef.nativeElement);\n    } else if (offsetWidth < scrollWidth || offsetHeight < scrollHeight) {\n      _showTooltip = true;\n    }\n    return _showTooltip;\n  }\n\n  copyToClipboard(event: {\n    stopPropagation: () => void;\n    preventDefault: () => void;\n    clipboardData: { setData: (arg0: string, arg1: string) => void };\n  }) {\n    if (this._tooltipInstance) {\n      event.stopPropagation();\n      event.preventDefault();\n\n      if (event.clipboardData) {\n        // event sent from \"copy\" action\n        event.clipboardData.setData('text/plain', this.textToCopy ?? this.message);\n      } else {\n        // event sent from \"click\" action\n        navigator.clipboard.writeText(this.textToCopy ?? this.message);\n      }\n\n      const content = 'Tooltip content copied to clipboard';\n      this.toastService.success(content);\n\n      this.hide();\n    }\n  }\n\n  ngOnDestroy() {\n    // unregister events\n    document.removeEventListener('copy', this.eventListener);\n\n    super.ngOnDestroy();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingEllipsisDirective } from './ellipsis.directive';\nimport { MAT_LEGACY_TOOLTIP_DEFAULT_OPTIONS as MAT_TOOLTIP_DEFAULT_OPTIONS, MatLegacyTooltipDefaultOptions as MatTooltipDefaultOptions } from '@angular/material/legacy-tooltip';\n\n/**\n * We are override the MAT_TOOLTIP_DEFAULT_OPTIONS with disableTooltipInteractivity: true\n * since the angular material change the tooltip behavior since angular 13\n * as you can read about here -> https://github.com/angular/components/issues/25219\n * and the solution they give us can be found here -> https://github.com/angular/components/issues/25173\n *\n * and example how to use it can be found here ->\n * https://stackoverflow.com/questions/72365016/hide-mat-tooltip-immediately-when-mouse-leaves-button\n */\nexport const SING_TOOLTIP_DEFAULT_OPTIONS: MatTooltipDefaultOptions = {\n  showDelay: 0, // The angular default\n  hideDelay: 0, // // The angular default\n  touchendHideDelay: 1500, // // The angular default\n  disableTooltipInteractivity: true, // our change to back how it wsd before angular material 13\n} as const;\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingEllipsisDirective],\n  exports: [SingEllipsisDirective],\n  providers: [{ provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: SING_TOOLTIP_DEFAULT_OPTIONS }],\n})\nexport class SingEllipsisModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './ellipsis.directive';\nexport * from './ellipsis.module';\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n\nconst submittedClassName = 'submitted';\n\nexport enum FormSubmitActionOptions {\n  RESET,\n}\n\n/**\n * this directive should be added to forms with a submit button\n * the directive check if submit is clicked and adds a submitted class on the form element\n * this gives us an indication for when submit is clicked\n */\n@Directive({\n  selector: 'form[singFormSubmit]',\n})\nexport class SingFormSubmitDirective {\n  constructor(private hostElementRef: ElementRef, private renderer: Renderer2) {}\n\n  /**\n   * in order to support actions from the component like reset\n   * we can use this input which gets a new object with action name\n   * @param {{name: FormSubmitActionOptions}} action\n   */\n  @Input()\n  set formSubmitActions(action: { name: FormSubmitActionOptions }) {\n    if (action && action.hasOwnProperty('name')) {\n      if (action.name === FormSubmitActionOptions.RESET) {\n        this.renderer.removeClass(this.hostElementRef.nativeElement, submittedClassName);\n      }\n    }\n  }\n\n  @HostListener('click', ['$event'])\n  onClick($event) {\n    if (\n      $event.target.type === 'submit' ||\n      ($event.target.parentElement && $event.target.parentElement.type === 'submit')\n    ) {\n      this.renderer.addClass(this.hostElementRef.nativeElement, submittedClassName);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingFormSubmitDirective } from './form-submit.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingFormSubmitDirective],\n  exports: [SingFormSubmitDirective],\n})\nexport class SingFormSubmitModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './form-submit.module';\nexport * from './form-submit.directive';\n","import { AfterViewInit, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n  selector: '[singInputAutoFocus]',\n})\nexport class SingInputAutoFocusDirective implements AfterViewInit {\n  constructor(private el: ElementRef) {}\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.el.nativeElement.focus();\n    }, 500);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInputAutoFocusDirective } from './input-auto-focus.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingInputAutoFocusDirective],\n  exports: [SingInputAutoFocusDirective],\n})\nexport class SingInputAutoFocusModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './input-auto-focus.module';\nexport * from './input-auto-focus.directive';\n","import { AfterViewInit, Directive, Input, Renderer2, ViewContainerRef } from '@angular/core';\n\n/**\n * change mat checkbox size. changes the actual width and height.\n */\n@Directive({\n  selector: '[singMatCheckboxSize]',\n})\nexport class SingMatCheckboxSizeDirective implements AfterViewInit {\n  @Input() singMatCheckboxSize!: number;\n\n  constructor(private viewContainerRef: ViewContainerRef, private renderer: Renderer2) {}\n\n  ngAfterViewInit(): void {\n    this.setCheckboxSize();\n  }\n\n  /**\n   * set check box size.\n   * we first check for int and then we find the checkbox element in order to set checkbox size.\n   */\n  setCheckboxSize(): void {\n    if (this.singMatCheckboxSize && Number.isInteger(this.singMatCheckboxSize)) {\n      const matCheckboxInnerContainerElement = this.viewContainerRef.element.nativeElement.querySelector(\n        '.mat-checkbox-inner-container'\n      );\n      if (matCheckboxInnerContainerElement) {\n        const value = `${this.singMatCheckboxSize}px`;\n        this.renderer.setStyle(matCheckboxInnerContainerElement, 'width', value);\n        this.renderer.setStyle(matCheckboxInnerContainerElement, 'height', value);\n      }\n    } else {\n      console.error(\n        `[MatCheckboxSizeDirective] solMatCheckboxSize should be a number and not ${this.singMatCheckboxSize}`\n      );\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SingMatCheckboxSizeDirective } from './mat-checkbox-size.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingMatCheckboxSizeDirective],\n  exports: [SingMatCheckboxSizeDirective],\n})\nexport class SingMatCheckboxSizeModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './mat-checkbox-size.directive';\nexport * from './mat-checkbox-size.module';\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * this directive helps us to detect scrolling outside the host element.\n * an event will be fired when scrolling occurs outside the host element\n */\n@Directive({\n  selector: '[singScrollOutEvent]',\n})\nexport class ScrollOutEventDirective {\n  @Output() singScrollOutEvent = new EventEmitter<any>();\n\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  constructor(private elRef: ElementRef) {}\n\n  @HostListener('window:scroll', ['$event'])\n  @HostListener('window:wheel', ['$event'])\n  onScroll(event: any) {\n    if (!this.elRef.nativeElement.contains(event.target)) {\n      this.singScrollOutEvent.emit(event);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ScrollOutEventDirective } from './scroll-out-event.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [ScrollOutEventDirective],\n  exports: [ScrollOutEventDirective],\n})\nexport class ScrollOutEventModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './scroll-out-event.directive';\nexport * from './scroll-out-event.module';\n","import {\n  AfterViewInit,\n  Directive,\n  DoCheck,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  Renderer2,\n} from '@angular/core';\n\n/**\n * Autosize textarea.\n * This directive should be used on a textarea tag.\n * It will update the textarea height when needed.\n */\n@Directive({\n  selector: '[singTextareaAutosize]',\n})\nexport class SingTextareaAutosizeDirective implements AfterViewInit, DoCheck {\n  @HostBinding('style.overflow')\n  public overflow = 'hidden';\n\n  @Input()\n  @HostBinding('rows')\n  public rows = 1;\n\n  constructor(private elem: ElementRef, private renderer: Renderer2) {}\n\n  public ngAfterViewInit() {\n    this.resize();\n  }\n\n  public ngDoCheck() {\n    this.resize();\n  }\n\n  @HostListener('input')\n  private resize() {\n    const textarea = this.elem.nativeElement as HTMLTextAreaElement;\n    // Calculate border height which is not included in scrollHeight\n    const borderHeight = textarea.offsetHeight - textarea.clientHeight;\n    // Reset textarea height to auto in order to correctly calculate the new height\n    this.setHeight('auto');\n    // Set new height\n    this.setHeight(`${textarea.scrollHeight + borderHeight}px`);\n  }\n\n  private setHeight(value: string) {\n    this.renderer.setStyle(this.elem.nativeElement, 'height', value);\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SingTextareaAutosizeDirective } from './textarea-autosize.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingTextareaAutosizeDirective],\n  exports: [SingTextareaAutosizeDirective],\n})\nexport class SingTextareaAutosizeModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './textarea-autosize.module';\nexport * from './textarea-autosize.directive';\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Directive({\n  selector: '[singDebounceClick]',\n})\nexport class DebounceClickDirective implements OnInit, OnDestroy {\n  @Input()\n  debounceTime = 500;\n\n  @Output()\n  debounceClick = new EventEmitter();\n\n  private clicks = new Subject();\n  private subscription: Subscription;\n\n  ngOnInit() {\n    this.subscription = this.clicks.pipe(debounceTime(this.debounceTime)).subscribe((e) => this.debounceClick.emit(e));\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  @HostListener('click', ['$event'])\n  clickEvent(event) {\n    event.preventDefault();\n    event.stopPropagation();\n    this.clicks.next(event);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DebounceClickDirective } from './debounce-click.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [DebounceClickDirective],\n  exports: [DebounceClickDirective],\n})\nexport class DebounceClickModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './debounce-click.directive';\nexport * from './debounce-click.module';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-summary-box',\n  templateUrl: './summary-box.component.html',\n  styleUrls: ['./summary-box.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingSummaryBoxComponent {\n  @Input() title = '';\n}\n","<div class='container'>\n  <div class='title'>{{title}}</div>\n  <div class='content'>\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSummaryBoxComponent } from './summary-box/summary-box.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingSummaryBoxComponent],\n  exports: [SingSummaryBoxComponent],\n})\nexport class SingSummaryBoxModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './summary-box.module';\nexport * from './summary-box/summary-box.component';\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { Chart, ChartConfiguration, registerables } from 'chart.js';\n\n@Component({\n  selector: 'sing-chart',\n  templateUrl: './chart.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingChartComponent implements OnDestroy, AfterViewInit, OnChanges {\n  @ViewChild('singChart', { read: ElementRef, static: true }) singChart!: ElementRef;\n  @Input() chartWidth = 300;\n  @Input() chartDefinition: ChartConfiguration;\n\n  @Output() chartCreated: EventEmitter<any> = new EventEmitter<any>();\n\n  canvas: HTMLCanvasElement | undefined;\n  chartRef: Chart | undefined;\n  animationFrameId = 0;\n\n  constructor(private ngZone: NgZone) {\n    Chart.register(...registerables);\n    Chart.defaults.font.family = 'Lato';\n  }\n\n  ngOnChanges(): void {\n    if (this.chartDefinition) {\n      this.ngZone.runOutsideAngular(() => this.drawChart());\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.canvas = this.singChart.nativeElement;\n  }\n\n  drawChart(): void {\n    if (this.chartRef) {\n      this.chartRef.destroy();\n    }\n    this.animationFrameId = requestAnimationFrame(() => {\n      this.chartRef = new Chart(this.singChart.nativeElement.getContext('2d'), this.chartDefinition);\n      this.chartCreated.emit(this.chartRef);\n      cancelAnimationFrame(this.animationFrameId);\n    });\n  }\n\n  ngOnDestroy(): void {\n    cancelAnimationFrame(this.animationFrameId);\n    if (this.chartRef) {\n      this.chartRef.destroy();\n    }\n  }\n}\n","<div class='sing-donut'>\n  <canvas #singChart [height]='chartWidth / 2' [width]='chartWidth'></canvas>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingChartComponent } from './chart/chart.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingChartComponent],\n  exports: [SingChartComponent],\n})\nexport class SingChartModule {}\n","export enum ChartTypeOptions {\n  doughnut = 'doughnut',\n  pie = 'pie',\n  line = 'line',\n  bar = 'bar',\n  bubble = 'bubble',\n  horizontalBar = 'horizontalBar',\n  radar = 'radar',\n  polarArea = 'polarArea',\n  scatter = 'scatter',\n  stackedBar = 'stackedBar',\n  wordCloud = 'wordCloud',\n}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './chart.module';\nexport * from './chart/chart.component';\nexport * from './models/chart.model';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-toggle-arrow',\n  template: ` <div\n    class=\"toggle-arrow\"\n    [class.opened]=\"open\"\n    [style.color]=\"color\"\n    [style.width.px]=\"size\"\n    [style.height.px]=\"size\"\n    [style.border-top-width.px]=\"borderWidth\"\n    [style.border-right-width.px]=\"borderWidth\"\n  ></div>`,\n  styleUrls: ['./toggle-arrow.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingToggleArrowComponent {\n  @Input() open = false;\n  @Input() color = 'var(--s1-P-40-color)';\n  @Input() size = 8;\n  @Input() borderWidth = 2;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingToggleArrowComponent } from './toggle-arrow/toggle-arrow.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingToggleArrowComponent],\n  exports: [SingToggleArrowComponent],\n})\nexport class SingToggleArrowModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './toggle-arrow.module';\nexport * from './toggle-arrow/toggle-arrow.component';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'sing-info-box',\n  templateUrl: './info-box.component.html',\n  styleUrls: ['./info-box.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingInfoBoxComponent {\n  @Input() infoText = '';\n  @Input() linkText = '';\n  @Input() href = null;\n  @Input() fontIconName = 'mgmt-info';\n  @Input() disableLink = false;\n\n  @Output() linkClicked = new EventEmitter<void>();\n}\n","<div class='container s1-card'>\n  <i class='font-icon {{fontIconName}}'></i>\n  <div *ngIf='infoText?.length' class='info-text'>{{infoText}}</div>\n  <a (click)='!href && linkClicked.emit()' *ngIf='linkText?.length' [attr.href]='href'\n     [ngClass]=\"{'disabled': disableLink}\"\n     class='s1-btn-large-primary-link'>{{linkText}}</a>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInfoBoxComponent } from './info-box/info-box.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingInfoBoxComponent],\n  exports: [SingInfoBoxComponent],\n})\nexport class SingInfoBoxModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './info-box.module';\nexport * from './info-box/info-box.component';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n  selector: 'sing-box',\n  templateUrl: './box.component.html',\n  styleUrls: ['./box.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('changeState', [\n      state('openState', style({})),\n      state(\n        'closeState',\n        style({\n          height: 0,\n          opacity: 0,\n          display: 'none',\n        })\n      ),\n      transition('openState => closeState', animate('150ms')),\n      transition('closeState => openState', animate('150ms')),\n    ]),\n  ],\n})\nexport class SingBoxComponent {\n  @Input() title = '';\n  @Input() noHeaderElement = false;\n  @Input() collapsible = false;\n  @Input() cssClass = '';\n\n  @Input()\n  set startOpen(open: boolean) {\n    if (!open) {\n      this.open = false;\n      this.animateState = 'closeState';\n    }\n  }\n\n  @Output() collapsibleChanged = new EventEmitter<boolean>();\n\n  public open = true;\n  public animateState = 'openState';\n\n  /**\n   * in case collapsible is true we\n   * allow to click the header box in order to open or close\n   * the box\n   */\n  toggle(): void {\n    if (this.collapsible) {\n      this.open = !this.open;\n      this.animateState = this.open ? 'openState' : 'closeState';\n      this.collapsibleChanged.emit(this.open);\n    }\n  }\n}\n","<h3 (click)='toggle()' *ngIf='title && !noHeaderElement' [class.cursor-pointer]='collapsible'\n    class='collapsible-header s1-body'>\n  {{title}}\n\n  <div *ngIf='collapsible' class='collapsible'>\n    <sing-toggle-arrow\n      [color]=\"'var(--s1-P-40-color)'\"\n      [open]='open'\n      [size]='8'\n    ></sing-toggle-arrow>\n  </div>\n</h3>\n<div *ngIf='title && noHeaderElement' class='regular-header'>{{title}}</div>\n<ng-content select='.header'></ng-content>\n<div [@changeState]='animateState' [ngClass]='cssClass'>\n  <ng-content></ng-content>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingBoxComponent } from './box/box.component';\nimport { SingToggleArrowModule } from '../../buttons-and-indicators/toggle-arrow/toggle-arrow.module';\n\n@NgModule({\n  imports: [CommonModule, SingToggleArrowModule],\n  declarations: [SingBoxComponent],\n  exports: [SingBoxComponent],\n})\nexport class SingBoxModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './box.module';\nexport * from './box/box.component';\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const SIDE_NAV_ANIMATION = trigger('inOutAnimation', [\n  transition(':enter', [\n    style({ transform: 'translateX(100%)' }),\n    animate('0.5s ease-out', style({ transform: 'translateX(0)' })),\n  ]),\n  transition(':leave', [\n    style({ transform: 'translateX(0)' }),\n    animate('0.5s ease-in', style({ transform: 'translateX(100%)' })),\n  ]),\n]);\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { SIDE_NAV_ANIMATION } from '../animation/animations';\n\n@Component({\n  selector: 'sing-dialog-side-nav',\n  templateUrl: './dialog-side-nav.component.html',\n  styleUrls: ['./dialog-side-nav.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [SIDE_NAV_ANIMATION],\n})\nexport class SingDialogSideNavComponent {\n  @Input() component!: Type<any>;\n  @Input() closeOnEscape = true;\n  @Output() startAnimation = new EventEmitter<AnimationEvent>();\n  @Output() doneAnimation = new EventEmitter<AnimationEvent>();\n  @Output() escClicked = new EventEmitter<void>();\n\n  @HostBinding('style.width')\n  @Input()\n  width = '500px';\n\n  @HostBinding('style.top')\n  @Input()\n  top = '0';\n\n  @HostBinding('style.height')\n  @Input()\n  height = '0';\n\n  @HostBinding('attr.data-mgmtAutomationId')\n  @Input()\n  automationId: string | undefined = void 0;\n\n  @ViewChild('containerRef', { read: ViewContainerRef, static: true }) containerRef!: ViewContainerRef;\n\n  @HostBinding('@inOutAnimation') get getToggleDrawer(): string {\n    return '';\n  }\n\n  @HostListener('@inOutAnimation.start', ['$event']) startAnimationPhase(event: AnimationEvent): void {\n    this.startAnimation.emit(event);\n  }\n\n  @HostListener('@inOutAnimation.done', ['$event']) doneAnimationPhase(event: AnimationEvent): void {\n    this.doneAnimation.emit(event);\n  }\n\n  /**\n   * check if need to start close side-nav.\n   * when user clicks on escape\n   */\n  @HostListener('document:keydown.escape')\n  escapeClicked() {\n    if (this.closeOnEscape) {\n      this.escClicked.emit();\n    }\n  }\n}\n","<ng-container #containerRef>\n</ng-container>\n","import { OverlayConfig } from '@angular/cdk/overlay';\nimport { DialogSideNavConfig } from '../models/dialog-side-nav-config.interface';\n\nexport const DEFAULT_OVERLAY_CONFIG: OverlayConfig = {\n  hasBackdrop: false,\n  backdropClass: 'sing-dialog-side-nav-backdrop',\n  panelClass: 'dialog-side-nav',\n};\n\nexport const DEFAULT_SIDE_NAV_DIALOG_CONFIG: DialogSideNavConfig = {\n  width: '500px',\n  top: '60px',\n  closeOnBackdropClick: true,\n  closeOnEsc: true,\n};\n","import { ComponentRef, Injectable, Type } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { AnimationEvent } from '@angular/animations';\nimport { filter, take } from 'rxjs/operators';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DialogSideNavConfig } from '../models/dialog-side-nav-config.interface';\nimport { DEFAULT_OVERLAY_CONFIG, DEFAULT_SIDE_NAV_DIALOG_CONFIG } from '../consts/dialog-side-nav.consts';\nimport { SingDialogSideNavComponent } from '../dialog-side-nav/dialog-side-nav.component';\n\nconst toOpenStateOperator = () => filter((event: AnimationEvent) => event.toState === '');\nconst toCloseStateOperator = () => filter((event: AnimationEvent) => event.toState === 'void');\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DialogSideNavService {\n  private _overlayRef!: OverlayRef | null;\n  private _componentRef!: ComponentRef<any> | null;\n  /** A subject emitting before the dialog enters the view. */\n  private _beforeOpened$: Subject<void> = new Subject();\n\n  /** A subject emitting after the dialog enters the view. */\n  private _afterOpened$: Subject<void> = new Subject();\n\n  /** A subject emitting before the dialog exits the view. */\n  private _beforeClosed$: Subject<void> = new Subject();\n\n  /** A subject emitting after the dialog exits the view. */\n  private _afterClosed$: Subject<void> = new Subject();\n\n  constructor(private overlay: Overlay) {}\n\n  /**\n   * Open dialog sid-nav\n   * @param component\n   * @param config\n   */\n  public open<T>(component: Type<T>, config: DialogSideNavConfig = {}): ComponentRef<T> {\n    if (!this.isDialogOpen) {\n      config = { ...DEFAULT_SIDE_NAV_DIALOG_CONFIG, ...config };\n      const defaultOverlayConfig = { ...DEFAULT_OVERLAY_CONFIG, hasBackdrop: config.hasBackdrop };\n      this._overlayRef = this.overlay.create(defaultOverlayConfig);\n      this.closeOnBackdropClick(config);\n      this._componentRef = this.initSideNavComponent(component, config);\n    }\n    return this._componentRef;\n  }\n\n  /**\n   * Close sid-nav\n   */\n  public close(): void {\n    if (this.isDialogOpen) {\n      this._overlayRef.detach();\n      this._overlayRef = null;\n      this._componentRef = null;\n    }\n  }\n\n  /**\n   * indicator if side-nav is open or not\n   */\n  public get isDialogOpen(): boolean {\n    return !!this._overlayRef;\n  }\n\n  /** Gets an observable that emits when dialog begins opening. */\n  public beforeOpened(): Observable<void> {\n    return this._beforeOpened$.asObservable();\n  }\n\n  /** Gets an observable that emits when dialog is finished opening. */\n  public afterOpened(): Observable<void> {\n    return this._afterOpened$.asObservable();\n  }\n\n  /** Gets an observable that emits when dialog begins closing. */\n  public beforeClosed(): Observable<void> {\n    return this._beforeClosed$.asObservable();\n  }\n\n  /** Gets an observable that emits when dialog is finished closing. */\n  public afterClosed(): Observable<void> {\n    return this._afterClosed$.asObservable();\n  }\n\n  /**\n   * init side-nav component with configuration\n   * @param component\n   * @param config\n   */\n  private initSideNavComponent<T>(component: Type<T>, config: DialogSideNavConfig = {}): ComponentRef<T> {\n    const sideNavComponent = this.attachSideNavContainer();\n    sideNavComponent.component = component;\n    sideNavComponent.width = config.width;\n    sideNavComponent.top = config.top;\n    sideNavComponent.height = `calc(100% - ${config.top})`;\n    sideNavComponent.closeOnEscape = config.closeOnEsc;\n    sideNavComponent.automationId = config.automationId;\n    sideNavComponent.escClicked.subscribe(this.close.bind(this));\n    this.sideNavLifeCycle(sideNavComponent);\n\n    return sideNavComponent.containerRef.createComponent(component);\n  }\n\n  /**\n   * listen to side nav life cycle hooks\n   * - before opened\n   * - before closed\n   * - after opened\n   * - after closed\n   * @param sideNavComponent\n   */\n  private sideNavLifeCycle(sideNavComponent: SingDialogSideNavComponent): void {\n    // before opened\n    sideNavComponent.startAnimation.pipe(toOpenStateOperator(), take(1)).subscribe(() => this._beforeOpened$.next());\n\n    // before closed\n    sideNavComponent.startAnimation.pipe(toCloseStateOperator(), take(1)).subscribe(() => this._beforeClosed$.next());\n\n    // after opened\n    sideNavComponent.doneAnimation.pipe(toOpenStateOperator(), take(1)).subscribe(() => this._afterOpened$.next());\n\n    // after closed\n    sideNavComponent.doneAnimation.pipe(toCloseStateOperator(), take(1)).subscribe(() => this._afterClosed$.next());\n  }\n\n  /**\n   * Close on backdrop clicked\n   * @param config\n   */\n  private closeOnBackdropClick(config: DialogSideNavConfig): void {\n    if (config.closeOnBackdropClick) {\n      this._overlayRef\n        .backdropClick()\n        .pipe(take(1))\n        .subscribe(() => this.close());\n    }\n  }\n\n  /**\n   * attach side-nav to overlay container\n   */\n  private attachSideNavContainer(): SingDialogSideNavComponent {\n    const containerPortal = new ComponentPortal(SingDialogSideNavComponent, null);\n    const containerRef: ComponentRef<any> = this._overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DialogSideNavService } from '../../services/dialog-side-nav.service';\n\n@Component({\n  selector: 'sing-dialog-side-nav-header',\n  templateUrl: './dialog-side-nav-header.component.html',\n  styleUrls: ['./dialog-side-nav-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogSideNavHeaderComponent {\n  @Input() showCloseButton = true;\n  @Input() propagateCloseEventToHost = false;\n\n  @Output() closeSideNav: EventEmitter<void> = new EventEmitter<void>();\n\n  constructor(public dialogSideNavService: DialogSideNavService) {}\n\n  onClose() {\n    if (this.propagateCloseEventToHost) {\n      this.closeSideNav.emit();\n    } else {\n      this.dialogSideNavService.close();\n    }\n  }\n}\n","<div class=\"header-title-text\">\n  <ng-content></ng-content>\n</div>\n\n<!--Close Button-->\n<button\n  *ngIf=\"showCloseButton\"\n  class=\"close-button\"\n  tabindex=\"-1\"\n  data-mgmtAutomationId=\"side-nav-header-close-button\"\n  (click)=\"onClose()\">\n  <i class=\"mgmt-x\"></i>\n</button>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { JustifyContent } from '../../../../../shared/alignment.model';\n\n@Component({\n  selector: 'sing-dialog-side-nav-footer',\n  templateUrl: './dialog-side-nav-footer.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogSideNavFooterComponent {\n  @Input()\n  justify: JustifyContent;\n}\n","<sing-dialog-footer [justifyContent]=\"justify\">\n  <ng-content></ng-content>\n</sing-dialog-footer>\n","import { ChangeDetectionStrategy, Component, ContentChild, ElementRef } from '@angular/core';\nimport { DialogSideNavHeaderComponent } from '../dialog-side-nav-header/dialog-side-nav-header.component';\nimport { DialogSideNavFooterComponent } from '../dialog-side-nav-footer/dialog-side-nav-footer.component';\n\n@Component({\n  selector: 'sing-dialog-side-nav-container',\n  templateUrl: './dialog-side-nav-container.component.html',\n  styleUrls: ['./dialog-side-nav-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogSideNavContainerComponent {\n  @ContentChild(DialogSideNavHeaderComponent, { read: ElementRef })\n  dialogSideNavHeaderElement!: ElementRef<HTMLElement>;\n  @ContentChild(DialogSideNavFooterComponent, { read: ElementRef })\n  dialogSideNavFooterComponent: ElementRef<HTMLElement>;\n}\n","<ng-content select=\"sing-dialog-side-nav-header\"></ng-content>\n<ng-content select=\"sing-dialog-side-nav-body\"></ng-content>\n<ng-content select=\"sing-dialog-side-nav-footer\"></ng-content>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Host,\n  Optional,\n  Renderer2,\n} from '@angular/core';\nimport { DialogSideNavContainerComponent } from '../dialog-side-nav-container/dialog-side-nav-container.component';\n\n@Component({\n  selector: 'sing-dialog-side-nav-body',\n  templateUrl: './dialog-side-nav-body.component.html',\n  styleUrls: ['./dialog-side-nav-body.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogSideNavBodyComponent implements AfterViewInit {\n  constructor(\n    @Host() @Optional() private dialogSideNavContainerComponent: DialogSideNavContainerComponent,\n    private renderer: Renderer2,\n    private elRef: ElementRef\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.setBodyHeight();\n  }\n\n  /**\n   * in order to set the correct height of the body we should extract header height (if exists)\n   */\n  setBodyHeight(): void {\n    if (this.dialogSideNavContainerComponent) {\n      const { dialogSideNavHeaderElement, dialogSideNavFooterComponent } = this.dialogSideNavContainerComponent;\n      const headerHeight = dialogSideNavHeaderElement?.nativeElement?.offsetHeight ?? 0;\n      const footerHeight = dialogSideNavFooterComponent?.nativeElement?.offsetHeight ?? 0;\n      const headerFooterHeight = headerHeight + footerHeight;\n\n      this.renderer.setStyle(this.elRef.nativeElement, 'height', `calc(100% - ${headerFooterHeight}px)`);\n    }\n  }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDialogSideNavComponent } from './dialog-side-nav/dialog-side-nav.component';\nimport { DialogSideNavContainerComponent } from './components/dialog-side-nav-container/dialog-side-nav-container.component';\nimport { DialogSideNavHeaderComponent } from './components/dialog-side-nav-header/dialog-side-nav-header.component';\nimport { DialogSideNavBodyComponent } from './components/dialog-side-nav-body/dialog-side-nav-body.component';\nimport { DialogSideNavService } from './services/dialog-side-nav.service';\nimport { DialogSideNavFooterComponent } from '../dialog-side-nav/components/dialog-side-nav-footer/dialog-side-nav-footer.component';\nimport { SingDialogFooterModule } from '../dialog-footer/dialog-footer.module';\n\n@NgModule({\n  imports: [CommonModule, SingDialogFooterModule],\n  declarations: [\n    SingDialogSideNavComponent,\n    DialogSideNavContainerComponent,\n    DialogSideNavHeaderComponent,\n    DialogSideNavBodyComponent,\n    DialogSideNavFooterComponent,\n  ],\n  exports: [\n    DialogSideNavContainerComponent,\n    DialogSideNavHeaderComponent,\n    DialogSideNavBodyComponent,\n    DialogSideNavFooterComponent,\n  ],\n  providers: [DialogSideNavService],\n})\nexport class SingDialogSideNavModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dialog-side-nav.module';\nexport * from './components/dialog-side-nav-body/dialog-side-nav-body.component';\nexport * from './components/dialog-side-nav-container/dialog-side-nav-container.component';\nexport * from './components/dialog-side-nav-header/dialog-side-nav-header.component';\nexport * from './components/dialog-side-nav-footer/dialog-side-nav-footer.component';\nexport * from './services/dialog-side-nav.service';\nexport * from './models/dialog-side-nav-config.interface';\n","import { Chip } from '../models/chip.interface';\n\nexport const DEFAULT_CHIP: Chip = Object.freeze({\n  name: '',\n  id: '',\n  showRemoveButton: true,\n});\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DEFAULT_CHIP } from '../consts/chip.consts';\nimport { Chip } from '../models/chip.interface';\n\n@Component({\n  selector: 'sing-chip',\n  templateUrl: './chip.component.html',\n  styleUrls: ['./chip.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingChipComponent {\n  @Output() remove = new EventEmitter<Chip>();\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  _chip: Chip = DEFAULT_CHIP;\n\n  get chip(): Chip {\n    return this._chip;\n  }\n\n  @Input()\n  set chip(chip: Chip) {\n    this._chip = { ...this._chip, ...chip };\n    this.cdr.markForCheck();\n  }\n}\n","<div class='chip'>\n  <!--Chip Name-->\n  <div [attr.data-mgmtAutomationId]=\"'name'\" class='name'>{{chip?.name}}</div>\n  <!--Remove Chip Button-->\n  <button (click)='remove.emit(chip)' *ngIf='chip?.showRemoveButton' class='remove-chip'>\n    <i class='close mgmt-x'></i>\n  </button>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingChipComponent } from './chip/chip.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingChipComponent],\n  exports: [SingChipComponent],\n})\nexport class SingChipModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './chip.module';\nexport * from './models/chip.interface';\nexport * from './chip/chip.component';\n","export enum CssColorName {\n  R50 = '--s1-R-50-color',\n  R10 = '--s1-R-10-color',\n  D90 = '--s1-D-90-color',\n  D80 = '--s1-D-80-color',\n  D70 = '--s1-D-70-color',\n  D60 = '--s1-D-60-color',\n  D50 = '--s1-D-50-color',\n  D40 = '--s1-D-40-color',\n  D30 = '--s1-D-30-color',\n  D20 = '--s1-D-20-color',\n  D15 = '--s1-D-15-color',\n  D10 = '--s1-D-10-color',\n  D5 = '--s1-D-5-color',\n  Y50 = '--s1-Y-50-color',\n  Y10 = '--s1-Y-10-color',\n  G50 = '--s1-G-50-color',\n  G10 = '--s1-G-10-color',\n  B50 = '--s1-B-50-color',\n  N100 = '--s1-N-100-color',\n  N90 = '--s1-N-90-color',\n  N80 = '--s1-N-80-color',\n  N60 = '--s1-N-60-color',\n  N20 = '--s1-N-20-color',\n  N15 = '--s1-N-15-color',\n  N0 = '--s1-N-0-color',\n  P40 = '--s1-P-40-color',\n  P5 = '--s1-P-5-color',\n  P2 = '--s1-P-2-color',\n  P1 = '--s1-P-1-color',\n}\n\nexport function getHexColorFromCssVar(colorName: CssColorName): string {\n  let hexColor = getComputedStyle(document.documentElement).getPropertyValue(colorName);\n  /**\n   * Convert shorthand hex colors to 6 digits hex.\n   *\n   * When we run on prod mode\n   * the Angular CLI \"optimization\" option CSS is compressed\n   * and one these compressions is to shorthand colors to remove redundant characters.\n   * For example #FFFFFF become #FFF. The issue with that there are third party that\n   * Throw exception when we pass shorthand colors. for example monaco editor.\n   * In order to come over it we check if the given hex color is a shorthand colors and convert it\n   * to full hex color.\n   *\n   * For more information read this >> https://github.com/angular/angular-cli/issues/19712\n   */\n  if (hexColor?.length === 4 && hexColor.charAt(0) === '#') {\n    hexColor = `#${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;\n  }\n  return hexColor;\n}\n\nexport const D_90_COLOR = getHexColorFromCssVar(CssColorName.D90)?.trim();\nexport const D_80_COLOR = getHexColorFromCssVar(CssColorName.D80)?.trim();\nexport const D_70_COLOR = getHexColorFromCssVar(CssColorName.D70)?.trim();\nexport const D_60_COLOR = getHexColorFromCssVar(CssColorName.D60)?.trim();\nexport const D_50_COLOR = getHexColorFromCssVar(CssColorName.D50)?.trim();\nexport const D_40_COLOR = getHexColorFromCssVar(CssColorName.D40)?.trim();\nexport const D_30_COLOR = getHexColorFromCssVar(CssColorName.D30)?.trim();\nexport const D_20_COLOR = getHexColorFromCssVar(CssColorName.D20)?.trim();\nexport const D_15_COLOR = getHexColorFromCssVar(CssColorName.D15)?.trim();\nexport const D_10_COLOR = getHexColorFromCssVar(CssColorName.D10)?.trim();\nexport const D_5_COLOR = getHexColorFromCssVar(CssColorName.D5)?.trim();\nexport const R_50_COLOR = getHexColorFromCssVar(CssColorName.R50)?.trim();\nexport const R_10_COLOR = getHexColorFromCssVar(CssColorName.R10)?.trim();\nexport const Y_50_COLOR = getHexColorFromCssVar(CssColorName.Y50)?.trim();\nexport const Y_10_COLOR = getHexColorFromCssVar(CssColorName.Y10)?.trim();\nexport const G_50_COLOR = getHexColorFromCssVar(CssColorName.G50)?.trim();\nexport const G_10_COLOR = getHexColorFromCssVar(CssColorName.G10)?.trim();\nexport const B_50_COLOR = getHexColorFromCssVar(CssColorName.B50)?.trim();\nexport const N_100_COLOR = getHexColorFromCssVar(CssColorName.N100)?.trim();\nexport const N_90_COLOR = getHexColorFromCssVar(CssColorName.N90)?.trim();\nexport const N_80_COLOR = getHexColorFromCssVar(CssColorName.N80)?.trim();\nexport const N_60_COLOR = getHexColorFromCssVar(CssColorName.N60)?.trim();\nexport const N_20_COLOR = getHexColorFromCssVar(CssColorName.N20)?.trim();\nexport const N_15_COLOR = getHexColorFromCssVar(CssColorName.N15)?.trim();\nexport const N_0_COLOR = getHexColorFromCssVar(CssColorName.N0)?.trim();\nexport const P_40_COLOR = getHexColorFromCssVar(CssColorName.P40)?.trim();\nexport const P_5_COLOR = getHexColorFromCssVar(CssColorName.P5)?.trim();\nexport const P_2_COLOR = getHexColorFromCssVar(CssColorName.P2)?.trim();\nexport const P_1_COLOR = getHexColorFromCssVar(CssColorName.P1)?.trim();\n","import {\n  D_10_COLOR,\n  D_15_COLOR,\n  D_20_COLOR,\n  D_30_COLOR,\n  D_40_COLOR,\n  D_50_COLOR,\n  D_5_COLOR,\n  D_60_COLOR,\n  D_70_COLOR,\n  D_80_COLOR,\n  D_90_COLOR,\n} from '../../../../utils/color.utils';\n\nexport const DEFAULT_COLORS_PRESET = [\n  D_90_COLOR,\n  D_80_COLOR,\n  D_70_COLOR,\n  D_60_COLOR,\n  D_50_COLOR,\n  D_40_COLOR,\n  D_30_COLOR,\n  D_20_COLOR,\n  D_15_COLOR,\n  D_10_COLOR,\n  D_5_COLOR,\n];\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { N_80_COLOR } from '../../../../utils/color.utils';\nimport { ColorString } from '@iplab/ngx-color-picker/lib/helpers/color.class';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { ColorPickerControl } from '@iplab/ngx-color-picker';\nimport { DEFAULT_COLORS_PRESET } from '../consts/color-picker.consts';\n\n@Component({\n  selector: 'sing-color-picker',\n  templateUrl: './color-picker.component.html',\n  styleUrls: ['./color-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingColorPickerComponent implements OnInit {\n  public colorControl = new ColorPickerControl();\n\n  @ViewChild(MatMenuTrigger, { static: true }) menuTrigger!: MatMenuTrigger;\n  @Output() colorChanged = new EventEmitter<string>();\n  selectedColor: ColorString = '';\n  setDefaultPreset = true;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  @Input()\n  set colorPreset(value: string[]) {\n    if (value) {\n      this.colorControl.setColorPresets(value);\n      this.setDefaultPreset = false;\n    }\n  }\n\n  private _initialColor = N_80_COLOR;\n\n  get initialColor(): string {\n    return this._initialColor;\n  }\n\n  @Input()\n  set initialColor(value: string) {\n    this._initialColor = value;\n    this.colorControl.setValueFrom(this._initialColor);\n    this.selectedColor = this._initialColor;\n  }\n\n  menuOpen(): void {\n    this.cdr.markForCheck();\n  }\n\n  ngOnInit(): void {\n    if (this.setDefaultPreset) {\n      this.colorControl.setColorPresets(DEFAULT_COLORS_PRESET);\n    }\n  }\n\n  onColorChange(selectedColor: ColorString): void {\n    this.selectedColor = selectedColor;\n  }\n\n  /**\n   * Prevent the closing of color picker when there is a click on anything except for the color selection within the color picker\n   * @param $event\n   */\n  colorPickerClicked($event: MouseEvent): void {\n    const element = <HTMLElement>$event.target;\n    if (element.tagName === 'SATURATION-COMPONENT' || element.tagName === 'COLOR-PRESET') {\n      this.colorChanged.emit(this.selectedColor);\n    } else {\n      $event.stopPropagation();\n    }\n  }\n}\n","<div (menuOpened)='menuOpen()' [matMenuTriggerFor]='menu' class='color-picker-trigger'>\n  <div [style.background]='selectedColor' class='selected-color'></div>\n</div>\n<mat-menu #menu='matMenu'>\n  <sketch-picker\n    (click)='colorPickerClicked($event)'\n    (colorChange)='onColorChange($event)'\n    [control]='colorControl'>\n  </sketch-picker>\n</mat-menu>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingColorPickerComponent } from './color-picker/color-picker.component';\nimport { ColorPickerModule } from '@iplab/ngx-color-picker';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\n\n@NgModule({\n  imports: [CommonModule, MatMenuModule, ColorPickerModule],\n  declarations: [SingColorPickerComponent],\n  exports: [SingColorPickerComponent],\n})\nexport class SingColorPickerModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './color-picker.module';\nexport * from './color-picker/color-picker.component';\n","export enum UploadActionTypes {\n  StartUpload,\n  EndUpload,\n  ClearFile,\n}\n\nexport interface UploadAction {\n  actionType: UploadActionTypes;\n  payload?: any;\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { UploadConfig } from '../models/upload-config.interface';\nimport { UploadFile, UploadInput, UploadOutput } from '@sentinel-one/ngx-uploader';\nimport { UploadAction, UploadActionTypes } from '../models/upload-action.interface';\n\n@Component({\n  selector: 'sing-uploader',\n  templateUrl: './uploader.component.html',\n  styleUrls: ['./uploader.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingUploaderComponent {\n  @Input()\n  showValidity = false;\n  @Input()\n  disabled = false;\n  @Input()\n  hideProgressBar = false;\n  @Output() fileContent: EventEmitter<string | ArrayBuffer | null> = new EventEmitter<string | ArrayBuffer | null>();\n  @Output()\n  uploadFileToBrowserDone: EventEmitter<void> = new EventEmitter<void>();\n  @Output()\n  setFormValidity: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output()\n  uploadFileToServerDone: EventEmitter<string> = new EventEmitter<string>();\n  @Output()\n  uploadDoneResponse: EventEmitter<any> = new EventEmitter<any>();\n  @Output()\n  uploadResponseOutput: EventEmitter<any> = new EventEmitter<any>();\n  @Output()\n  uploadError: EventEmitter<string> = new EventEmitter<string>();\n  @Output()\n  clear: EventEmitter<void> = new EventEmitter<void>();\n  uploadInput: EventEmitter<UploadInput> = new EventEmitter<UploadInput>();\n  files: UploadFile[] = [];\n  currentSelectedFileId = '';\n  showPercentageProgress = false;\n  isValidFileName = false;\n  illegalCharacterInFile = false;\n  uploadToBrowserDone = false;\n  readonly fileNameError = 'File name may contain English letters, numbers, dashes & underscores only';\n  readonly fileTypeError = 'Invalid filename or type';\n\n  _uploadConfig: UploadConfig = { url: '', accept: '*', allowedFileName: '^[a-zA-Z0-9_.-]' };\n\n  get uploadConfig(): UploadConfig {\n    return this._uploadConfig;\n  }\n\n  @Input()\n  set uploadConfig(uploadConfig: UploadConfig) {\n    if (!uploadConfig.url) {\n      console.error('url input is mandatory for UploaderComponent');\n    }\n    this._uploadConfig = Object.assign(this._uploadConfig, uploadConfig);\n  }\n\n  @Input()\n  set actions(uploadAction: UploadAction | undefined) {\n    if (uploadAction) {\n      switch (uploadAction.actionType) {\n        case UploadActionTypes.ClearFile: {\n          this.clearFile();\n          break;\n        }\n        case UploadActionTypes.StartUpload: {\n          this.createEvent(uploadAction.payload);\n          break;\n        }\n        default: {\n          console.error('actionType not exist for UploadAction enum');\n          break;\n        }\n      }\n    }\n  }\n\n  validateFileNameOnly(fileName: string) {\n    if (this._uploadConfig.allowedFileName) {\n      return new RegExp(this._uploadConfig.allowedFileName).test(fileName);\n    }\n    return null;\n  }\n\n  /**\n   * check if file name + type valid\n   * @param {string} fileName the given file name\n   * @returns {boolean} true if valid false otherwise\n   */\n  fileValidation(fileName: string): boolean {\n    let isValid = true;\n    if (this.uploadConfig.allowedFileType) {\n      isValid = new RegExp(this.uploadConfig.allowedFileType).test(fileName);\n    }\n    return isValid;\n  }\n\n  /**\n   * init the component properties to their default values\n   */\n  clearFile(): void {\n    this.isValidFileName = false;\n    this.uploadToBrowserDone = false;\n    if (this.currentSelectedFileId) {\n      this.showPercentageProgress = false;\n      this.uploadInput.emit({ type: 'removeAll' });\n      this.files = [];\n      this.currentSelectedFileId = '';\n      this.setFileValidity();\n    }\n    this.clear.emit();\n  }\n\n  isValidFile() {\n    return this.files && this.files.length && this.isValidFileName;\n  }\n\n  setFileValidity() {\n    this.setFormValidity.emit(\n      !(this.showPercentageProgress || !(this.files && this.files.length) || !this.isValidFileName)\n    );\n  }\n\n  /**\n   * once the user uploads a file, this function will run.\n   * the function will fire on every file lifecycle change, can be deferred by the type.\n   * @param output\n   */\n  onUploadOutput(output: UploadOutput): void {\n    if (output.file) {\n      // in case upload fail display error and return\n      if (output.file.response && output.file.responseStatus !== 200) {\n        let errorMessage = output.file.response.message ? output.file.response.message : 'Server error';\n        if (output.file.response.errors && output.file.response.errors.length) {\n          if (output.file.response.errors[0].detail) {\n            errorMessage = output.file.response.errors[0].detail;\n          } else {\n            errorMessage = output.file.response.errors[0].title;\n          }\n        }\n        if (output.file.responseStatus === 413) {\n          errorMessage = 'Upload failed. This file is too big';\n        }\n        this.uploadError.emit(errorMessage);\n        this.uploadInput.emit({ type: 'remove', id: this.currentSelectedFileId });\n        this.files = [];\n        return;\n      }\n\n      switch (output.type) {\n        case 'addedToQueue': {\n          this.isValidFileName = this.fileValidation(output.file.name);\n          if (!this.isValidFileName) {\n            this.illegalCharacterInFile = !this.validateFileNameOnly(output.file.name);\n          }\n          // remove previous file in case exist\n          if (this.currentSelectedFileId) {\n            this.uploadInput.emit({ type: 'remove', id: this.currentSelectedFileId });\n            this.files = [];\n          }\n          // keep the  new selected file id\n          this.currentSelectedFileId = output.file.id;\n          this.files.push(output.file);\n          this.uploadToBrowserDone = this.isValidFileName;\n          this.uploadFileToBrowserDone.emit();\n          this.getFileContent();\n          break;\n        }\n        case 'done': {\n          this.uploadToBrowserDone = true;\n          // this will remove all cached files\n          this.uploadInput.emit({ type: 'removeAll' });\n          // refresh packages list\n          this.uploadFileToServerDone.emit('The file was uploaded successfully');\n          this.uploadDoneResponse.emit(output?.file?.response);\n          this.uploadResponseOutput.emit(output);\n          break;\n        }\n      }\n      this.setFileValidity();\n    }\n  }\n\n  /**\n   * creating the event to server\n   * @param dataPayload\n   */\n  createEvent(dataPayload: any) {\n    const event: UploadInput = {\n      type: 'uploadAll',\n      url: this.uploadConfig.url,\n      headers: { accept: this.uploadConfig.accept || '' },\n      method: 'POST',\n    };\n\n    if (dataPayload) {\n      event.data = dataPayload;\n    }\n\n    if (this.uploadConfig.headerCSRF && event?.headers) {\n      event.headers['X-CSRF'] = this.uploadConfig.headerCSRF;\n    }\n\n    this.uploadInput.emit(event);\n    this.showPercentageProgress = true;\n    this.setFileValidity();\n  }\n\n  /**\n   * after file upload successfully and host component\n   * listening to @Output() fileContent we will emit event with\n   * the file content.\n   * the content type can be one of (string | ArrayBuffer | null) depend on the file type.\n   * @private\n   */\n  private getFileContent(): void {\n    if (this.fileContent.observed) {\n      if (this.files.length) {\n        const reader = new FileReader();\n        reader.onload = (event: ProgressEvent<FileReader>) => {\n          this.fileContent.emit(event.target.result);\n        };\n        reader.readAsText(this.files[0].nativeFile);\n      }\n    }\n  }\n}\n","<div [class]=\"hideProgressBar ? 'upload-without-progress-bar' : 'upload-and-progress-bar'\">\n  <div class='form-row row horizontal uploader'>\n    <div [ngClass]=\"{'touched': files && files[0], 'error':  !isValidFile() && showValidity}\" class='download-file'>\n\n      <div *ngIf='files && files[0]'\n           [ngClass]=\"{'error-red-second-color': !isValidFileName, 'short': showPercentageProgress}\"\n           class='row selected-file'>\n        <i class='mgmt-file'></i>\n        <div class='file-name'>{{files[0].name}}</div>\n      </div>\n\n      <div [ngClass]=\"{'right-buttons': files && files[0]}\">\n        <i *ngIf='!(files && files[0])' class='mgmt-upload'></i>\n        <label [ngClass]=\"{'disable-upload-button': disabled , 'upload-button': !uploadToBrowserDone}\"\n               class='float-right'\n               data-mgmtAutomationId='chooseFileButton'>\n          <input\n            #fileInput\n            (click)=\"fileInput.value = ''\"\n            (uploadOutput)='onUploadOutput($event)'\n\n            *ngIf='!disabled'\n            [accept]='uploadConfig.accept'\n            [uploadInput]='uploadInput'\n            ngFileSelect\n            type='file'>\n          <span class='change button-link s1-btn-small-primary-link'>\n            {{files && files[0] ? 'Change' : 'Choose file to upload' }}\n          </span>\n        </label>\n        <button *ngIf=\"files && files[0]\" class=\"clear-button s1-btn-small-primary-link\" (click)=\"clearFile()\"> Clear</button>\n\n      </div>\n\n    </div>\n  </div>\n  <sing-progress-bar\n    *ngIf='showPercentageProgress && !hideProgressBar'\n    [percentage]='files[0]?.progress?.data?.percentage || 0'\n    class='row'>\n  </sing-progress-bar>\n</div>\n\n<!--Selected File Result Details-->\n<span *ngIf='files && files[0]'>\n  <!--Display Upload Error-->\n  <div *ngIf='!isValidFileName && illegalCharacterInFile' class='file-upload-error'>\n        <div>Invalid filename or type</div>\n        <div *ngIf='illegalCharacterInFile'>{{fileNameError}}</div>\n  </div>\n  <div *ngIf='!isValidFileName && !illegalCharacterInFile' class='file-upload-error'>{{fileTypeError}}</div>\n</span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxUploaderModule } from '@sentinel-one/ngx-uploader';\nimport { SingUploaderComponent } from './uploader/uploader.component';\nimport { SingProgressBarModule } from '../../buttons-and-indicators/progress-bar/progress-bar.module';\n\n@NgModule({\n  imports: [CommonModule, NgxUploaderModule, SingProgressBarModule],\n  declarations: [SingUploaderComponent],\n  exports: [SingUploaderComponent],\n})\nexport class SingUploaderModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './uploader.module';\nexport * from './uploader/uploader.component';\nexport * from './models/upload-action.interface';\nexport * from './models/upload-config.interface';\n","export enum SkinOptions {\n  Primary = 'primary-skin',\n  PrimaryOutline = 'primary-outline-skin',\n  Outline = 'outline-skin',\n  Transparent = 'transparent-skin',\n  Action = 'action-skin',\n  ActionVertical = 'action-vertical-skin',\n  SecondaryFull = 'secondary-full-skin',\n  SecondaryOutline = 'secondary-outline-skin',\n  SecondaryInput = 'secondary-input-skin',\n  SecondaryLink = 'secondary-link-skin',\n}\n","export enum DropDownMenuPositionOptions {\n  BelowToRight = 'BelowToRight',\n  BelowToLeft = 'BelowToLeft',\n  AboveToRight = 'AboveToRight',\n  AboveToLeft = 'AboveToLeft',\n}\n","export enum SingHttpMethods {\n  GET = 'GET',\n  POST = 'POST',\n  PUT = 'PUT',\n  DELETE = 'DELETE',\n}\n","import { DropDownMenuPositionOptions } from '../enums/drop-down-menu-position-options.enum';\nimport { DropDownMenuPosition } from '../models/drop-down-menu-position.interface';\nimport { SkinOptions } from '../enums/skin-options.enum';\nimport { DropDownOptions } from '../models/drop-down-options.interface';\nimport { ServerSideOptions } from '../models/drop-down-server-options.interface';\nimport { SingHttpMethods } from '../../../../services/http-call/enums/sing-http-methods.enum';\n\n/**\n * default dropdown options\n */\nexport const DEFAULT_DROP_DOWN_OPTIONS: DropDownOptions = Object.freeze(<DropDownOptions>{\n  placeholder: 'Please Select...',\n  showSelectedTitle: true,\n  itemComponent: null,\n  triggerComponent: null,\n  hideTriggerButton: false,\n  showTriggerArrow: true,\n  menuComponent: null,\n  skinOptions: SkinOptions.Primary,\n  menuPosition: DropDownMenuPositionOptions.BelowToRight,\n  menuStyle: { 'margin-top': '5px', 'min-width': '185px' },\n  hasBackdrop: false,\n  showSearch: false,\n  searchMinNumOfChars: 0,\n  showClearSelected: false,\n  showSelectAll: false,\n  isMultipleSelection: false,\n  showSelectedMarker: true,\n  automationIdPrefix: 'drop-down',\n  startOpen: false,\n  capitalize: true,\n  requiredValidators: false,\n  resetSelectedItemsState: false,\n  allowUnselectInSingleSelect: false,\n  color: 'primary',\n  useClientSideAscSort: true,\n  resizable: false,\n  suspensionSelection: false,\n  searchDebounceTime: 200,\n  virtualScrollViewportHeight: 300,\n});\n\n/**\n * default dropdown menu position\n */\nexport const DEFAULT_DROPDOWN_MENU_POSITION: DropDownMenuPosition = Object.freeze({\n  xPosition: 'after',\n  yPosition: 'below',\n});\n\n/**\n * default server side dropdown options\n */\nexport const DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS = Object.freeze(<Partial<ServerSideOptions>>{\n  skipFirstGet: false,\n  showToasterError: true,\n  titleAlias: 'title',\n  valueAlias: 'value',\n  maxServerItems: 10,\n  useInfiniteScroll: false,\n  useInfiniteScrollTotalItems: false,\n  paginationOptions: {\n    maxVisiblePages: 3,\n    totalServerEntities: 0,\n  },\n  methodType: SingHttpMethods.GET,\n});\n\nexport const MULTIPLE_SELECTION_TEXT = 'Multiple Selection';\n","import { DropDownMenuPositionOptions } from '../enums/drop-down-menu-position-options.enum';\nimport { DEFAULT_DROP_DOWN_OPTIONS, DEFAULT_DROPDOWN_MENU_POSITION } from '../consts/drop-down.consts';\nimport { DropDownItem } from '../models/drop-down-item.interface';\nimport { cloneDeep, isFunction, isNil, isString, merge as _merge } from 'lodash';\nimport { DropDownMenuPosition } from '../models/drop-down-menu-position.interface';\nimport { SkinOptions } from '../enums/skin-options.enum';\nimport { DropDownOptions } from '../models/drop-down-options.interface';\nimport { ServerSideOptions } from '../models/drop-down-server-options.interface';\nimport { DropDownSelectionChanged } from '../models/drop-down-selection-changes.interface';\nimport { SelectionChangesActionTypes } from '../enums/drop-down-selection-changes-action-types.enum';\nimport { Type } from '@angular/core';\nimport { DropDownSelectedState } from '../models/drop-down-selected-state.interface';\nimport { SelectedItemsState } from './selected-items-state.utils';\n\n/**\n * create menu position.\n * by default: the menu opens below the trigger menu button and to the right\n */\nexport function calcMenuPosition(matMenuPosition: DropDownMenuPositionOptions): DropDownMenuPosition {\n  let menuPosition: DropDownMenuPosition = DEFAULT_DROPDOWN_MENU_POSITION;\n  switch (matMenuPosition) {\n    case DropDownMenuPositionOptions.AboveToLeft: {\n      menuPosition = { xPosition: 'before', yPosition: 'above' };\n      break;\n    }\n    case DropDownMenuPositionOptions.AboveToRight: {\n      menuPosition = { xPosition: 'after', yPosition: 'above' };\n      break;\n    }\n    case DropDownMenuPositionOptions.BelowToLeft: {\n      menuPosition = { xPosition: 'before', yPosition: 'below' };\n      break;\n    }\n    case DropDownMenuPositionOptions.BelowToRight: {\n      menuPosition = { xPosition: 'after', yPosition: 'below' };\n      break;\n    }\n  }\n  return menuPosition;\n}\n\n/**\n * find dropdown item from the list of dropdown items.\n * return null in case item is not found.\n */\nexport function findDropDownItem(dropDownItems: DropDownItem[], dropDOwnItemToFind: DropDownItem): DropDownItem | null {\n  let foundItem: DropDownItem | null = null;\n  if (dropDownItems && Array.isArray(dropDownItems) && dropDOwnItemToFind && !isNil(dropDOwnItemToFind.value)) {\n    for (const item of dropDownItems) {\n      if (Array.isArray(item?.children)) {\n        foundItem = findDropDownItem(item.children, dropDOwnItemToFind);\n        if (foundItem) {\n          break;\n        }\n      }\n      if (item.value === dropDOwnItemToFind.value) {\n        return item;\n      }\n    }\n  }\n  return foundItem;\n}\n\n/**\n * check if there is any child server-side menu in the dropdown hierarchy.\n */\nexport function hasChildServerSideMenu(dropDownItems: DropDownItem[]): boolean {\n  let hasNestedServerMenu: boolean;\n  if (dropDownItems && Array.isArray(dropDownItems)) {\n    for (const item of dropDownItems) {\n      if (Array.isArray(item?.children)) {\n        hasNestedServerMenu = hasChildServerSideMenu(item.children);\n        if (hasNestedServerMenu) {\n          break;\n        }\n      }\n      if (!!item.childServerSideOptions) {\n        return true;\n      }\n    }\n  }\n  return hasNestedServerMenu;\n}\n\n/**\n * find the first selected item.\n * should be used for single select dropdown.\n * return the selected item. return undefined if non are selected.\n * @param dropDownItems\n */\nexport function findFirstSelectedDropDownItem(dropDownItems: DropDownItem[]): DropDownItem | undefined {\n  let foundItem: DropDownItem | undefined;\n  if (dropDownItems && Array.isArray(dropDownItems)) {\n    for (const item of dropDownItems) {\n      if (Array.isArray(item?.children)) {\n        foundItem = findFirstSelectedDropDownItem(item.children);\n        if (foundItem) {\n          break;\n        }\n      }\n      if (item.selected) {\n        return item;\n      }\n    }\n  }\n  return foundItem;\n}\n\n/**\n * check if given item is a link item\n * @param dropDownItem\n */\nexport function isLinkItem(dropDownItem: DropDownItem | null): boolean {\n  return !!(dropDownItem && dropDownItem.routerLink && dropDownItem.routerLink.length > 0);\n}\n\n/**\n * create dropdown options.\n * @param dropDownOptions\n * @param dynamicComponentMap\n */\nexport function createDropDownOptions(\n  dropDownOptions: DropDownOptions,\n  dynamicComponentMap: Record<string, Type<any>>\n): DropDownOptions {\n  return _merge({}, _getDefaultDropDownOptions(dropDownOptions, dynamicComponentMap), dropDownOptions);\n}\n\n/**\n * map response data\n * @param serverSideOptions\n * @param data\n * @param pageNumber\n */\nexport function executeResponseMapper(serverSideOptions: ServerSideOptions, data: any, pageNumber: number): any {\n  if (isFunction(serverSideOptions?.responseMapper)) {\n    data = serverSideOptions.responseMapper(data, pageNumber);\n  }\n  return data;\n}\n\n/**\n * map dropdown items\n * @param serverSideOptions\n * @param dropDownItems\n */\nexport function executeDropdownItemsMapper(\n  serverSideOptions: ServerSideOptions,\n  dropDownItems: DropDownItem[]\n): DropDownItem[] {\n  if (isFunction(serverSideOptions?.dropdownItemsMapper)) {\n    dropDownItems = serverSideOptions.dropdownItemsMapper(dropDownItems);\n  }\n  return dropDownItems;\n}\n\n/**\n * map dropdown items after concat all items from load more\n * @param serverSideOptions\n * @param dropDownItems\n */\nexport function executeAllItemsMapper(\n  serverSideOptions: ServerSideOptions,\n  dropDownItems: DropDownItem[]\n): DropDownItem[] {\n  if (isFunction(serverSideOptions?.allItemsMapper)) {\n    dropDownItems = serverSideOptions.allItemsMapper(dropDownItems);\n  }\n  return dropDownItems;\n}\n\n/**\n * create dropdown items from server response\n */\nexport function createDropDownItemsFromServerResponse(\n  serverSideOptions: ServerSideOptions,\n  data: any[]\n): DropDownItem[] {\n  const dropDownItems: DropDownItem[] = [];\n  if (data && Array.isArray(data)) {\n    data.reduce((previousValue: any, currentValue: any) => {\n      const ddItem: DropDownItem = {\n        title: currentValue[serverSideOptions.titleAlias],\n        value: currentValue[serverSideOptions.valueAlias],\n        data: currentValue,\n      };\n      // Server should return children as DropDownItem shape\n      if (Array.isArray(currentValue?.children)) {\n        ddItem.children = currentValue?.children;\n      }\n      previousValue.push(ddItem);\n      return previousValue;\n    }, dropDownItems);\n  }\n  return dropDownItems;\n}\n\n/**\n * get a callback and execute it\n * @param action\n * @param arg\n */\nexport function executeCallbackIfExist(action: (...arg) => any, ...arg: any): any {\n  if (isFunction(action)) {\n    if (!Array.isArray(arg)) {\n      arg = [arg];\n    }\n    return action(...arg);\n  }\n}\n\n/**\n * create dropdown selection changes object\n * @param currentSelected\n * @param previousSelected\n * @param changedItems\n * @param actionType\n * @param isMultipleSelection\n */\nexport function createDropDownSelectionChanges(\n  currentSelected: DropDownItem[],\n  previousSelected: DropDownItem[],\n  changedItems: DropDownItem[],\n  actionType: SelectionChangesActionTypes,\n  isMultipleSelection: boolean\n): DropDownSelectionChanged {\n  let changes;\n\n  currentSelected = cloneDeep(currentSelected);\n  previousSelected = cloneDeep(previousSelected).map((item) => {\n    item.selected = true;\n    return item;\n  });\n  changedItems = cloneDeep(changedItems);\n  changedItems = _updateChangeItemsWithSelectedProp(changedItems, previousSelected);\n\n  if (isMultipleSelection) {\n    changes = {\n      actionType,\n      currentSelected: currentSelected,\n      previousSelected: previousSelected,\n      changedItems: changedItems,\n    };\n  } else {\n    changes = {\n      actionType,\n      currentSelected: currentSelected[0],\n      previousSelected: previousSelected[0],\n      changedItem: changedItems[0],\n    };\n  }\n  return changes;\n}\n\n/**\n * update the dropdown items with a new selected value.\n * @param items\n * @param selected\n */\nexport function updateSelectedItemProp(items: DropDownItem[], selected: boolean): any {\n  const changedItems: DropDownItem[] = [];\n  items = items.map((item) => {\n    if (_isAllowToChangeSelectedProp(item, selected)) {\n      item.selected = selected;\n      changedItems.push(item);\n    }\n    return item;\n  });\n  return {\n    changedItems,\n    items,\n  };\n}\n\n/**\n * check if allow to change the selected property.\n *\n * in order to change selected property the following conditions should occur:\n * - item is enabled\n * - item is not a link item\n * - the previous and the new selected value are not the same\n * @param item\n * @param selected\n * @private\n */\nfunction _isAllowToChangeSelectedProp(item: DropDownItem, selected: boolean): boolean {\n  return !item.disabled && !isLinkItem(item) && item.selected !== selected;\n}\n\n/**\n * get default dropdown options.\n *\n * @param dropDownOptions\n * @param dynamicComponentMap\n */\nfunction _getDefaultDropDownOptions(\n  dropDownOptions: DropDownOptions,\n  dynamicComponentMap: Record<string, Type<any>>\n): DropDownOptions {\n  const _dropDownOptions: Record<string, any> = _merge({}, DEFAULT_DROP_DOWN_OPTIONS);\n  Object.keys(dynamicComponentMap).forEach((key: string) => {\n    if (_dropDownOptions && !_dropDownOptions[key]) {\n      _dropDownOptions[key] = dynamicComponentMap[key];\n    }\n  });\n\n  if (dropDownOptions) {\n    switch (dropDownOptions.skinOptions) {\n      case SkinOptions.Transparent: {\n        _dropDownOptions.showSearch = false;\n        break;\n      }\n      case SkinOptions.Action:\n      case SkinOptions.ActionVertical: {\n        _dropDownOptions.placeholder = '• • •';\n        _dropDownOptions.showSearch = false;\n        _dropDownOptions.showSelectedTitle = false;\n        _dropDownOptions.showTriggerArrow = false;\n        _dropDownOptions.showSelectedMarker = false;\n        _dropDownOptions.allowUnselectInSingleSelect = true;\n        break;\n      }\n    }\n  }\n  return Object.freeze(_dropDownOptions);\n}\n\n/**\n * update the selected property with false value if needed.\n * we check for each item in changedItems if it exists in previousSelected and we set selected to false if it does exist\n * @param changedItems\n * @param previousSelected\n * @private\n */\nfunction _updateChangeItemsWithSelectedProp(\n  changedItems: DropDownItem[],\n  previousSelected: DropDownItem[]\n): DropDownItem[] {\n  if (changedItems) {\n    const previousSelectedMap = {};\n    previousSelected.reduce((pre: Record<string, DropDownItem>, cur) => {\n      pre[cur.value] = cur;\n      return pre;\n    }, previousSelectedMap);\n\n    changedItems = changedItems.map((item) => {\n      if (previousSelectedMap.hasOwnProperty(item.value)) {\n        item.selected = false;\n      }\n      return item;\n    });\n  }\n  return changedItems;\n}\n\n/**\n * create selected state changes.\n * we are not using the selectedState as is because it has private props like (_selectAll)\n * which can be confused with the public selectAll\n */\nexport function createSelectedStateChanges(selectedState: DropDownSelectedState): DropDownSelectedState {\n  return cloneDeep({\n    selectAll: selectedState.selectAll,\n    unselectAll: selectedState.unselectAll,\n    selectedItemsMap: selectedState.selectedItemsMap,\n    unselectedItemsMap: selectedState.unselectedItemsMap,\n  });\n}\n\n/**\n * check if a given dropdown item is invalid.\n * dropdown item is considered valid when it has value and title props\n * @param item\n */\nexport function isInvalidDropDownItem(item: DropDownItem): boolean {\n  return isNil(item) || isNil(item.value) || isNil(item.title);\n}\n\n/**\n * check if given is string array.\n * in case empty array it return false.\n * @param data\n */\nexport function isStringsArray(data: any): boolean {\n  return !!(Array.isArray(data) && data.length && data.find((item) => !isString(item)) === void 0);\n}\n\n/**\n * get dropdown items and check if it has nested items.\n * @param items\n */\nexport function hasNestedItems(items: DropDownItem[]): boolean {\n  return !!items?.find((item) => item?.children?.length);\n}\n\n/**\n * check if all dropdown items are considered as selected.\n * In case server side: in case selectAll flag is on and the number of unselected items is zero -> it's considered as allItemsSelected\n * In case client side: we check if all items selected property are true\n */\nexport function isAllItemSelected(\n  selectedItemsState: SelectedItemsState,\n  isServerSide: boolean,\n  items: DropDownItem[]\n): boolean {\n  let _isAllItemsSelected: boolean;\n  if (isServerSide) {\n    _isAllItemsSelected = selectedItemsState.isSelectAllFlagOn() && selectedItemsState.numOfUnSelectedItems() === 0;\n  } else {\n    _isAllItemsSelected = items ? items.find((item) => item.selected === false) === void 0 : false;\n  }\n  return _isAllItemsSelected;\n}\n\n/**\n * check if all dropdown items are considered as unselected.\n * In case server side: in case unselectAll flag is on and the number of selected items is zero -> it's considered as allItemsSelected\n * In case client side: we check if all items selected property are false\n */\nexport function isAllItemsUnSelected(\n  selectedItemsState: SelectedItemsState,\n  isServerSide: boolean,\n  items: DropDownItem[]\n): boolean {\n  let _isAllItemsUnselected: boolean;\n  if (isServerSide) {\n    _isAllItemsUnselected = selectedItemsState.isUnselectAllFlagOn() && selectedItemsState.numOfSelectedItems() === 0;\n  } else {\n    _isAllItemsUnselected = items ? items.filter((item) => item.selected).length === 0 : false;\n  }\n  return _isAllItemsUnselected;\n}\n\n/**\n * check that when we are using the client infinite scroll\n * we are not getting menuStyle with height, min-height, max-height\n * since we should get it from dropDownOptions.virtualScrollViewportHeight\n */\nexport function isDropDownOptionsHasValidPropsForInfiniteScroll(dropDownOptions: DropDownOptions): boolean {\n  let valid = true;\n  if (dropDownOptions?.useInfiniteScroll) {\n    if (\n      dropDownOptions.menuStyle?.hasOwnProperty('height') ||\n      dropDownOptions.menuStyle?.hasOwnProperty('min-height') ||\n      dropDownOptions.menuStyle?.hasOwnProperty('max-height')\n    ) {\n      valid = false;\n    }\n  }\n  return valid;\n}\n","export enum DropDownEventType {\n  ItemClicked = 'ItemClicked',\n  ClearSelected = 'ClearSelected',\n  SelectAllClicked = 'SelectAllClicked',\n  SearchValueChanged = 'SearchValueChanged',\n  nestedServerSearchValueChanged = 'nestedServerSearchValueChanged',\n  PageChanged = 'PageChanged',\n  nestedServerPageChanged = 'nestedServerPageChanged',\n  GetMoreItems = 'GetMoreItems',\n  UpdateIsResizingValue = 'UpdateIsResizingValue',\n  EscapeClicked = 'EscapeClicked',\n  SetSearchOnFocus = 'SetSearchOnFocus',\n}\n","import { DropDownEventType } from '../../enums/drop-down-event-type.enum';\nimport { filter } from 'rxjs/operators';\nimport { DropDownEventMessage } from '../../models/drop-down-event-message.interface';\n\n/**\n * custom rxjs operator for filtering event messages by the required event type\n * @param dropDownEventType\n */\nexport const filterEventMessageByEventType = (dropDownEventType: DropDownEventType) =>\n  filter((eventMessage: DropDownEventMessage) => eventMessage.eventType === dropDownEventType);\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { DropDownEventType } from '../../enums/drop-down-event-type.enum';\nimport { DropDownEventMessage } from '../../models/drop-down-event-message.interface';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { PaginatorPage } from '../../../../data-table/paginator/models/paginator-page.interface';\n\n/**\n * In order to pass event messages between components.\n * The strategy should be as follows: the children components emit events to main parent component (drop-down.component.ts)\n * and main parent component does the logic and updates the relevant component inputs.\n *\n * For example, when items are selected, the item component will emit an event of item selected and parent component\n * will change the item selected value to true.\n *\n * NOTE: this service is generally for internal-use.\n * It is intended to be used externally only for dropdowns which utilize the custom itemComponent option.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class DropDownEventMessagesService {\n  private event$ = new Subject<DropDownEventMessage>();\n  listen$: Observable<DropDownEventMessage> = this.event$.asObservable();\n\n  /**\n   * emit event.\n   * we should emit event from child component to parent component.\n   * @param eventMessage\n   */\n  public emit(eventMessage: DropDownEventMessage): void {\n    if (eventMessage && DropDownEventType[eventMessage.eventType]) {\n      this.event$.next(eventMessage);\n    } else {\n      console.error('Dropdown emit event fail. check eventMessage is an object with eventType');\n    }\n  }\n\n  /**\n   * Emit event of item clicked\n   */\n  public itemClicked(clickedItem: DropDownItem): void {\n    if (clickedItem) {\n      this.emit({ eventType: DropDownEventType.ItemClicked, data: clickedItem });\n    } else {\n      console.error('Dropdown emit event of item clicked fail. clickedItem should be an object');\n    }\n  }\n\n  /**\n   * on reset clicked -> unselect all items\n   */\n  public clearSelected(): void {\n    this.emit({ eventType: DropDownEventType.ClearSelected, data: null });\n  }\n\n  /**\n   * on select all clicked -> select all items\n   */\n  public selectAll(): void {\n    this.emit({ eventType: DropDownEventType.SelectAllClicked, data: null });\n  }\n\n  /**\n   * on new search value\n   */\n  public searchValueChanged(searchValue: string): void {\n    this.emit({ eventType: DropDownEventType.SearchValueChanged, data: searchValue });\n  }\n\n  /**\n   * on new search value originating from a nested server menu.\n   */\n  public nestedSearchValueChanged(searchValue: string, menuIndexNumber: number): void {\n    this.emit({\n      eventType: DropDownEventType.nestedServerSearchValueChanged,\n      data: { value: searchValue, menuIndexNumber: menuIndexNumber },\n    });\n  }\n\n  /**\n   * on page change.\n   * when user clicks on a different page number from paginator.\n   */\n  public pageChanged(page: PaginatorPage): void {\n    this.emit({ eventType: DropDownEventType.PageChanged, data: page });\n  }\n\n  /**\n   * on page change originating from a nested server menu.\n   */\n  public nestedPageChanged(page: PaginatorPage, menuIndexNumber: number): void {\n    this.emit({\n      eventType: DropDownEventType.nestedServerPageChanged,\n      data: { value: page, menuIndexNumber: menuIndexNumber },\n    });\n  }\n\n  /**\n   * get more items for infinite scroll\n   */\n  public getMoreItems(): void {\n    this.emit({ eventType: DropDownEventType.GetMoreItems, data: null });\n  }\n\n  /**\n   * update isResizing\n   */\n  public updateIsResizing(isResizingValue: boolean): void {\n    this.emit({ eventType: DropDownEventType.UpdateIsResizingValue, data: isResizingValue });\n  }\n\n  /**\n   * escape clicked.\n   * we used it in order to close dropdown\n   */\n  public escapeClicked(): void {\n    this.emit({ eventType: DropDownEventType.EscapeClicked, data: null });\n  }\n\n  /**\n   * set search on focus.\n   */\n  public setSearchOnFocus(): void {\n    this.emit({ eventType: DropDownEventType.SetSearchOnFocus, data: null });\n  }\n}\n","import { SimpleChanges } from '@angular/core';\nimport { isDropDownOptionsHasValidPropsForInfiniteScroll } from './drop-down.utils';\n\n/**\n * check selected state props are valid.\n * invalid in case selectAll and unselectAll are true\n */\nexport function checkSelectedStatePropsValid(selectAll: boolean, unselectAll: boolean): boolean {\n  let isValid = true;\n  if (selectAll && unselectAll) {\n    isValid = false;\n    console.error('[SelectedState] selectAll and unselectAll are not allow to be true on the same time.');\n  }\n  return isValid;\n}\n\n/**\n * check if given component inputs are valid.\n * we have cases where a given input is not allowed to be used with other inputs.\n * For example: a server side dropdown with select all is currently not supported\n *              and in case of wrong component inputs, the validation will catch and display an error\n */\nexport function checkComponentInputsAreValid(\n  changes: SimpleChanges,\n  isUsedAsReactiveForm: boolean,\n  isSelectionChangedSubscribedOnHost: boolean\n) {\n  _checkIfShowSelectAllIsValid(changes, isUsedAsReactiveForm);\n  _checkIfAllowUnselectInSingleSelectIsValid(changes);\n  _checkIfListenToSelectionChangedValid(changes, isSelectionChangedSubscribedOnHost);\n  _checkDropDownOptionsHasValidPropsForInfiniteScroll(changes);\n}\n\n/**\n * check if showSelectAll is valid\n * it is considered invalid when single select and showSelectAll is true\n * or\n * server side dropdown + showSelectAll is true + reactive form\n */\nfunction _checkIfShowSelectAllIsValid(changes: SimpleChanges, isUsedAsReactiveForm: boolean): void {\n  if (changes?.dropDownOptions?.currentValue) {\n    if (\n      changes.dropDownOptions.currentValue.isMultipleSelection !== true &&\n      changes.dropDownOptions.currentValue.showSelectAll\n    ) {\n      console.error('[DropDownComponent] showSelectAll is not support single select');\n    }\n\n    if (changes.dropDownOptions.currentValue.showSelectAll && changes?.serverSideOptions && isUsedAsReactiveForm) {\n      console.error('[DropDownComponent] showSelectAll not supported with reactive form and server side');\n    }\n  }\n}\n\nfunction _checkIfAllowUnselectInSingleSelectIsValid(changes: SimpleChanges): void {\n  if (\n    changes?.dropDownOptions?.currentValue?.allowUnselectInSingleSelect &&\n    changes?.dropDownOptions?.currentValue?.isMultipleSelection\n  ) {\n    console.error('[DropDownComponent] allowUnselectInSingleSelect is not support with multiple selection');\n  }\n}\n\n/**\n * check that the host isn't listening to @Output() selectionChanged when dropdown is\n * server side and showSelectAll display.\n * In this case the host should use this @Output() selectedStateChanged\n */\nfunction _checkIfListenToSelectionChangedValid(\n  changes: SimpleChanges,\n  isSelectionChangedSubscribedOnHost: boolean\n): void {\n  if (changes.serverSideOptions && changes.dropDownOptions) {\n    if (changes?.dropDownOptions?.currentValue?.showSelectAll && isSelectionChangedSubscribedOnHost) {\n      console.error(`[DropDownComponent] Host component should not listen to @Output() selectionChanged when server\n      side and showSelectAll display. Please use @Output() selectedStateChanged instead`);\n    }\n  }\n}\n\n/**\n * check that when we are using the client infinite scroll\n * we are not getting menuStyle with height, min-height, max-height\n * since we should get it from dropDownOptions.virtualScrollViewportHeight\n */\nfunction _checkDropDownOptionsHasValidPropsForInfiniteScroll(changes: SimpleChanges): void {\n  const { dropDownOptions } = changes;\n  if (!isDropDownOptionsHasValidPropsForInfiniteScroll(dropDownOptions?.currentValue)) {\n    console.error(`[DropDownComponent] when useInfiniteScroll is true the menuStyle should not use\n       height, min-height or max-height property. please use dropDownOptions.virtualScrollViewportHeight instead`);\n  }\n}\n","/**\n * the selected state instance.\n * NOTE: selectAll and unselectAll are not allowed to be true at the same time.\n */\nimport { DropDownSelectedState } from '../models/drop-down-selected-state.interface';\nimport { DropDownItem } from '../models/drop-down-item.interface';\nimport { checkSelectedStatePropsValid } from '../utils/drop-down-inputs-validation.utils';\n\nexport class SelectedState implements DropDownSelectedState {\n  private readonly _selectAll: boolean;\n  get selectAll(): boolean {\n    return this._selectAll;\n  }\n\n  private readonly _unselectAll: boolean;\n  get unselectAll(): boolean {\n    return this._unselectAll;\n  }\n\n  /**\n   * keep the selected item as a map object\n   * where the key is item value and value is the selected dropdown item\n   */\n  public selectedItemsMap: Record<string, DropDownItem> = {};\n  public unselectedItemsMap: Record<string, DropDownItem> = {};\n\n  constructor(selectAll = false, unselectAll = true) {\n    if (checkSelectedStatePropsValid(selectAll, unselectAll)) {\n      this._selectAll = selectAll;\n      this._unselectAll = unselectAll;\n    }\n  }\n}\n","import { DropDownItem } from '../models/drop-down-item.interface';\nimport { cloneDeep } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\nimport { isInvalidDropDownItem } from './drop-down.utils';\nimport { DropDownSelectedState } from '../models/drop-down-selected-state.interface';\nimport { checkSelectedStatePropsValid } from './drop-down-inputs-validation.utils';\nimport { SelectedState } from '../classes/selected-state';\nimport { MULTIPLE_SELECTION_TEXT } from '../consts/drop-down.consts';\n\n/**\n * Handle the selected item state.\n * we use it for\n * - mark the selected checkbox\n * - display the selected title in the trigger button\n */\nexport class SelectedItemsState {\n  private _state: DropDownSelectedState = new SelectedState(false, true);\n\n  get selectedState(): DropDownSelectedState {\n    return this._state;\n  }\n\n  public stateChanged$ = new BehaviorSubject(void 0);\n\n  constructor(private isSingleSelection: boolean) {}\n\n  /**\n   * override state\n   * @param state\n   */\n  overrideState(state: DropDownSelectedState): void {\n    state = cloneDeep(state);\n    if (checkSelectedStatePropsValid(state.selectAll, state.unselectAll)) {\n      this._state = new SelectedState(state.selectAll, state.unselectAll);\n      this._state.selectedItemsMap = state.selectedItemsMap;\n      this._state.unselectedItemsMap = state.unselectedItemsMap;\n      this.onSelectedItemsMapChange();\n    }\n  }\n\n  /**\n   * update state with selectAll true\n   */\n  selectAll(): void {\n    if (this.isSingleSelection) {\n      console.error('[SelectedItemsState] selectAll not allow in single select mode.');\n    } else {\n      this._state = new SelectedState(true, false);\n      this.onSelectedItemsMapChange();\n    }\n  }\n\n  /**\n   * unselect all items by set new empty object.\n   * return the unselected items\n   */\n  unselectAllItems(): DropDownItem[] {\n    const cloneSelectedItemsMap = cloneDeep(this._state.selectedItemsMap);\n    this._state = new SelectedState(false, true);\n    this.onSelectedItemsMapChange();\n    return Object.keys(cloneSelectedItemsMap).map((key: string) => {\n      return cloneSelectedItemsMap[key];\n    });\n  }\n\n  /**\n   * update selectedItemsMap object by get dropdown item.\n   * the item will be added or removed depending on selected property\n   * @param item\n   */\n  updateSelectedItemsMap(item: DropDownItem): DropDownItem[] {\n    if (item.selected) {\n      this.addToSelected(item);\n    } else {\n      this.removeFromSelected(item);\n    }\n    return this.getSelectedItems();\n  }\n\n  /**\n   * add item to selectedItemsMap\n   * @param item\n   * @param allowCallOnSelectedItemsMapChange set it to false when we dont want this\n   * method to execute onSelectedItemsMapChange method.\n   * We will want to use false in case we are call addToSelected inside a for loop and we want\n   * to call it only once we done the loop.\n   */\n  addToSelected(item: DropDownItem, allowCallOnSelectedItemsMapChange = true): void {\n    if (isInvalidDropDownItem(item)) {\n      console.error('[SelectedItemsState] selected items should have value and title properties.');\n    } else {\n      if (this.isSingleSelection) {\n        this.unselectAllItems();\n      }\n      delete this._state.unselectedItemsMap[item.value];\n      this._state.selectedItemsMap[item.value] = item;\n      if (allowCallOnSelectedItemsMapChange) {\n        this.onSelectedItemsMapChange();\n      }\n    }\n  }\n\n  /**\n   * remove item to selectedItemsMap\n   * @param item\n   */\n  removeFromSelected(item: DropDownItem): void {\n    delete this._state.selectedItemsMap[item.value];\n    this._state.unselectedItemsMap[item.value] = item;\n    this.onSelectedItemsMapChange();\n  }\n\n  /**\n   * add multiple items to selectedItemsMap\n   * @param items\n   */\n  addMultipleToSelected(items: DropDownItem[]): void {\n    if (items && Array.isArray(items)) {\n      items.forEach((selectedItem: DropDownItem) => {\n        this.addToSelected(selectedItem, false);\n      });\n      if (items.length) {\n        this.onSelectedItemsMapChange();\n      }\n    }\n  }\n\n  /**\n   * add multiple items to selectedItemsMap if the selected property is true\n   * @param items\n   */\n  addMultipleIfSelected(items: DropDownItem[]): void {\n    if (items && Array.isArray(items)) {\n      items\n        .filter((item: DropDownItem) => item.selected)\n        .forEach((selectedItem: DropDownItem) => {\n          this.addToSelected(selectedItem, false);\n        });\n      if (items.length) {\n        this.onSelectedItemsMapChange();\n      }\n    }\n  }\n\n  /**\n   * check if item is selected.\n   * item is considered as selected when -> the item is in selectedItemsMap\n   * or the selectAll flag is true and the item is not in unselectedItemsMap\n   * @param value\n   */\n  isItemSelected(value: string): boolean {\n    return (\n      this._state.selectedItemsMap.hasOwnProperty(value) ||\n      (this._state.selectAll && !this._state.unselectedItemsMap.hasOwnProperty(value))\n    );\n  }\n\n  /**\n   * get selected items\n   */\n  getSelectedItems(): DropDownItem[] {\n    return Object.keys(this._state.selectedItemsMap).map((value) => this._state.selectedItemsMap[value]);\n  }\n\n  /**\n   * get the selected value as object.\n   * Example of return object:\n   * {\"osType\": true, \"anotherValueId\": true}\n   * In case nothing selected and empty object will return.\n   */\n  getSelectedValueRecordObject(): Record<string, boolean> {\n    const selectedValue: Record<string, boolean> = {};\n    const selectedItems = this.getSelectedItems();\n    if (selectedItems?.length) {\n      selectedItems.reduce((pre: Record<string, boolean>, current: DropDownItem) => {\n        pre[current.value] = true;\n        return pre;\n      }, selectedValue);\n    }\n    return selectedValue;\n  }\n\n  /**\n   * check if all items are selected.\n   * isAllItemSelected returns true when selectAll flag is true + the unselectedItemsMap is an empty object\n   */\n  isAllItemSelected(): boolean {\n    return this._state.selectAll && this.numOfUnSelectedItems() === 0;\n  }\n\n  /**\n   * check if all items are unselected.\n   * isAllItemsUnSelected returns true when unselectAll flag is true + the selectedItemsMap\n   * is an empty object\n   */\n  isAllItemsUnSelected(): boolean {\n    return this._state.unselectAll && this.numOfSelectedItems() === 0;\n  }\n\n  /**\n   * get selected names.\n   * in case we get allowUseMultipleSelectionText as true + selectAll flag is true 'Multiple Selection' will return\n   * allowUseMultipleSelectionText value calculate from  is server side or useInfiniteScroll for client side\n   * The reason to check if useInfiniteScroll is true is we want to support 100k items without affect performance.\n   * the performance issue come from the *ngFor to show all selected items in the trigger placeholder.\n   */\n  getSelectedNames(allowUseMultipleSelectionText: boolean): string[] {\n    let selectedNames: string[];\n    if (allowUseMultipleSelectionText && this._state.selectAll) {\n      selectedNames = [MULTIPLE_SELECTION_TEXT];\n    } else {\n      selectedNames = this.getSelectedItems().map((item) => item.title);\n    }\n    return selectedNames;\n  }\n\n  /**\n   * we call this method for each time a change is done on selectedItemsMap.\n   * stateChanged$ will get updated after each selectedItemsMap change\n   */\n  onSelectedItemsMapChange(): void {\n    this.stateChanged$.next(void 0);\n  }\n\n  /**\n   * check if at least one item is selected.\n   * NOTE: in case server side + user click on the select all and then unselect one by one all items\n   *       this method will return true despite it should return false.\n   *       we dont have a way to know that all items unselected.\n   */\n  isAtListOneItemSelected(isServerSide: boolean): boolean {\n    let _isAtListOneItemSelected;\n    if (isServerSide) {\n      _isAtListOneItemSelected = this._state.selectAll || this.numOfSelectedItems() > 0;\n    } else {\n      _isAtListOneItemSelected = this.numOfSelectedItems() > 0;\n    }\n    return _isAtListOneItemSelected;\n  }\n\n  /**\n   * check if select all is true\n   * return true if selectAll is true\n   */\n  isSelectAllFlagOn(): boolean {\n    return this._state.selectAll;\n  }\n\n  /**\n   * check if unselect all is true\n   * return true if unselectAll is true\n   */\n  isUnselectAllFlagOn(): boolean {\n    return this._state.unselectAll;\n  }\n\n  /**\n   * return how many items are selected from selectedItemsMap.\n   * NOTE: if selectAll is true this method will return 0.\n   */\n  numOfSelectedItems(): number {\n    return Object.keys(this._state.selectedItemsMap).length;\n  }\n\n  /**\n   * return how many items are unselected.\n   * NOTE: if unselectAll is true this method will return 0.\n   */\n  numOfUnSelectedItems(): number {\n    return Object.keys(this._state.unselectedItemsMap).length;\n  }\n}\n","export enum SelectionChangesActionTypes {\n  AllItemsUnSelected = 'AllItemsUnselected',\n  AllItemsSelected = 'AllItemsSelected',\n  ItemSelected = 'ItemSelected',\n  ItemUnselected = 'ItemUnselected',\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\n@Component({\n  selector: 'sing-trigger-toggle-arrow',\n  templateUrl: './trigger-toggle-arrow.component.html',\n  styleUrls: ['./trigger-toggle-arrow.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('arrowInOut', [\n      state('hidden', style({ transform: 'translateY(0) rotate(135deg)' })),\n      state('visible', style({ transform: 'translateY(3px) rotate(315deg)' })),\n      transition('hidden <=> visible', animate('200ms ease-in')),\n    ]),\n  ],\n})\nexport class TriggerToggleArrowComponent {\n  @Input() open = false;\n  @Input() style: Record<string, any>;\n}\n","<div\n  class=\"toggle-arrow\"\n  [ngStyle]=\"style\"\n  [@arrowInOut]=\"open ? 'visible' : 'hidden'\">\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, TemplateRef } from '@angular/core';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { DropDownOptions } from '../../models/drop-down-options.interface';\nimport { MULTIPLE_SELECTION_TEXT } from '../../consts/drop-down.consts';\n\n@Component({\n  selector: 'sing-default-trigger',\n  templateUrl: './default-trigger.component.html',\n  styleUrls: ['./default-trigger.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultTriggerComponent {\n  @Input() triggerText = '';\n  @Input() triggerSelectedItems: DropDownItem[] = [];\n\n  private _isMenuOpen = false;\n  @Input()\n  set isMenuOpen(isMenuOpen: boolean) {\n    this._isMenuOpen = isMenuOpen;\n    this.cdr.markForCheck();\n  }\n\n  get isMenuOpen(): boolean {\n    return this._isMenuOpen;\n  }\n\n  private _dropDownOptions: DropDownOptions;\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    if (dropDownOptions) {\n      this._dropDownOptions = dropDownOptions;\n      this.showTriggerArrow = dropDownOptions.showTriggerArrow;\n      this.placeholder = dropDownOptions.placeholder;\n      this.leftIcon = dropDownOptions.placeholderLeftIcon;\n      this.rightIcon = dropDownOptions.placeholderRightIcon;\n      this.capitalize = dropDownOptions.capitalize;\n      this.triggerTitle = dropDownOptions.triggerTitle;\n\n      /**\n       * Decision of what to display in the placeholder\n       * - In case we have triggerTitle value we will show it no matter if items are selected or not.\n       * - In case triggerText has 'Multiple Selection' value we show this text -> Multiple Selection\n       * - In case showSelectedTitle is true + we have selected items -> we show the selected item titles\n       * - If none of the above -> the placeholder text will display\n       */\n      if (this.triggerTitle) {\n        this.placeholderSwitch = 'TriggerTitle';\n      } else if (MULTIPLE_SELECTION_TEXT === this.triggerText) {\n        this.placeholderSwitch = 'MultipleSelectionText';\n      } else if (dropDownOptions?.showSelectedTitle && this.triggerSelectedItems?.length) {\n        this.placeholderSwitch = 'SelectedItems';\n      } else {\n        this.placeholderSwitch = 'Placeholder';\n      }\n\n      this.cdr.markForCheck();\n    }\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  @Input() triggerTemplateRef: TemplateRef<any>;\n\n  placeholder = '';\n  showTriggerArrow = true;\n  leftIcon: string;\n  rightIcon: string;\n  capitalize = true;\n  triggerTitle: string;\n  placeholderSwitch: 'TriggerTitle' | 'SelectedItems' | 'Placeholder' | 'MultipleSelectionText';\n\n  constructor(private cdr: ChangeDetectorRef) {}\n}\n","<ng-container *ngIf=\"triggerTemplateRef; then customTrigger else defaultTrigger\"></ng-container>\n<!--Toggle Arrow-->\n<sing-trigger-toggle-arrow\n  *ngIf=\"showTriggerArrow\"\n  data-mgmtAutomationId=\"toggle-arrow\"\n  [open]=\"isMenuOpen\"\n  [style]=\"{width: '6px', height: '6px'}\"\n></sing-trigger-toggle-arrow>\n\n<!--Custom Trigger-->\n<ng-template #customTrigger>\n  <ng-container *ngTemplateOutlet=\"triggerTemplateRef; context:{$implicit: triggerText || placeholder}\"></ng-container>\n</ng-template>\n\n<!--Default Trigger-->\n<ng-template #defaultTrigger>\n  <ng-container [ngSwitch]=\"placeholderSwitch\">\n\n    <!--Show the given trigger title text-->\n    <ng-container *ngSwitchCase=\"'TriggerTitle'\">\n      <i *ngIf=\"leftIcon\" class=\"left-icon {{leftIcon}}\"></i>\n      <span\n        data-mgmtAutomationId=\"placeholder-selected-values\"\n        class=\"selected-text ellipsis\"\n        [class.capitalize]=\"capitalize\"\n        singEllipsis\n        position=\"above\">\n         {{triggerTitle}}\n      </span>\n    </ng-container>\n\n    <!--Show the text of the selected items-->\n    <div *ngSwitchCase=\"'SelectedItems'\" class=\"selected-text\" position=\"above\" singEllipsis data-mgmtAutomationId=\"placeholder-selected-values\">\n      <ng-container *ngFor=\"let item of triggerSelectedItems; let isLast = last\">\n        <i *ngIf=\"leftIcon || item?.leftIconClass\" class=\"left-icon {{leftIcon || item?.leftIconClass}}\"></i>\n        <span\n          class=\" ellipsis\"\n          [class.capitalize]=\"capitalize\">\n        {{item.title}}{{isLast ? '' : ', '}}\n      </span>\n      </ng-container>\n    </div>\n\n    <!--Show \"Multiple Selection\" text-->\n    <div *ngSwitchCase=\"'MultipleSelectionText'\" class=\"selected-text\" singEllipsis>\n      <i *ngIf=\"leftIcon\" class=\"left-icon {{leftIcon}}\"></i>\n      <span\n        data-mgmtAutomationId=\"placeholder-selected-values\"\n        class=\" ellipsis\"\n        [class.capitalize]=\"capitalize\">\n        {{triggerText}}\n      </span>\n    </div>\n\n    <!--Placeholder, when nothing selected-->\n    <ng-container *ngSwitchCase=\"'Placeholder'\">\n      <span\n        data-mgmtAutomationId=\"placeholder-non-selected\"\n        class=\"placeholder ellipsis\"\n        [class.capitalize]=\"capitalize\">\n        {{placeholder}}\n      </span>\n    </ng-container>\n  </ng-container>\n\n  <i *ngIf=\"rightIcon\" class=\"right-icon {{rightIcon}}\"></i>\n</ng-template>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { filterEventMessageByEventType } from '../../services/drop-down-event-messages/drop-down-event-messages.operatoes';\nimport { DropDownEventType } from '../../enums/drop-down-event-type.enum';\nimport { DropDownEventMessagesService } from '../../services/drop-down-event-messages/drop-down-event-messages.service';\n\n@Component({\n  selector: 'sing-drop-down-search',\n  templateUrl: './drop-down-search.component.html',\n  styleUrls: ['./drop-down-search.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropDownSearchComponent implements OnInit, OnDestroy {\n  /**\n   * the minimal number of chars to start search\n   */\n  @Input() minNumOfChars = 0;\n\n  /**\n   * the debounce time between key strokes in search box\n   */\n  @Input() searchDebounceTime = 200;\n\n  /**\n   * when search value changed\n   */\n  @Output() searched = new EventEmitter<string>();\n\n  /**\n   * Ref to out search text box element\n   */\n  @ViewChild('searchTextBox', { read: ElementRef }) searchTextBoxElement: ElementRef;\n\n  ngUnSubscribe = new Subject<void>();\n  searchValue$ = new Subject<string>();\n  searchValueChanged$: Observable<string>;\n\n  constructor(private cdr: ChangeDetectorRef, private dropDownEventMessagesService: DropDownEventMessagesService) {}\n\n  ngOnInit(): void {\n    this.searchValueChanged$ = this.searchValue$.asObservable().pipe(\n      debounceTime(this.searchDebounceTime),\n      filter((searchValue: string) => searchValue.length === 0 || searchValue.length >= this.minNumOfChars),\n      takeUntil(this.ngUnSubscribe)\n    );\n\n    this.searchValueChanged$.subscribe(this.emitValueChanged.bind(this));\n\n    this.ListenToSetSearchOnFocus();\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * Set search text box in focus\n   */\n  @HostListener('click') onMouseDown(): void {\n    this.searchTextBoxElement.nativeElement.focus();\n  }\n\n  /**\n   * emit value when changed\n   * @param value\n   */\n  emitValueChanged(value: string): void {\n    this.searched.emit(value);\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * listen to set search on focus\n   * @constructor\n   */\n  ListenToSetSearchOnFocus(): void {\n    this.dropDownEventMessagesService.listen$\n      .pipe(filterEventMessageByEventType(DropDownEventType.SetSearchOnFocus), takeUntil(this.ngUnSubscribe))\n      .subscribe(() => {\n        this.searchTextBoxElement?.nativeElement.focus();\n      });\n  }\n}\n","<!--Search Icon-->\n<i class=\"mgmt-search\"></i>\n\n<!--Search Input-->\n<input\n  #searchTextBox\n  role=\"search\"\n  data-mgmtAutomationId=\"SearchField\"\n  class=\"search-input ellipsis\"\n  placeholder=\"Search...\"\n  type=\"text\"\n  singInputAutoFocus\n\n  (input)=\"searchValue$.next(searchTextBox?.value)\">\n\n<!--Clear-->\n<i\n  [style.visibility]=\"searchTextBox?.value?.length ? 'visible' : 'hidden'\"\n  class=\"mgmt-x-search\"\n  data-mgmtautomationid=\"ClearSearch\"\n  role=\"button\"\n  aria-label=\"Clear Search\"\n\n  (click)=\"searchTextBox.value = ''; searchValue$.next(searchTextBox?.value)\">\n</i>\n","export enum EventCodeOptions {\n  ArrowDown = 'ArrowDown',\n  ArrowUp = 'ArrowUp',\n  Enter = 'Enter',\n  Escape = 'Escape',\n}\n","import {\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  Input,\n  OnChanges,\n  OnInit,\n  Renderer2,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport { isObject } from 'lodash';\n\n/**\n * dropdown dynamic directive helps us with creating dynamic components.\n * dynamicComponentClass: pass the dynamic component class name\n * inputs: pass an object with key which represents the component @Input name and the value to set\n */\n@Directive({\n  selector: '[singDropDownDynamicDirective]',\n})\nexport class DropDownDynamicDirective implements OnInit, OnChanges {\n  @Input() dynamicComponentClass: Type<any>;\n  @Input() inputs: any;\n  @Input() attributes: Record<string, string>;\n\n  componentFactory: ComponentFactory<any> | undefined;\n  component: ComponentRef<any> | undefined;\n\n  constructor(\n    private resolver: ComponentFactoryResolver,\n    private container: ViewContainerRef,\n    private renderer: Renderer2\n  ) {}\n\n  ngOnInit(): void {\n    this.container.clear();\n    this.componentFactory = void 0;\n    this.component = void 0;\n    this.componentFactory = this.resolver.resolveComponentFactory<any>(this.dynamicComponentClass);\n    this.component = this.container.createComponent(this.componentFactory);\n\n    if (this.attributes) {\n      Object.keys(this.attributes).forEach((attributeName) => {\n        const value = this.attributes[attributeName];\n        this.renderer.setAttribute(this.component.location.nativeElement, attributeName, value);\n      });\n    }\n\n    this.updateComponentInputs();\n  }\n\n  ngOnChanges(): void {\n    this.updateComponentInputs();\n  }\n\n  /**\n   * update component inputs\n   */\n  updateComponentInputs(): void {\n    const validInputs = this.inputs && isObject(this.inputs) && Object.keys(this.inputs).length;\n    if (this.component && validInputs && this.componentFactory && this.componentFactory.inputs) {\n      this.componentFactory.inputs.forEach((input: any) => {\n        if (this.inputs.hasOwnProperty(input.propName)) {\n          this.component.instance[input.propName] = this.inputs[input.propName];\n        }\n      });\n    }\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  HostBinding,\n  Input,\n  TemplateRef,\n  Type,\n  ViewChild,\n} from '@angular/core';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { DropDownOptions } from '../../models/drop-down-options.interface';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { SelectedItemsState } from '../../utils/selected-items-state.utils';\n\n@Component({\n  selector: 'sing-dynamic-drop-down-item-container',\n  templateUrl: './dynamic-drop-down-item-container.component.html',\n  styleUrls: ['./dynamic-drop-down-item-container.component.scss'],\n})\nexport class DynamicDropDownItemContainerComponent implements Highlightable {\n  private _item: DropDownItem;\n\n  @Input()\n  set item(item: DropDownItem) {\n    this._item = item;\n    this.cdr.markForCheck();\n  }\n\n  get item(): DropDownItem {\n    return this._item;\n  }\n\n  private _automationItemId: string;\n  @Input()\n  set automationItemId(automationItemId: string) {\n    this._automationItemId = automationItemId;\n    this.cdr.markForCheck();\n  }\n\n  get automationItemId(): string {\n    return this._automationItemId;\n  }\n\n  private _dropDownOptions;\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    this._dropDownOptions = dropDownOptions;\n    this.cdr.markForCheck();\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  private _selectedItemsState: SelectedItemsState;\n  @Input()\n  set selectedItemsState(selectedItemsState: SelectedItemsState) {\n    this._selectedItemsState = selectedItemsState;\n  }\n\n  get selectedItemsState(): SelectedItemsState {\n    return this._selectedItemsState;\n  }\n\n  @Input() menuIndexNumber: number;\n  @Input() searchValue: string;\n  @Input() itemTemplateRef?: TemplateRef<any>;\n  @Input() itemComponent?: Type<any>;\n  @Input() itemIndex: number;\n\n  /**\n   * CDK highlightable.\n   * For scroll to item use in the host component\n   */\n  @ViewChild('dropdownItem', { read: ElementRef, static: true }) dropdownItemElementRef;\n\n  /**\n   * CDK highlightable\n   */\n  private _isActive = false;\n  @HostBinding('class.active') get isActive() {\n    return this._isActive;\n  }\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  /**\n   * CDK highlightable\n   */\n  setActiveStyles() {\n    this._isActive = true;\n  }\n\n  /**\n   * CDK highlightable\n   */\n  setInactiveStyles() {\n    this._isActive = false;\n  }\n}\n","<!--Dynamic Item Component-->\n<div #dropdownItem [attr.data-mgmtAutomationId]=\"automationItemId\" role=\"option\">\n  <ng-container\n    singDropDownDynamicDirective\n    [dynamicComponentClass]=\"itemComponent ? itemComponent : dropDownOptions?.itemComponent\"\n    [inputs]=\"{\n          dropDownOptions: dropDownOptions,\n          showSelectedMarker: dropDownOptions?.showSelectedMarker,\n          capitalize: dropDownOptions?.capitalize,\n          item: item,\n          itemIndex: itemIndex,\n          selectedItemsState: selectedItemsState,\n          menuIndexNumber: menuIndexNumber,\n          searchValue: searchValue,\n          itemTemplateRef: itemTemplateRef\n        }\"\n  ></ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-loader',\n  templateUrl: './loader.component.html',\n  styleUrls: ['./loader.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingLoaderComponent {\n  // if true, adds a css class which activates 'position: absolute' and centers the loader\n  // need to add 'position: relative' to the parent element to center the loader\n  @Input()\n  isAbsolute = false;\n}\n","<div class=\"dropdown-loading-animation\" [class.absolute]=\"isAbsolute\" ></div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-empty-search-state',\n  templateUrl: './empty-search-state.component.html',\n  styleUrls: ['./empty-search-state.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingEmptySearchStateComponent {\n  @Input()\n  searchText?: string;\n\n  @Input()\n  searchHint?: string;\n\n  @Input()\n  searchCustomText?: string;\n}\n","<div class=\"empty-state-wrapper\">\n  <div class=\"empty-icon\">\n    <svg width=\"77\" height=\"73\" viewBox=\"0 0 77 73\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n      <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M75.8868 63.8472L60.2938 48.2542C64.3438 43.0742 66.5688 36.6412 66.5688 30.0872C66.5688 13.7922 53.3128 0.535156 37.0188 0.535156C20.7238 0.535156 7.4668 13.7922 7.4668 30.0872C7.4668 32.4519 7.74602 34.7526 8.27322 36.9581C10.3242 35.678 12.628 34.7649 15.0926 34.311C14.8296 32.9429 14.6918 31.5308 14.6918 30.0872C14.6918 17.7762 24.7078 7.76116 37.0188 7.76116C49.3288 7.76116 59.3438 17.7762 59.3438 30.0872C59.3438 41.9611 50.0258 51.6997 38.318 52.3748C38.3456 52.801 38.3596 53.231 38.3596 53.6642C38.3596 55.7458 38.0364 57.7519 37.4375 59.6351C43.8453 59.5425 50.1152 57.3259 55.1858 53.3622L70.7778 68.9552C71.4608 69.6382 72.3678 70.0142 73.3328 70.0142C74.2978 70.0142 75.2048 69.6382 75.8868 68.9552C76.5688 68.2722 76.9448 67.3652 76.9448 66.4002C76.9448 65.4362 76.5688 64.5292 75.8868 63.8472Z\" fill=\"url(#paint0_linear_4802_23976)\"/>\n      <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18.6802 35.9849C8.91503 35.9849 1 43.9 1 53.6642C1 63.4284 8.91503 71.3435 18.6802 71.3435C28.4445 71.3435 36.3596 63.4284 36.3596 53.6642C36.3596 43.8999 28.4445 35.9849 18.6802 35.9849ZM25.5967 49.5398L21.4657 53.6708L25.5959 57.801C26.3621 58.5687 26.3621 59.8171 25.5967 60.584C25.2221 60.957 24.728 61.1606 24.2041 61.1606C23.6794 61.1606 23.186 60.957 22.8137 60.5862L18.682 56.4538L14.5518 60.5847C13.8042 61.3293 12.5142 61.3278 11.7703 60.5862C11.0019 59.8171 11.0019 58.5687 11.7673 57.8018L15.8983 53.6708L11.7688 49.5406C11.0012 48.7722 11.0019 47.5245 11.7688 46.7576C12.5119 46.0145 13.8094 46.0145 14.5525 46.7576L18.682 50.8878L22.8122 46.7576C23.5539 46.0137 24.8521 46.0137 25.5959 46.7576C26.3621 47.5245 26.3628 48.7722 25.5967 49.5398Z\" fill=\"url(#paint1_linear_4802_23976)\"/>\n      <defs>\n        <linearGradient id=\"paint0_linear_4802_23976\" x1=\"7.46679\" y1=\"0.535156\" x2=\"76.9458\" y2=\"70.0132\" gradientUnits=\"userSpaceOnUse\">\n          <stop stop-color=\"var(--s1-P-10-color)\"/>\n          <stop offset=\"1\" stop-color=\"var(--s1-P-40-color)\"/>\n        </linearGradient>\n        <linearGradient id=\"paint1_linear_4802_23976\" x1=\"0.999998\" y1=\"35.9849\" x2=\"36.3586\" y2=\"71.3444\" gradientUnits=\"userSpaceOnUse\">\n          <stop stop-color=\"var(--s1-D-60-color)\"/>\n          <stop offset=\"1\" stop-color=\"var(--s1-P-60-color)\"/>\n        </linearGradient>\n      </defs>\n    </svg>\n\n  </div>\n  <div\n    *ngIf=\"!searchCustomText; else searchCustomTextTemplate\"\n    class=\"no-results-found-for\"\n    data-mgmtAutomationId=\"noResultsFoundAutId\"\n  >\n    No results found <span *ngIf=\"searchText\">for</span>\n    <span *ngIf=\"searchHint\"><br />{{ searchHint }}</span>\n  </div>\n  <ng-template #searchCustomTextTemplate>\n    <div class=\"no-results-found-for\" data-mgmtAutomationId=\"noResultsFoundAutId\">\n      {{ searchCustomText }}\n    </div>\n  </ng-template>\n  <div *ngIf=\"searchText\" class=\"search-text-wrapper\">\n    <span class=\"double-quote\">\"</span>\n    <span class=\"search-text\" singEllipsis>{{ searchText }}</span>\n    <span class=\"double-quote\">\"</span>\n  </div>\n</div>\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { EventCodeOptions } from '../../../../enums/event-code-options.enum';\nimport { isNil } from 'lodash';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport { Subject, Subscription } from 'rxjs';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { DropDownEventMessagesService } from '../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { filterEventMessageByEventType } from '../services/drop-down-event-messages/drop-down-event-messages.operatoes';\nimport { DropDownEventType } from '../enums/drop-down-event-type.enum';\n\n@Directive({\n  selector: '[singDropDownArrowManager]',\n})\nexport class DropDownArrowManagerDirective implements OnInit, OnDestroy {\n  private readonly ACTIVE_ITEM_CSS_CLASS = 'sing-active-item';\n  private readonly DATA_ITEM_INDEX_ATTRIBUTE = 'data-item-index';\n  private readonly DATA_SING_TRIGGER_BUTTON_ATTRIBUTE = 'data-sing-trigger-button';\n  private readonly ngUnSubscribe: Subject<void> = new Subject<void>();\n  private currentActive: Node;\n  private currentActiveItemIndex: number;\n  private allowIncrementalOrDecrementIndex: boolean;\n  private lockedUpdateHighlightItemOnScroll = false;\n  private allowFocusForActiveItem = false;\n  private subscriptionToScrolledIndexChange: Subscription;\n\n  _viewport: CdkVirtualScrollViewport;\n  @Input('singDropDownArrowManagerViewport')\n  set viewport(viewport: CdkVirtualScrollViewport) {\n    this._viewport = viewport;\n    if (this._viewport) {\n      this.listenToScrolledIndexChange();\n    }\n  }\n\n  get viewport(): CdkVirtualScrollViewport {\n    return this._viewport;\n  }\n\n  @Input('singDropDownArrowManagerLastItemIndex') lastItemIndex: number;\n\n  constructor(\n    private elementRef: ElementRef,\n    public renderer: Renderer2,\n    private dropDownEventMessagesService: DropDownEventMessagesService\n  ) {}\n\n  ngOnInit(): void {\n    this.dropDownEventMessagesService.listen$\n      .pipe(filterEventMessageByEventType(DropDownEventType.SearchValueChanged), takeUntil(this.ngUnSubscribe))\n      .subscribe(this.unsetCurrentActive.bind(this));\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n    if (this.subscriptionToScrolledIndexChange) {\n      this.subscriptionToScrolledIndexChange.unsubscribe();\n    }\n  }\n\n  /**\n   * on arrow down move to the next enable item.\n   * in case nothing active it set the first item as active.\n   *\n   * we are using the preventDefault inorder to prevent from outer scroll\n   * on the viewport to move which will close the dropdown\n   */\n  @HostListener('document:keydown.ArrowDown', ['$event'])\n  onArrowDown(event: KeyboardEvent): void {\n    event.preventDefault();\n    this.preActiveItem(EventCodeOptions.ArrowDown);\n  }\n\n  /**\n   * on arrow up move to the previous enable item.\n   * in case nothing active it set the first item as active.\n   *\n   * we are using the preventDefault inorder to prevent from outer scroll\n   * on the viewport to move which will close the dropdown\n   */\n  @HostListener('document:keydown.ArrowUp', ['$event'])\n  onArrowUp(event: KeyboardEvent): void {\n    event.preventDefault();\n    this.preActiveItem(EventCodeOptions.ArrowUp);\n  }\n\n  /**\n   * Emulate click on the current active item\n   */\n  @HostListener('document:keydown.enter', ['$event'])\n  onEnter(event: KeyboardEvent): void {\n    if (this.currentActive) {\n      if (this.useScrollToIndex()) {\n        // we use it in order to sync the end of the scrollToIndex\n        this.viewport.scrolledIndexChange.pipe(take(1), takeUntil(this.ngUnSubscribe)).subscribe(() => {\n          this.selectItem(event);\n        });\n        this.viewport.scrollToIndex(this.currentActiveItemIndex);\n      } else {\n        this.selectItem(event);\n      }\n    }\n  }\n\n  /**\n   * unset the current active item.\n   * we use it on search change.\n   */\n  private unsetCurrentActive(): void {\n    if (this.currentActive) {\n      this.renderer.removeClass(this.currentActive, this.ACTIVE_ITEM_CSS_CLASS);\n      this.currentActive = null;\n      this.currentActiveItemIndex = null;\n    }\n  }\n\n  /**\n   * before we active item we check if the item in the dom\n   * and if not scroll to it first\n   */\n  private preActiveItem(codeOptions: EventCodeOptions): void {\n    if (this.useScrollToIndex()) {\n      this.lockedUpdateHighlightItemOnScroll = true;\n      // we use it in order to sync the end of the scrollToIndex\n      this.viewport.scrolledIndexChange.pipe(take(1), takeUntil(this.ngUnSubscribe)).subscribe(() => {\n        // We are not increment or decrement the index when the active item is in the edge\n        if (\n          (this.currentActiveItemIndex === 0 && EventCodeOptions.ArrowUp === codeOptions) ||\n          (this.lastItemIndex === this.currentActiveItemIndex && EventCodeOptions.ArrowDown === codeOptions)\n        ) {\n          this.allowIncrementalOrDecrementIndex = false;\n        }\n\n        this.activeItem(codeOptions);\n        this.lockedUpdateHighlightItemOnScroll = false;\n      });\n      this.viewport.scrollToIndex(this.currentActiveItemIndex);\n    } else {\n      this.activeItem(codeOptions);\n    }\n  }\n\n  /**\n   * set active item.\n   */\n  private activeItem(codeOptions: EventCodeOptions): void {\n    // Get all enabled items that user can activate\n    const focusableElements = this.elementRef.nativeElement.querySelectorAll(\n      '[data-sing-drop-down-button-item]:not([disabled])'\n    );\n    // Do nothing in case items not found\n    if (focusableElements?.length) {\n      /**\n       * In case we still dont have active item we set the first one as active item.\n       */\n      if (isNil(this.currentActive)) {\n        this.currentActive = focusableElements[0];\n        this.currentActiveItemIndex = this.getItemIndexAsNumber(this.currentActive);\n        this.allowIncrementalOrDecrementIndex = false;\n      }\n\n      // Find the index of the current active item from the allow active item list\n      let index = -1;\n      focusableElements.forEach((item: Node, _index: number) => {\n        if (this.getItemIndexAsNumber(item) === this.currentActiveItemIndex) {\n          index = _index;\n        }\n      });\n\n      // Do nothing in case item not found\n      if (index > -1) {\n        this.renderer.removeClass(this.currentActive, this.ACTIVE_ITEM_CSS_CLASS);\n        switch (codeOptions) {\n          case EventCodeOptions.ArrowDown: {\n            if (this.allowIncrementalOrDecrementIndex) {\n              ++index;\n            }\n            this.allowIncrementalOrDecrementIndex = true;\n            if (index < focusableElements.length) {\n              this.currentActive = focusableElements[index];\n            }\n            break;\n          }\n          case EventCodeOptions.ArrowUp: {\n            if (this.allowIncrementalOrDecrementIndex) {\n              --index;\n            }\n            this.allowIncrementalOrDecrementIndex = true;\n            if (index > -1) {\n              this.currentActive = focusableElements[index];\n            }\n            break;\n          }\n        }\n        if (this.currentActive) {\n          this.currentActiveItemIndex = this.getItemIndexAsNumber(this.currentActive);\n          /**\n           * the allowFocusForActiveItem will start as false as it will select the first item\n           * and we dont want the focus in this case will move the scroll\n           */\n          if (this.allowFocusForActiveItem) {\n            (this.currentActive as HTMLElement)?.focus();\n          } else if (document.activeElement.hasAttribute(this.DATA_SING_TRIGGER_BUTTON_ATTRIBUTE)) {\n            /**\n             * this code is for edge case where we want to lose focus from the trigger button.\n             * when we have a dropdown without search and for the first arrow we will not set focus to the item\n             * in this case we not lose focus from the trigger button.\n             * Now in case user select the first item and scroll down and then click enter it will not\n             * select the first item since the focus is on the trigger which will close the dropdown.\n             * So in order to solve it we should blur from the trigger element.\n             */\n            (document.activeElement as HTMLElement).blur();\n          }\n          this.allowFocusForActiveItem = true;\n          this.renderer.addClass(this.currentActive, this.ACTIVE_ITEM_CSS_CLASS);\n        }\n        this.backFocusToSearch();\n      }\n    }\n  }\n\n  /**\n   * get the item element index as number\n   */\n  private getItemIndexAsNumber(item: Node): number {\n    let itemIndex;\n    if (item) {\n      const _itemIndex = (item as HTMLElement).getAttribute(this.DATA_ITEM_INDEX_ATTRIBUTE);\n      itemIndex = parseInt(_itemIndex);\n    }\n    return itemIndex;\n  }\n\n  /**\n   * check if we need to use the scroll to index of the cdk virtual scroll.\n   * this use for a case where the user move to one of the items and then he scroll to a place where our active\n   * item is not in the dom and once the user click on one of the arrow (up | down) we should first scroll to the active item\n   * and only then active the next or previous item\n   */\n  private useScrollToIndex(): boolean {\n    const { start, end } = this.viewport.getRenderedRange();\n    const index = isNil(this.currentActiveItemIndex) ? 0 : this.currentActiveItemIndex;\n    return index > end || index < start;\n  }\n\n  /**\n   * listen to scroll index changes in order to decide\n   * if we need to update the highlighted item.\n   *\n   * in case lockedUpdateHighlightItemOnScroll is true it mean\n   * the scroll is not by user scrolling (it programmatically) so on those case\n   * we want to locked this functionality\n   */\n  private listenToScrolledIndexChange(): void {\n    if (this.subscriptionToScrolledIndexChange) {\n      this.subscriptionToScrolledIndexChange.unsubscribe();\n    }\n    this.subscriptionToScrolledIndexChange = this.viewport.scrolledIndexChange\n      .pipe(filter(() => !this.lockedUpdateHighlightItemOnScroll))\n      .subscribe(this.updateHighlightItemOnScroll.bind(this));\n  }\n\n  /**\n   * update the highlighted item on scroll.\n   * we need to add or remove the highlighted item when scroll since the\n   * virtual scroll not change the element item and when user scroll we will see\n   * the wrong highlighted item. in order to fix it we are listening to scroll\n   * and check if the real item is in doom and add back the item to be highlighted\n   * and if it not we remove the highlighted.\n   */\n  private updateHighlightItemOnScroll(): void {\n    const { start, end } = this.viewport.getRenderedRange();\n    if (this.currentActiveItemIndex > end || this.currentActiveItemIndex < start) {\n      const element = document.querySelector(`.${this.ACTIVE_ITEM_CSS_CLASS}`);\n      if (element) {\n        this.renderer.removeClass(element, this.ACTIVE_ITEM_CSS_CLASS);\n      }\n    } else {\n      this.currentActive = document.querySelector(\n        `[${this.DATA_ITEM_INDEX_ATTRIBUTE}=\"${this.currentActiveItemIndex}\"]`\n      );\n      if (this.currentActive) {\n        this.renderer.addClass(this.currentActive, this.ACTIVE_ITEM_CSS_CLASS);\n      }\n    }\n  }\n\n  /**\n   * In case we have search input return the focus to the search input\n   */\n  private backFocusToSearch(): void {\n    this.dropDownEventMessagesService.setSearchOnFocus();\n  }\n\n  /**\n   * select item.\n   * we call this method on enter clicked and there is active item.\n   * in case search input exist we return the focus to it\n   */\n  private selectItem(event: KeyboardEvent): void {\n    event.preventDefault();\n    (this.currentActive as HTMLElement)?.focus();\n    (this.currentActive as HTMLElement)?.click();\n    this.backFocusToSearch();\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { cloneDeep } from 'lodash';\nimport { DropDownItem } from '../models/drop-down-item.interface';\n\n/**\n * Client filter to find items in dropdown.\n */\n@Pipe({\n  name: 'clientDropDownFilterItems',\n})\nexport class DropDownFilterItemsPipe implements PipeTransform {\n  transform(dropDownItems: DropDownItem[], searchValue: string): any {\n    if (!dropDownItems) {\n      return [];\n    }\n    if (!searchValue) {\n      return dropDownItems;\n    }\n    const newValues = dropDownItems.filter((item: DropDownItem) => {\n      return item.title.toLowerCase().trim().includes(searchValue.toLowerCase().trim());\n    });\n    return cloneDeep(newValues);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { cloneDeep } from 'lodash';\nimport { DropDownItem } from '../models/drop-down-item.interface';\n\n/**\n * Client ASC sort\n * In order to sort our dropdown items ASC.\n * NOTE should be used when the given dropdown items are from client and not server side.\n */\n@Pipe({\n  name: 'ascSort',\n})\nexport class AscSortPipe implements PipeTransform {\n  transform(dropDownItems: DropDownItem[], allowSorting: boolean): any {\n    let ascSortedItems = cloneDeep(dropDownItems);\n    if (allowSorting) {\n      if (!dropDownItems) {\n        return [];\n      }\n      ascSortedItems = dropDownItems.sort((itemA, ItemB) => {\n        return itemA.title.toLowerCase() > ItemB.title.toLowerCase() ? 1 : -1;\n      });\n    }\n    return cloneDeep(ascSortedItems);\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostListener,\n  Input,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  Type,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef,\n} from '@angular/core';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { EventCodeOptions } from '../../../../../enums/event-code-options.enum';\nimport { DropDownEventMessagesService } from '../../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { PaginatorPage } from '../../../../data-table/paginator/models/paginator-page.interface';\nimport { ServerSideOptions } from '../../models/drop-down-server-options.interface';\nimport { DropDownOptions } from '../../models/drop-down-options.interface';\nimport { DynamicDropDownItemContainerComponent } from '../dynamic-drop-down-item-container/dynamic-drop-down-item-container.component';\nimport { hasNestedItems } from '../../utils/drop-down.utils';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { timeout } from '../../../../../decorators/set-timeout.decorator';\nimport { SelectedItemsState } from '../../utils/selected-items-state.utils';\n\n@Component({\n  selector: 'sing-default-drop-down-items',\n  templateUrl: './default-drop-down-items.component.html',\n  styleUrls: ['./default-drop-down-items.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultDropDownItemsComponent implements AfterViewInit {\n  private _items: DropDownItem[] = [];\n  @Input()\n  set items(items: DropDownItem[]) {\n    this._items = items ? items : [];\n    this.hasNestedItems = hasNestedItems(this._items);\n    this.showLoader = false;\n    this.cdr.markForCheck();\n    this.crateKeyManager();\n  }\n\n  get items(): DropDownItem[] {\n    return this._items;\n  }\n\n  private _dropDownOptions: DropDownOptions;\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    this._dropDownOptions = dropDownOptions;\n    this.cdr.markForCheck();\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  private _serverSideOptions: ServerSideOptions;\n  @Input()\n  set serverSideOptions(serverSideOptions: ServerSideOptions) {\n    if (serverSideOptions) {\n      this._serverSideOptions = serverSideOptions;\n      this.calcVirtualScrollViewportHeight();\n      this.cdr.markForCheck();\n    }\n  }\n\n  get serverSideOptions(): ServerSideOptions {\n    return this._serverSideOptions;\n  }\n\n  private _isServerSide = false;\n  @Input()\n  set isServerSide(isServerSide: boolean) {\n    this._isServerSide = isServerSide;\n  }\n\n  get isServerSide(): boolean {\n    return this._isServerSide;\n  }\n\n  private _isNestedServerSideMenu = false;\n  @Input()\n  set isNestedServerSideMenu(isNestedServerSideMenu: boolean) {\n    this._isNestedServerSideMenu = isNestedServerSideMenu;\n  }\n\n  get isNestedServerSideMenu(): boolean {\n    return this._isNestedServerSideMenu;\n  }\n\n  private _searchValue = '';\n  @Input()\n  set searchValue(searchValue: string) {\n    this._searchValue = searchValue;\n    this.showLoader = true;\n    this.selectedPage = 1;\n    this.scrollToTop();\n    this.cdr.markForCheck();\n    this.crateKeyManager();\n  }\n\n  get searchValue(): string {\n    return this._searchValue;\n  }\n\n  private _selectedItemsState: SelectedItemsState;\n  @Input()\n  set selectedItemsState(selectedItemsState: SelectedItemsState) {\n    this._selectedItemsState = selectedItemsState;\n  }\n\n  get selectedItemsState(): SelectedItemsState {\n    return this._selectedItemsState;\n  }\n\n  @Input() nextCursor: string;\n\n  private _childrenItems: any;\n  @ViewChildren(DynamicDropDownItemContainerComponent)\n  set childrenItems(childrenItems: QueryList<any>) {\n    this._childrenItems = childrenItems.filter((item) => {\n      return !item.item.disabled;\n    });\n  }\n\n  get childrenItems(): QueryList<any> {\n    return this._childrenItems;\n  }\n\n  @Input() menuIndexNumber: number;\n\n  @Input() itemTemplateRef: TemplateRef<any>;\n  @Input() itemComponent: Type<any>;\n  @Input() isGivenItemsNil: boolean;\n\n  public showLoader = false;\n  public selectedPage = 1;\n  public virtualScrollViewportHeight: number;\n  private keyManager: ActiveDescendantKeyManager<DynamicDropDownItemContainerComponent>;\n  private hasNestedItems = false;\n  private lookGetMoreItems = false;\n  readonly itemHeight = 40;\n\n  get viewContainerNativeElement(): any {\n    return this.viewContainerRef?.element?.nativeElement;\n  }\n\n  @ViewChild(CdkVirtualScrollViewport) viewport: CdkVirtualScrollViewport;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private dropDownEventMessagesService: DropDownEventMessagesService,\n    private viewContainerRef: ViewContainerRef,\n    private renderer: Renderer2\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.initViewContainerMinHeight();\n    this.crateKeyManager();\n  }\n\n  /**\n   * track by value\n   * @param index\n   * @param item\n   */\n  trackById(index, item: any): string {\n    return (item as DropDownItem).value;\n  }\n\n  @timeout()\n  crateKeyManager(): void {\n    if (this.preventKeyManager()) return;\n    if (this.keyManager) {\n      const newKeyManager = new ActiveDescendantKeyManager(this.childrenItems).withWrap();\n      newKeyManager.setActiveItem(this.keyManager.activeItem);\n      this.keyManager = newKeyManager;\n    } else {\n      this.keyManager = new ActiveDescendantKeyManager(this.childrenItems).withWrap();\n    }\n  }\n\n  /**\n   * Handle key events (listen to keydown from all elements)\n   * We support Enter, Arrow Down, Arrow Up\n   * - ArrowDown, ArrowUp will move selection to show the active item\n   * - Enter to select item\n   */\n  @HostListener('document:keydown', ['$event']) onKeydownHandler(event) {\n    /**\n     * prevent using key events in case of a nested dropdown.\n     */\n    if (this.preventKeyManager()) return;\n    if (event.code === EventCodeOptions.Enter) {\n      if (this.keyManager.activeItem) {\n        event.preventDefault();\n        this.dropDownEventMessagesService.itemClicked(this.keyManager.activeItem.item);\n      }\n    } else if (event.code === EventCodeOptions.ArrowDown || event.code === EventCodeOptions.ArrowUp) {\n      this.keyManager.onKeydown(event);\n      this.keyManager.activeItem?.dropdownItemElementRef.nativeElement.scrollIntoView();\n    } else {\n      // Do Nothing\n    }\n  }\n\n  /**\n   * when user clicked on a page\n   * @param page\n   */\n  pageChanged(page: PaginatorPage): void {\n    this.showLoader = true;\n    this.selectedPage = page.pageNumber;\n    if (this.isNestedServerSideMenu) {\n      this.dropDownEventMessagesService.nestedPageChanged(page, this.menuIndexNumber);\n    } else {\n      this.dropDownEventMessagesService.pageChanged(page);\n    }\n  }\n\n  /**\n   * calc the virtual scroll viewport height\n   */\n  calcVirtualScrollViewportHeight(): void {\n    if (this.serverSideOptions) {\n      const itemsContainerHeight = this.serverSideOptions.maxServerItems * this.itemHeight;\n      this.virtualScrollViewportHeight = Math.floor(itemsContainerHeight - itemsContainerHeight / 2);\n      if (this.virtualScrollViewportHeight > 400) {\n        this.virtualScrollViewportHeight = 400;\n      }\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   * scroll to top.\n   */\n  scrollToTop(): void {\n    if (this.viewport && (this.serverSideOptions?.useInfiniteScroll || this.dropDownOptions?.useInfiniteScroll)) {\n      this.viewport.scrollToOffset(0, 'auto');\n    }\n  }\n\n  /**\n   * get more items from server\n   */\n  getMoreItems(): void {\n    if (!this.lookGetMoreItems) {\n      const end = this.viewport.getRenderedRange().end;\n      const total = this.viewport.getDataLength();\n      const shouldGetMore = end === total;\n\n      if (\n        shouldGetMore &&\n        !this.showLoader &&\n        ((!this.serverSideOptions.useInfiniteScrollTotalItems && this.nextCursor) ||\n          (this.serverSideOptions.useInfiniteScrollTotalItems &&\n            this.items.length < this.serverSideOptions.paginationOptions.totalServerEntities))\n      ) {\n        this.showLoader = true;\n        this.dropDownEventMessagesService.getMoreItems();\n      }\n    }\n  }\n\n  /**\n   * prevent key manager in case\n   * dropdown has nested items or uses infinite scroll\n   */\n  preventKeyManager(): boolean {\n    return !!(\n      this.hasNestedItems ||\n      this.serverSideOptions?.useInfiniteScroll ||\n      this.dropDownOptions?.useInfiniteScroll\n    );\n  }\n\n  /**\n   * init the view container min-height style for infinite scroll.\n   * we do this in order to prevent UI height jump when the user is searching.\n   * once viewContainerNativeElement exists, we get its height and use it for min-height\n   */\n  initViewContainerMinHeight(): void {\n    if (this.serverSideOptions?.useInfiniteScroll) {\n      setTimeout(() => {\n        const viewContainerHeight = this.viewContainerNativeElement?.getBoundingClientRect()?.height;\n        if (viewContainerHeight) {\n          this.renderer.setStyle(this.viewContainerNativeElement, 'min-height', `${viewContainerHeight}px`);\n        }\n      }, 200);\n    }\n  }\n}\n","<!--Server Side-->\n<ng-container *ngIf=\"isServerSide; else clientSide\">\n  <ng-container *ngIf=\"serverSideOptions?.useInfiniteScroll; then  infiniteScroll else pagination\"></ng-container>\n\n  <!--Server Side Infinite Scroll-->\n  <ng-template #infiniteScroll>\n    <ng-container *ngIf=\"items?.length\">\n      <cdk-virtual-scroll-viewport\n        singDropDownArrowManager\n        [singDropDownArrowManagerViewport]=\"viewport\"\n        [singDropDownArrowManagerLastItemIndex]=\"serverSideOptions?.paginationOptions?.totalServerEntities - 1\"\n        data-mgmtautomationid=\"cdk-virtual-scroll-viewport\"\n        [itemSize]=\"itemHeight\"\n        [style.height.px]=\"virtualScrollViewportHeight\"\n        (scrolledIndexChange)=\"getMoreItems()\">\n        <ng-container *cdkVirtualFor=\"let item of items; trackBy: trackById; let index = index\">\n          <ng-container\n            *ngTemplateOutlet=\"itemTemplate;  context: {item: item, index: index }\"\n          ></ng-container>\n        </ng-container>\n      </cdk-virtual-scroll-viewport>\n      <sing-loader\n        *ngIf=\"showLoader\">\n      </sing-loader>\n    </ng-container>\n  </ng-template>\n\n  <!--Server Side Pagination-->\n  <ng-template #pagination>\n    <ng-container *ngIf=\"items?.length && !showLoader\">\n      <ng-container *ngFor=\"let item of items; trackBy: trackById; let index = index\">\n        <ng-container\n          *ngTemplateOutlet=\"itemTemplate;  context: {item: item, index: index }\"\n        ></ng-container>\n      </ng-container>\n      <!--Pagination-->\n      <sing-paginator\n        data-mgmtAutomationId=\"pagination_dropdown\"\n        [id]=\"'pagination_dropdown'\"\n        [maxVisiblePages]=\"serverSideOptions?.paginationOptions?.maxVisiblePages\"\n        [totalServerEntities]=\"serverSideOptions?.paginationOptions?.totalServerEntities\"\n        [numOfEntityPerPage]=\"serverSideOptions?.maxServerItems\"\n        [selectedPage]=\"selectedPage\"\n\n        (pageChange)=\"pageChanged($event)\">\n      </sing-paginator>\n    </ng-container>\n    <sing-loader\n      *ngIf=\"showLoader\">\n    </sing-loader>\n  </ng-template>\n\n  <!--Empty Search-->\n  <sing-empty-search-state\n    *ngIf=\"!showLoader && !items?.length\"\n    data-mgmtautomationid=\"empty-search-state\"\n    [searchText]=\"searchValue\"\n  ></sing-empty-search-state>\n</ng-container>\n\n<!--Client Side-->\n<ng-template #clientSide>\n  <ng-container *ngIf=\"items | ascSort : dropDownOptions?.useClientSideAscSort | clientDropDownFilterItems: searchValue as ddItems\">\n\n    <ng-container *ngIf=\"dropDownOptions?.useInfiniteScroll; then  clientInfiniteScroll else clientPagination\"></ng-container>\n\n    <!--Client Side Regular Scroll-->\n    <ng-template #clientPagination>\n      <!--Dropdown Items-->\n      <ng-container *ngIf=\"ddItems?.length; else loaderOrEmptySearch\">\n        <ng-container *ngFor=\"let item of ddItems; trackBy: trackById; let index = index\">\n          <ng-container\n            *ngTemplateOutlet=\"itemTemplate;  context: {item: item, index: index }\"\n          ></ng-container>\n        </ng-container>\n      </ng-container>\n    </ng-template>\n\n    <!--Client Side Infinite Scroll-->\n    <ng-template #clientInfiniteScroll>\n      <ng-container *ngIf=\"ddItems?.length || isGivenItemsNil; else loaderOrEmptySearch\">\n        <ng-container *ngIf=\"ddItems?.length; else loader\"></ng-container>\n        <cdk-virtual-scroll-viewport\n          data-mgmtautomationid=\"cdk-virtual-scroll-viewport\"\n          singDropDownArrowManager\n          [singDropDownArrowManagerViewport]=\"viewport\"\n          [singDropDownArrowManagerLastItemIndex]=\"ddItems?.length - 1\"\n          [itemSize]=\"itemHeight\"\n          [style.height.px]=\"dropDownOptions?.virtualScrollViewportHeight\">\n          <ng-container *cdkVirtualFor=\"let item of ddItems; trackBy: trackById; let index = index\">\n            <ng-container\n              *ngTemplateOutlet=\"itemTemplate;  context: {item: item, index: index }\"\n            ></ng-container>\n          </ng-container>\n        </cdk-virtual-scroll-viewport>\n        <ng-template #loader>\n          <sing-loader></sing-loader>\n        </ng-template>\n      </ng-container>\n    </ng-template>\n\n    <ng-template #loaderOrEmptySearch>\n      <!--Empty Search-->\n      <sing-empty-search-state\n        *ngIf=\"searchValue?.length || ddItems?.length === 0; else loader\"\n        data-mgmtautomationid=\"empty-search-state\"\n        [searchText]=\"searchValue\"\n        [searchCustomText]=\"dropDownOptions?.noItemsText\"\n      ></sing-empty-search-state>\n\n      <!--Loader -->\n      <ng-template #loader>\n        <sing-loader>\n        </sing-loader>\n      </ng-template>\n    </ng-template>\n\n  </ng-container>\n</ng-template>\n\n<!--Item Template-->\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\n  <sing-dynamic-drop-down-item-container\n    [automationItemId]=\"item?.automationId || 'DropdownRawNumber' + index\"\n    [class]=\"item?.itemContainerClass\"\n    [dropDownOptions]=\"dropDownOptions\"\n    [item]=\"item\"\n    [itemIndex]=\"index\"\n    [menuIndexNumber]=\"menuIndexNumber\"\n    [searchValue]=\"searchValue\"\n    [selectedItemsState]=\"selectedItemsState\"\n    [itemTemplateRef]=\"itemTemplateRef\"\n    [itemComponent]=\"itemComponent\"\n  ></sing-dynamic-drop-down-item-container>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { DropDownEventMessagesService } from '../../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { ServerSideOptions } from '../../models/drop-down-server-options.interface';\nimport { DropDownOptions } from '../../models/drop-down-options.interface';\nimport { SelectedItemsState } from '../../utils/selected-items-state.utils';\nimport { DropDownSearchComponent } from '../drop-down-search/drop-down-search.component';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport { isAllItemSelected, isAllItemsUnSelected } from '../../utils/drop-down.utils';\nimport { EventCodeOptions } from '../../../../../enums/event-code-options.enum';\nimport { isNil } from 'lodash';\n\n/**\n * NOTE: dont remove the below dynamic. it is used for the injection of\n *  @Inject(DOCUMENT) private document: Document,\n * read more here https://github.com/angular/angular/issues/20351\n */\n/** @dynamic */\n@Component({\n  selector: 'sing-default-drop-down-menu-container',\n  templateUrl: './default-drop-down-menu-container.component.html',\n  styleUrls: ['./default-drop-down-menu-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultDropDownMenuContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n  protected _items: DropDownItem[] = [];\n  @Input()\n  set items(items: DropDownItem[]) {\n    this.isGivenItemsNil = isNil(items);\n    this._items = items ? items : [];\n    this.cdr.markForCheck();\n  }\n\n  get items(): DropDownItem[] {\n    return this._items;\n  }\n\n  private _dropDownOptions;\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    this._dropDownOptions = dropDownOptions;\n    if (dropDownOptions?.automationIdPrefix) {\n      this.hostAutomationId = `${dropDownOptions.automationIdPrefix}-dropdown-menu`;\n    }\n    this.cdr.markForCheck();\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  protected _serverSideOptions;\n  @Input()\n  set serverSideOptions(serverSideOptions: ServerSideOptions) {\n    this._serverSideOptions = serverSideOptions;\n    this.cdr.markForCheck();\n  }\n\n  get serverSideOptions(): ServerSideOptions {\n    return this._serverSideOptions;\n  }\n\n  private _isServerSide = false;\n  @Input()\n  set isServerSide(isServerSide: boolean) {\n    this._isServerSide = isServerSide;\n    this.cdr.markForCheck();\n  }\n\n  get isServerSide(): boolean {\n    return this._isServerSide;\n  }\n\n  private _selectedItemsState: SelectedItemsState;\n  @Input()\n  set selectedItemsState(selectedItemsState: SelectedItemsState) {\n    if (Object.keys(selectedItemsState).length) {\n      this._selectedItemsState = selectedItemsState;\n      this.isAllItemsUnSelected = isAllItemsUnSelected(this._selectedItemsState, this.isServerSide, this.items);\n      this.isAllItemsSelected = isAllItemSelected(this._selectedItemsState, this.isServerSide, this.items);\n      this.cdr.markForCheck();\n    }\n  }\n\n  get selectedItemsState(): SelectedItemsState {\n    return this._selectedItemsState;\n  }\n\n  @Input() menuIndexNumber: number;\n\n  @Input() nextCursor;\n\n  @Input() isSelectionChangedSubscribedOnHost: boolean;\n\n  @Input() isUsedAsReactiveForm: boolean;\n\n  @Input() itemTemplateRef: TemplateRef<any>;\n  @Input() footerTemplateRef: TemplateRef<any>;\n\n  get viewContainerRefElement(): HTMLElement {\n    return this.viewContainerRef.element.nativeElement;\n  }\n\n  /**\n   * property indicator in order to show or hide the selection actions container.\n   */\n  get showSelectionActionContainer(): boolean {\n    return this.menuIndexNumber === 1;\n  }\n\n  /**\n   * property indicator in order to show or hide the select all action.\n   * The select all will NOT display in case\n   * - single select dropdown\n   * - showSelectAll is false\n   * - server side and reactive form dropdown\n   * - server side dropdown and @Output() selectionChanged is subscribed by host\n   */\n  get showSelectAll(): boolean {\n    const isMultipleSelection = this.dropDownOptions.isMultipleSelection ?? false;\n    const showSelectAll = this.dropDownOptions.showSelectAll ?? false;\n    const isServerSideAndReactiveFormDropdown = this.isServerSide && this.isUsedAsReactiveForm;\n    const isServerSideAndSelectionChangedSubscribedOnHost =\n      this.isServerSide && this.isSelectionChangedSubscribedOnHost;\n    return (\n      isMultipleSelection &&\n      showSelectAll &&\n      !isServerSideAndReactiveFormDropdown &&\n      !isServerSideAndSelectionChangedSubscribedOnHost\n    );\n  }\n\n  searchValue = '';\n  isAllItemsUnSelected = false;\n  isAllItemsSelected = false;\n  showSearch = false;\n  isGivenItemsNil = false;\n  protected ngUnSubscribe: Subject<void> = new Subject<void>();\n  @HostBinding('class.resizable') resizable = false;\n  @HostBinding('attr.data-mgmtautomationid') hostAutomationId: string;\n\n  @ViewChild(DropDownSearchComponent) searchComponentRef: DropDownSearchComponent;\n\n  constructor(\n    protected renderer: Renderer2,\n    protected cdr: ChangeDetectorRef,\n    public dropDownEventMessagesService: DropDownEventMessagesService,\n    @Inject(DOCUMENT) protected document: Document,\n    public viewContainerRef: ViewContainerRef\n  ) {}\n\n  ngOnInit(): void {\n    this.listenToMouseUpOrDownEvents();\n    this.resizable = this.dropDownOptions.resizable && this.menuIndexNumber === 1;\n    this.listenToEscape();\n  }\n\n  ngAfterViewInit(): void {\n    this.setResizableStyle();\n    this.setMaxWidthForResizeable();\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * we listen to click on the host which is our mat menu in order to prevent\n   * closing the menu on click\n   * @param $event\n   */\n  @HostListener('click', ['$event']) onMouseDown($event) {\n    $event.stopPropagation();\n  }\n\n  /**\n   * listen to mouseup and mousedown events\n   * when dropdown supports resizable options.\n   * - on mousedown we update the isResizing to true\n   * - on mouseup we update the isResizing to false\n   *\n   * we do this since we want to prevent closing of the menu on the end of resizing\n   */\n  listenToMouseUpOrDownEvents(): void {\n    if (this.dropDownOptions.resizable) {\n      const mouseup$ = fromEvent(this.document, 'mouseup').pipe(takeUntil(this.ngUnSubscribe));\n      const mousedown$ = fromEvent(this.viewContainerRefElement, 'mousedown').pipe(takeUntil(this.ngUnSubscribe));\n      mouseup$.subscribe(() => {\n        setTimeout(() => this.dropDownEventMessagesService.updateIsResizing(false));\n      });\n      mousedown$.subscribe(() => this.dropDownEventMessagesService.updateIsResizing(true));\n    }\n  }\n\n  /**\n   * on search change we update the searchValue property\n   * so we can pass it to the empty search component\n   */\n  searched(value: string) {\n    this.searchValue = value;\n    this.cdr.markForCheck();\n    this.dropDownEventMessagesService.searchValueChanged(this.searchValue);\n    /**\n     * we are losing focus when sub menu closes on search changed.\n     * so in order to keep the search in focus, we need to use the setTimeout in order to let sub menu close\n     * first and then return search to focus\n     */\n    setTimeout(() => {\n      const isSearchInFocus = document.activeElement === this.searchComponentRef.searchTextBoxElement.nativeElement;\n      if (!isSearchInFocus) {\n        this.searchComponentRef.searchTextBoxElement.nativeElement.focus();\n      }\n    });\n  }\n\n  /**\n   * set max width for resizeable dropdown.\n   * in case we get max-width on resizableStyle and it is smaller than the maxWidth we set\n   * the given max-width\n   */\n  setMaxWidthForResizeable(): void {\n    let givenMaxWidth = this.dropDownOptions?.resizableStyle?.['max-width'];\n    if (typeof givenMaxWidth === 'string') {\n      givenMaxWidth = parseInt(givenMaxWidth);\n    }\n\n    if (this.resizable) {\n      setTimeout(() => {\n        const containerRefBox = this.viewContainerRefElement.getBoundingClientRect();\n        let maxWidth = window.innerWidth - containerRefBox.right + containerRefBox.width - 20;\n        if (givenMaxWidth && typeof givenMaxWidth === 'number' && givenMaxWidth < maxWidth) {\n          maxWidth = givenMaxWidth;\n        }\n\n        if (maxWidth) {\n          this.renderer.setStyle(this.viewContainerRefElement, 'max-width', `${maxWidth}px`);\n        }\n      });\n    }\n  }\n\n  /**\n   * set given dropdown style in case of resizable dropdown\n   */\n  setResizableStyle(): void {\n    if (this.resizable && this?.dropDownOptions.resizableStyle) {\n      Object.keys(this.dropDownOptions.resizableStyle).forEach((style: string) => {\n        this.renderer.setStyle(this.viewContainerRefElement, style, this.dropDownOptions.resizableStyle[style]);\n      });\n    }\n  }\n\n  /**\n   * listen to escape and send message to close the dropdown\n   */\n  listenToEscape(): void {\n    fromEvent(document, 'keydown', { capture: true })\n      .pipe(\n        filter((event: any) => event.code === EventCodeOptions.Escape),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe((event: Event) => {\n        event.stopPropagation();\n        this.dropDownEventMessagesService.escapeClicked();\n      });\n  }\n}\n","<!--Search-->\n<sing-drop-down-search\n  (searched)='searched($event)'\n  *ngIf='menuIndexNumber > 1 ? false :dropDownOptions.showSearch'\n  [minNumOfChars]='dropDownOptions?.searchMinNumOfChars'\n  [searchDebounceTime]='dropDownOptions?.searchDebounceTime'\n  data-mgmtautomationid='SearchButton'>\n</sing-drop-down-search>\n\n<div class=\"selection-action-container\" *ngIf=\"showSelectionActionContainer\">\n  <!--Select All-->\n  <button\n    *ngIf=\"showSelectAll\"\n    [disabled]=\"isAllItemsSelected || searchValue.length > 0 || items?.length === 0\"\n    data-mgmtautomationid=\"dropdown-select-all\"\n    class=\"select-all-button s1-btn-large-primary-link\"\n    type=\"button\"\n    (click)=\"dropDownEventMessagesService.selectAll()\">\n    Select All\n  </button>\n\n  <!--Clear Selected-->\n  <button\n    *ngIf=\"dropDownOptions?.showClearSelected\"\n    [disabled]=\"isAllItemsUnSelected || searchValue.length > 0\"\n    data-mgmtautomationid=\"dropdown-reset-selection\"\n    class=\"clear-selected-button s1-btn-large-primary-link\"\n    type=\"button\"\n    (click)=\"dropDownEventMessagesService.clearSelected()\">\n    Clear\n  </button>\n</div>\n\n<!--Dropdown Items-->\n<sing-default-drop-down-items\n  data-dont-close-dropdown-on-scroll\n  [attr.data-mgmtAutomationId]=\"'menu-items-container-' + menuIndexNumber\"\n  [class.virtual-scroll]=\"serverSideOptions?.useInfiniteScroll || dropDownOptions?.useInfiniteScroll\"\n  [items]=\"items\"\n  [isGivenItemsNil]=\"isGivenItemsNil\"\n  [dropDownOptions]=\"dropDownOptions\"\n  [serverSideOptions]=\"serverSideOptions\"\n  [isServerSide]=\"isServerSide\"\n  [selectedItemsState]=\"selectedItemsState\"\n  [searchValue]=\"searchValue\"\n  [menuIndexNumber]=\"menuIndexNumber\"\n  [nextCursor]=\"nextCursor\"\n  [itemTemplateRef]=\"itemTemplateRef\">\n</sing-default-drop-down-items>\n\n<ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\n","import { Injectable } from '@angular/core';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { Subject } from 'rxjs';\nimport { MenuTriggerLevelRef } from '../models/drop-down-menu-trigger-level-ref.interface';\n\n/**\n * NOTE: this service is generally for internal-use.\n * It is intended to be used externally only for dropdowns which require nested functionality with the custom itemComponent option.\n */\n\n/**\n * handle sub menu.\n * on hover item we should decide if we need to close sub menu.\n */\n@Injectable()\nexport class NestedMenuStateService {\n  private readonly triggerItemToHighlighted = new Subject<any>();\n  public readonly triggerItemToHighlighted$ = this.triggerItemToHighlighted.asObservable();\n\n  /**\n   * this object\n   *\n   * For example\n   * menuTriggerLevelRef = {\n   *   \"1\": {itemId: \"111\", menuTriggerRef: {...}, menuLevel: 1},\n   *   \"2\": {itemId: \"222\", menuTriggerRef: {...}, menuLevel: 2},\n   * }\n   */\n  private menuTriggerLevelRef: Record<string, MenuTriggerLevelRef> = {};\n\n  /**\n   * check if the sub menu needs to be closed. if yes, close and update the menuTriggerLevelRef\n   * @param itemId\n   * @param menuTriggerRef will be null in case the item doesn't have a sub menu\n   * @param menuLevel\n   */\n  public handleSubMenu(itemId: string, menuTriggerRef: MatMenuTrigger | null, menuLevel: number): void {\n    const isClosedDone = this.closeSubMenuIfNeed(itemId, menuLevel);\n    if (menuTriggerRef) {\n      this.menuTriggerLevelRef[menuLevel] = { itemId, menuTriggerRef, menuLevel };\n    } else {\n      delete this.menuTriggerLevelRef[menuLevel];\n    }\n    if (isClosedDone) {\n      this.removeUnUsedEntryPoint(menuLevel);\n    }\n    const activeItemMapIds = this.getActiveItemAsMapIds();\n    this.triggerItemToHighlighted.next(activeItemMapIds);\n  }\n\n  /**\n   * reset menuTriggerLevelRef\n   */\n  public reset() {\n    this.menuTriggerLevelRef = {};\n  }\n\n  /**\n   * get active items as map ids object\n   */\n  private getActiveItemAsMapIds(): Record<string, boolean> {\n    return Object.keys(this.menuTriggerLevelRef).reduce((map: Record<string, boolean>, key: string) => {\n      map[this.menuTriggerLevelRef[key].itemId] = true;\n      return map;\n    }, {});\n  }\n\n  /**\n   * close sub menu if need.\n   * @param itemId\n   * @param menuLevel\n   */\n  private closeSubMenuIfNeed(itemId: string, menuLevel: number): boolean {\n    let isCloseDone = false;\n    if (this.menuTriggerLevelRef.hasOwnProperty(menuLevel) && this.menuTriggerLevelRef[menuLevel].itemId !== itemId) {\n      this.menuTriggerLevelRef?.[menuLevel]?.menuTriggerRef?.closeMenu();\n      isCloseDone = true;\n    }\n    return isCloseDone;\n  }\n\n  /**\n   * remove unused entry point from menuTriggerLevelRef.\n   * For example\n   * menuTriggerLevelRef = {\n   *   \"1\": {itemId: \"111\", menuTriggerRef: {...}, menuLevel: 1},\n   *   \"2\": {itemId: \"222\", menuTriggerRef: {...}, menuLevel: 2},\n   *   \"3\": {itemId: \"333\", menuTriggerRef: {...}, menuLevel: 3},\n   * }\n   *\n   * and we get menuLevel = 1\n   * we will remove 2,3 entry point\n   * Result:\n   *  menuTriggerLevelRef = {\n   *   \"1\": {itemId: \"111\", menuTriggerRef: {...}, menuLevel: 1}\n   * }\n   *\n   */\n  removeUnUsedEntryPoint(menuLevel: number): void {\n    Object.keys(this.menuTriggerLevelRef).forEach((key) => {\n      if (menuLevel < this.menuTriggerLevelRef[key].menuLevel) {\n        this.menuTriggerLevelRef[key].menuTriggerRef = null;\n        delete this.menuTriggerLevelRef[key];\n      }\n    });\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'dropDownCapitalizeFirstLetter',\n})\nexport class DropDownCapitalizeFirstLetterPipe implements PipeTransform {\n  transform(value: string, capitalize: boolean): unknown {\n    if (value && capitalize) {\n      value = value[0].toUpperCase() + value.slice(1);\n    }\n    return value;\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  TemplateRef,\n  Type,\n  ViewChild,\n} from '@angular/core';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { createDropDownOptions, isLinkItem } from '../../utils/drop-down.utils';\nimport { DropDownEventMessagesService } from '../../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { DropDownOptions } from '../../models/drop-down-options.interface';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { NestedMenuStateService } from '../../services/nested-menu-state.service';\nimport { map } from 'rxjs/operators';\nimport Mark from 'mark.js';\nimport { SelectedItemsState } from '../../utils/selected-items-state.utils';\nimport { DropDownChildOptions } from '../../models/drop-down-child-options.interface';\nimport { ServerSideOptions } from '../../models/drop-down-server-options.interface';\nimport { Observable } from 'rxjs';\nimport { DefaultTriggerComponent } from '../default-trigger/default-trigger.component';\n\n@Component({\n  selector: 'sing-default-drop-down-item',\n  templateUrl: './default-drop-down-item.component.html',\n  styleUrls: ['./default-drop-down-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: true,\n})\nexport class DefaultDropDownItemComponent implements AfterViewInit {\n  private _item: DropDownItem;\n  itemOption: string;\n\n  @Input()\n  set item(item: DropDownItem) {\n    this._item = item;\n    this.setItemOption();\n    this.cdr.markForCheck();\n  }\n\n  get item(): DropDownItem {\n    return this._item;\n  }\n\n  private _showSelectedMarker = false;\n  @Input()\n  set showSelectedMarker(showSelectedMarker: boolean) {\n    this._showSelectedMarker = showSelectedMarker && !this.isLink;\n    this.cdr.markForCheck();\n  }\n\n  get showSelectedMarker(): boolean {\n    return this._showSelectedMarker;\n  }\n\n  private _capitalize = true;\n  @Input()\n  set capitalize(capitalize: boolean) {\n    this._capitalize = capitalize;\n    this.cdr.markForCheck();\n  }\n\n  get capitalize(): boolean {\n    return this._capitalize;\n  }\n\n  get isLink(): boolean {\n    return isLinkItem(this._item);\n  }\n\n  private _dropDownOptions: DropDownOptions;\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    this._dropDownOptions = dropDownOptions;\n    this.cdr.markForCheck();\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  _searchValue: string;\n  @Input()\n  set searchValue(searchValue: string) {\n    this.lookHighlight = false;\n    this._searchValue = searchValue;\n    this.highlightSearchedValue();\n  }\n\n  get searchValue(): string {\n    return this._searchValue;\n  }\n\n  private _selectedItemsState: SelectedItemsState;\n  @Input()\n  set selectedItemsState(selectedItemsState: SelectedItemsState) {\n    this._selectedItemsState = selectedItemsState;\n  }\n\n  get selectedItemsState(): SelectedItemsState {\n    return this._selectedItemsState;\n  }\n\n  get childServerSideMenuOptions(): DropDownChildOptions {\n    return this.item?.childServerSideOptions?.menuOptions;\n  }\n\n  get childServerSideOptions(): ServerSideOptions {\n    return this.item?.childServerSideOptions?.serverSideOptions;\n  }\n\n  get childServerSideItemComponent(): Type<any> {\n    return this.item?.childServerSideOptions?.itemComponent;\n  }\n\n  @Input() menuIndexNumber: number;\n  @Input() itemIndex: number;\n  @Input() itemTemplateRef: TemplateRef<any>;\n\n  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n  @ViewChild(MatMenuTrigger, { read: ElementRef }) triggerElementRef: ElementRef;\n  @ViewChild('itemTitle', { read: ElementRef }) itemTitle: ElementRef;\n  @ViewChild('itemTitleLink', { read: ElementRef }) itemTitleLink: ElementRef;\n  @ViewChild('customItem', { read: ElementRef }) itemTemplate;\n\n  isTriggerItemShouldHighlighted$: Observable<boolean> = this.nestedMenuStateService.triggerItemToHighlighted$.pipe(\n    map((activeItemMapIds) => activeItemMapIds.hasOwnProperty(this.item.value))\n  );\n\n  lookHighlight = false;\n\n  /**\n   * ref to regular item element\n   */\n  get itemTitleElm(): HTMLElement | undefined {\n    return this.itemTitle?.nativeElement;\n  }\n\n  /**\n   * ref to link item element\n   */\n  get itemTitleLinkElm(): HTMLElement | undefined {\n    return this.itemTitleLink?.nativeElement;\n  }\n\n  /**\n   * ref to template item element\n   */\n  get itemTitleTemplateElm(): HTMLElement | undefined {\n    const itemTitleElm = this.itemTemplate.nativeElement.parentElement.querySelector('.item-template-ref');\n    if (!itemTitleElm) {\n      console.error(\n        '[DefaultDropDownItemComponent] itemTemplateRef should have html element which include class=\"item-template-ref\"'\n      );\n    }\n    return itemTitleElm;\n  }\n\n  get itemTriggerElement(): HTMLElement | undefined {\n    return this.triggerElementRef?.nativeElement;\n  }\n\n  /**\n   * get item element.\n   * there are couple of item element:\n   * 1. trigger element - an item with children\n   * 2. title template element - when we get template item\n   * 3. link title element\n   * 4. item title\n   */\n  get itemElement(): HTMLElement | undefined {\n    let element;\n    if (this.item?.children?.length) {\n      element = this.itemTriggerElement;\n    } else if (this.itemTemplateRef) {\n      element = this.itemTitleTemplateElm;\n    } else if (this.isLink) {\n      element = this.itemTitleLinkElm;\n    } else {\n      element = this.itemTitleElm;\n    }\n    return element;\n  }\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    public dropDownEventMessagesService: DropDownEventMessagesService,\n    private nestedMenuStateService: NestedMenuStateService\n  ) {}\n\n  /**\n   * set the item option in order to display the correct element.\n   * for example, if we need to display the item as a link\n   */\n  setItemOption(): void {\n    this.itemOption = 'simpleItem';\n    if (this.isLink) {\n      this.itemOption = 'routerLinkItem';\n    }\n\n    // in case item is childServerSide menu, generate dropdown options with childServerSideOptions override\n    if (this.item.childServerSideOptions?.menuOptions?.menuComponent) {\n      this.item.childServerSideOptions.menuOptions = createDropDownOptions(\n        this.item.childServerSideOptions.menuOptions,\n        {\n          triggerComponent: DefaultTriggerComponent,\n          itemComponent: DefaultDropDownItemComponent,\n          menuComponent: this.item.childServerSideOptions.menuOptions.menuComponent,\n        }\n      );\n    }\n  }\n\n  /**\n   * handle open/close of sub menu.\n   * on hover item with children -> open its sub menu and close other sub menus if needed\n   * @param item\n   */\n  openSubMenu(item: DropDownItem): void {\n    if (this.trigger) {\n      this.trigger.openMenu();\n      this.triggerElementRef.nativeElement.focus();\n    }\n    this.nestedMenuStateService.handleSubMenu(item.value, this.trigger, this.menuIndexNumber);\n  }\n\n  /**\n   * highlight searched value\n   */\n  highlightSearchedValue(): void {\n    if (this.itemElement && !this.lookHighlight) {\n      const markInstance = new Mark(this.itemElement);\n      markInstance.unmark();\n      if (this.searchValue) {\n        this.lookHighlight = true;\n        setTimeout(() => markInstance.mark(this.searchValue), 10);\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.highlightSearchedValue();\n  }\n\n  /**\n   * check if need to show for item ellipsis tooltip.\n   * we override the default functionality of the singEllipsis directive.\n   *\n   * in the drop down the ellipsis is set on the button which contain padding from right side\n   * of the text so we need to extract the text length from the button and calculate it\n   * to check if we need to show the tooltip.\n   */\n  showItemEllipsisTooltip(): (itemButton: HTMLElement) => boolean {\n    return (itemButton: HTMLElement): boolean => {\n      let showEllipsis = false;\n      if (this.itemElement) {\n        const paddingRight = Number.parseInt(\n          window.getComputedStyle(itemButton, null).getPropertyValue('padding-right')\n        );\n        const itemRight = this.itemElement.getBoundingClientRect().right;\n        const buttonRight = itemButton.getBoundingClientRect().right - paddingRight;\n        showEllipsis = itemRight > buttonRight;\n      }\n      return showEllipsis;\n    };\n  }\n}\n","<div class=\"container\"\n     [matTooltip]=\"item?.tooltip\"\n     [matTooltipClass]=\"item?.tooltipClass\"\n     [matTooltipPosition]=\"item?.tooltipPosition ?? 'below'\"\n     [matTooltipDisabled]=\"item?.tooltipDisabled ?? false\"\n     [matTooltipShowDelay]=\"item?.tooltipShowDelay ?? 1000\"\n     #dropdownItem>\n\n  <!--Branch Item-->\n  <ng-container *ngIf=\"item?.children?.length || item?.childServerSideOptions; else showAsItem\">\n    <button\n      #menuTrigger=\"matMenuTrigger\"\n      class=\"trigger-item\"\n      mat-menu-item\n      disableRipple\n      dont-use-global-mat-menu-item\n      [class.mat-menu-item-highlighted]=\"isTriggerItemShouldHighlighted$ | async\"\n      [disabled]=\"item.disabled\"\n      [style]=\"dropDownOptions?.itemStyle\"\n      [matMenuTriggerFor]=\"menu\"\n      (mouseenter)=\"openSubMenu(item)\">\n      <!--V Marker-->\n      <div data-mgmtautomationid=\"selected-marker\"  class=\"marker\" *ngIf=\"showSelectedMarker\"></div>\n      {{item?.title}}\n    </button>\n    <mat-menu #menu class=\"reset-menu-overlay\" [class]=\"dropDownOptions?.menuPanelClass\">\n      <ng-container\n        *ngIf=\"menuTrigger?.menuOpen\"\n        singDropDownDynamicDirective\n        [dynamicComponentClass]=\"childServerSideMenuOptions?.menuComponent ?\n        childServerSideMenuOptions?.menuComponent : dropDownOptions?.menuComponent\"\n        [inputs]=\"{\n         items: item?.children,\n          dropDownOptions: childServerSideMenuOptions ? childServerSideMenuOptions : dropDownOptions,\n          serverSideOptions: childServerSideOptions ?  childServerSideOptions : undefined,\n          isServerSide: !!childServerSideOptions,\n          menuIndexNumber: menuIndexNumber + 1,\n          selectedItemsState: selectedItemsState ? selectedItemsState : {},\n          itemTemplateRef: itemTemplateRef,\n          itemComponent: childServerSideItemComponent ? childServerSideItemComponent : undefined\n      }\"\n      ></ng-container>\n    </mat-menu>\n  </ng-container>\n\n  <!--Leaf Item-->\n  <ng-template #showAsItem>\n    <button\n      class=\"item\"\n      mat-menu-item\n      disableRipple\n      dont-use-global-mat-menu-item\n      data-sing-drop-down-button-item\n      [attr.data-ux-id]=\"item?.title\"\n      [attr.data-item-index]=\"itemIndex\"\n      [attr.aria-selected]=\"item?.selected\"\n      [style]=\"dropDownOptions?.itemStyle\"\n\n      singEllipsis\n      [singEllipsisShowCondition]=\"showItemEllipsisTooltip()\"\n      [disabled]=\"item?.disabled\"\n      [class.selected]=\"item?.selected\"\n      (mouseenter)=\"openSubMenu(item)\"\n      (click)=\"dropDownEventMessagesService.itemClicked(item)\">\n      <ng-container *ngIf=\"itemTemplateRef; then customItem else defaultItem\"></ng-container>\n    </button>\n  </ng-template>\n</div>\n\n<!--Custom Item Template-->\n<ng-template #customItem>\n  <!--V Marker-->\n  <div data-mgmtautomationid=\"selected-marker\" class=\"marker\" *ngIf=\"showSelectedMarker\"></div>\n  <ng-container\n    *ngTemplateOutlet=\"itemTemplateRef; context: {$implicit: item}\">\n  </ng-container>\n</ng-template>\n\n<!--Default Item Template-->\n<ng-template #defaultItem>\n  <ng-container [ngSwitch]=\"itemOption\">\n\n    <!--V Marker-->\n    <div data-mgmtautomationid=\"selected-marker\" class=\"marker\" *ngIf=\"showSelectedMarker\"></div>\n\n    <i *ngIf=\"item?.leftIconClass\" data-mgmtautomationid=\"left-icon\" class=\"left-icon {{item?.leftIconClass}}\"></i>\n    <span\n      #itemTitle\n      data-mgmtautomationid=\"drop-down-item-value\"\n      class=\"item-title\"\n      *ngSwitchCase=\"'simpleItem'\">\n         {{item?.title | dropDownCapitalizeFirstLetter: capitalize}}\n        </span>\n    <a\n      #itemTitleLink\n      class=\"link-item\"\n      data-mgmtautomationid=\"link-item\"\n      *ngSwitchCase=\"'routerLinkItem'\"\n      [routerLink]=\"item.routerLink\"\n      [queryParams]=\"item.queryParamsIfLink || {}\">\n      {{item?.title}}\n    </a>\n    <i *ngIf=\"item?.rightIconClass\" data-mgmtautomationid=\"right-icon\" class=\"right-icon {{item?.rightIconClass}}\"></i>\n  </ng-container>\n</ng-template>\n","import { DefaultTriggerComponent } from '../components/default-trigger/default-trigger.component';\nimport { DefaultDropDownMenuContainerComponent } from '../components/default-drop-down-menu-container/default-drop-down-menu-container.component';\nimport { DefaultDropDownItemComponent } from '../components/default-drop-down-item/default-drop-down-item.component';\n\nexport const DEFAULT_DYNAMIC_COMPONENT_MAP = {\n  triggerComponent: DefaultTriggerComponent,\n  menuComponent: DefaultDropDownMenuContainerComponent,\n  itemComponent: DefaultDropDownItemComponent,\n};\n","import { HttpParams } from '@angular/common/http';\nimport { isNil } from 'lodash';\nimport { SingError, SingHttpErrorResponse } from '../models/sing-http-response';\nimport { SingHttpMethods } from '../enums/sing-http-methods.enum';\nimport { SingHttpMetaData } from '../models/sing-http-meta-data.interface';\nimport { SingHttpOptions } from '../models/sing-http-request';\n\n/**\n * get error message.\n * in case response contains errors, we will show them. otherwise 'Server error' will display\n * @param response\n */\nexport function getErrorMessage(response: SingHttpErrorResponse): string {\n  let errorMessage = 'Server error';\n  if (response?.error?.errors?.length) {\n    errorMessage = response.error.errors.map((errorItem: SingError) => errorItem.detail || errorItem.title).join(',');\n  }\n  return errorMessage;\n}\n\n/**\n * create http params by get params object\n * in order to pass params in the new HttpClient we need to use the HttpParams\n * which helps us create the HttpParams object\n * @param params a simple shallow object with key value\n * @param allowEmptyQueryParams include empty or nullish query params\n * @returns {HttpParams} a new instance with the given params\n */\nexport function createHttpParams(params: any, allowEmptyQueryParams = false): HttpParams {\n  let _params = new HttpParams();\n  for (const key in params) {\n    if (allowEmptyQueryParams || (params.hasOwnProperty(key) && !isNil(params[key]) && params[key] !== '')) {\n      _params = _params.append(key, params[key].toString());\n    }\n  }\n  return _params;\n}\n\n/**\n * check if given method is GET method\n */\nexport function isGetMethod(method: SingHttpMethods): boolean {\n  return method === SingHttpMethods.GET;\n}\n\n/**\n * create options object\n */\nexport function createOptions(httpMetaData: SingHttpMetaData): SingHttpOptions {\n  const { queryParams, allowEmptyQueryParams, payload } = httpMetaData;\n  const options: SingHttpOptions = {};\n  if (isGetMethod(httpMetaData.method)) {\n    options.params = createHttpParams(queryParams, allowEmptyQueryParams);\n  } else {\n    options.body = payload;\n  }\n  return options;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map } from 'rxjs/operators';\nimport { SingHttpMetaData } from '../models/sing-http-meta-data.interface';\nimport { SingHttpErrorResponse, SingHttpResponse } from '../models/sing-http-response';\nimport { createOptions, getErrorMessage } from '../utils/sing-http-call.utils';\nimport { ToastNotificationService } from '../../../modules/popups/toast-notification/services/toast-notification.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SingHttpCallService {\n  constructor(private http: HttpClient, public toastNotificationService: ToastNotificationService) {}\n\n  /**\n   * Handle http request\n   * this method return observable so in case using this method need to subscribe to it.\n   */\n  public lazyRequest<T>(httpMetaData: SingHttpMetaData): Observable<SingHttpResponse<T> | never> {\n    const { method, url, throwFullError } = httpMetaData;\n    const options = createOptions(httpMetaData);\n    return this.http.request(method, url, options).pipe(\n      map((response: any) => response as SingHttpResponse<T>),\n      catchError((response: SingHttpErrorResponse) => {\n        const errorMessage = getErrorMessage(response);\n        this.showToastErrorMessage(httpMetaData, errorMessage);\n        return throwFullError ? throwError(() => response) : throwError(() => errorMessage);\n      })\n    );\n  }\n\n  /**\n   * show toast error message.\n   * @param httpMetaData\n   * @param errorMessage\n   */\n  private showToastErrorMessage(httpMetaData: SingHttpMetaData, errorMessage: string): void {\n    if (!httpMetaData.hideErrorAlert) {\n      this.toastNotificationService.error(errorMessage, 5_000, true);\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServerSideOptions } from '../models/drop-down-server-options.interface';\nimport { SingHttpCallService } from '../../../../services/http-call/services/sing-http-call.service';\nimport { SingHttpResponse } from '../../../../services/http-call/models/sing-http-response';\nimport { isFunction } from 'lodash';\nimport { SingHttpMetaData } from '../../../../services/http-call/models/sing-http-meta-data.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DropDownServerSideService {\n  constructor(private httpCallService: SingHttpCallService) {}\n\n  /**\n   * get server data in order to create dropdown items\n   */\n  getServerData(\n    serverSideOptions: ServerSideOptions,\n    query = '',\n    skip = 0,\n    cursor = null,\n    useCursor = false\n  ): Observable<SingHttpResponse | never> {\n    const params: any = this.createServerDataQueryParams(serverSideOptions, query, skip, cursor, useCursor);\n    const httpMetaData: SingHttpMetaData = {\n      method: serverSideOptions.methodType,\n      url: serverSideOptions.subUrl,\n    };\n    if (isFunction(serverSideOptions.preProcessor)) {\n      httpMetaData.payload = serverSideOptions.preProcessor(params);\n    } else {\n      httpMetaData.queryParams = params;\n    }\n    return this.httpCallService.lazyRequest(httpMetaData);\n  }\n\n  /**\n   * create server data query params.\n   */\n  private createServerDataQueryParams(\n    serverSideOptions: ServerSideOptions,\n    query = '',\n    skip = 0,\n    cursor = null,\n    useCursor = false\n  ): any {\n    const params: any = { limit: serverSideOptions.maxServerItems };\n    if (useCursor) {\n      params.cursor = cursor;\n    } else {\n      params.skip = skip;\n    }\n    if (serverSideOptions.aliasToQuery) {\n      params[serverSideOptions.aliasToQuery] = query;\n    } else {\n      params.query = query;\n    }\n    return Object.assign(params, serverSideOptions.params);\n  }\n}\n","import { Directive, Input, Renderer2 } from '@angular/core';\nimport { DropDownMatMenuPanelStyle } from '../models/drop-down-mat-menu-panel-style.interface';\nimport { isNil } from 'lodash';\n\n@Directive({\n  selector: '[singDropDownMenuStyle]',\n})\nexport class DropDownMenuStyleDirective {\n  @Input()\n  set singDropDownMenuStyle(menuStyle: DropDownMatMenuPanelStyle) {\n    this.setMatMenuPanelStyle(menuStyle);\n  }\n\n  @Input() menuPanelId: string;\n\n  constructor(private renderer: Renderer2) {}\n\n  /**\n   * set the style on mat-menu-panel element\n   * @param menuStyle\n   */\n  setMatMenuPanelStyle(menuStyle: DropDownMatMenuPanelStyle): void {\n    const matMenuContent = document.getElementById(this.menuPanelId);\n    if (menuStyle && matMenuContent) {\n      Object.keys(menuStyle).forEach((style: string) => {\n        if (style && !isNil(menuStyle[style])) {\n          this.renderer.setStyle(matMenuContent, style, menuStyle[style]);\n        }\n      });\n    }\n  }\n}\n","import { Directive, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * reposition menu in case dropdown trigger position changed.\n */\n@Directive({\n  selector: '[singDropDownMenuReposition]',\n})\nexport class DropDownMenuRepositionDirective implements OnDestroy {\n  private readonly ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  @Input()\n  set singDropDownMenuReposition(value: { menuTrigger: MatMenuTrigger; menuTriggerElementRef: ElementRef }) {\n    const { menuTrigger, menuTriggerElementRef } = value;\n    if (menuTrigger) {\n      menuTrigger.menuOpened.pipe(takeUntil(this.ngUnSubscribe)).subscribe(() => {\n        this.repositionMatMenuPanel(menuTriggerElementRef?.nativeElement, menuTrigger);\n      });\n    }\n  }\n\n  @Input() menuPanelId: string;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  repositionMatMenuPanel(trigger: HTMLButtonElement, menuTrigger: MatMenuTrigger): void {\n    if (trigger) {\n      const matMenuContent = document.getElementById(this.menuPanelId);\n      const matMenuPositionElement = matMenuContent?.parentElement?.parentElement;\n      if (matMenuPositionElement) {\n        const { top: oldTriggerTop } = trigger.getBoundingClientRect();\n        /**\n         * we wait 500 ms, and then we check if we need to reposition the menu.\n         */\n        setTimeout(() => {\n          const { top: newTriggerTop } = trigger.getBoundingClientRect();\n          const threshold = 30;\n          // in case trigger position change reposition menu\n          if (Math.abs(oldTriggerTop - newTriggerTop) > threshold) {\n            const currentTransition = matMenuPositionElement.style.transition;\n            const animationTime = 150;\n            this.renderer.setStyle(matMenuPositionElement, 'transition', `top ${animationTime}ms`);\n            menuTrigger.updatePosition();\n\n            // Reset transition animation\n            setTimeout(() => {\n              this.renderer.setStyle(matMenuPositionElement, 'transition', currentTransition);\n            }, animationTime);\n          }\n        }, 500);\n      }\n    }\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  DEFAULT_DROP_DOWN_OPTIONS,\n  DEFAULT_DROPDOWN_MENU_POSITION,\n  DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS,\n} from '../consts/drop-down.consts';\nimport { cloneDeep, isNumber, isString, merge as _merge } from 'lodash';\nimport {\n  calcMenuPosition,\n  createDropDownItemsFromServerResponse,\n  createDropDownOptions,\n  createDropDownSelectionChanges,\n  createSelectedStateChanges,\n  executeAllItemsMapper,\n  executeCallbackIfExist,\n  executeDropdownItemsMapper,\n  executeResponseMapper,\n  findDropDownItem,\n  findFirstSelectedDropDownItem,\n  hasChildServerSideMenu,\n  isAllItemsUnSelected,\n  isDropDownOptionsHasValidPropsForInfiniteScroll,\n  isInvalidDropDownItem,\n  isLinkItem,\n  isStringsArray,\n  updateSelectedItemProp,\n} from '../utils/drop-down.utils';\nimport { DropDownMatMenuPanelStyle } from '../models/drop-down-mat-menu-panel-style.interface';\nimport { DropDownItem } from '../models/drop-down-item.interface';\nimport { fromEvent, merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, delay, filter, map, skip, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { DropDownEventMessage } from '../models/drop-down-event-message.interface';\nimport { DropDownEventType } from '../enums/drop-down-event-type.enum';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { filterEventMessageByEventType } from '../services/drop-down-event-messages/drop-down-event-messages.operatoes';\nimport { DropDownEventMessagesService } from '../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { DropDownMenuPosition } from '../models/drop-down-menu-position.interface';\nimport { DropDownMenuInputs } from '../models/drop-down-menu-inputs.interface';\nimport { DropDownOptions } from '../models/drop-down-options.interface';\nimport { ServerSideOptions } from '../models/drop-down-server-options.interface';\nimport { DropDownServerSideService } from '../services/drop-down-server-side.service';\nimport { SingHttpResponse } from '../../../../services/http-call/models/sing-http-response';\nimport { PaginatorPage } from '../../../data-table/paginator/models/paginator-page.interface';\nimport { SelectedItemsState } from '../utils/selected-items-state.utils';\nimport { SelectionChangesActionTypes } from '../enums/drop-down-selection-changes-action-types.enum';\nimport { DropDownSelectionChanged } from '../models/drop-down-selection-changes.interface';\nimport { DEFAULT_DYNAMIC_COMPONENT_MAP } from '../consts/drop-down-dynamic-component-map.consts';\nimport { checkComponentInputsAreValid } from '../utils/drop-down-inputs-validation.utils';\nimport {\n  DropDownReactiveFormModel,\n  MultiSelectDropDownReactiveFormModel,\n} from '../models/drop-down-reactive-form-model.interface';\nimport { NestedMenuStateService } from '../services/nested-menu-state.service';\nimport { DropDownSelectedState } from '../models/drop-down-selected-state.interface';\n\n@Component({\n  selector: 'sing-drop-down',\n  templateUrl: './drop-down.component.html',\n  styleUrls: ['./drop-down.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    NestedMenuStateService,\n    DropDownEventMessagesService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingDropDownComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => SingDropDownComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingDropDownComponent implements AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor, Validator {\n  @Input() identifier: string;\n\n  @Input() tabIndex = 0;\n\n  @Input()\n  set dropDownOptions(dropDownOptions: DropDownOptions) {\n    this._dropDownOptions = createDropDownOptions(dropDownOptions, DEFAULT_DYNAMIC_COMPONENT_MAP);\n    this.menuPosition = calcMenuPosition(this._dropDownOptions.menuPosition);\n    this.menuStyle = this._dropDownOptions.menuStyle;\n    /**\n     * in case resizable we should override the\n     * min-width and max-width to initial.\n     * we do this in order to let the resizeable functionality work.\n     */\n    if (this._dropDownOptions.resizable) {\n      this.menuStyle['min-width'] = 'initial';\n      this.menuStyle['max-width'] = 'initial';\n    }\n    this.initSelectedItemsState();\n    this.setTriggerText();\n    this.updatePrefixId();\n  }\n\n  get dropDownOptions(): DropDownOptions {\n    return this._dropDownOptions;\n  }\n\n  @Input()\n  set serverSideOptions(serverSideOptions: ServerSideOptions) {\n    if (serverSideOptions?.subUrl?.length) {\n      this.isServerSide = true;\n      this._serverSideOptions = this.createServerSideOptions(serverSideOptions);\n      if (!this.serverSideOptions.skipFirstGet) {\n        this.getServerData();\n      }\n    } else if (!!serverSideOptions) {\n      // show error in case there are options but no subUrl\n      console.error('[DropDownComponent] subUrl property is Missing!');\n    }\n  }\n\n  get serverSideOptions(): ServerSideOptions {\n    return this._serverSideOptions;\n  }\n\n  /**\n   * the dropdown items\n   */\n  private _items: DropDownItem[];\n\n  @Input()\n  set items(items: DropDownItem[]) {\n    setTimeout(() => {\n      this.setItems(items, !this.isUsedAsReactiveForm);\n      this.syncReactiveFormSelectedValueWithItems();\n    }, 1);\n  }\n\n  get items(): DropDownItem[] {\n    return this._items;\n  }\n\n  /**\n   * Disable trigger button from display the items. Default value: false\n   */\n  @Input() disabled = false;\n\n  /**\n   * this input gets the selected items as an array or object.\n   * OPTION 1. array of selected items (for a multiple selection dropdown).\n   *           in case of empty array, all items will be unselected.\n   *           Example:\n   *             selected: [\n   *              { value: '12', title: '12 test' },\n   *              { value: '13', title: '13 test' }\n   *            ]\n   *\n   * OPTION 2. item as DropDownItem object that should be selected (for a single selection dropdown).\n   *           Example:  value:{ value: '12', title: '12 test' }\n   *\n   * OPTION 3. Unselect all by passing null.\n   *\n   * each time this method is called we first clear all selected items.\n   */\n  @Input()\n  set selected(selected: DropDownItem[] | DropDownItem) {\n    setTimeout(() => {\n      this.initSelectedItemsState();\n      this.selectedItemsState.unselectAllItems();\n      if (selected) {\n        selected = Array.isArray(selected) ? selected : [selected];\n        this.selectedItemsState.addMultipleToSelected(selected);\n      }\n      this.updateSelectedItemsAndTriggerText();\n    }, 10);\n  }\n\n  /**\n   * pass a custom template item to override the default item\n   */\n  @Input() itemTemplateRef: TemplateRef<any>;\n  /**\n   * pass a custom template trigger to override the default item\n   */\n  @Input() triggerTemplateRef: TemplateRef<any>;\n  /**\n   * pass a custom template footer\n   */\n  @Input() footerTemplateRef: TemplateRef<any>;\n\n  @Output() dropdownMenuToggled = new EventEmitter<boolean>();\n  @Output() clickOrScrollOutside = new EventEmitter<void>();\n\n  /**\n   * NOTE: this @Output WILL NOT GET EXECUTED WHEN => server side + select all button is enabled\n   *\n   * listen to this event when the dropdown configuration is not:\n   * server side + select all button enabled.\n   * in case of (server side + select all button enabled), use selectedStateChanged @Output\n   */\n  @Output() selectionChanged = new EventEmitter<DropDownSelectionChanged>();\n\n  /**\n   * listen to this event when the dropdown configuration is:\n   * server side + select all button enabled.\n   * the shape of the return method:\n   * {\"selectAll\":false,\"unselectAll\":true,\"selectedItemsMap\":{},\"unselectedItemsMap\":{}}\n   */\n  @Output() selectedStateChanged = new EventEmitter<DropDownSelectedState>();\n  /**\n   *  clickedItem emit event each time an enabled item is clicked.\n   *  it will propagate to the DropDownItem that the user clicked on.\n   *  Good fit when the dropdown is used as an action dropdown.\n   */\n  @Output() clickedItem = new EventEmitter<DropDownItem>();\n  @Output() fileChanged = new EventEmitter<Event>();\n  /**\n   * when clear button clicked to remove all selected items\n   */\n  @Output() clearClicked = new EventEmitter<Event>();\n  /**\n   * when search value changed\n   */\n  @Output() searchChanged = new EventEmitter<string>();\n\n  @ViewChild('menuTrigger') menuTrigger: MatMenuTrigger;\n  @ViewChild('menuTrigger', { read: ElementRef }) menuTriggerElementRef: ElementRef;\n  @ViewChild('menuContainer') menuContainer: any;\n  @ViewChild('fileUploader') fileInput: ElementRef;\n\n  private ngUnSubscribe: Subject<void> = new Subject<void>();\n  private _dropDownOptions = DEFAULT_DROP_DOWN_OPTIONS;\n  private _serverSideOptions: ServerSideOptions;\n  private isResizing: boolean;\n  public menuPosition: DropDownMenuPosition = DEFAULT_DROPDOWN_MENU_POSITION;\n  public menuStyle: DropDownMatMenuPanelStyle;\n  public menuInputs: DropDownMenuInputs;\n  private eventMessages$ = this.dropDownEventMessagesService.listen$.pipe(takeUntil(this.ngUnSubscribe));\n  private itemClicked$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.ItemClicked),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private clearSelectedClicked$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.ClearSelected),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private selectAllClicked$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.SelectAllClicked),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private searchValueChanged$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.SearchValueChanged),\n    tap((eventMessage: DropDownEventMessage) => {\n      this.searchChanged.emit(eventMessage.data);\n    }),\n    filter(() => this.isServerSide),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private pageChanged$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.PageChanged),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private getMoreItems$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.GetMoreItems),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private updateIsResizingValue$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.UpdateIsResizingValue),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private escapeClicked$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.EscapeClicked),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private isMenuOpen$ = new Subject<boolean>();\n  public triggerText = '';\n  public triggerSelectedItems: DropDownItem[] = [];\n  public selectedItemsState: SelectedItemsState;\n  public isNothingSelected$: Observable<boolean>;\n  private isServerSide = false;\n  private serverDataSubscription: Subscription;\n  private pageNumber: number;\n  private searchQuery = '';\n  private skip = 0;\n  private nextCursor;\n  private isSelectionChangedSubscribedOnHost: boolean;\n\n  /**\n   * reactiveFormSelectedValue is an object\n   * in which the key is the item value and value is a boolean but we dont use the value.\n   * when the dropdown is client side + reactive form, we only get the item value of the selected items\n   * via the reactive form, and when we have the items we can find which item should be stored as selected\n   * in the SelectedItemsState.\n   */\n  private reactiveFormSelectedValue: Record<string, boolean> | null;\n\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: DropDownReactiveFormModel) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  get isSingleSelect(): boolean {\n    return !this.dropDownOptions.isMultipleSelection;\n  }\n\n  /**\n   * check if dropdown is used as reactive form\n   */\n  get isUsedAsReactiveForm(): boolean {\n    const hasFormControl = this.viewContainerRef?.element?.nativeElement?.hasAttribute('ng-reflect-form');\n    const hasFormControlName = this.viewContainerRef?.element?.nativeElement?.hasAttribute('formcontrolname');\n    return hasFormControlName || hasFormControl;\n  }\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    private dropDownEventMessagesService: DropDownEventMessagesService,\n    private dropDownServerSideService: DropDownServerSideService,\n    private nestedMenuStateService: NestedMenuStateService,\n    private viewContainerRef: ViewContainerRef\n  ) {\n    this.initListenToEvents();\n    this.closeOnClickOrScrollOutside();\n  }\n\n  ngAfterViewInit(): void {\n    this.updatePrefixId();\n    this.startOpen();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.isSelectionChangedSubscribedOnHost = this.selectionChanged.observed;\n    checkComponentInputsAreValid(changes, this.isUsedAsReactiveForm, this.isSelectionChangedSubscribedOnHost);\n    if (changes.dropDownOptions && this.serverSideOptions) {\n      // set showSearch to true if dropdown is server side + showSearch is not defined yet\n      if (changes.dropDownOptions.currentValue.showSearch === void 0) {\n        this._dropDownOptions.showSearch = true;\n      }\n      // set capitalize to true if dropdown is server side + capitalize is not defined yet\n      if (changes.dropDownOptions.currentValue.capitalize === void 0) {\n        this._dropDownOptions.capitalize = false;\n      }\n    }\n    this.fixMenuStyleInCaseClientInfiniteScroll(changes);\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * override state from host component\n   * @param state\n   */\n  public overrideState(state: DropDownSelectedState) {\n    // without setTimeout we will get change after checked error\n    setTimeout(() => {\n      this.selectedItemsState.overrideState(state);\n      this.updateSelectedItemsAndTriggerText();\n    });\n  }\n\n  /**\n   * listen to events\n   */\n  private initListenToEvents(): void {\n    this.itemClicked$.subscribe(this.ddItemClicked.bind(this));\n    this.clearSelectedClicked$.subscribe(this.unselectAllSelectedItems.bind(this));\n    this.selectAllClicked$.subscribe(this.selectAllItems.bind(this));\n    this.searchValueChanged$.subscribe(this.searchValueChanged.bind(this));\n    this.pageChanged$.subscribe(this.pageChanged.bind(this));\n    this.getMoreItems$.subscribe(this.getMoreItems.bind(this));\n    this.updateIsResizingValue$.subscribe(this.updateIsResizingValue.bind(this));\n    this.escapeClicked$.subscribe(this.closeDropdown.bind(this));\n  }\n\n  /**\n   * close\n   * - on click outside the dropdown menu.\n   * - on scroll outside the dropdown menu.\n   */\n  private closeOnClickOrScrollOutside(): void {\n    const clickEvent$ = fromEvent(document, 'click').pipe(takeUntil(this.isMenuOpen$));\n    const scrollEvent$ = fromEvent(document, 'scroll', { capture: true }).pipe(skip(5), takeUntil(this.isMenuOpen$));\n    const events$ = [clickEvent$, scrollEvent$];\n\n    this.isMenuOpen$\n      .asObservable()\n      .pipe(\n        debounceTime(0),\n        filter((open) => open),\n        switchMap(() => merge(...events$)),\n        filter(\n          (event: any) =>\n            !!this.menuContainer &&\n            !this.menuContainer.nativeElement.parentElement.contains(event.target) &&\n            !this.isResizing &&\n            !event.target.hasAttribute('data-dont-close-dropdown-on-scroll')\n        ),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe(() => {\n        this.clickOrScrollOutside.emit();\n        this.menuTrigger.closeMenu();\n      });\n  }\n\n  /**\n   * method is executed when menu is opened or closed.\n   * @param isOpen\n   */\n  public menuToggled(isOpen: boolean): void {\n    this.dropdownMenuToggled.emit(isOpen);\n    if (isOpen) {\n      if (this.isServerSide) {\n        this.skip = 0;\n        this.nextCursor = null;\n        this.searchQuery = '';\n        this.getServerData();\n      }\n      this.menuStyle = cloneDeep(this.menuStyle);\n    } else {\n      this.nestedMenuStateService.reset();\n      this.onTouched();\n      setTimeout(() => {\n        this.menuTriggerElementRef.nativeElement.blur();\n      });\n    }\n\n    this.updateMenuInputs(false);\n    this.isMenuOpen$.next(isOpen);\n  }\n\n  /**\n   * on dropdown item clicked\n   * - if suspensionSelection is true, we dont update our dropdown with the clicked item but event of clickedItem gets\n   *   fired and the developer will update the dropdown with the selected when needed.\n   * - if single select + allowUnselectInSingleSelect is false and the current item selected -> we only close\n   *   the dropdown. we do that in order to keep our previous behaviour from our old dropdown.\n   * - if the item is a file uploader -> a file upload option will open and the menu will close\n   * - if the item is a link item, we just close the menu\n   * - in case single select, we toggle the item selected state. if we have another item which was selected,\n   *   we unselect it + close the menu\n   * - in case of multiple select, we toggle the item selected state and keep the menu open\n   * @param eventMessage\n   */\n  private ddItemClicked(eventMessage: DropDownEventMessage): void {\n    let clickedItem: DropDownItem = findDropDownItem(this._items, eventMessage.data);\n\n    // if clicked item isn't found, check if dropdown contains child server-side menu\n    if (!clickedItem && hasChildServerSideMenu(this._items)) {\n      clickedItem = eventMessage.data;\n    }\n\n    if (this.dropDownOptions.suspensionSelection) {\n      if (this.isSingleSelect) {\n        this.menuTrigger.closeMenu();\n      }\n    } else if (this.isSingleSelect && !this.dropDownOptions.allowUnselectInSingleSelect && eventMessage.data.selected) {\n      this.menuTrigger.closeMenu();\n    } else if (clickedItem?.isFileUploader) {\n      (this.fileInput.nativeElement as HTMLElement).click();\n      this.menuTrigger.closeMenu();\n    } else if (isLinkItem(clickedItem)) {\n      this.menuTrigger.closeMenu();\n    } else if (clickedItem) {\n      if (this.isSingleSelect) {\n        const currentSelected: DropDownItem | undefined = findFirstSelectedDropDownItem(this._items);\n        if (currentSelected && clickedItem !== currentSelected) {\n          currentSelected.selected = false;\n        }\n      }\n      clickedItem.selected = !clickedItem.selected;\n      const selectionActionType = clickedItem.selected\n        ? SelectionChangesActionTypes.ItemSelected\n        : SelectionChangesActionTypes.ItemUnselected;\n\n      // get the current select items and call them as previousSelected since the next step is to update the selected items\n      const previousSelected = this.selectedItemsState.getSelectedItems();\n      const selectedItems = this.selectedItemsState.updateSelectedItemsMap(clickedItem);\n      const changes = createDropDownSelectionChanges(\n        selectedItems,\n        previousSelected,\n        [clickedItem],\n        selectionActionType,\n        this.dropDownOptions.isMultipleSelection\n      );\n\n      this.updateMenuInputs();\n      this.emitSelectionChanges(changes);\n      this.reactiveFormPropagateChange({ selectedItems: cloneDeep(selectedItems) });\n      executeCallbackIfExist(clickedItem.action, cloneDeep(clickedItem));\n\n      if (this.isSingleSelect) {\n        this.menuTrigger.closeMenu();\n      }\n    } else {\n      console.error('[DropDownComponent] clicked item not found it items');\n    }\n\n    this.clickedItem.emit(clickedItem);\n  }\n\n  /**\n   * set trigger text.\n   * used in order to update the trigger (the placeholder) with the selected items text + icon\n   */\n  private setTriggerText(): void {\n    this.triggerText = '';\n    this.triggerSelectedItems = [];\n    if (this.dropDownOptions.showSelectedTitle) {\n      const allowUseMultipleSelectionText = this.isServerSide || this.dropDownOptions?.useInfiniteScroll;\n      this.triggerText = this.selectedItemsState.getSelectedNames(allowUseMultipleSelectionText).join(', ');\n      this.triggerSelectedItems = this.selectedItemsState.getSelectedItems();\n    }\n  }\n\n  /**\n   * Select all items.\n   * link or disabled item will not be selected\n   */\n  public selectAllItems(): void {\n    const previousSelected = this.selectedItemsState.getSelectedItems();\n    const updatedChanges = updateSelectedItemProp(cloneDeep(this._items), true);\n    this._items = updatedChanges.items;\n\n    this.selectedItemsState.selectAll();\n    if (!this.isServerSide) {\n      this.selectedItemsState.addMultipleIfSelected(this._items);\n    }\n\n    const selectedItems = this.selectedItemsState.getSelectedItems();\n    this.updateMenuInputs();\n    const changes = createDropDownSelectionChanges(\n      selectedItems,\n      previousSelected,\n      updatedChanges.changedItems,\n      SelectionChangesActionTypes.AllItemsSelected,\n      this.dropDownOptions.isMultipleSelection\n    );\n    this.emitSelectionChanges(changes);\n    this.reactiveFormPropagateChange({ selectedItems });\n  }\n\n  /**\n   * on reset clicked we unselect all selected item\n   */\n  public unselectAllSelectedItems(): void {\n    if (this._items) {\n      const updatedChanges = updateSelectedItemProp(cloneDeep(this._items), false);\n      this._items = updatedChanges.items;\n      const unselectedItems = this.selectedItemsState.unselectAllItems();\n      this.updateMenuInputs();\n      const changes = createDropDownSelectionChanges(\n        [],\n        unselectedItems,\n        unselectedItems,\n        SelectionChangesActionTypes.AllItemsUnSelected,\n        this.dropDownOptions.isMultipleSelection\n      );\n      this.emitSelectionChanges(changes);\n      this.reactiveFormPropagateChange({ selectedItems: [] });\n      this.clearClicked.emit();\n    }\n  }\n\n  /**\n   * when search value changed get data from server\n   * @param eventMessage\n   */\n  private searchValueChanged(eventMessage: DropDownEventMessage): void {\n    if (this.searchQuery !== eventMessage.data) {\n      this.searchQuery = eventMessage.data;\n      this.skip = 0;\n      this.nextCursor = null;\n      this.getServerData();\n    }\n  }\n\n  /**\n   * get data from server on page change\n   */\n  private pageChanged(eventMessage: DropDownEventMessage): void {\n    const page = eventMessage.data as PaginatorPage;\n    if (this.skip !== page.skip) {\n      this.skip = page.skip;\n      this.pageNumber = page.pageNumber;\n      this.getServerData();\n    }\n  }\n\n  /**\n   * when we use infinite scroll\n   * this method should be triggered to get more\n   * items from server\n   */\n  private getMoreItems(): void {\n    if (this.nextCursor) {\n      this.getServerData();\n    }\n  }\n\n  /**\n   * update isResizing value.\n   * when isResizing is true we prevent the closure of the menu.\n   * once user stops resizing, we set isResizing to false\n   *\n   * @param eventMessage\n   */\n  private updateIsResizingValue(eventMessage: DropDownEventMessage): void {\n    this.isResizing = eventMessage.data;\n  }\n\n  /**\n   * update the menuInputs.\n   * we should call this when we want to update the\n   * children component\n   */\n  private updateMenuInputs(setTriggerText = true): void {\n    this.menuInputs = {\n      items: cloneDeep(this._items),\n      dropDownOptions: this.dropDownOptions,\n      serverSideOptions: this.serverSideOptions,\n      isServerSide: this.isServerSide,\n      selectedItemsState: cloneDeep(this.selectedItemsState),\n      menuIndexNumber: 1,\n      nextCursor: this.nextCursor,\n      itemTemplateRef: this.itemTemplateRef,\n      footerTemplateRef: this.footerTemplateRef,\n      isUsedAsReactiveForm: this.isUsedAsReactiveForm,\n      isSelectionChangedSubscribedOnHost: this.isSelectionChangedSubscribedOnHost,\n    };\n    if (setTriggerText) {\n      this.setTriggerText();\n    }\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   * will add class of 'ng-touched' on sol-drop-down element\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   * this method get an object with\n   * OPTION 1. selectedItems as list of dropdown items that should be selected (for a multiple selection dropdown).\n   *           in case of an empty array, all items will be unselected.\n   *           Example:\n   *           value: {\n   *             selectedItems: [\n   *              { value: '12', title: '12 test' },\n   *              { value: '13', title: '13 test' }\n   *            ]\n   *          }\n   *\n   * OPTION 2. item as DropDownItem object that should be selected (for a single selection dropdown).\n   *           Example:  value:{ value: '12', title: '12 test' }\n   *\n   * each time this method is called we first clear all selected items.\n   */\n  writeValue(dropDownReactiveFormModel: DropDownReactiveFormModel): void {\n    if (dropDownReactiveFormModel) {\n      if (dropDownReactiveFormModel.hasOwnProperty('selectedItems') || Array.isArray(dropDownReactiveFormModel)) {\n        this.writeValueForMultiSelect(dropDownReactiveFormModel);\n      } else {\n        this.writeValueForSingleSelect(dropDownReactiveFormModel as DropDownItem | string);\n      }\n    } else {\n      this.selectedItemsState.unselectAllItems();\n      this.updateSelectedItemsAndTriggerText();\n    }\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   * write value when dropdown is single select\n   * @param selectedItem\n   */\n  writeValueForSingleSelect(selectedItem: DropDownItem | string | number): void {\n    if (selectedItem) {\n      if (isString(selectedItem) || isNumber(selectedItem)) {\n        this.reactiveFormSelectedValue = { [selectedItem as string]: true };\n        this.syncReactiveFormSelectedValueWithItems();\n      } else if (isInvalidDropDownItem(selectedItem)) {\n        console.error(\n          '[DropDownComponent]',\n          'The given reactive form value is not valid.',\n          'A valid value for multi select should be from this shape \"MultiSelectDropDownReactiveFormModel\"',\n          ' and for single select \"DropDownItem\"'\n        );\n      } else {\n        this.selectedItemsState.unselectAllItems();\n        this.selectedItemsState.addToSelected(selectedItem);\n        this.updateSelectedItems();\n      }\n    }\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   * write value when dropdown is multi select\n   * @param dropDownReactiveFormModel\n   */\n  writeValueForMultiSelect(dropDownReactiveFormModel: DropDownReactiveFormModel | string[]): void {\n    const { selectedItems } = dropDownReactiveFormModel as MultiSelectDropDownReactiveFormModel;\n    if (\n      dropDownReactiveFormModel &&\n      Array.isArray(dropDownReactiveFormModel) &&\n      dropDownReactiveFormModel.length === 0\n    ) {\n      this.selectedItemsState.unselectAllItems();\n      this.updateSelectedItems();\n    } else if (isStringsArray(dropDownReactiveFormModel)) {\n      this.reactiveFormSelectedValue = {};\n      (dropDownReactiveFormModel as string[]).forEach((item) => {\n        this.reactiveFormSelectedValue[item] = true;\n      });\n      this.syncReactiveFormSelectedValueWithItems();\n    } else if (selectedItems && Array.isArray(selectedItems)) {\n      this.selectedItemsState.unselectAllItems();\n      this.selectedItemsState.addMultipleToSelected(selectedItems);\n      this.updateSelectedItems();\n    } else {\n      console.error(\n        '[DropDownComponent]',\n        'The given reactive form value is not valid.',\n        'A valid value for multi select should be from this shape \"MultiSelectDropDownReactiveFormModel\"',\n        ' and for single select \"DropDownItem\"'\n      );\n    }\n  }\n\n  /**\n   * validate\n   * Part of the NG_VALIDATORS (reactive form)\n   */\n  validate(): ValidationErrors | null {\n    let isValid = true;\n    if (this.dropDownOptions.requiredValidators) {\n      isValid = this.selectedItemsState.isAtListOneItemSelected(this.isServerSide) || !!this.reactiveFormSelectedValue;\n    }\n    return isValid ? null : { error: 'dropdown invalid' };\n  }\n\n  /**\n   * update the selected property for each item.\n   */\n  private updateSelectedItems(): void {\n    if (this._items && Array.isArray(this._items)) {\n      this._items.map((item) => {\n        item.selected = this.selectedItemsState.isItemSelected(item.value);\n      });\n      this.updateMenuInputs();\n    }\n  }\n\n  /**\n   * create server side options.\n   * first we create ES6 proxy on the params property. we are using the proxy to indicate changes on the params property\n   * then we merge the DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS with the given serverSideOptions\n   * @param serverSideOptions\n   */\n  private createServerSideOptions(serverSideOptions: ServerSideOptions): ServerSideOptions {\n    if (!serverSideOptions.hasOwnProperty('params')) {\n      serverSideOptions.params = {};\n    }\n\n    // use Proxy on the params object in order to catch set changes\n    serverSideOptions.params = new Proxy(serverSideOptions.params, this.serverParamsHandler());\n\n    return _merge({}, DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS, serverSideOptions);\n  }\n\n  /**\n   * part of ES6 proxy handler.\n   * This function is executed when params property is changed\n   */\n  private serverParamsHandler(): ProxyHandler<any> {\n    return {\n      set: (obj, prop, value) => {\n        // The default behavior to store the value\n        obj[prop] = value;\n        this._serverSideOptions.params[prop] = value;\n        if (this._serverSideOptions.params[prop] === null) {\n          delete this._serverSideOptions.params[prop];\n        }\n        // Indicate success\n        return true;\n      },\n    };\n  }\n\n  /**\n   * get data from server and create dropdown items\n   */\n  private getServerData(): void {\n    if (this.serverDataSubscription) {\n      this.serverDataSubscription.unsubscribe();\n    }\n\n    if (this.serverSideOptions) {\n      const isNextCursor: boolean | undefined =\n        this.serverSideOptions.useInfiniteScroll && !this.serverSideOptions.useInfiniteScrollTotalItems;\n      this.serverDataSubscription = this.dropDownServerSideService\n        .getServerData(this.serverSideOptions, this.searchQuery, this.skip, this.nextCursor, isNextCursor)\n        .subscribe((response: SingHttpResponse) => {\n          this.serverSideOptions.paginationOptions.totalServerEntities = response.pagination\n            ? response.pagination.totalItems\n            : response.data.length;\n          const data = executeResponseMapper(this.serverSideOptions, response.data, this.pageNumber);\n          const dropDownItems = createDropDownItemsFromServerResponse(this.serverSideOptions, data);\n          let items = executeDropdownItemsMapper(this.serverSideOptions, dropDownItems);\n          items = this.concatItemsIfInfiniteScroll(response, items);\n          items = executeAllItemsMapper(this.serverSideOptions, items);\n          this.setItems(items, false);\n        });\n    }\n  }\n\n  /**\n   * start dropdown menu open (after view init).\n   * we trigger the open menu only if the following conditions are true\n   * - startOpen prop is true\n   * - the dropdown is enabled\n   * - the current dropdown state is closed\n   */\n  private startOpen(): void {\n    if (this.dropDownOptions.startOpen) {\n      this.openMenu();\n    }\n  }\n\n  /**\n   * a public method that gives the host component the option to open the dropdown menu.\n   * dropdown menu will open only if the following conditions are true\n   * - the dropdown is enabled\n   * - the current dropdown state is closed\n   */\n  public openMenu(): void {\n    if (!this.disabled && this.menuTrigger && this.menuTrigger.menuClosed) {\n      this.menuTrigger.openMenu();\n    }\n  }\n\n  /**\n   * a public method that gives the host component the option to close the dropdown menu.\n   */\n  public closeMenu(): void {\n    if (!this.disabled && this.menuTrigger && this.menuTrigger.menuOpen) {\n      this.menuTrigger.closeMenu();\n    }\n  }\n\n  /**\n   * file uploaded\n   * @param event\n   */\n  public fileChange(event: Event): void {\n    this.fileChanged.emit(event);\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   * propagate changes in reactive form.\n   * since dropdown support both single select and multi select we need to take care of the shape ot the model\n   * we propagate.\n   * in addition when client side:\n   * case multi select > ['value1', 'value2'] | []\n   * case single select > 'value1' | null\n   *\n   * @param selected\n   */\n  private reactiveFormPropagateChange(selected: MultiSelectDropDownReactiveFormModel): void {\n    if (this.dropDownOptions.isMultipleSelection) {\n      if (this.isServerSide) {\n        this.propagateChange(selected);\n      } else {\n        this.propagateChange(selected.selectedItems.map((item) => item.value));\n      }\n    } else {\n      if (this.isServerSide) {\n        this.propagateChange(selected.selectedItems[0]);\n      } else {\n        const selectedItem = selected.selectedItems[0];\n        const value = selectedItem ? selectedItem.value : null;\n        this.propagateChange(value);\n      }\n    }\n  }\n\n  /**\n   * init the creation of the selected items state\n   */\n  private initSelectedItemsState(): void {\n    if (!this.selectedItemsState || this._dropDownOptions.resetSelectedItemsState) {\n      this.selectedItemsState = new SelectedItemsState(!this.dropDownOptions.isMultipleSelection);\n      this.isNothingSelected$ = this.selectedItemsState.stateChanged$.pipe(\n        delay(50),\n        map(() => isAllItemsUnSelected(this.selectedItemsState, this.isServerSide, this._items))\n      );\n    }\n  }\n\n  /**\n   * set dropdown items.\n   * in case setItems is called from the \"@Input() set items\" we unselect all items first and update the selected if exist\n   * in case setItems is called from getServerData we are not updating the selected items.\n   * if there's a need to update, the developer can use the @Input() selected\n   *\n   * @param items\n   * @param updateSelectedItems\n   */\n  private setItems(items: DropDownItem[], updateSelectedItems = true): void {\n    this._items = cloneDeep(items);\n    this.initSelectedItemsState();\n    if (updateSelectedItems) {\n      this.selectedItemsState.unselectAllItems();\n      this.selectedItemsState.addMultipleIfSelected(items);\n    }\n    this.updateSelectedItemsAndTriggerText();\n  }\n\n  /**\n   * sync between reactive form writeValue to \"@Input() set items\"\n   * when the given select or selected items are only as string value.\n   * NOTE this is just for client side\n   */\n  private syncReactiveFormSelectedValueWithItems(): void {\n    if (!this.isServerSide && this.items && this.items.length) {\n      if (this.reactiveFormSelectedValue) {\n        const selectedItems: DropDownItem[] = [];\n        this.items\n          .filter((item: DropDownItem) => item.value && this.reactiveFormSelectedValue?.hasOwnProperty(item.value))\n          .forEach((item: DropDownItem) => selectedItems.push(item));\n        this.selectedItemsState.unselectAllItems();\n        this.selectedItemsState.addMultipleToSelected(selectedItems);\n        if (selectedItems.length > 0) {\n          this.reactiveFormSelectedValue = null;\n        }\n        this.updateSelectedItemsAndTriggerText();\n      } else if (this.selectedItemsState.isAtListOneItemSelected(this.isServerSide) && this.isUsedAsReactiveForm) {\n        const selectedValue = this.selectedItemsState.getSelectedValueRecordObject();\n        const selectedItems: DropDownItem[] = [];\n        this.items\n          .filter((item: DropDownItem) => item.value && selectedValue?.hasOwnProperty(item.value))\n          .forEach((item: DropDownItem) => selectedItems.push(item));\n        this.selectedItemsState.unselectAllItems();\n        this.selectedItemsState.addMultipleToSelected(selectedItems);\n        this.updateSelectedItemsAndTriggerText();\n      }\n    }\n  }\n\n  /**\n   * update dropdown items with which of items should display as selected\n   * and update the trigger text with the selected title values\n   */\n  private updateSelectedItemsAndTriggerText(): void {\n    this.updateSelectedItems();\n    this.setTriggerText();\n  }\n\n  /**\n   * in case infinite scroll we add the new items to current items\n   * @param response\n   * @param items\n   */\n  private concatItemsIfInfiniteScroll(response: SingHttpResponse, items: DropDownItem[]): DropDownItem[] {\n    if (this.serverSideOptions.useInfiniteScroll) {\n      const currentItems = this.nextCursor ? this.items : null;\n      this.nextCursor = response?.pagination?.nextCursor;\n      if (currentItems) {\n        items.unshift(...currentItems);\n      }\n\n      if (this.serverSideOptions.useInfiniteScrollTotalItems) {\n        this.skip = items.length;\n      }\n    }\n    return items;\n  }\n\n  /**\n   * emit selection changes.\n   * NOTE: selectionChanged WILL NOT GET EXECUTED WHEN => server side + select all button is enabled\n   * @param changes\n   */\n  private emitSelectionChanges(changes: DropDownSelectionChanged): void {\n    if (this.isServerSide && this.dropDownOptions.showSelectAll) {\n      const selectedState = createSelectedStateChanges(this.selectedItemsState.selectedState);\n      this.selectedStateChanged.emit(selectedState);\n    } else {\n      this.selectionChanged.emit(cloneDeep(changes));\n    }\n  }\n\n  /**\n   * update prefix id.\n   * in case we have automation id on the host and automationIdPrefix is with the default value 'drop-down'\n   * we will override it with host automation id for automation convenience.\n   */\n  private updatePrefixId(): void {\n    const hostAutoId = this.viewContainerRef?.element?.nativeElement?.getAttribute('data-mgmtAutomationId');\n    /**\n     * in case we have host auto id and automationIdPrefix is default we override automationIdPrefix and we\n     * set the host auto id\n     */\n    if (hostAutoId && this.dropDownOptions.automationIdPrefix === 'drop-down') {\n      this.dropDownOptions.automationIdPrefix = hostAutoId;\n    }\n  }\n\n  /**\n   * close dropdown\n   */\n  private closeDropdown(): void {\n    if (this.menuTrigger.menuOpen) {\n      this.menuTrigger.closeMenu();\n    }\n  }\n\n  /**\n   * In case we are using the client infinite scroll and menuStyle with height, min-height, max-height\n   * we should delete the height, min-height, max-height props\n   */\n  private fixMenuStyleInCaseClientInfiniteScroll(changes: SimpleChanges): void {\n    if (changes.dropDownOptions && !isDropDownOptionsHasValidPropsForInfiniteScroll(this.dropDownOptions)) {\n      delete this.dropDownOptions?.menuStyle?.height;\n      delete this.dropDownOptions?.menuStyle?.['min-height'];\n      delete this.dropDownOptions?.menuStyle?.['max-height'];\n    }\n  }\n}\n","<!--Menu Trigger-->\n<div [matTooltip]=\"dropDownOptions?.tooltip\" *ngIf=\"dropDownOptions?.skinOptions\" [class.hide-trigger]=\"dropDownOptions?.hideTriggerButton\">\n  <button\n    #menuTrigger=\"matMenuTrigger\"\n    type=\"button\"\n    [tabIndex]=\"tabIndex\"\n    class=\"menu-trigger {{dropDownOptions?.skinOptions}} {{dropDownOptions?.color}}\"\n    data-sing-trigger-button\n    [attr.data-mgmtAutomationId]=\"dropDownOptions?.automationIdPrefix + 'OptionsDropdown'\"\n    [class.none-selected]=\"isNothingSelected$ | async\"\n    [matMenuTriggerFor]=\"menu\"\n    [disabled]=\"disabled\"\n\n    (menuOpened)=\"menuToggled(true)\"\n    (menuClosed)=\"menuToggled(false)\">\n\n    <!--Dynamic Button Component-->\n    <ng-container\n      *ngIf=\"!dropDownOptions?.hideTriggerButton\"\n      singDropDownDynamicDirective\n      [dynamicComponentClass]=\"dropDownOptions?.triggerComponent\"\n      [inputs]=\"{\n        dropDownOptions: dropDownOptions,\n        isMenuOpen: menuTrigger?.menuOpen,\n        triggerText: triggerText,\n        triggerTemplateRef: triggerTemplateRef,\n        triggerSelectedItems: triggerSelectedItems\n      }\"\n    ></ng-container>\n\n  </button>\n</div>\n\n<!--Menu-->\n<mat-menu\n  #menu=\"matMenu\"\n  class=\"reset-menu-overlay\"\n  [class]=\"dropDownOptions?.menuPanelClass\"\n  [attr.data-mgmtAutomationId]=\"dropDownOptions?.automationIdPrefix + 'DropdownContent'\"\n  [hasBackdrop]=\"dropDownOptions?.hasBackdrop\"\n  [xPosition]=\"menuPosition?.xPosition\"\n  [yPosition]=\"menuPosition?.yPosition\"\n  [singDropDownMenuReposition]=\"{menuTrigger: menuTrigger, menuTriggerElementRef: menuTriggerElementRef}\"\n  [menuPanelId]=\"menuTrigger?.menu?.panelId\"\n  [singDropDownMenuStyle]=\"menuStyle\">\n  <!--Dynamic Menu Component-->\n  <ng-container\n    #menuContainer\n    *ngIf=\"menuTrigger?.menuOpen\"\n    singDropDownDynamicDirective\n    [dynamicComponentClass]=\"dropDownOptions?.menuComponent\"\n    [inputs]=\"menuInputs\"\n  ></ng-container>\n</mat-menu>\n\n<!--File Uploader-->\n<input class=\"file-uploader\" type=\"file\" #fileUploader (change)=\"fileChange($event)\">\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-connection-loader',\n  template: `\n    <div class=\"loader-container\">\n      <div class=\"loader\"><span></span></div>\n      <div class=\"loader-text\">{{ text }}</div>\n    </div>\n  `,\n  styleUrls: ['./connection-loader.component.scss'],\n})\nexport class SingConnectionLoaderComponent {\n  @Input() text = '';\n}\n","import {\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  SimpleChange,\n  SimpleChanges,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\ntype UserOutputs = Record<string, (event: any) => void>;\ntype UserInputs = Record<string, any>;\ntype ComponentInputs = ComponentFactory<any>['inputs'];\ntype ComponentOutputs = ComponentFactory<any>['outputs'];\n@Directive({\n  selector: '[singSimpleTableCustomComponentView]',\n})\nexport class ComponentViewDirective implements OnDestroy, OnChanges {\n  private subscription = new Subject();\n  private componentFactory?: ComponentFactory<any>;\n  private componentRef?: ComponentRef<any>;\n  @Input('singSimpleTableCustomComponentView') component!: Type<any>;\n  @Input() outputs?: UserOutputs = {};\n  @Input() inputs?: UserInputs = {};\n\n  @Input() reloadComp?: boolean;\n  @Input() injector?: Injector;\n\n  constructor(private viewContainerRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    assertNotNullOrUndefined(this.component);\n\n    let componentChanges: Record<string, SimpleChange>;\n    const shouldCreateNewComponent =\n      changes.component?.previousValue !== changes.component?.currentValue ||\n      changes.injector?.previousValue !== changes.injector?.currentValue ||\n      changes.inputs;\n\n    if (shouldCreateNewComponent) {\n      this.destroyComponent();\n      this.createComponent();\n      componentChanges = this.makeComponentChanges(changes.inputs, true);\n    }\n    componentChanges ??= this.makeComponentChanges(changes.inputs, false);\n\n    assertNotNullOrUndefined(this.componentFactory);\n    assertNotNullOrUndefined(this.componentRef);\n\n    this.validateOutputs(this.componentFactory.outputs, this.outputs ?? {}, this.componentRef.instance);\n    this.validateInputs(this.componentFactory.inputs, this.inputs ?? {});\n    this.bindInputs(this.componentFactory.inputs, this.inputs ?? {}, this.componentRef.instance);\n    this.subscription.next(null); // to remove old subscription\n    this.bindOutputs(this.componentFactory.outputs, this.outputs ?? {}, this.componentRef.instance);\n    if ((this.componentRef.instance as OnChanges).ngOnChanges) {\n      this.componentRef.instance.ngOnChanges(componentChanges);\n    }\n  }\n\n  private makeComponentChanges(inputsChange: SimpleChange, firstChange: boolean): Record<string, SimpleChange> {\n    const previuosInputs = inputsChange?.previousValue ?? {};\n    const currentInputs = inputsChange?.currentValue ?? {};\n    return Object.keys(currentInputs).reduce((acc, inputName) => {\n      const currentInputValue = currentInputs[inputName];\n      const previuosInputValue = previuosInputs[inputName];\n      if (currentInputValue !== previuosInputValue) {\n        acc[inputName] = new SimpleChange(firstChange ? undefined : previuosInputValue, currentInputValue, firstChange);\n      }\n      return acc;\n    }, {} as Record<string, SimpleChange>);\n  }\n\n  private createComponent() {\n    this.componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.component);\n    this.componentRef = this.viewContainerRef.createComponent<any>(this.component);\n  }\n\n  private bindOutputs(componentOutputs: ComponentInputs, userOutputs: UserInputs, componentInstance: any) {\n    componentOutputs.forEach((output) => {\n      (componentInstance[output.propName] as EventEmitter<any>)\n        .pipe(takeUntil(this.subscription))\n        .subscribe((event) => {\n          const handler = userOutputs[output.templateName];\n          if (handler) {\n            // in case the output has not been provided at all\n            handler(event);\n          }\n        });\n    });\n  }\n\n  private bindInputs(componentInputs: ComponentInputs, userInputs: UserInputs, componentInstance: any) {\n    componentInputs.forEach((input) => {\n      const inputValue = userInputs[input.templateName];\n      componentInstance[input.propName] = inputValue;\n    });\n  }\n\n  private validateOutputs(componentOutputs: ComponentOutputs, userOutputs: UserOutputs, componentInstance: any) {\n    componentOutputs.forEach((output) => {\n      if (!(componentInstance[output.propName] instanceof EventEmitter)) {\n        throw new Error(`Output ${output.propName} must be a typeof EventEmitter`);\n      }\n    });\n\n    const outputsKeys = Object.keys(userOutputs);\n    outputsKeys.forEach((key) => {\n      const componentHaveThatOutput = componentOutputs.some((output) => output.templateName === key);\n      if (!componentHaveThatOutput) {\n        throw new Error(`Output ${key} is not ${this.component.name} output.`);\n      }\n      if (!(userOutputs[key] instanceof Function)) {\n        throw new Error(`Output ${key} must be a function`);\n      }\n    });\n  }\n\n  private validateInputs(componentInputs: ComponentInputs, userInputs: UserInputs) {\n    const userInputsKeys = Object.keys(userInputs);\n    userInputsKeys.forEach((userInputKey) => {\n      const componentHaveThatInput = componentInputs.some(\n        (componentInput) => componentInput.templateName === userInputKey\n      );\n      if (!componentHaveThatInput) {\n        throw new Error(`Input ${userInputKey} is not ${this.component.name} input.`);\n      }\n    });\n  }\n\n  private destroyComponent() {\n    this.componentRef?.destroy();\n    this.viewContainerRef.clear();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyComponent();\n    this.subscription.next(void 0);\n    this.subscription.complete();\n  }\n}\n\nfunction assertNotNullOrUndefined<T>(value: T): asserts value is NonNullable<T> {\n  if (value === null || value === undefined) {\n    throw new Error('cannot be undefined or null');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get } from 'lodash';\n\n@Pipe({\n  name: 'getValue',\n  pure: true,\n})\nexport class GetValue implements PipeTransform {\n  transform(obj: any, key?: any): any {\n    if (!key) return obj;\n\n    return get(obj, key);\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  EventEmitter,\n} from '@angular/core';\nimport { CdkDrag, CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { BehaviorSubject, combineLatestWith, Observable, Subject } from 'rxjs';\nimport { map, takeUntil, tap } from 'rxjs/operators';\nimport { MatLegacyPaginator as MatPaginator } from '@angular/material/legacy-paginator';\nimport { MatLegacyTableDataSource as MatTableDataSource } from '@angular/material/legacy-table';\nimport {MatSort, Sort, SortDirection} from '@angular/material/sort';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DropDownItem } from '../../../form-controls/drop-down/models/drop-down-item.interface';\nimport { SkinOptions } from '../../../form-controls/drop-down/enums/skin-options.enum';\nimport { PaginatorPage } from '../../../data-table/paginator/models/paginator-page.interface';\nimport { SimpleTableColumn } from '../../../data-table/simple-table/model/columns.interface';\n\n@Component({\n  selector: 'sing-simple-table',\n  templateUrl: './simple-table.component.html',\n  styleUrls: ['./simple-table.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingSimpleTableComponent implements OnInit, AfterViewInit, OnDestroy {\n  @ViewChild(MatSort) sort: MatSort;\n  @ViewChild(MatPaginator) paginator: MatPaginator;\n  @ViewChildren(CdkDrag) dragArr: QueryList<CdkDrag>;\n  /**\n   * set selection model to select rows. if not passed, row click will not be triggered\n   */\n  @Input() selectionModel: SelectionModel<any>;\n  /**\n   * set total items from server\n   */\n  @Input() itemsLength: number;\n  /**\n   * set text to empty state\n   */\n  @Input() emptyStateTemplate: TemplateRef<any>;\n  @Input() isSortingEnabled = true;\n  /**\n   * set trackBy property for table\n   */\n  @Input() trackByValue: string;\n  /**\n   * Input function to determine if row should be disabled\n   */\n  @Input() isDisableRowFunc = (row: any) => {\n    if (!row) return false;\n    return false;\n  };\n  /**\n   * Add selectAll and row checkbox\n   */\n  @Input() addCheckboxes = false;\n  /**\n   * Selection Model for checkboxes\n   */\n  @Input() selection: SelectionModel<any>;\n  /**\n   * Input of results per page array\n   * @param options - DropDownItem\n   */\n  @Input() set pageSizeOptions(options: DropDownItem[]) {\n    this.isPaginationOn = true;\n    this.pageSizeOptionsLocal = options;\n    const selectedPageSize = this.pageSizeOptionsLocal.find((option: DropDownItem) => option.selected)?.value;\n    if (selectedPageSize) {\n      this._pageSize = selectedPageSize;\n    } else {\n      this.pageSizeOptionsLocal[0].selected = true;\n      this._pageSize = this.pageSizeOptionsLocal[0].value;\n    }\n  }\n\n  /**\n   * Input of displayed columns in table\n   * @param columns\n   */\n  @Input() set displayedColumns(columns: SimpleTableColumn[]) {\n    //Used observable to sync between items to displayedColumns\n    this.displayedColumnsKeys = columns.map((column) => column.field);\n    const sort = columns.find((column) => column.sort)?.field;\n    if (sort) {\n      this.activeSort = sort;\n    }\n    this.displayedColumns$.next(columns);\n  }\n  /**\n   * Set only items per page without dropdown\n   * @param size\n   */\n  @Input() set pageSize(size: number) {\n    this.isPaginationOn = true;\n    this.isItemsDropdownShown = false;\n    this._pageSize = size;\n  }\n  /**\n   * Input of table data\n   * @param rows - the items that will be shown in table\n   */\n  @Input() set items(rows: any[]) {\n    //Used observable to sync between items to displayedColumns\n    this.isLoaderOn = true;\n    this.items$.next(rows);\n  }\n  /**\n   * Column initial sort direction\n   */\n  @Input() initialSortDirection: SortDirection = 'asc';\n  /**\n   * To show loader or not\n   */\n  @Input() useLoader = false;\n  /**\n   * register to pagination page change event\n   */\n  @Output() pageChange = new EventEmitter<PaginatorPage>();\n\n  @Output() selectionChanged = new EventEmitter<any[]>();\n\n  /**\n   * On click on column header sort\n   */\n  @Output() sortChanged = new EventEmitter<Sort>();\n\n\n\n  public _items: MatTableDataSource<any>;\n  public isPaginationOn = false;\n  public isItemsDropdownShown = true;\n  public displayedColumnsKeys: string[];\n  public items$: BehaviorSubject<any[]> = new BehaviorSubject<any[]>([]);\n  public vm$: Observable<{ items; columns }>;\n  public pageIndex = 0;\n  public skinOptions = SkinOptions;\n  public activeSort = null;\n  public pageSizeOptionsLocal: DropDownItem[] = [{ title: 'Empty', value: 1, selected: true }];\n  public isPaginationVisible;\n  private displayedColumns$: BehaviorSubject<SimpleTableColumn[]> = new BehaviorSubject<SimpleTableColumn[]>([]);\n  public _pageSize = 0;\n  public isLoaderOn = false;\n\n  private ngUnsubscribe: Subject<void> = new Subject<void>();\n\n  ngOnInit(): void {\n    this.isLoaderOn = true;\n    this.init();\n  }\n\n  ngAfterViewInit(): void {\n    this.checkValidInputs();\n    this.initTable();\n  }\n\n  /**\n   * Initialize component\n   * @private\n   */\n  private init(): void {\n    this.vm$ = this.items$.pipe(\n      combineLatestWith(this.displayedColumns$),\n      map(([items, columns]: [any, SimpleTableColumn[]]) => ({ items: items, columns: columns })),\n      tap((vm) => {\n        this.itemsLength = this.itemsLength || vm.items.length;\n        this._items = new MatTableDataSource<any>(vm.items);\n        this.initSortAndPaginator();\n        this.isLoaderOn = false;\n      })\n    );\n  }\n\n  /**\n   * Table initialization\n   */\n  private initTable(): void {\n    this.initSortAndPaginator();\n\n    if (this.addCheckboxes) {\n      this.selection.changed.pipe(takeUntil(this.ngUnsubscribe)).subscribe((selectionChanged) => {\n        this.selectionChanged.emit(selectionChanged.source.selected);\n      });\n    }\n  }\n\n  /**\n   * Updating results amount in table\n   * @param $event - DropDownItem\n   */\n  public updatePageSize($event: DropDownItem): void {\n    this._pageSize = $event.value;\n    this.paginator.pageSize = this._pageSize;\n    this.triggerPagination();\n  }\n\n  /**\n   * Updating current page in pagination\n   * @param $event\n   */\n  public updateManualPage($event: PaginatorPage): void {\n    this.paginator.pageIndex = $event.pageNumber - 1;\n    this.pageChange.emit($event);\n    this.triggerPagination();\n  }\n\n  /**\n   * Drag and drop columns event\n   * @param event\n   */\n  public drop(event: CdkDragDrop<string[]>) {\n    moveItemInArray(this.displayedColumnsKeys, event.previousIndex, event.currentIndex);\n  }\n\n  public rowClicked(row: any): void {\n    if (this.selectionModel) {\n      this.selectionModel.select(row);\n    }\n  }\n\n  public isRowSelected(row: any): boolean {\n    return this.selectionModel?.isSelected(row);\n  }\n\n  /**\n   * Triggers page change by value\n   */\n  private triggerPagination(): void {\n    this.isLoaderOn = true;\n    this.paginator.page.next(this.paginator);\n  }\n\n  /**\n   * check given input are valid\n   */\n  private checkValidInputs(): void {\n    if (this._pageSize === 0 && this.isPaginationOn) {\n      this._pageSize = 1;\n      console.error('pageSizeOptions is mandatory for sing-simple-table component');\n    }\n    if (this.displayedColumnsKeys === undefined) {\n      console.error('displayedColumns is mandatory for sing-simple-table component');\n    }\n    if (this.selection && !this.addCheckboxes) {\n      console.error('addCheckboxes is needed to be TRUE for component selection functionality');\n    }\n  }\n\n  public trackByFunc(index, item) {\n    if (this.trackByValue) {\n      return item[this.trackByValue] ? item[this.trackByValue] : undefined;\n    } else if (item.id) {\n      return item.id;\n    }\n    return undefined;\n  }\n\n  /*Is all checkboxes isSelected*/\n  isAllSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this._items.data.length;\n    return numSelected === numRows;\n  }\n\n  /** Selects all rows if they are not all selected; otherwise clear selection. */\n  toggleAllRows() {\n    if (this.isAllSelected()) {\n      this.selection.clear();\n      return;\n    }\n\n    this.selection.select(...this._items.data);\n  }\n\n  initSortAndPaginator() {\n    if (this._items) {\n      this._items.sort = this.sort;\n      if (this.pageSizeOptionsLocal) {\n        this._items.paginator = this.paginator;\n      }\n    }\n  }\n\n  sortClicked($event: Sort) {\n    this.isLoaderOn = true;\n    this.sortChanged.emit($event);\n  }\n\n  ngOnDestroy(): void {\n    this.dragArr?.forEach((drag: any) => {\n      drag.element = null;\n      drag.dropContainer = null;\n      drag._viewContainerRef = null;\n      drag._changeDetectorRef = null;\n      drag.__ngContext__ = null;\n    });\n\n    this.ngUnsubscribe.next();\n    this.ngUnsubscribe.complete();\n  }\n}\n","<div class='table'>\n  <div class='table__header'>\n    <ng-content></ng-content>\n    <sing-drop-down\n      (clickedItem)='updatePageSize($event)'\n      *ngIf='isPaginationOn && isItemsDropdownShown'\n      [dropDownOptions]='{\n        skinOptions: skinOptions.Transparent,\n        useClientSideAscSort: false\n      }'\n      [items]='pageSizeOptionsLocal'\n      data-mgmtautomationid='simpleTableResultsDropDown'\n    ></sing-drop-down>\n  </div>\n  <div *ngIf='vm$ | async as vm' class='table__wrapper'>\n    <div class='table__wrapper__inner'>\n      <table\n        (cdkDropListDropped)='drop($event)'\n        [dataSource]='_items'\n        [matSortActive]='activeSort'\n        [matSortDirection]=\"initialSortDirection\"\n        [matSortDisabled]='!isSortingEnabled'\n        [trackBy]=\"trackByFunc.bind(this)\"\n        cdkDropList\n        cdkDropListOrientation='horizontal'\n        class='mat-elevation-z8'\n        mat-table\n        matSort\n        (matSortChange)=\"sortClicked($event)\"\n      >\n        <ng-container *ngFor='let column of vm.columns; index as index' matColumnDef='{{ column.field }}'>\n          <th\n            *matHeaderCellDef\n            [@.disabled]='true'\n            [attr.data-mgmtautomationid]=\"'simpleTableHeader' + column.displayName\"\n            [id]=\"'simpleTableHeader' + column.displayName\"\n            [ngClass]=\"'w-75'\"\n            [style]=\"column?.style ? column.style : null\"\n            cdkDrag\n            mat-header-cell\n            mat-sort-header=\"\"\n            [disabled]=\"column.sortable === false\"\n          >\n            <div class=\"header-checkbox-container\" *ngIf=\"index === 0 && addCheckboxes\">\n              <mat-checkbox (change)=\"$event ? toggleAllRows() : null\"\n                            (click)=\"$event.stopPropagation()\"\n                            [checked]=\"selection.hasValue() && isAllSelected()\"\n                            [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n              </mat-checkbox>\n            </div>\n            {{ column.displayName }}\n          </th>\n          <td *matCellDef='let element' [ngClass]=\"'w-75'\" mat-cell>\n            <div class=\"table-cell-container\">\n              <div class=\"cell-checkbox-container\" *ngIf=\"index === 0 && addCheckboxes\">\n                <mat-checkbox\n                              (change)=\"$event ? selection.toggle(element) : null\"\n                              [checked]=\"selection.isSelected(element)\">\n                </mat-checkbox>\n              </div>\n              <div class='text-wrapper' singEllipsis\n                   [attr.data-mgmtAutomationId]=\"'simpleTableCell_' + column.displayName\">\n                <ng-container *ngIf='(!column?.cellDataFunc && !column?.customComponent)'>\n                  {{ element | getValue: column.field }}\n                </ng-container>\n\n                <ng-container *ngIf=\"column?.cellDataFunc\">\n                  {{ column?.cellDataFunc(element) }}\n                </ng-container>\n\n                <ng-container *ngIf=\"!column?.cellDataFunc && column?.customComponent\">\n                  <ng-template [singSimpleTableCustomComponentView]=\"column.customComponent\"\n                               [inputs]=\"{data: element}\" [outputs]=\"column.customComponentOutputs\"></ng-template>\n                </ng-container>\n              </div>\n            </div>\n          </td>\n        </ng-container>\n\n        <tr *matHeaderRowDef='displayedColumnsKeys; sticky: true' mat-header-row></tr>\n        <tr\n          *matRowDef='let row ;index as rowIndex; columns: displayedColumnsKeys'\n          [attr.data-mgmtAutomationId]=\"'simpleTableRow_' + rowIndex\"\n          (click)='rowClicked(row)'\n          [ngClass]='{ selected: selectionModel && isRowSelected(row), disabled: isDisableRowFunc(row) }'\n          mat-row\n        ></tr>\n\n        <ng-container *ngIf='emptyStateTemplate'>\n          <ng-container matColumnDef='noData'>\n            <td *matFooterCellDef [attr.colspan]='displayedColumnsKeys.length'>\n              <ng-template [ngTemplateOutlet]='emptyStateTemplate'></ng-template>\n            </td>\n          </ng-container>\n\n          <tr *matFooterRowDef=\"['noData']\" [hidden]='(items$ | async)?.length' mat-footer-row></tr>\n        </ng-container>\n      </table>\n    </div>\n    <ng-container *ngIf='isPaginationOn'>\n      <sing-paginator\n        (pageChange)='updateManualPage($event)'\n        (showPaginationChanged)='isPaginationVisible = $event'\n        [id]=\"'devices-pagination'\"\n        [maxVisiblePages]='10'\n        [numOfEntityPerPage]='_pageSize'\n        [selectedPage]='pageIndex + 1'\n        [showSelectedPageOnly]='false'\n        [totalServerEntities]='itemsLength'\n        data-mgmtautomationid='simpleTablePaginator'\n      ></sing-paginator>\n    </ng-container>\n  </div>\n\n  <sing-connection-loader class=\"loader\" *ngIf=\"isLoaderOn && useLoader\" text=\"Loading...\"></sing-connection-loader>\n\n  <mat-paginator\n    *ngIf='isPaginationOn'\n    [length]='itemsLength'\n    [pageIndex]='pageIndex'\n    [pageSize]='_pageSize'\n  ></mat-paginator>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DefaultDropDownFooterAction } from '../../models/default-drop-down-footer-action.interface';\n\n@Component({\n  selector: 'sing-default-drop-down-footer',\n  templateUrl: './default-drop-down-footer.component.html',\n  styleUrls: ['./default-drop-down-footer.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DefaultDropDownFooterComponent {\n  private _apply: DefaultDropDownFooterAction = {\n    automationId: 'drop-down-footer-apply-button',\n    name: 'Apply',\n    show: true,\n  };\n  @Input()\n  set apply(apply: DefaultDropDownFooterAction) {\n    this._apply = { ...this._apply, ...apply };\n  }\n\n  get apply(): DefaultDropDownFooterAction {\n    return this._apply;\n  }\n\n  private _cancel: DefaultDropDownFooterAction = {\n    automationId: 'drop-down-footer-cancel-button',\n    name: 'Cancel',\n    show: true,\n  };\n  @Input()\n  set cancel(cancel: DefaultDropDownFooterAction) {\n    this._cancel = {\n      ...this._cancel,\n      ...cancel,\n    };\n  }\n\n  get cancel(): DefaultDropDownFooterAction {\n    return this._cancel;\n  }\n\n  @Output() readonly applyClicked = new EventEmitter<any>();\n  @Output() readonly cancelClicked = new EventEmitter<any>();\n}\n","<footer class=\"footer-action-container\">\n  <!--Cancel-->\n  <button\n    *ngIf=\"cancel?.show\"\n    [attr.data-mgmtAutomationId]=\"cancel?.automationId\"\n    class=\"cancel-button s1-btn-small-primary-outline\"\n    type=\"button\"\n    (click)=\"cancelClicked?.emit($event)\">\n    {{cancel?.name}}\n  </button>\n\n  <!--Apply-->\n  <button\n    *ngIf=\"apply?.show\"\n    [attr.data-mgmtAutomationId]=\"apply?.automationId\"\n    class=\"apply-button s1-btn-small-primary-full\"\n    type=\"button\"\n\n    (click)=\"applyClicked?.emit($event)\">\n    {{apply?.name}}\n  </button>\n</footer>\n","import { Component, Input } from '@angular/core';\nimport { D_50_COLOR } from '../../../../utils/color.utils';\n\n@Component({\n  selector: 'sing-pulse-loader',\n  templateUrl: './pulse-loader.component.html',\n  styleUrls: ['./pulse-loader.component.scss'],\n})\nexport class SingPulseLoaderComponent {\n  @Input() width = '6px';\n  @Input() color = D_50_COLOR;\n}\n","<div class=\"pulse-container\">\n  <div class=\"pulse-box\">\n    <svg class=\"pulse-svg\" [attr.width]=\"width\" [attr.height]=\"width\" viewBox=\"0 0 50 50\" version=\"1.1\"\n         xmlns=\"http://www.w3.org/2000/svg\">\n      <circle class=\"circle first-circle\" [attr.fill]=\"color\" cx=\"25\" cy=\"25\" r=\"25\"></circle>\n      <circle class=\"circle second-circle\"  [attr.fill]=\"color\" cx=\"25\" cy=\"25\" r=\"25\"></circle>\n      <circle class=\"circle third-circle\"  [attr.fill]=\"color\" cx=\"25\" cy=\"25\" r=\"25\"></circle>\n      <circle class=\"circle\" [attr.fill]=\"color\" cx=\"25\" cy=\"25\" r=\"25\"></circle>\n    </svg>\n  </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingLoaderComponent } from './loader/loader.component';\nimport { SingConnectionLoaderComponent } from './connection-loader/connection-loader.component';\nimport { SingPulseLoaderComponent } from './pulse-loader/pulse-loader.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingLoaderComponent, SingConnectionLoaderComponent, SingPulseLoaderComponent],\n  exports: [SingLoaderComponent, SingConnectionLoaderComponent, SingPulseLoaderComponent]\n})\nexport class SingLoaderModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingEmptySearchStateComponent } from './empty-search-state/empty-search-state.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingEmptySearchStateComponent],\n  exports: [SingEmptySearchStateComponent],\n})\nexport class SingEmptySearchStateModule {}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  Type,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { DefaultDropDownMenuContainerComponent } from '../../components/default-drop-down-menu-container/default-drop-down-menu-container.component';\nimport { ServerSideOptions } from '../../models/drop-down-server-options.interface';\nimport { DropDownItem } from '../../models/drop-down-item.interface';\nimport { PaginatorPage } from '../../../../data-table/paginator/models/paginator-page.interface';\nimport { DropDownMenuInputs } from '../../models/drop-down-menu-inputs.interface';\nimport { Subscription } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { filterEventMessageByEventType } from '../../services/drop-down-event-messages/drop-down-event-messages.operatoes';\nimport { DropDownEventType } from '../../enums/drop-down-event-type.enum';\nimport { DropDownSearchComponent } from '../../components/drop-down-search/drop-down-search.component';\nimport { DropDownEventMessagesService } from '../../services/drop-down-event-messages/drop-down-event-messages.service';\nimport { DOCUMENT } from '@angular/common';\nimport { DropDownServerSideService } from '../../services/drop-down-server-side.service';\nimport { DropDownEventMessage } from '../../models/drop-down-event-message.interface';\nimport { DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS } from '../../consts/drop-down.consts';\nimport {\n  createDropDownItemsFromServerResponse,\n  executeDropdownItemsMapper,\n  executeResponseMapper,\n} from '../../utils/drop-down.utils';\nimport { cloneDeep, merge as _merge } from 'lodash';\nimport { SingHttpResponse } from '../../../../../services/http-call/models/sing-http-response';\n\n/**\n * NOTE: dont remove the below dynamic. it is used for the injection of\n *  @Inject(DOCUMENT) private document: Document,\n * read more here https://github.com/angular/angular/issues/20351\n */\n/** @dynamic */\n@Component({\n  selector: 'sing-nested-server-drop-down-container',\n  templateUrl: './nested-server-drop-down-container.component.html',\n  styleUrls: ['../../components/default-drop-down-menu-container/default-drop-down-menu-container.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NestedServerDropDownContainerComponent\n  extends DefaultDropDownMenuContainerComponent\n  implements OnInit, AfterViewInit, OnDestroy {\n  @Input()\n  set serverSideOptions(serverSideOptions: ServerSideOptions) {\n    this._serverSideOptions = serverSideOptions;\n\n    if (serverSideOptions?.subUrl?.length) {\n      this.isServerSide = true;\n      this._serverSideOptions = this.createServerSideOptions(serverSideOptions);\n      if (!this.serverSideOptions.skipFirstGet) {\n        this.getServerData();\n      }\n    } else if (!!serverSideOptions) {\n      console.error('[DropDownComponent] subUrl property is missing!');\n    }\n    this.cdr.markForCheck();\n  }\n\n  get serverSideOptions(): ServerSideOptions {\n    return this._serverSideOptions;\n  }\n\n  @Input() itemComponent: Type<any>;\n\n  public menuInputs: DropDownMenuInputs;\n  private searchQuery = '';\n  private serverDataSubscription: Subscription;\n  private skip = 0;\n  private pageNumber: number;\n  private eventMessages$ = this.dropDownEventMessagesService.listen$.pipe(takeUntil(this.ngUnSubscribe));\n  private searchValueChanged$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.nestedServerSearchValueChanged),\n    filter((event) => event.data?.menuIndexNumber === this.menuIndexNumber && this.isServerSide),\n    takeUntil(this.ngUnSubscribe)\n  );\n  private pageChanged$ = this.eventMessages$.pipe(\n    filterEventMessageByEventType(DropDownEventType.nestedServerPageChanged),\n    filter((event) => event.data?.menuIndexNumber === this.menuIndexNumber),\n    takeUntil(this.ngUnSubscribe)\n  );\n\n  @ViewChild(DropDownSearchComponent) searchComponentRef: DropDownSearchComponent;\n\n  constructor(\n    renderer: Renderer2,\n    cdr: ChangeDetectorRef,\n    dropDownEventMessagesService: DropDownEventMessagesService,\n    @Inject(DOCUMENT) document: Document,\n    viewContainerRef: ViewContainerRef,\n    private dropDownServerSideService: DropDownServerSideService\n  ) {\n    super(renderer, cdr, dropDownEventMessagesService, document, viewContainerRef);\n    this.searchValueChanged$.subscribe(this.searchValueChanged.bind(this));\n    this.pageChanged$.subscribe(this.pageChanged.bind(this));\n  }\n\n  private searchValueChanged(eventMessage: DropDownEventMessage): void {\n    if (this.searchQuery !== eventMessage.data?.value) {\n      this.searchQuery = eventMessage.data?.value;\n      this.skip = 0;\n      this.nextCursor = null;\n      this.getServerData();\n    }\n  }\n\n  private createServerSideOptions(serverSideOptions: ServerSideOptions): ServerSideOptions {\n    if (!serverSideOptions.hasOwnProperty('params')) {\n      serverSideOptions.params = {};\n    }\n\n    // use Proxy on the params object in order to catch set changes\n    serverSideOptions.params = new Proxy(serverSideOptions.params, this.serverParamsHandler());\n\n    return _merge({}, DEFAULT_SERVER_SIDE_DROP_DOWN_OPTIONS, serverSideOptions);\n  }\n\n  private serverParamsHandler(): ProxyHandler<any> {\n    return {\n      set: (obj, prop, value) => {\n        // The default behavior to store the value\n        obj[prop] = value;\n        this._serverSideOptions.params[prop] = value;\n        if (this._serverSideOptions.params[prop] === null) {\n          delete this._serverSideOptions.params[prop];\n        }\n        // Indicate success\n        return true;\n      },\n    };\n  }\n\n  /**\n   * get data from server on page change\n   */\n  private pageChanged(eventMessage: DropDownEventMessage): void {\n    const page = eventMessage.data.value as PaginatorPage;\n    if (this.skip !== page.skip) {\n      this.skip = page.skip;\n      this.pageNumber = page.pageNumber;\n      this.getServerData();\n    }\n  }\n\n  private getServerData(): void {\n    if (this.serverDataSubscription) {\n      this.serverDataSubscription.unsubscribe();\n    }\n\n    const isNextCursor: boolean =\n      this.serverSideOptions.useInfiniteScroll && !this.serverSideOptions.useInfiniteScrollTotalItems;\n    this.serverDataSubscription = this.dropDownServerSideService\n      .getServerData(this.serverSideOptions, this.searchQuery, this.skip, this.nextCursor, isNextCursor)\n      .subscribe((response: SingHttpResponse) => {\n        this.serverSideOptions.paginationOptions.totalServerEntities = response.pagination\n          ? response.pagination.totalItems\n          : response.data.length;\n        const data = executeResponseMapper(this.serverSideOptions, response.data, this.pageNumber);\n        const dropDownItems = createDropDownItemsFromServerResponse(this.serverSideOptions, data);\n        let items = executeDropdownItemsMapper(this.serverSideOptions, dropDownItems);\n        items = this.concatItemsIfInfiniteScroll(response, items);\n        this.setItems(items);\n      });\n  }\n\n  private concatItemsIfInfiniteScroll(response: SingHttpResponse, items: DropDownItem[]): DropDownItem[] {\n    if (this.serverSideOptions.useInfiniteScroll) {\n      const currentItems = this.nextCursor ? this.items : null;\n      this.nextCursor = response.pagination.nextCursor;\n      if (currentItems) {\n        items.unshift(...currentItems);\n      }\n\n      if (this.serverSideOptions.useInfiniteScrollTotalItems) {\n        this.skip = items.length;\n      }\n    }\n    return items;\n  }\n\n  private setItems(items: DropDownItem[]): void {\n    this._items = cloneDeep(items);\n    this.updateSelectedItems();\n  }\n\n  private updateSelectedItems(): void {\n    if (this._items && Array.isArray(this._items)) {\n      this._items.map((item) => {\n        item.selected = this.selectedItemsState.isItemSelected(item.value);\n      });\n      this.updateMenuInputs();\n    }\n  }\n\n  private updateMenuInputs(): void {\n    this.menuInputs = {\n      items: cloneDeep(this._items),\n      dropDownOptions: this.dropDownOptions,\n      serverSideOptions: this.serverSideOptions,\n      isServerSide: this.isServerSide,\n      selectedItemsState: cloneDeep(this.selectedItemsState),\n      menuIndexNumber: 1,\n      nextCursor: this.nextCursor,\n      itemTemplateRef: this.itemTemplateRef,\n      footerTemplateRef: this.footerTemplateRef,\n      isUsedAsReactiveForm: this.isUsedAsReactiveForm,\n      isSelectionChangedSubscribedOnHost: this.isSelectionChangedSubscribedOnHost,\n    };\n    this.cdr.markForCheck();\n  }\n\n  searched(value: string) {\n    this.searchValue = value;\n    this.cdr.markForCheck();\n    this.dropDownEventMessagesService.nestedSearchValueChanged(this.searchValue, this.menuIndexNumber);\n    /**\n     * we are losing focus when sub menu closes on search changed.\n     * so in order to keep the search in focus, we need to use the setTimeout in order to let sub menu close\n     * first and then return search to focus\n     */\n    setTimeout(() => {\n      const isSearchInFocus = document.activeElement === this.searchComponentRef.searchTextBoxElement.nativeElement;\n      if (!isSearchInFocus) {\n        this.searchComponentRef.searchTextBoxElement.nativeElement.focus();\n      }\n    });\n  }\n}\n","<!--Search-->\n<sing-drop-down-search\n  *ngIf=\"dropDownOptions.showSearch\"\n  data-mgmtautomationid=\"SearchButton\"\n  [minNumOfChars]=\"dropDownOptions?.searchMinNumOfChars\"\n  (searched)=\"searched($event)\">\n</sing-drop-down-search>\n\n<div class=\"selection-action-container\">\n  <!--Clear Selected-->\n  <button\n    *ngIf=\"dropDownOptions?.showClearSelected\"\n    [disabled]=\"isAllItemsUnSelected || searchValue.length > 0\"\n    data-mgmtautomationid=\"dropdown-reset-selection\"\n    class=\"clear-selected-button s1-btn-large-primary-link\"\n    type=\"button\"\n    (click)=\"dropDownEventMessagesService.clearSelected()\">\n    Clear\n  </button>\n</div>\n\n<!--Dropdown Items-->\n<sing-default-drop-down-items\n  data-dont-close-dropdown-on-scroll\n  [attr.data-mgmtAutomationId]=\"'menu-items-container-' + menuIndexNumber\"\n  [class.virtual-scroll]=\"serverSideOptions?.useInfiniteScroll\"\n  [items]=\"items\"\n  [isNestedServerSideMenu]=\"true\"\n  [dropDownOptions]=\"dropDownOptions\"\n  [serverSideOptions]=\"serverSideOptions\"\n  [isServerSide]=\"isServerSide\"\n  [selectedItemsState]=\"selectedItemsState\"\n  [searchValue]=\"searchValue\"\n  [menuIndexNumber]=\"menuIndexNumber\"\n  [nextCursor]=\"nextCursor\"\n  [itemTemplateRef]=\"itemTemplateRef\"\n  [itemComponent]=\"itemComponent\"\n>\n</sing-default-drop-down-items>\n\n<ng-container *ngTemplateOutlet=\"footerTemplateRef\"></ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDropDownComponent } from './drop-down/drop-down.component';\nimport { DropDownFilterItemsPipe } from './pipes/drop-down-filter-items.pipe';\nimport { DropDownCapitalizeFirstLetterPipe } from './pipes/drop-down-capitalize-first-letter.pipe';\nimport { AscSortPipe } from './pipes/drop-down-asc-sort.pipe';\nimport { DropDownDynamicDirective } from './directives/drop-down-dynamic.directive';\nimport { DropDownMenuStyleDirective } from './directives/drop-down-menu-style.directive';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\nimport { DefaultDropDownFooterComponent } from './components-export/default-drop-down-footer/default-drop-down-footer.component';\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';\nimport { DefaultDropDownItemComponent } from './components/default-drop-down-item/default-drop-down-item.component';\nimport { DefaultDropDownItemsComponent } from './components/default-drop-down-items/default-drop-down-items.component';\nimport { DefaultDropDownMenuContainerComponent } from './components/default-drop-down-menu-container/default-drop-down-menu-container.component';\nimport { DefaultTriggerComponent } from './components/default-trigger/default-trigger.component';\nimport { DropDownSearchComponent } from './components/drop-down-search/drop-down-search.component';\nimport { DynamicDropDownItemContainerComponent } from './components/dynamic-drop-down-item-container/dynamic-drop-down-item-container.component';\nimport { TriggerToggleArrowComponent } from './components/trigger-toggle-arrow/trigger-toggle-arrow.component';\nimport { RouterModule } from '@angular/router';\nimport { SingEllipsisModule } from '../../directives/ellipsis/ellipsis.module';\nimport { SingPaginatorModule } from '../../data-table/paginator/paginator.module';\nimport { SingLoaderModule } from '../../buttons-and-indicators/loader/loader.module';\nimport { SingEmptySearchStateModule } from '../../buttons-and-indicators/empty-search-state/empty-search-state.module';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { SingInputAutoFocusModule } from '../../directives/input-auto-focus/input-auto-focus.module';\nimport { NestedServerDropDownContainerComponent } from './components-export/nested-server-drop-down-container/nested-server-drop-down-container.component';\nimport { DropDownArrowManagerDirective } from './directives/drop-down-arrow-manager.directive';\nimport { DropDownMenuRepositionDirective } from './directives/drop-down-menu-reposition.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatTooltipModule,\n    MatMenuModule,\n    MatButtonModule,\n    RouterModule,\n    SingEllipsisModule,\n    SingPaginatorModule,\n    SingLoaderModule,\n    SingEmptySearchStateModule,\n    ScrollingModule,\n    SingInputAutoFocusModule,\n  ],\n  declarations: [\n    SingDropDownComponent,\n    DropDownFilterItemsPipe,\n    DropDownCapitalizeFirstLetterPipe,\n    AscSortPipe,\n    DropDownDynamicDirective,\n    DropDownMenuStyleDirective,\n    DefaultDropDownFooterComponent,\n    DefaultDropDownItemComponent,\n    DefaultDropDownItemsComponent,\n    DefaultDropDownMenuContainerComponent,\n    NestedServerDropDownContainerComponent,\n    DefaultTriggerComponent,\n    DropDownSearchComponent,\n    DynamicDropDownItemContainerComponent,\n    TriggerToggleArrowComponent,\n    DropDownArrowManagerDirective,\n    DropDownMenuRepositionDirective,\n  ],\n  exports: [SingDropDownComponent, DefaultDropDownFooterComponent],\n})\nexport class SingDropDownModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSimpleTableComponent } from './simple-table/simple-table.component';\nimport { SingDropDownModule } from '../../form-controls/drop-down/drop-down.module';\nimport { MatLegacyTableModule as MatTableModule } from '@angular/material/legacy-table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { SingPaginatorModule } from '../../data-table/paginator/paginator.module';\nimport { MatLegacyPaginatorModule as MatPaginatorModule } from '@angular/material/legacy-paginator';\nimport { SingEllipsisModule } from '../../directives/ellipsis/ellipsis.module';\nimport { GetValue } from './pipes/get-value.pipe';\nimport { ComponentViewDirective } from './directives/component-view.directive';\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\nimport {SingLoaderModule} from '../../buttons-and-indicators/loader/loader.module';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        SingDropDownModule,\n        MatTableModule,\n        MatSortModule,\n        DragDropModule,\n        SingPaginatorModule,\n        MatPaginatorModule,\n        SingEllipsisModule,\n        MatCheckboxModule,\n        SingLoaderModule,\n    ],\n  declarations: [SingSimpleTableComponent, GetValue, ComponentViewDirective],\n  exports: [SingSimpleTableComponent, ComponentViewDirective],\n})\nexport class SingSimpleTableModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './simple-table.module';\nexport * from './simple-table/simple-table.component';\nexport * from './directives/component-view.directive';\nexport * from './model/columns.interface';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './loader.module';\nexport * from './loader/loader.component';\nexport * from './connection-loader/connection-loader.component';\nexport * from './pulse-loader/pulse-loader.component';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './empty-search-state.module';\nexport * from './empty-search-state/empty-search-state.component';\n","export enum DropDownSelectedStateMapperActions {\n  exclude = 'exclude',\n  include = 'include',\n}\n","import { DropDownSelectedState } from '../models/drop-down-selected-state.interface';\nimport { DropDownExcludeIncludeItems } from '../models/drop-down-exclude-include-items.interface';\nimport { SelectedState } from '../classes/selected-state';\nimport { DropDownSelectedStateMapperActions } from '../enums/drop-down-selected-state-mapper-actions.enum';\nimport { cloneDeep } from 'lodash';\n\n/**\n * convert DropDownSelectedState to DropDownExcludeIncludeItems\n * @param selectedState\n */\nexport function toDropDownExcludeIncludeItems(selectedState: DropDownSelectedState): DropDownExcludeIncludeItems {\n  let excludeIncludeItems!: DropDownExcludeIncludeItems;\n  if (selectedState.selectAll && selectedState.unselectAll) {\n    console.error('[toDropDownExcludeIncludeItems] selectAll and unselectAll can not be true at the same time');\n  } else if (selectedState.selectAll) {\n    excludeIncludeItems = {\n      action: DropDownSelectedStateMapperActions.exclude,\n      items: Object.keys(selectedState.unselectedItemsMap),\n    };\n  } else {\n    excludeIncludeItems = {\n      action: DropDownSelectedStateMapperActions.include,\n      items: Object.keys(selectedState.selectedItemsMap),\n    };\n  }\n  return cloneDeep(excludeIncludeItems);\n}\n\n/**\n * convert DropDownExcludeIncludeItems to DropDownSelectedState\n * @param excludeIncludeItems\n */\nexport function toDropDownSelectedState(excludeIncludeItems: DropDownExcludeIncludeItems): DropDownSelectedState {\n  let selectedState!: DropDownSelectedState;\n  if (_isExclude(excludeIncludeItems)) {\n    selectedState = new SelectedState(true, false);\n    excludeIncludeItems.items.forEach((item) => {\n      selectedState.unselectedItemsMap[item] = { value: item, title: item };\n    });\n  } else if (_isInclude(excludeIncludeItems)) {\n    selectedState = new SelectedState(false, true);\n    excludeIncludeItems.items.forEach((item) => {\n      selectedState.selectedItemsMap[item] = { value: item, title: item };\n    });\n  } else {\n    console.error(\n      `[toDropDownSelectedState] action can't be ${excludeIncludeItems.action}. should be one of DropDownSelectedStateMapperActions`\n    );\n  }\n  return cloneDeep(selectedState);\n}\n\n/**\n * check if exclude\n */\nfunction _isExclude(excludeIncludeItems: DropDownExcludeIncludeItems): boolean {\n  return excludeIncludeItems?.action === DropDownSelectedStateMapperActions.exclude;\n}\n\n/**\n * check if include\n */\nfunction _isInclude(excludeIncludeItems: DropDownExcludeIncludeItems): boolean {\n  return excludeIncludeItems?.action === DropDownSelectedStateMapperActions.include;\n}\n","import { cloneDeep } from 'lodash';\nimport { DropDownItem } from '../models/drop-down-item.interface';\n\nexport const DEFAULT_TIME_ZONE: DropDownItem = {\n  title: 'GMT +00:00',\n  value: 'GMT+00:00',\n};\n\nexport const TIME_ZONE_DROPDOWN_ITEMS: DropDownItem[] = [\n  {\n    title: 'GMT -11:00',\n    value: 'GMT-11:00',\n  },\n  {\n    title: 'GMT -10:00',\n    value: 'GMT-10:00',\n  },\n  {\n    title: 'GMT -09:30',\n    value: 'GMT-09:30',\n  },\n  {\n    title: 'GMT -09:00',\n    value: 'GMT-09:00',\n  },\n  {\n    title: 'GMT -08:00',\n    value: 'GMT-08:00',\n  },\n  {\n    title: 'GMT -07:00',\n    value: 'GMT-07:00',\n  },\n  {\n    title: 'GMT -06:00',\n    value: 'GMT-06:00',\n  },\n  {\n    title: 'GMT -05:00',\n    value: 'GMT-05:00',\n  },\n  {\n    title: 'GMT -04:00',\n    value: 'GMT-04:00',\n  },\n  {\n    title: 'GMT -03:30',\n    value: 'GMT-03:30',\n  },\n  {\n    title: 'GMT -03:00',\n    value: 'GMT-03:00',\n  },\n  {\n    title: 'GMT -02:00',\n    value: 'GMT-02:00',\n  },\n  {\n    title: 'GMT -01:00',\n    value: 'GMT-01:00',\n  },\n  {\n    title: 'GMT +00:00',\n    value: 'GMT+00:00',\n  },\n  {\n    title: 'GMT +01:00',\n    value: 'GMT+01:00',\n  },\n  {\n    title: 'GMT +02:00',\n    value: 'GMT+02:00',\n  },\n  {\n    title: 'GMT +03:00',\n    value: 'GMT+03:00',\n  },\n  {\n    title: 'GMT +03:30',\n    value: 'GMT+03:30',\n  },\n  {\n    title: 'GMT +04:00',\n    value: 'GMT+04:00',\n  },\n  {\n    title: 'GMT +04:30',\n    value: 'GMT+04:30',\n  },\n  {\n    title: 'GMT +05:00',\n    value: 'GMT+05:00',\n  },\n  {\n    title: 'GMT +05:30',\n    value: 'GMT+05:30',\n  },\n  {\n    title: 'GMT +05:45',\n    value: 'GMT+05:45',\n  },\n  {\n    title: 'GMT +06:00',\n    value: 'GMT+06:00',\n  },\n  {\n    title: 'GMT +06:30',\n    value: 'GMT+06:30',\n  },\n  {\n    title: 'GMT +07:00',\n    value: 'GMT+07:00',\n  },\n  {\n    title: 'GMT +08:00',\n    value: 'GMT+08:00',\n  },\n  {\n    title: 'GMT +08:45',\n    value: 'GMT+08:45',\n  },\n  {\n    title: 'GMT +09:00',\n    value: 'GMT+09:00',\n  },\n  {\n    title: 'GMT +09:30',\n    value: 'GMT+09:30',\n  },\n  {\n    title: 'GMT +10:00',\n    value: 'GMT+10:00',\n  },\n  {\n    title: 'GMT +10:30',\n    value: 'GMT+10:30',\n  },\n  {\n    title: 'GMT +11:00',\n    value: 'GMT+11:00',\n  },\n  {\n    title: 'GMT +12:00',\n    value: 'GMT+12:00',\n  },\n  {\n    title: 'GMT +13:00',\n    value: 'GMT+13:00',\n  },\n  {\n    title: 'GMT +13:45',\n    value: 'GMT+13:45',\n  },\n  {\n    title: 'GMT +14:00',\n    value: 'GMT+14:00',\n  },\n];\n\n/**\n * get time zone dropdown items\n * @param defaultSelectedValue the value should be one of the TIME_ZONE_DROPDOWN_ITEMS value items\n */\nexport function getTimeZoneDropdownItems(defaultSelectedValue?: string): DropDownItem[] {\n  const cloneTimeZone = cloneDeep(TIME_ZONE_DROPDOWN_ITEMS);\n  cloneTimeZone.map((timeItem) => {\n    timeItem.selected = false;\n    if (defaultSelectedValue && defaultSelectedValue.length) {\n      timeItem.selected = defaultSelectedValue === timeItem.value;\n    }\n  });\n  return cloneDeep(cloneTimeZone);\n}\n\n/**\n * Since we are using the new sing-drop-down, it expect to receive an object that include value and title properties,\n * We only get from the server the gmtOffset value so we need to find the correct object that include the title param before we using it\n * @param selectedValue\n */\nexport function getCorrectTimeZoneObjByValue(selectedValue?: string): DropDownItem {\n  const cloneTimeZone = cloneDeep(TIME_ZONE_DROPDOWN_ITEMS);\n  return cloneTimeZone.filter((timeItem) => timeItem.value === selectedValue)[0] || DEFAULT_TIME_ZONE;\n}\n","import { cloneDeep } from 'lodash';\nimport { DropDownItem } from '../models/drop-down-item.interface';\n\nexport const DAY_DROPDOWN_ITEMS: DropDownItem[] = [\n  {\n    title: 'Monday',\n    value: 'monday',\n  },\n  {\n    title: 'Tuesday',\n    value: 'tuesday',\n  },\n  {\n    title: 'Wednesday',\n    value: 'wednesday',\n  },\n  {\n    title: 'Thursday',\n    value: 'thursday',\n  },\n  {\n    title: 'Friday',\n    value: 'friday',\n  },\n  {\n    title: 'Saturday',\n    value: 'saturday',\n  },\n  {\n    title: 'Sunday',\n    value: 'sunday',\n  },\n];\n\n/**\n * get day dropdown items\n * @param defaultSelectedValue the value should be one of the DAY_DROPDOWN_ITEMS value items\n */\nexport function getDaysDropdownItems(defaultSelectedValue?: string): DropDownItem[] {\n  const cloneDay = cloneDeep(DAY_DROPDOWN_ITEMS);\n  cloneDay.map((day: DropDownItem) => {\n    day.selected = defaultSelectedValue && defaultSelectedValue === day.value;\n  });\n  return cloneDeep(cloneDay);\n}\n\n/**\n * Since we are using the new sing-drop-down, it expect to receive an object that include value and title properties,\n * We only get from the server the gmtOffset value so we need to find the correct object that include the title param before we using it\n * @param selectedValue\n */\nexport function getCorrectDayObjByValue(selectedValue: string): DropDownItem {\n  const cloneDay = cloneDeep(DAY_DROPDOWN_ITEMS);\n  return cloneDay.filter((day: DropDownItem) => day.value === selectedValue)[0];\n}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './drop-down.module';\nexport * from './drop-down/drop-down.component';\nexport * from './components-export/default-drop-down-footer/default-drop-down-footer.component';\nexport * from './components-export/nested-server-drop-down-container/nested-server-drop-down-container.component';\nexport * from './services/drop-down-event-messages/drop-down-event-messages.service';\nexport * from './services/nested-menu-state.service';\nexport * from './enums/skin-options.enum';\nexport * from './enums/drop-down-menu-position-options.enum';\nexport * from './enums/drop-down-selected-state-mapper-actions.enum';\nexport * from './utils/selected-state-mapper.utils';\nexport * from './models/default-drop-down-footer-action.interface';\nexport * from './models/drop-down-exclude-include-items.interface';\nexport * from './models/drop-down-item.interface';\nexport * from './models/drop-down-menu-position.interface';\nexport * from './models/drop-down-options.interface';\nexport * from './models/drop-down-reactive-form-model.interface';\nexport * from './models/drop-down-selection-changes.interface';\nexport * from './models/drop-down-server-options.interface';\nexport * from './models/drop-down-child-options.interface';\nexport * from './models/drop-down-selected-state.interface';\nexport * from './utils/time-zone-dropdown-items.const';\nexport * from './utils/day-dropdown-items.const';\n","import { NewChipOptions, ServerSideNewChipConfig } from '../models/new-chip-options.interface';\nimport { ChipsInputServerSideMenuOptions } from '../models/chips-input-menu-options.interface';\n\nexport const DEFAULT_NEW_CHIP_OPTIONS: NewChipOptions = Object.freeze({\n  helpText: 'Create New',\n  serverSide: Object.freeze({\n    showToasterError: true,\n  }) as ServerSideNewChipConfig,\n});\n\n/**\n * default server side menu options\n */\nexport const DEFAULT_SERVER_SIDE_MENU_OPTIONS = Object.freeze(<Partial<ChipsInputServerSideMenuOptions>>{\n  skipFirstGet: false,\n  showToasterError: true,\n  nameAlias: 'name',\n  idAlias: 'id',\n  maxServerItems: 10,\n  paginationMaxVisiblePages: 3,\n  totalServerEntities: 0,\n});\n","import { isNil } from 'lodash';\nimport { Chip } from '../../../buttons-and-indicators/chip/models/chip.interface';\n\n/**\n * Handle the selected chips state.\n */\nexport class SelectedChipsState {\n  /**\n   * keep the selected chips as a map object\n   * where the key is chip id and value is the selected chip\n   */\n  private selectedChipsMap: Record<string, Chip> = {};\n\n  /**\n   * add chip to selectedChipsMap\n   * @param chip\n   */\n  public addToSelected(chip: Chip): void {\n    if (this.isValidChip(chip)) {\n      this.selectedChipsMap[chip.id] = chip;\n    }\n  }\n\n  /**\n   * remove chip from selectedChipsMap\n   * @param chip\n   */\n  public removeFromSelected(chip: Chip): void {\n    if (this.isValidChip(chip)) {\n      delete this.selectedChipsMap[chip.id];\n    }\n  }\n\n  /**\n   * add multiple chips to selectedChipsMap\n   * @param chips\n   */\n  public addMultipleToSelected(chips: Chip[]): void {\n    if (chips && Array.isArray(chips)) {\n      chips.forEach((chip) => {\n        this.addToSelected(chip);\n      });\n    }\n  }\n\n  /**\n   * check if chip is selected by a given chip id\n   * @param chipId\n   */\n  public isChipSelected(chipId: string): boolean {\n    return this.selectedChipsMap.hasOwnProperty(chipId);\n  }\n\n  /**\n   * restSelectedChipsMap\n   * rest Selected Chips Map\n   * run this when from the parent  when you rest the parent form\n   * if not you will not be Able to re-add a previously added chip\n   */\n\n  public restSelectedChipsMap(): void {\n    this.selectedChipsMap = {};\n  }\n\n  /**\n   * check if a given chip is valid.\n   * chip is considered as valid when it has a name and id props\n   * @param chip\n   */\n  private isValidChip(chip: Chip): boolean {\n    let isValid = false;\n    if (isNil(chip) || isNil(chip.name) || isNil(chip.id)) {\n      console.error('[SelectedChipsState] selected chip should have name and id properties with value');\n      isValid = false;\n    } else {\n      isValid = true;\n    }\n    return isValid;\n  }\n}\n","import { SimpleChanges } from '@angular/core';\nimport { isFunction } from 'lodash';\nimport { ChipsInputServerSideMenuOptions } from '../models/chips-input-menu-options.interface';\nimport { ChipsInputItemOption } from '../models/chips-input-item-option.interface';\n\n/**\n * check if the given component @Inputs() are valid\n * @param changes\n */\nexport function validationComponentInputs(changes: SimpleChanges) {\n  if (changes.optionItems && changes.serverSideMenuOptions) {\n    console.error(\n      '[ChipsInputComponent] you should use one of the component input \"optionItems\" or \"serverSideMenuOptions\" but not both of them'\n    );\n  }\n}\n\n/**\n * execute any callback function\n * @param callback\n * @param arr\n */\nexport function executeCallback(callback: (...arr: any) => any, data: any, ...arr: any): any {\n  if (isFunction(callback)) {\n    const _data = callback(data, ...arr);\n    if (_data) {\n      data = _data;\n    }\n  }\n  return data;\n}\n\n/**\n * create chips input menu items from server response\n */\nexport function createMenuItemsFromServerResponse(\n  serverSideOptions: ChipsInputServerSideMenuOptions,\n  data: any[]\n): ChipsInputItemOption[] {\n  const items: ChipsInputItemOption[] = [];\n  if (data) {\n    data.reduce((previousValue: any, currentValue: any) => {\n      previousValue.push({\n        name: currentValue[serverSideOptions.nameAlias],\n        id: currentValue[serverSideOptions.idAlias],\n        data: currentValue,\n      });\n      return previousValue;\n    }, items);\n  }\n  return items;\n}\n","export enum ChipsActions {\n  chipAdded = 'chipAdded',\n  chipRemoved = 'chipRemoved',\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { isFunction } from 'lodash';\nimport { ServerSideNewChipConfig } from '../models/new-chip-options.interface';\nimport { ChipsInputServerSideMenuOptions } from '../models/chips-input-menu-options.interface';\nimport { SingHttpCallService } from '../../../../services/http-call/services/sing-http-call.service';\nimport { SingHttpMethods } from '../../../../services/http-call/enums/sing-http-methods.enum';\nimport { SingHttpPayload } from '../../../../services/http-call/models/sing-http-payload';\nimport { SingHttpResponse } from '../../../../services/http-call/models/sing-http-response';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ChipsInputServerSideService {\n  constructor(private httpCallService: SingHttpCallService) {}\n\n  /**\n   * create a new chip\n   * @param payload\n   * @param serverSideNewChipConfig\n   */\n  public createNewChip(payload: SingHttpPayload, serverSideNewChipConfig: ServerSideNewChipConfig): Observable<any> {\n    const { subUrl, showToasterError, requestPayloadMapper, responseMapper } = serverSideNewChipConfig;\n\n    if (isFunction(requestPayloadMapper)) {\n      payload = requestPayloadMapper(payload);\n    }\n\n    return this.httpCallService\n      .lazyRequest({ method: SingHttpMethods.POST, url: subUrl, payload, hideErrorAlert: !showToasterError })\n      .pipe(\n        map((response: SingHttpResponse) => {\n          if (isFunction(responseMapper)) {\n            const res = responseMapper(response);\n            if (res) {\n              response = res;\n            }\n          }\n          return response.data;\n        })\n      );\n  }\n\n  /**\n   * get server data in order to show option items\n   */\n  public getServerData(\n    serverSideOptions: ChipsInputServerSideMenuOptions,\n    query = '',\n    skip = 0\n  ): Observable<SingHttpResponse | never> {\n    const params: any = this.createServerDataQueryParams(serverSideOptions, query, skip);\n    return this.httpCallService.lazyRequest({\n      method: SingHttpMethods.GET,\n      url: serverSideOptions.subUrl,\n      queryParams: params,\n    });\n  }\n\n  /**\n   * create server data query params.\n   */\n  private createServerDataQueryParams(serverSideOptions: ChipsInputServerSideMenuOptions, query = '', skip = 0): any {\n    const params: any = { limit: serverSideOptions.maxServerItems, skip };\n    if (serverSideOptions.aliasToQuery) {\n      params[serverSideOptions.aliasToQuery] = query;\n    } else {\n      params.query = query;\n    }\n    return Object.assign(params, serverSideOptions.params);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { cloneDeep, isObject } from 'lodash';\n\n@Pipe({\n  name: 'singFilterPipe',\n})\nexport class SingFilterPipe implements PipeTransform {\n  /**\n   * filter list of items by given value\n   * @param items list of items to filter\n   * @param value the value we are search\n   * @param key a property name\n   * @param suppressFilter set to true if no need to use the filter pipe.\n   *        we have cases where we are sometimes doing client filter and sometimes server filter\n   *        in those case we can use this flag.\n   */\n  transform(items: any[], value: string, key: string, suppressFilter = false): any {\n    if (suppressFilter) {\n      return items;\n    }\n    if (!items) {\n      return [];\n    }\n    if (!value) {\n      return items;\n    }\n    const filteredItems = items.filter((item: any) => {\n      const itemVal = isObject(item) ? item[key] : item;\n      return itemVal.toLowerCase().trim().includes(value.toLowerCase().trim());\n    });\n    return cloneDeep(filteredItems);\n  }\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\nimport { MatLegacyAutocomplete as MatAutocomplete, MatLegacyAutocompleteSelectedEvent as MatAutocompleteSelectedEvent, MatLegacyAutocompleteTrigger as MatAutocompleteTrigger } from '@angular/material/legacy-autocomplete';\nimport { cloneDeep, merge as _merge, remove } from 'lodash';\nimport Mark from 'mark.js';\nimport { Chip } from '../../../buttons-and-indicators/chip/models/chip.interface';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { ChipsInputItemOption } from '../models/chips-input-item-option.interface';\nimport { ChipsInputServerSideMenuOptions } from '../models/chips-input-menu-options.interface';\nimport { NewChipOptions } from '../models/new-chip-options.interface';\nimport { DEFAULT_NEW_CHIP_OPTIONS, DEFAULT_SERVER_SIDE_MENU_OPTIONS } from '../consts/chips-input.consts';\nimport { ChipsInputSearchOptions } from '../models/chips-input-search-options.interface';\nimport { ChipsSelectionChanged } from '../models/chips-selection-changed.interface';\nimport { SelectedChipsState } from '../utils/selected-chips-state';\nimport { ChipsInputServerSideService } from '../services/chips-input-server-side.service';\nimport {\n  createMenuItemsFromServerResponse,\n  executeCallback,\n  validationComponentInputs,\n} from '../utils/chips-input.utils';\nimport { ChipsActions } from '../enums/chips-action';\nimport { SingHttpResponse } from '../../../../services/http-call/models/sing-http-response';\nimport { timeout } from '../../../../decorators/set-timeout.decorator';\nimport { PaginatorPage } from '../../../data-table/paginator/models/paginator-page.interface';\nimport { LegacyTooltipPosition as TooltipPosition } from '@angular/material/legacy-tooltip';\n\n@Component({\n  selector: 'sing-chips-input',\n  templateUrl: './chips-input.component.html',\n  styleUrls: ['./chips-input.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingChipsInputComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => SingChipsInputComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingChipsInputComponent implements AfterViewInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {\n  private _chips: Chip[] = [];\n  @Input() placeholder = 'Search...';\n  @Input() allowCreateNewChip = true; // In case the consumed component wants to prevent auto creation of a new chip\n  @Input() hidePaginator = false;\n  @Input() ellipsisPosition: TooltipPosition = 'below';\n  /**\n   * the selected chips\n   * @param chips\n   */\n  @Input('selectedChips')\n  set chips(chips: Chip[]) {\n    if (Array.isArray(chips)) {\n      this._chips = cloneDeep(chips);\n      this.selectedChipsState.addMultipleToSelected(chips);\n      this.cdr.markForCheck();\n    }\n  }\n\n  get chips(): Chip[] {\n    return this._chips;\n  }\n\n  /**\n   * items that will show on search\n   */\n  private _optionItems: ChipsInputItemOption[] = [];\n  @Input()\n  set optionItems(optionItems: ChipsInputItemOption[]) {\n    if (Array.isArray(optionItems)) {\n      this._optionItems = cloneDeep(optionItems);\n      this.cdr.markForCheck();\n    }\n  }\n\n  get optionItems(): ChipsInputItemOption[] {\n    return this._optionItems;\n  }\n\n  /**\n   * disabled chips input\n   */\n  private _disabled = false;\n  @Input()\n  set disabled(disabled: boolean) {\n    this._disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  /**\n   * server side options to display items in menu\n   */\n  private _serverSideMenuOptions: ChipsInputServerSideMenuOptions;\n  @Input()\n  set serverSideMenuOptions(serverSideMenuOptions: ChipsInputServerSideMenuOptions) {\n    if (serverSideMenuOptions) {\n      this.isServerSide = true;\n      this._serverSideMenuOptions = this.createServerSideMenuOptions(serverSideMenuOptions);\n      if (!this.serverSideMenuOptions.skipFirstGet) {\n        this.getServerItems();\n      }\n      this.cdr.markForCheck();\n    }\n  }\n\n  get serverSideMenuOptions(): ChipsInputServerSideMenuOptions {\n    return this._serverSideMenuOptions;\n  }\n\n  /**\n   * options for creating a new chip.\n   * How it works:\n   * in case search result is empty, we will display an option to create a new chip\n   * this option is hidden by default unless this object exists.\n   */\n  private _newChipOptions: NewChipOptions;\n  @Input()\n  set newChipOptions(newChipOptions: NewChipOptions) {\n    this._newChipOptions = _merge({}, DEFAULT_NEW_CHIP_OPTIONS, newChipOptions);\n    this.cdr.markForCheck();\n  }\n\n  get newChipOptions(): NewChipOptions {\n    return this._newChipOptions;\n  }\n\n  /**\n   * search options\n   */\n  _searchOptions: ChipsInputSearchOptions = { debounceTime: 200, minNumOfChars: 1 };\n  @Input()\n  set searchOptions(searchOptions: ChipsInputSearchOptions) {\n    this._searchOptions = searchOptions;\n  }\n\n  get searchOptions(): ChipsInputSearchOptions {\n    return this._searchOptions;\n  }\n\n  @Input() footerTemplateRef: TemplateRef<any>;\n\n  @Output() readonly selectionChanged = new EventEmitter<ChipsSelectionChanged>();\n  @Output() readonly searchValueChanged = new EventEmitter<string>();\n  @Output() createNew = new EventEmitter<string>(); // Emit the intention of creating a new chip\n\n  private selectedChipsState = new SelectedChipsState();\n  private ngUnSubscribe: Subject<void> = new Subject<void>();\n  private skip = 0;\n  public selectedPage = 1;\n  private serverDataSubscription: Subscription;\n  public showLoader = false;\n  public isServerSide = false;\n  public selectable = true;\n  public currentSearchValue = '';\n  public showCreateNewOption = false;\n  public searchValueChanged$ = new Subject<string>();\n  public isEmptySearch = false;\n\n  @ViewChild('searchInput', { static: false }) searchInput: ElementRef<HTMLInputElement>;\n  @ViewChild('auto', { static: false }) matAutocomplete: MatAutocomplete;\n  @ViewChild('searchInput', { static: false, read: MatAutocompleteTrigger })\n  autocompleteTrigger: MatAutocompleteTrigger;\n\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: Chip[]) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  constructor(private cdr: ChangeDetectorRef, private chipsInputServerSideService: ChipsInputServerSideService) {\n    this.searchValueChanged$\n      .asObservable()\n      .pipe(\n        debounceTime(this.searchOptions.debounceTime),\n        filter((searchValue: string) => {\n          return (\n            !searchValue || searchValue.trim().length === 0 || searchValue.length >= this.searchOptions.minNumOfChars\n          );\n        }),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe(this.searchChanged.bind(this));\n  }\n\n  ngAfterViewInit(): void {\n    this.cdr.markForCheck();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    validationComponentInputs(changes);\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * pre add chip check if we need to save the chip first in BE and on success add it to the chip list\n   * otherwise we check if chip does not exist\n   * @param event\n   */\n  preAddChip(event: MatAutocompleteSelectedEvent): void {\n    const chip = event.option.value;\n    if (!chip.id) {\n      if (!this.allowCreateNewChip) {\n        // In case the user needs the creation to be done from outside\n        return;\n      }\n      this.chipsInputServerSideService\n        .createNewChip({ data: { name: chip.name } }, this.newChipOptions.serverSide)\n        .subscribe(this.addChip.bind(this));\n    } else if (!this.selectedChipsState.isChipSelected(chip.id)) {\n      this.addChip(chip);\n    }\n  }\n\n  /**\n   * add chip to selected chips list if it does not exist\n   * @param chip\n   */\n  public addChip(chip: Chip): void {\n    this.showCreateNewOption = false;\n    this.selectedChipsState.addToSelected(chip);\n    this._chips.push(chip);\n    this.emitSelectionChanged(chip, ChipsActions.chipAdded);\n    if (this.searchInput?.nativeElement) {\n      this.searchInput.nativeElement.value = '';\n    }\n    this.currentSearchValue = '';\n    if (this.isServerSide && this.optionItems && this.optionItems.length === 0) {\n      // there's no need to call the this.resetPaginatorDat() as the reset is done on close menu\n      this.getServerItems();\n    }\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * remove chip\n   * @param chip\n   */\n  public remove(chip: Chip): void {\n    if (chip && chip.id) {\n      remove(this.chips, { id: chip.id });\n      this.selectedChipsState.removeFromSelected(chip);\n      this.emitSelectionChanged(chip, ChipsActions.chipRemoved);\n      this.autocompleteTrigger.closePanel();\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   * emit selection changes to host component\n   * @param chip\n   * @param actionType\n   */\n  emitSelectionChanged(chip: Chip, actionType: ChipsActions): void {\n    this.selectionChanged.emit({\n      actionType,\n      changedItem: cloneDeep(chip),\n      chips: cloneDeep(this._chips),\n    });\n    this.propagateChange(this.chips);\n  }\n\n  /**\n   * on search changed\n   * in case server side -> get items from server\n   * otherwise we have items as client side so we just highlight the searched value\n   * @param searchValue\n   */\n  searchChanged(searchValue: string): void {\n    if (this.currentSearchValue !== searchValue) {\n      this.showCreateNewOption = false;\n      this.resetPaginatorData();\n      this.currentSearchValue = searchValue;\n      if (this.serverSideMenuOptions) {\n        this.getServerItems();\n      } else {\n        this.highlightSearchedValue(searchValue);\n      }\n      this.searchValueChanged.emit(searchValue);\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   * get server items\n   */\n  getServerItems(): void {\n    this.showLoader = true;\n    this.isEmptySearch = false;\n    if (this.serverDataSubscription) {\n      this.serverDataSubscription.unsubscribe();\n    }\n    this.serverDataSubscription = this.chipsInputServerSideService\n      .getServerData(this.serverSideMenuOptions, this.currentSearchValue, this.skip)\n      .subscribe((response: SingHttpResponse) => {\n        this.showLoader = false;\n        this.serverSideMenuOptions.totalServerEntities = response.pagination\n          ? response.pagination.totalItems\n          : response.data.length;\n\n        if (response.pagination.totalItems === 0 && response.data.length === 0) {\n          this.isEmptySearch = true;\n        }\n        const data = executeCallback(this.serverSideMenuOptions.responseMapper, response.data, this.selectedPage);\n        const optionItems = createMenuItemsFromServerResponse(this.serverSideMenuOptions, data);\n        this.optionItems = executeCallback(this.serverSideMenuOptions.menuItemsMapper, optionItems);\n        const isSameOptionExists = this.optionItems.find((optionItem) => optionItem.name === this.currentSearchValue);\n        if (\n          this.newChipOptions &&\n          this.currentSearchValue.length &&\n          (!this.optionItems.length || !isSameOptionExists)\n        ) {\n          this.showCreateNewOption = true;\n        }\n        if (!this.isEmptySearch) {\n          this.highlightSearchedValue(this.currentSearchValue);\n        }\n      });\n  }\n\n  /**\n   * highlight searched value\n   */\n  @timeout()\n  highlightSearchedValue(searchValue: string): void {\n    if (searchValue) {\n      const markInstance = new Mark('.item-name');\n      markInstance.mark(searchValue);\n    }\n  }\n\n  /**\n   * when user clicked on page\n   * @param page\n   */\n  pageChanged(page: PaginatorPage): void {\n    this.updatePaginatorData(page.pageNumber, page.skip);\n    this.getServerItems();\n  }\n\n  /**\n   * when menu is closed\n   * we reset the pagination data\n   * and get data from server\n   */\n  menuClosed(): void {\n    if (this.isServerSide) {\n      this.resetPaginatorData();\n      this.getServerItems();\n    }\n  }\n\n  /**\n   * Allow consumer components to trigger panel close when needed\n   * modifier should stay \"public\"\n   */\n  public closePanel() {\n    this.autocompleteTrigger.closePanel();\n  }\n\n  /**\n   * reset pagination data\n   * will update the selectedPage to 1 and skip to 0\n   */\n  resetPaginatorData(): void {\n    this.updatePaginatorData(1, 0);\n  }\n\n  /**\n   * update paginator data\n   * @param selectedPage\n   * @param skip\n   */\n  updatePaginatorData(selectedPage: number, skip: number): void {\n    this.selectedPage = selectedPage;\n    this.skip = skip;\n  }\n\n  /**\n   * create server side menu options.\n   * first we create ES6 proxy on the params property. we are using the proxy to indicate changes on the params property\n   * then we merge the DEFAULT_SERVER_SIDE_MENU_OPTIONS with the given serverSideOptions\n   */\n  private createServerSideMenuOptions(\n    serverSideMenuOptions: ChipsInputServerSideMenuOptions\n  ): ChipsInputServerSideMenuOptions {\n    if (!serverSideMenuOptions.hasOwnProperty('params')) {\n      serverSideMenuOptions.params = {};\n    }\n\n    // use Proxy on the params object in order to catch set changes\n    serverSideMenuOptions.params = new Proxy(serverSideMenuOptions.params, this.serverParamsHandler());\n\n    return _merge({}, DEFAULT_SERVER_SIDE_MENU_OPTIONS, serverSideMenuOptions);\n  }\n\n  /**\n   * part of ES6 proxy handler.\n   * This function executed when params property is changed\n   */\n  private serverParamsHandler(): ProxyHandler<any> {\n    return {\n      set: (obj, prop, value) => {\n        // The default behavior to store the value\n        obj[prop] = value;\n        this._serverSideMenuOptions.params[prop] = value;\n        if (this._serverSideMenuOptions.params[prop] === null) {\n          delete this._serverSideMenuOptions.params[prop];\n        }\n        // Indicate success\n        return true;\n      },\n    };\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   * will add class of 'ng-touched' on sing-chips-input element\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   */\n  writeValue(selectedChips: Chip[]): void {\n    const cloneSelectedChips = Array.isArray(selectedChips) ? cloneDeep(selectedChips) : [];\n    this.chips = cloneDeep(cloneSelectedChips);\n  }\n\n  /**\n   * validate\n   * Part of the NG_VALIDATORS (reactive form)\n   */\n  validate(): ValidationErrors | null {\n    return null;\n  }\n\n  /**\n   * registerOnValidatorChange\n   * Part of the NG_VALIDATORS (reactive form)\n   */\n  registerOnValidatorChange(fn: () => void): void {}\n\n  public inputClicked(): void {\n    if (!this.autocompleteTrigger.panelOpen) {\n      this.autocompleteTrigger.openPanel();\n    }\n  }\n\n  /**\n   * restSelectedChipsMap\n   * rest Selected Chips Map\n   * run this when from the parent  when you rest the parent form\n   * if not you will not be Able to re-add a previously added chip\n   */\n  public restSelectedChipsMap(): void {\n    this.selectedChipsState.restSelectedChipsMap();\n  }\n}\n","<mat-form-field\n  class=\"container\"\n  [class.empty-chips]=\"!chips?.length\"\n  (click)=\"searchInput.focus()\"\n  [class.disabled]=\"disabled\">\n  <mat-chip-list #chipList [disabled]=\"disabled\">\n    <!--Chips-->\n    <mat-chip\n      *ngFor=\"let chip of chips\"\n      disableRipple\n      [selectable]=\"selectable\"\n      [removable]=\"!disabled\"\n      (removed)=\"remove(chip)\">\n      <span data-mgmtAutomationId=\"chip-name\" singEllipsis [position]=\"ellipsisPosition\">{{ chip?.name }}</span>\n      <mat-icon class=\"remove-button\" data-mgmtAutomationId=\"remove-chip\" matChipRemove *ngIf=\"!disabled\">\n        <i class=\"mgmt-x\"></i>\n      </mat-icon>\n    </mat-chip>\n\n    <!--Search-->\n    <input\n      class=\"search-input\"\n      data-mgmtAutomationId=\"search\"\n      [placeholder]=\"placeholder\"\n      #searchInput\n      [matAutocomplete]=\"auto\"\n      [matChipInputFor]=\"chipList\"\n      (input)=\"searchValueChanged$.next(searchInput?.value)\"\n      (focus)=\"onTouched()\"\n      (click)=\"inputClicked()\"\n    />\n  </mat-chip-list>\n\n  <!--Item Options-->\n  <mat-autocomplete\n    class=\"so-chips-input-mat-autocomplete\"\n    #auto=\"matAutocomplete\"\n    (closed)=\"menuClosed()\"\n    (optionSelected)=\"preAddChip($event)\"\n  >\n    <ng-container\n      *ngIf=\"{\n        items: optionItems | singFilterPipe: currentSearchValue:'name':isServerSide\n      } as data\"\n    >\n      <!--Loader-->\n      <mat-option class=\"so-loader-item\" disabled *ngIf=\"showLoader\">\n        <sing-loader></sing-loader>\n      </mat-option>\n\n      <mat-option class=\"empty-search\" disabled *ngIf=\"!showLoader && isEmptySearch && !showCreateNewOption\">\n        <sing-empty-search-state></sing-empty-search-state>\n      </mat-option>\n\n      <div class=\"options-container\">\n        <!--Create New-->\n        <mat-option\n          *ngIf=\"showCreateNewOption && !showLoader\"\n          (click)=\"createNew.emit(currentSearchValue)\"\n          class=\"so-chips-create-new-item\"\n          [value]=\"{ id: null, name: currentSearchValue }\">\n        <span data-mgmtAutomationId=\"create-new-text\" class=\"create-new-text\" singEllipsis [position]=\"ellipsisPosition\">\n          \"{{ currentSearchValue }}\"\n          <span class=\"not-bold\"> ({{ newChipOptions?.helpText || 'Create New' }})</span>\n        </span>\n        </mat-option>\n\n        <!--Items-->\n        <ng-container *ngIf=\"!showLoader\">\n          <mat-option\n            *ngFor=\"let item of data?.items; let index = index\"\n            class=\"so-chips-input-mat-option\"\n            [attr.data-mgmtAutomationId]=\"'item' + index\"\n            [value]=\"item\"\n          >\n            <span class=\"item-name\" singEllipsis [position]=\"ellipsisPosition\">{{ item?.name }}</span>\n          </mat-option>\n\n          <!--Pagination-->\n          <sing-paginator\n            *ngIf=\"!hidePaginator && (serverSideMenuOptions?.totalServerEntities > serverSideMenuOptions?.maxServerItems)\"\n            [id]=\"'pagination_chips_input'\"\n            [maxVisiblePages]=\"serverSideMenuOptions?.paginationMaxVisiblePages\"\n            [totalServerEntities]=\"serverSideMenuOptions?.totalServerEntities\"\n            [numOfEntityPerPage]=\"serverSideMenuOptions?.maxServerItems\"\n            [selectedPage]=\"selectedPage\"\n            (pageChange)=\"pageChanged($event)\">\n          </sing-paginator>\n        </ng-container>\n\n      </div>\n\n      <!--Footer Template-->\n      <div class=\"template-footer\" *ngIf=\"footerTemplateRef\">\n        <div class=\"divider\"></div>\n        <ng-container\n          [ngTemplateOutlet]=\"footerTemplateRef\"\n        ></ng-container>\n      </div>\n\n    </ng-container>\n  </mat-autocomplete>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingFilterPipe } from './filter.pipe';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingFilterPipe],\n  exports: [SingFilterPipe],\n})\nexport class SingFilterModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingChipsInputComponent } from './chips-input/chips-input.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SingPaginatorModule } from '../../data-table/paginator/paginator.module';\nimport { SingLoaderModule } from '../../buttons-and-indicators/loader/loader.module';\nimport { SingEllipsisModule } from '../../directives/ellipsis/ellipsis.module';\nimport { SingFilterModule } from '../../pipes/filter/filter.module';\nimport { MatLegacyFormFieldModule as MatFormFieldModule } from '@angular/material/legacy-form-field';\nimport { MatLegacyChipsModule as MatChipsModule } from '@angular/material/legacy-chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatLegacyAutocompleteModule as MatAutocompleteModule } from '@angular/material/legacy-autocomplete';\nimport { SingEmptySearchStateModule } from '../../../modules/buttons-and-indicators/empty-search-state/empty-search-state.module';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    SingEllipsisModule,\n    SingPaginatorModule,\n    SingLoaderModule,\n    SingFilterModule,\n    MatFormFieldModule,\n    MatChipsModule,\n    MatIconModule,\n    MatAutocompleteModule,\n    SingEmptySearchStateModule,\n  ],\n  declarations: [SingChipsInputComponent],\n  exports: [SingChipsInputComponent],\n})\nexport class SingChipsInputModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './chips-input.module';\nexport * from './chips-input/chips-input.component';\nexport * from './enums/chips-action';\nexport * from './models/chips-input-item-option.interface';\nexport * from './models/chips-input-menu-options.interface';\nexport * from './models/chips-input-search-options.interface';\nexport * from './models/chips-selection-changed.interface';\nexport * from './models/new-chip-options.interface';\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SingCollapsibleGroupChildren } from '../../models/collapsible-data';\nimport { OutletBody } from '../../models/outlet-body.interface';\nimport { CollapsibleDynamicBodyInputs } from '../../models/collapsible-base-dynamic-inputs';\n\n@Component({\n  selector: 'sing-body-right-checkbox',\n  templateUrl: './body-right-checkbox.component.html',\n  styleUrls: ['./body-right-checkbox.component.scss'],\n})\nexport class BodyRightCheckboxComponent implements OutletBody {\n  @Input() inputs: CollapsibleDynamicBodyInputs;\n  @Output() selectionChanged = new EventEmitter<SingCollapsibleGroupChildren>();\n}\n","<div *ngFor='let child of inputs?.data.children' [ngStyle]='inputs?.childContainerStyle' class='child-item'>\n  <div>\n    <div>{{child?.name}}</div>\n    <div *ngIf='child?.description' class='child-item-description'>{{child?.description}}</div>\n  </div>\n  <mat-checkbox\n    (change)='selectionChanged.emit(child)'\n    *ngIf='inputs?.showSelectionCheckboxes;'\n    [attr.data-mgmtautomationid]='child?.name'\n    [checked]='child.selected'\n    [disabled]='inputs?.readonly'\n    [singMatCheckboxSize]='inputs?.checkboxSize'\n    class='child-checkbox to-the-right'>\n       <span [class.selected-cb-text]='child?.selected'\n             [class.unselected-cb-text]='!child?.selected'\n             class='cb-text'>\n            {{child?.selected ? child?.checkboxLabelText?.selectedText : child?.checkboxLabelText?.unselectedText}}\n       </span>\n  </mat-checkbox>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SingCollapsibleGroupChildren } from '../models/collapsible-data';\n\n/**\n * get the number of selected children\n */\n@Pipe({\n  name: 'numOfSelectedChildren',\n})\nexport class NumOfSelectedChildrenPipe implements PipeTransform {\n  transform(collapsibleGroupChildren: SingCollapsibleGroupChildren[]): any {\n    return collapsibleGroupChildren ? collapsibleGroupChildren.filter((child) => child.selected).length : 0;\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OutletHead } from '../../models/outlet-head.interface';\nimport { CollapsibleDynamicHeadInputs } from '../../models/collapsible-base-dynamic-inputs';\n\n@Component({\n  selector: 'sing-head-left-checkbox',\n  templateUrl: './head-left-checkbox.component.html',\n  styleUrls: ['./head-left-checkbox.component.scss'],\n})\nexport class HeadLeftCheckboxComponent implements OutletHead {\n  @Input() inputs: CollapsibleDynamicHeadInputs;\n  @Output() selectionChanged = new EventEmitter<void>();\n}\n","<ng-container *ngIf='{numOfSelectedChildren: (inputs?.data?.children | numOfSelectedChildren)} as calcData'>\n  <mat-checkbox\n    (change)='selectionChanged.emit()'\n    (click)='$event.stopPropagation()'\n    *ngIf='inputs?.showSelectionCheckboxes; else displayParentNameOnly'\n    [attr.data-mgmtautomationid]='inputs?.data?.name'\n    [checked]='inputs?.data?.selected'\n    [disabled]='inputs?.readonly'\n    [indeterminate]='calcData?.numOfSelectedChildren > 0 && calcData?.numOfSelectedChildren < inputs?.data?.children.length'\n    [singMatCheckboxSize]='inputs?.checkboxSize'\n    class='parent-item'>\n    {{inputs?.data?.name}}\n  </mat-checkbox>\n  <ng-template #displayParentNameOnly>\n    {{inputs?.data?.name}}\n  </ng-template>\n  <div *ngIf='inputs?.showTotalSelectedItems' class='total-selected-items'>\n    ({{calcData?.numOfSelectedChildren}})\n  </div>\n</ng-container>\n","export enum CollapsibleGroupType {\n  LeftCheckboxComponent = 'LeftCheckboxComponent',\n  RightCheckboxComponent = 'RightCheckboxComponent',\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OutletHead } from '../../models/outlet-head.interface';\nimport { CollapsibleDynamicHeadInputs } from '../../models/collapsible-base-dynamic-inputs';\n\n@Component({\n  selector: 'sing-head-right-checkbox',\n  templateUrl: './head-right-checkbox.component.html',\n  styleUrls: ['./head-right-checkbox.component.scss'],\n})\nexport class HeadRightCheckboxComponent implements OutletHead {\n  @Input() inputs: CollapsibleDynamicHeadInputs;\n  @Output() selectionChanged = new EventEmitter<void>();\n}\n","<ng-container *ngIf='{numOfSelectedChildren: (inputs?.data?.children | numOfSelectedChildren)} as calcData'>\n  {{inputs?.data?.name}}\n  <div *ngIf='inputs?.showTotalSelectedItems' class='total-selected-items'>\n    ({{calcData?.numOfSelectedChildren}})\n  </div>\n  <sing-toggle-arrow\n    [class.to-right]='inputs?.showToggleArrowToTheRight'\n    [open]='inputs?.open'\n    class='collapsible-head-toggle-arrow'>\n  </sing-toggle-arrow>\n  <mat-checkbox\n    (change)='selectionChanged.emit()'\n\n    (click)='$event.stopPropagation()'\n    [attr.data-mgmtautomationid]='inputs?.data?.name'\n    [checked]='inputs?.data?.selected'\n    [disabled]='inputs?.readonly'\n    [indeterminate]='calcData?.numOfSelectedChildren > 0 && calcData?.numOfSelectedChildren < inputs?.data?.children.length'\n    class='parent-item parent-checkbox to-the-right'>\n  </mat-checkbox>\n</ng-container>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { SingCollapsibleGroupChildren } from '../../models/collapsible-data';\nimport { CollapsibleDynamicBodyInputs } from '../../models/collapsible-base-dynamic-inputs';\nimport { OutletBody } from '../../models/outlet-body.interface';\n\n@Component({\n  selector: 'sing-body-left-checkbox',\n  templateUrl: './body-left-checkbox.component.html',\n  styleUrls: ['./body-left-checkbox.component.scss'],\n})\nexport class BodyLeftCheckboxComponent implements OutletBody {\n  @Input() inputs: CollapsibleDynamicBodyInputs;\n  @Output() selectionChanged = new EventEmitter<SingCollapsibleGroupChildren>();\n}\n","<div *ngFor='let child of inputs?.data.children' [ngStyle]='inputs?.childContainerStyle' class='child-item'>\n  <mat-checkbox\n    (change)='selectionChanged.emit(child)'\n    *ngIf='inputs?.showSelectionCheckboxes; else displayChildNameOnly'\n    [attr.data-mgmtautomationid]='child?.name'\n    [checked]='child.selected'\n    [disabled]='inputs?.readonly'\n    [singMatCheckboxSize]='inputs?.checkboxSize'>\n    {{child?.name}}\n  </mat-checkbox>\n  <ng-template #displayChildNameOnly>\n    {{child?.name}}\n  </ng-template>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const OPEN_CLOSE_ANIMATION = [\n  trigger('openCloseAnimation', [\n    transition(':enter', [\n      style({ opacity: '0', overflow: 'hidden', height: '0px' }),\n      animate('250ms', style({ overflow: 'hidden', height: '*' })),\n    ]),\n    transition(':leave', [\n      style({ overflow: 'hidden', height: '*' }),\n      animate('250ms', style({ opacity: '0', overflow: 'hidden', height: '0px', width: '0px' })),\n    ]),\n  ]),\n];\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OPEN_CLOSE_ANIMATION } from '../animations/open-close.animation';\n\n@Component({\n  selector: 'sing-collapsible',\n  templateUrl: './collapsible.component.html',\n  styleUrls: ['./collapsible.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: OPEN_CLOSE_ANIMATION,\n})\nexport class SingCollapsibleComponent {\n  @Input() open = false;\n  @Input() showToggleArrow = true;\n  @Input() pushArrowToTheRight = true;\n  @Input() toggleOnArrowClicked = false;\n  @Input() showContainerBorder = true;\n  @Input() disabled = false;\n  @Input() identifier?: string;\n  @Input() toggleArrowStyle: { [key: string]: string };\n  @Input() triggerAutomationId: string;\n  private _collapsibleHeadContainerStyle: { [key: string]: string } = { height: '40px' };\n  @Input()\n  set collapsibleHeadContainerStyle(value: { [key: string]: string }) {\n    this._collapsibleHeadContainerStyle = { ...this._collapsibleHeadContainerStyle, ...value };\n  }\n\n  get collapsibleHeadContainerStyle(): { [key: string]: string } {\n    return this._collapsibleHeadContainerStyle;\n  }\n\n  private _arrowPosition: 'left' | 'right' = 'right';\n  @Input()\n  set arrowPosition(direction: 'left' | 'right') {\n    this._arrowPosition = direction || this._arrowPosition;\n  }\n\n  get arrowPosition() {\n    return this._arrowPosition;\n  }\n\n  _maxChildrenContainerHeight = '200px';\n  @Input()\n  set maxChildrenContainerHeight(maxChildrenContainerHeight: string) {\n    if (maxChildrenContainerHeight) {\n      this._maxChildrenContainerHeight = maxChildrenContainerHeight;\n    }\n  }\n\n  get maxChildrenContainerHeight(): string {\n    return this._maxChildrenContainerHeight;\n  }\n\n  @Output() toggleChanged = new EventEmitter<boolean>();\n\n  get showArrow() {\n    return this.showToggleArrow && !this.disabled;\n  }\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  public toggle(): void {\n    if (!this.disabled && !this.toggleOnArrowClicked) {\n      this._toggle();\n    }\n  }\n\n  private _toggle(): void {\n    this.open = !this.open;\n    this.toggleChanged.emit(this.open);\n    this.cd.markForCheck();\n  }\n\n  toggleOnlyOnArrowClicked(): void {\n    if (!this.disabled && this.toggleOnArrowClicked) {\n      this.open = !this.open;\n      this.toggleChanged.emit(this.open);\n    }\n  }\n\n  public expand(): void {\n    if (!this.open) {\n      this._toggle();\n    }\n  }\n\n  public collapse(): void {\n    if (this.open) {\n      this._toggle();\n    }\n  }\n}\n","<div class=\"container\" [ngClass]=\"{'sol-collapsible-opened': open}\" [class.show-container-border]=\"showContainerBorder\">\n  <!--Collapsible Head-->\n  <div class=\"collapsible-head-holder\">\n    <div\n      class=\"collapsible-head-container\"\n      [attr.data-mgmtautomationid]=\"triggerAutomationId\"\n      [class.default-cursor]=\"disabled\"\n      [class.arrow-to-left]=\"arrowPosition === 'left'\"\n      [class.cursor-on-arrow]=\"toggleOnArrowClicked\"\n      [ngStyle]=\"collapsibleHeadContainerStyle\"\n      (click)=\"toggle()\">\n      <ng-content select=\"[collapsible-head-content]\"></ng-content>\n      <sing-toggle-arrow\n        *ngIf='showArrow'\n        [class.to-right]='pushArrowToTheRight'\n        [open]='open'\n        class='collapsible-head-toggle-arrow'\n\n        (click)=\"toggleOnlyOnArrowClicked()\"\n      >\n      </sing-toggle-arrow>\n    </div>\n    <ng-content select=\"[collapsible-additional-content]\"></ng-content>\n  </div>\n  <!--Collapsible Body-->\n  <div\n    class=\"collapsible-body-container\"\n    [ngStyle]=\"{'max-height': maxChildrenContainerHeight}\"\n    [class.arrow-to-left]=\"arrowPosition === 'left'\"\n    *ngIf=\"open\" [@openCloseAnimation]>\n    <ng-content select=\"[collapsible-body-content]\"></ng-content>\n  </div>\n</div>\n\n\n","import {\n  ComponentRef,\n  Directive,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  ViewContainerRef,\n} from '@angular/core';\nimport { CollapsibleDynamicBodyInputs, CollapsibleDynamicHeadInputs } from '../models/collapsible-base-dynamic-inputs';\nimport { cloneDeep } from 'lodash';\n\n@Directive({\n  selector: '[singCreateDynamicComponentConfiguration]',\n})\nexport class CreateDynamicComponentDirective implements OnInit, OnChanges {\n  @Input('singCreateDynamicComponentConfiguration') inputs: CollapsibleDynamicBodyInputs | CollapsibleDynamicHeadInputs;\n  @Output() selectionChanged = new EventEmitter<any>();\n\n  component: ComponentRef<any>;\n\n  constructor(private container: ViewContainerRef) {}\n\n  ngOnInit(): void {\n    if (this.inputs.resolveComponentFactory) {\n      this.component = this.container.createComponent(this.inputs.resolveComponentFactory);\n      this.component.instance.inputs = cloneDeep(this.inputs);\n      if (this.component.instance.selectionChanged) {\n        this.component.instance.selectionChanged.subscribe((event) => {\n          this.selectionChanged.emit(event);\n        });\n      }\n    } else {\n      console.error(\n        `[CreateDynamicComponentDirective] resolveComponentFactory for ${this.inputs.resolveComponentFactory} not found.`\n      );\n    }\n  }\n\n  ngOnChanges(): void {\n    if (this.component) {\n      this.component.instance.inputs = this.inputs;\n    }\n  }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BodyRightCheckboxComponent } from '../outlet-body/body-right-checkbox/body-right-checkbox.component';\nimport { cloneDeep } from 'lodash';\nimport { HeadLeftCheckboxComponent } from '../outlet-head/head-left-checkbox/head-left-checkbox.component';\nimport { CollapsibleGroupType } from '../enums/collapsible-group-type.enum';\nimport { HeadRightCheckboxComponent } from '../outlet-head/head-right-checkbox/head-right-checkbox.component';\nimport { BodyLeftCheckboxComponent } from '../outlet-body/body-left-checkbox/body-left-checkbox.component';\nimport { SingCollapsibleGroupChildren, SingCollapsibleGroupData } from '../models/collapsible-data';\n\n@Component({\n  selector: 'sing-collapsible-group',\n  templateUrl: './collapsible-group.component.html',\n  styleUrls: ['./collapsible-group.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingCollapsibleGroupComponent {\n  @Input() open = false;\n  @Input() readonly = false;\n  @Input() showSelectionCheckboxes = true;\n  @Input() showToggleArrow = true;\n  @Input() showContainerBorder = true;\n  @Input() showTotalSelectedItems = true;\n  @Input() showToggleArrowToTheRight = false;\n  @Input() toggleArrowStyle: { [key: string]: string } = { width: '6px', height: '6px' };\n  @Input() addPaddingLeft = true;\n  @Input() parentCheckboxSize = 13;\n  @Input() childCheckboxSize = 13;\n  @Output() dataChanged = new EventEmitter<any>();\n  @Output() toggleChanged = new EventEmitter<boolean>();\n  HEAD_DYNAMIC_COMPONENT_OPTIONS = {\n    [CollapsibleGroupType.LeftCheckboxComponent]: HeadLeftCheckboxComponent,\n    [CollapsibleGroupType.RightCheckboxComponent]: HeadRightCheckboxComponent,\n  };\n  BODY_DYNAMIC_COMPONENT_OPTIONS = {\n    [CollapsibleGroupType.LeftCheckboxComponent]: BodyLeftCheckboxComponent,\n    [CollapsibleGroupType.RightCheckboxComponent]: BodyRightCheckboxComponent,\n  };\n\n  _collapsibleGroupType = CollapsibleGroupType.LeftCheckboxComponent;\n\n  get collapsibleGroupType(): CollapsibleGroupType {\n    return this._collapsibleGroupType;\n  }\n\n  @Input()\n  set collapsibleGroupType(collapsibleGroupType: CollapsibleGroupType) {\n    this._collapsibleGroupType = collapsibleGroupType;\n    if (this._collapsibleGroupType === CollapsibleGroupType.RightCheckboxComponent) {\n      this.showToggleArrow = false;\n    }\n  }\n\n  private _collapsibleHeadContainerStyle: { [key: string]: string } = { height: '30px' };\n\n  get collapsibleHeadContainerStyle(): { [key: string]: string } {\n    return this._collapsibleHeadContainerStyle;\n  }\n\n  @Input()\n  set collapsibleHeadContainerStyle(value: { [key: string]: string }) {\n    this._collapsibleHeadContainerStyle = { ...this._collapsibleHeadContainerStyle, ...value };\n  }\n\n  private _childContainerStyle: { [key: string]: string } = { height: '30px' };\n\n  get childContainerStyle(): { [key: string]: string } {\n    return this._childContainerStyle;\n  }\n\n  @Input()\n  set childContainerStyle(value: { [key: string]: string }) {\n    this._childContainerStyle = { ...this._childContainerStyle, ...value };\n  }\n\n  _maxChildrenContainerHeight = '200px';\n\n  get maxChildrenContainerHeight(): string {\n    return this._maxChildrenContainerHeight;\n  }\n\n  @Input()\n  set maxChildrenContainerHeight(maxChildrenContainerHeight: string) {\n    if (maxChildrenContainerHeight) {\n      this._maxChildrenContainerHeight = maxChildrenContainerHeight;\n    }\n  }\n\n  _data: SingCollapsibleGroupData;\n\n  get data(): SingCollapsibleGroupData {\n    return this._data;\n  }\n\n  @Input()\n  set data(data: SingCollapsibleGroupData) {\n    if (data && data.children) {\n      this._data = cloneDeep(data);\n      this.updateParentSelectedProperty();\n    }\n  }\n\n  /**\n   * on parent selection changed:\n   * # update data object\n   *   1. update the new parent to be selected or unselected\n   *   2. given new parent value we update the child selected property\n   * # emit event with changes to host component\n   */\n  parentSelectionChanged(): void {\n    this.data.selected = !this.data.selected;\n    this.data.children = this.data.children.map((child) => {\n      child.selected = this.data.selected;\n      return child;\n    });\n    this.dataChanged.emit(cloneDeep({ data: this.data }));\n  }\n\n  /**\n   * on child selection changed:\n   * # update child selected state.\n   * # check if need to update the parent selected state.\n   * # emit event with changes to host component\n   */\n  childSelectionChanged(changedChild: SingCollapsibleGroupChildren): void {\n    changedChild.selected = !changedChild.selected;\n    // if child is unselected the parent should be unselected\n    if (!changedChild.selected) {\n      this.data.selected = false;\n    } else {\n      // if child is selected we check if we have at list one unselected child\n      // and if we have unselected child parent should be unselected otherwise selected\n      this.updateParentSelectedProperty();\n    }\n    this.dataChanged.emit(cloneDeep({ data: this.data, changedChild }));\n  }\n\n  /**\n   * update parent selected property.\n   * check if we have at least one unselected child\n   * and if we have unselected child the parent should be unselected, otherwise selected\n   */\n  updateParentSelectedProperty(): void {\n    if (this.data.children.length) {\n      this.data.selected = !this.data.children.find((child) => !child.selected);\n    }\n  }\n}\n","<sing-collapsible\n  (toggleChanged)='toggleChanged.emit($event); open = $event'\n  [class.add-padding-left]='addPaddingLeft'\n  [collapsibleHeadContainerStyle]='collapsibleHeadContainerStyle'\n  [maxChildrenContainerHeight]='maxChildrenContainerHeight'\n  [open]='open'\n  [showContainerBorder]='showContainerBorder'\n  [pushArrowToTheRight]='showToggleArrowToTheRight'\n  [showToggleArrow]='showToggleArrow'\n\n  [toggleArrowStyle]='toggleArrowStyle'>\n\n  <!--Parent-->\n  <ng-container\n    (selectionChanged)='parentSelectionChanged()'\n\n    [singCreateDynamicComponentConfiguration]='{\n      resolveComponentFactory: HEAD_DYNAMIC_COMPONENT_OPTIONS[collapsibleGroupType],\n      open: open,\n      data: data,\n      showTotalSelectedItems: showTotalSelectedItems,\n      showToggleArrow: showToggleArrow,\n      toggleArrowStyle: toggleArrowStyle,\n      showToggleArrowToTheRight: showToggleArrowToTheRight,\n      checkboxSize: parentCheckboxSize,\n      readonly: readonly,\n      showSelectionCheckboxes: showSelectionCheckboxes\n    }'\n\n    collapsible-head-content>\n  </ng-container>\n\n  <!--Children-->\n  <ng-container\n    (selectionChanged)='childSelectionChanged($event)'\n\n    [singCreateDynamicComponentConfiguration]='{\n      data: data,\n      resolveComponentFactory: BODY_DYNAMIC_COMPONENT_OPTIONS[collapsibleGroupType],\n      childContainerStyle: childContainerStyle,\n      showSelectionCheckboxes: showSelectionCheckboxes,\n      checkboxSize: childCheckboxSize,\n      readonly: readonly\n    }'\n\n    collapsible-body-content>\n  </ng-container>\n\n</sing-collapsible>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingCollapsibleComponent } from './collapsible/collapsible.component';\nimport { SingToggleArrowModule } from '../../buttons-and-indicators/toggle-arrow/toggle-arrow.module';\n\n@NgModule({\n  imports: [CommonModule, SingToggleArrowModule],\n  declarations: [SingCollapsibleComponent],\n  exports: [SingCollapsibleComponent],\n})\nexport class SingCollapsibleModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingCollapsibleGroupComponent } from './collapsible-group/collapsible-group.component';\nimport { SingCollapsibleModule } from '../collapsible/collapsible.module';\nimport { CreateDynamicComponentDirective } from './directives/create-dynamic-component.directive';\nimport { SingToggleArrowModule } from '../../buttons-and-indicators/toggle-arrow/toggle-arrow.module';\nimport { BodyRightCheckboxComponent } from './outlet-body/body-right-checkbox/body-right-checkbox.component';\nimport { NumOfSelectedChildrenPipe } from './pipes/num-of-selected-children.pipe';\nimport { HeadLeftCheckboxComponent } from './outlet-head/head-left-checkbox/head-left-checkbox.component';\nimport { BodyLeftCheckboxComponent } from './outlet-body/body-left-checkbox/body-left-checkbox.component';\nimport { HeadRightCheckboxComponent } from './outlet-head/head-right-checkbox/head-right-checkbox.component';\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\nimport { SingMatCheckboxSizeModule } from '../../directives/mat-checkbox-size/mat-checkbox-size.module';\n\n@NgModule({\n  imports: [CommonModule, SingCollapsibleModule, SingToggleArrowModule, MatCheckboxModule, SingMatCheckboxSizeModule],\n  declarations: [\n    SingCollapsibleGroupComponent,\n    CreateDynamicComponentDirective,\n    NumOfSelectedChildrenPipe,\n    BodyLeftCheckboxComponent,\n    HeadLeftCheckboxComponent,\n    HeadRightCheckboxComponent,\n    BodyRightCheckboxComponent,\n    CreateDynamicComponentDirective,\n  ],\n  exports: [SingCollapsibleGroupComponent],\n})\nexport class SingCollapsibleGroupModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './collapsible-group.module';\nexport * from './collapsible-group/collapsible-group.component';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './collapsible.module';\nexport * from './collapsible/collapsible.component';\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { animate, query, state, style, transition, trigger } from '@angular/animations';\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'sing-search',\n  templateUrl: './search.component.html',\n  styleUrls: ['./search.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('collapsibleSearchStatusTrigger', [\n      state('collapsible-open', style({ display: 'flex', width: '*' })),\n      state('collapsible-close', style({ display: 'flex', width: '27px' })),\n      transition('* => *', query(':self', [animate(200)], { optional: true })),\n    ]),\n  ],\n})\nexport class SingSearchComponent implements OnInit, OnDestroy {\n  @ViewChild('searchInput')\n  searchInputElement;\n  inputOpenState = 'collapsible-close';\n  minPix: string | number = 24;\n  @Input()\n  debounceTime = 200;\n  @Input()\n  isInputOpen = false;\n  @Input()\n  keepOpen = false;\n  @Input()\n  minNumOfChars = 0;\n  @Input()\n  themeClass = 'search-theme-four';\n  // themeClass = 'search-theme-default';\n  @Output()\n  changeText = new EventEmitter<string>();\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  search$ = new Subject();\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  _placeholder = '';\n\n  get placeholder() {\n    return this._placeholder;\n  }\n\n  @Input()\n  set placeholder(value) {\n    this._placeholder = value || 'Search...';\n  }\n\n  _value = '';\n\n  @Input()\n  set value(value: string) {\n    this._value = value;\n    if (value) {\n      // This will make the collapsible search open\n      this.isInputOpen = true;\n      this.inputOpenState = 'collapsible-open';\n      this.minPix = 'auto';\n      // when value @input set to value the clear button is not display since this Component is OnPush\n      setTimeout(() => {\n        this.cdr.markForCheck();\n      });\n    }\n  }\n\n  @Input()\n  set clearAndClose(clearAndClose: any) {\n    if (clearAndClose) {\n      this.searchInputElement.nativeElement.value = '';\n      this.blurText(this.searchInputElement.nativeElement);\n      this.cdr.markForCheck();\n    }\n  }\n\n  ngOnInit(): void {\n    if (this.keepOpen) {\n      this._placeholder = this.placeholder;\n    }\n    this.inputOpenState = this.isInputOpen ? 'collapsible-open' : 'collapsible-close';\n    if (this.isInputOpen) {\n      this.minPix = 'auto';\n    }\n    this.search$\n      .pipe(\n        debounceTime(this.debounceTime),\n        filter((searchValue: any) => {\n          return searchValue.length === 0 || searchValue.length >= this.minNumOfChars;\n        }),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe((value: string) => {\n        this.changeText.emit(value);\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * Clear input text\n   * @param searchInput\n   * @param {boolean} shouldFocus\n   *   If the focus should return to the input after clearing it.\n   */\n  clearText(searchInput, shouldFocus = false): void {\n    const isSearchInputEmpty = searchInput.value === '';\n    searchInput.value = '';\n    if (!this.keepOpen) {\n      this._placeholder = '';\n    }\n    this.isInputOpen = this.keepOpen;\n    if (!isSearchInputEmpty) {\n      this.changeText.emit(searchInput.value);\n    }\n\n    if (shouldFocus) {\n      this._placeholder = this.placeholder;\n      searchInput.focus();\n    }\n  }\n\n  /**\n   * on blur\n   * - close search if empty input\n   */\n  blurText(searchInput): void {\n    if (!searchInput.value || !searchInput.value.length) {\n      this.clearText(searchInput);\n      if (!this.keepOpen) {\n        this.inputOpenState = 'collapsible-close';\n      }\n    }\n  }\n\n  /**\n   *\n   * @param searchInput\n   */\n  changeWidthInput(searchInput): void {\n    this.isInputOpen = true;\n    this._placeholder = this.placeholder;\n    setTimeout(() => {\n      searchInput.focus();\n    });\n  }\n\n  /**\n   * Animation trigger state.\n   * @param searchInput\n   */\n  openInputDisplay(searchInput) {\n    this._placeholder = this.placeholder;\n    this.inputOpenState =\n      this.inputOpenState === 'collapsible-close' ? this.openInputDisplayOpen(searchInput) : 'collapsible-close';\n  }\n\n  /**\n   * Set trigger to open and also sets focus on input.\n   * @param searchInput\n   * @returns {string}\n   */\n  openInputDisplayOpen(searchInput): string {\n    setTimeout(() => {\n      searchInput.focus();\n    }, 200);\n    return 'collapsible-open';\n  }\n}\n","<div\n  (click)='changeWidthInput(searchInput)'\n  *ngIf=\"themeClass !== 'new-collapsible-search'; else new_collapsible_search\"\n  [ngClass]='{ open: isInputOpen }'\n  class='{{ themeClass }}'\n  data-mgmtAutomationId='SearchButton'\n>\n  <!--Search Icon-->\n  <i class='mgmt-search'></i>\n\n  <!--Search Input-->\n  <input\n    #searchInput\n    (blur)='blurText(searchInput)'\n    (input)='search$.next(searchInput.value)'\n    [ngClass]=\"{ 'open-input': isInputOpen }\"\n    [placeholder]='_placeholder'\n    [value]='_value'\n    class='search-input'\n    data-mgmtAutomationId='SearchField'\n    singInputAutoFocus\n    type='text'\n  />\n\n  <!--Close Icon-->\n  <i\n    (click)='clearText(searchInput)'\n    [ngClass]=\"{ 'visibility-hidden': !isInputOpen || searchInput.value.length === 0 }\"\n    class='mgmt-x-search'\n    data-mgmtautomationid='ClearSearch'\n  >\n  </i>\n</div>\n\n<ng-template #new_collapsible_search>\n  <div\n    [@collapsibleSearchStatusTrigger]='inputOpenState'\n    [ngClass]='inputOpenState'\n    [style.width.px]='minPix'\n    class='new-collapsible-search'\n    data-mgmtAutomationId='SearchButton'\n  >\n    <!--Search Icon-->\n    <i (click)='openInputDisplay(searchInput)' class='mgmt-search pointer'></i>\n\n    <!--Search Input-->\n    <input\n      #searchInput\n      (blur)='blurText(searchInput)'\n      (input)='search$.next(searchInput.value)'\n      [ngClass]=\"{ 'open-input': isInputOpen }\"\n      [placeholder]='_placeholder'\n      [value]='_value'\n      class='search-input'\n      data-mgmtAutomationId='SearchField'\n      type='text'\n    />\n\n    <!--Close Icon-->\n    <i\n      (click)='clearText(searchInput, true)'\n      [ngClass]=\"{ 'visibility-hidden': searchInput.value.length === 0 }\"\n      class='mgmt-x-search'\n      data-mgmtautomationid='ClearSearch'\n      matTooltip='Clear'\n    >\n    </i>\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSearchComponent } from './search/search.component';\nimport { SingInputAutoFocusModule } from '../../directives/input-auto-focus/input-auto-focus.module';\n\n@NgModule({\n  imports: [CommonModule, SingInputAutoFocusModule],\n  declarations: [SingSearchComponent],\n  exports: [SingSearchComponent],\n})\nexport class SingSearchModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './search.module';\nexport * from './search/search.component';\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;\nimport IStandaloneCodeEditor = monaco.editor.IStandaloneCodeEditor;\n\n@Component({\n  selector: 'sing-monaco',\n  templateUrl: './monaco.component.html',\n  styleUrls: ['./monaco.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingMonacoComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingMonacoComponent implements ControlValueAccessor {\n  @Input() options: IStandaloneEditorConstructionOptions;\n  @Output() monacoInit = new EventEmitter<IStandaloneCodeEditor>();\n\n  public code: string;\n  private editor;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: any) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   */\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   */\n  writeValue(value: string): void {\n    this.code = value || '';\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * on monaco ready we get the editor object.\n   * - emit event to host component with the editor object\n   * - listen to editor value changes\n   * @param editor\n   */\n  monacoReady(editor: IStandaloneCodeEditor) {\n    this.editor = editor;\n    this.monacoInit.emit(editor);\n    this.editor.onDidChangeModelContent(() => {\n      const value = this.editor.getValue();\n      this.propagateChange(value);\n    });\n  }\n}\n","<ngx-monaco-editor\n  (onInit)='monacoReady($event)'\n  [(ngModel)]='code'\n  [options]='options'>\n</ngx-monaco-editor>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingMonacoComponent } from './monaco/monaco.component';\nimport { MonacoEditorModule } from '@sentinel-one/ngx-monaco-editor';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n  imports: [CommonModule, MonacoEditorModule.forRoot(), FormsModule],\n  declarations: [SingMonacoComponent],\n  exports: [SingMonacoComponent],\n})\nexport class SingMonacoModule {}\n","export enum MonacoThemes {\n  vsLight = 'vs-light',\n  vsDark = 'vs-dark',\n}\n\nexport enum MonacoLanguages {\n  json = 'json',\n  typescript = 'typescript',\n  javascript = 'javascript',\n  scss = 'scss',\n  html = 'html',\n}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './monaco.module';\nexport * from './monaco/monaco.component';\nexport * from './enums/monaco.enums';\n","import dayjs, {ManipulateType} from 'dayjs';\nimport { ConfigType, Dayjs, OpUnitType } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport minMax from 'dayjs/plugin/minMax';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\nimport duration from 'dayjs/plugin/duration';\nimport { DurationUnitType } from 'dayjs/plugin/duration';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport localeData from 'dayjs/plugin/localeData';\nimport objectSupport from 'dayjs/plugin/objectSupport';\n\ndayjs.extend(utc);\ndayjs.extend(minMax);\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\ndayjs.extend(duration);\ndayjs.extend(customParseFormat);\ndayjs.extend(localeData);\ndayjs.extend(advancedFormat);\ndayjs.extend(objectSupport);\n\nconst TIME_PATTERN = /^([01]?[0-9]|2[0123]):[0-5][0-9]$/;\nconst LONG_TIME_PATTERN = /^([01]?[0-9]|2[0123]):[0-5][0-9]\\s[aApP][mM]/;\nconst TIME_FORMAT = 'hh:mm';\nconst LONG_TIME_FORMAT = 'hh:mm a';\n\n/**\n * return date on Dayjs format\n * @param date\n * @param format\n */\nexport function getDate(date?: ConfigType, format?: string): Dayjs {\n  return format ? dayjs(date, format) : dayjs(date);\n}\n\n/**\n * return date as string\n * ugly code because previous(moment) format it to another string\n * @param date\n */\nexport function getDateToString(date?: ConfigType): string {\n  return `${dayjs(date).utc(true).toString()}${dayjs(date).format('ZZ')}`;\n}\n\n/**\n * return date on Dayjs format for sending time\n * @param time\n */\nexport function getDateByTime(time: string): Dayjs {\n  let trimmedTime = time.trim();\n  if (trimmedTime.indexOf(':') === -1) {\n    trimmedTime = `${trimmedTime}:00`;\n  }\n  const format = testTimeFormat(trimmedTime);\n  return dayjs(trimmedTime, format);\n}\n\nfunction testTimeFormat(time: string): string {\n  if (LONG_TIME_PATTERN.test(time)) {\n    return LONG_TIME_FORMAT;\n  }\n  if (TIME_PATTERN.test(time)) {\n    return TIME_FORMAT;\n  }\n  return '';\n}\n\n/**\n * return date on Dayjs format\n * @param date\n */\nexport function getLocalDate(date: ConfigType): Dayjs {\n  return dayjs(date).local();\n}\n\n/**\n * check if date expired\n * @param date\n */\nexport function isExpired(date: ConfigType): boolean {\n  const dateEndOfDay = dayjs(date).endOf('day');\n  return dayjs().isAfter(dateEndOfDay);\n}\n\n/**\n *\n * @param date\n * @param isSameOrAfterDate\n */\nexport function isSameOrAfter(date: ConfigType, isSameOrAfterDate: ConfigType): boolean {\n  return dayjs(date).isSame(isSameOrAfterDate) || dayjs(date).isAfter(isSameOrAfterDate);\n}\n\n/**\n *\n * @param date\n * @param isSameOrBeforeDate\n */\nexport function isSameOrBefore(date: ConfigType, isSameOrBeforeDate: ConfigType): boolean {\n  return dayjs(date).isSame(isSameOrBeforeDate) || dayjs(date).isBefore(isSameOrBeforeDate);\n}\n\n/**\n * check if date expired\n * @param date\n * @param isBeforeDate\n */\nexport function isBefore(date: ConfigType, isBeforeDate: ConfigType): boolean {\n  return dayjs(date).isBefore(dayjs(isBeforeDate));\n}\n\n/**\n * get day of week number\n * @param date\n */\nexport function getDayOfWeekNumber(date?: ConfigType): number {\n  return dayjs(date).day() + 1;\n}\n\n/**\n * get day of month number\n * @param date\n */\nexport function getDayOfMonthNumber(date?: ConfigType): number {\n  return dayjs(date).date();\n}\n\n/**\n * get day name from locale extensions\n * @param date\n */\nexport function getDayName(date?: ConfigType): string {\n  return dayjs.weekdays()[dayjs(date).day()];\n}\n\n/**\n * get day short name from locale extensions\n * @param date\n */\nexport function getDayShortName(date?: ConfigType): string {\n  return dayjs.weekdaysShort()[dayjs(date).day()];\n}\n\n/**\n * get month number\n * @param date\n */\nexport function getMonthNumber(date?: ConfigType): number {\n  return dayjs(date).month() + 1;\n}\n\n/**\n * get month name from locale extensions\n * @param date\n */\nexport function getMonthName(date?: ConfigType): string {\n  return dayjs.months()[dayjs(date).month()];\n}\n\n/**\n * get month short name from locale extensions\n * @param date\n * @param format\n */\nexport function getMonthShortName(date: ConfigType, format: string): string {\n  return dayjs.monthsShort()[dayjs(date, format).month()];\n}\n\n/**\n * get year number\n * @param date\n */\nexport function getYear(date?: ConfigType): number {\n  return dayjs(date).year();\n}\n\n/**\n *\n * @param date\n * @param keepLocalTime\n */\nexport function getDateUtc(date?: ConfigType, keepLocalTime = false): Dayjs {\n  return dayjs(date).utc(keepLocalTime);\n}\n\n/**\n *\n * @param date\n * @param offset\n * @param keepLocalTime\n */\nexport function changeDateUtcOffset(date: ConfigType, offset: number, keepLocalTime = false): Dayjs {\n  return dayjs(date).utcOffset(offset, keepLocalTime);\n}\n\n/**\n *\n */\nexport function getDateUtcOffset(date?: ConfigType): number {\n  return dayjs(date).utcOffset();\n}\n\n/**\n *\n * @param amount\n * @param unit\n * @param date\n */\nexport function addDurationTime(date: ConfigType, amount: number | string, unit: ManipulateType): Dayjs {\n  return dayjs(date).add(+amount, unit);\n}\n\n/**\n *\n * @param amount\n * @param unit\n * @param date\n */\nexport function subtractDurationTime(date: ConfigType, amount: number | string, unit: ManipulateType): Dayjs {\n  return dayjs(date).subtract(+amount, unit);\n}\n\n/**\n *\n * @param unit\n * @param date\n */\nexport function getStartOf(date: ConfigType, unit: OpUnitType): Dayjs {\n  return dayjs(date).startOf(unit);\n}\n\n/**\n *\n * @param unit\n * @param date\n */\nexport function getEndOf(date: ConfigType, unit: OpUnitType): Dayjs {\n  return dayjs(date).endOf(unit);\n}\n\n/**\n *\n * @param dates\n */\nexport function getMaxDate(dates: ConfigType[]): Dayjs {\n  const dayJsDates = dates.map((date) => dayjs(date));\n  return dayjs.max(dayJsDates);\n}\n\n/**\n *\n * @param dates\n */\nexport function getMinDate(dates: ConfigType[]): Dayjs {\n  const dayJsDates = dates.map((date) => dayjs(date));\n  return dayjs.min(dayJsDates);\n}\n\n/**\n *\n * @param formatStructure\n * @param date\n */\nexport function getFormatDate(date: ConfigType, formatStructure = ''): string {\n  return dayjs(date).format(formatStructure);\n}\n\n/**\n *\n * @param date\n * @param formatStructure\n */\nexport function getFormatLocalDate(date: ConfigType, formatStructure: string): string {\n  return dayjs(date).local().format(formatStructure);\n}\n\n/**\n *\n * @param date\n * @param inMs: if true, return timestamp in milliseconds from Unix Epoch instead of in seconds\n */\nexport function getUnixTimestamp(date?: ConfigType, inMs = false): number {\n  const dateObj = dayjs(date);\n  return inMs ? dateObj.valueOf() : dateObj.unix();\n}\n\n/**\n * get date from timestamp\n * @param timestamp\n */\nexport function getDateFromTimestamp(timestamp: number): Dayjs {\n  return dayjs.unix(timestamp);\n}\n\n/**\n *\n * @param date\n */\nexport function getHour(date?: ConfigType): number {\n  return dayjs(date).hour();\n}\n\n/**\n *\n * @param date\n */\nexport function getMinute(date?: ConfigType): number {\n  return dayjs(date).minute();\n}\n\n/**\n *\n * @param date\n */\nexport function getSeconds(date?: ConfigType): number {\n  return dayjs(date).second();\n}\n\n/**\n *\n * @param date\n */\nexport function getMilliseconds(date?: ConfigType): number {\n  return dayjs(date).millisecond();\n}\n\n/**\n *\n * @param date\n */\nexport function getRelativeFromNow(date?: ConfigType): string {\n  return dayjs(date).fromNow();\n}\n\n/**\n *\n * @param date\n */\nexport function getRelativeToNow(date?: ConfigType): string {\n  return dayjs(date).toNow();\n}\n\n/**\n *\n * @param date\n */\nexport function convertToDate(date?: ConfigType): Date {\n  return dayjs(date).toDate();\n}\n\n/**\n *\n * @param firstDate\n * @param secondDate\n * @param unit\n * @param float\n */\nexport function getDiffBy(firstDate: ConfigType, secondDate: ConfigType, unit: OpUnitType, float = false): number {\n  return dayjs(firstDate).diff(secondDate, unit, float);\n}\n\n/**\n * get duration as minutes\n * @param durationTime\n * @param unit\n */\nexport function getDurationAsMinutes(durationTime: number, unit: DurationUnitType): number {\n  return dayjs.duration(durationTime, unit).asMinutes();\n}\n\n/**\n * get duration as seconds\n * @param durationTime\n * @param unit\n */\nexport function getDurationAsSeconds(durationTime: number, unit: DurationUnitType): number {\n  return dayjs.duration(durationTime, unit).asSeconds();\n}\n\n/**\n * get duration as days\n * @param durationTime\n * @param unit\n */\nexport function getDurationAsDays(durationTime: number, unit: DurationUnitType): number {\n  return dayjs.duration(durationTime, unit).asDays();\n}\n\n/**\n * create Dayjs from date object.\n *\n * example for dateObject:\n * { year: 2010,  month: 1,  day: 12 }\n *\n * For more info check https://day.js.org/docs/en/plugin/object-support\n * @param dateObject\n */\nexport function fromObjectToDayjs(dateObject: Record<string, any>): Dayjs {\n  return dayjs().set(dateObject);\n}\n\n/**\n * turn a timestamp that represents local time to a timestamp that represents utc without conversion.\n * for example, convert a timestamp that represents 14:00 in local time to a timestamp that represents 14:00 in utc\n * @param timestamp\n * @param inSeconds, true if the timestamp represents seconds from 1970, false if it represents ms from 1970\n */\nexport function turnUnixLocalTimeToUtc(timestamp: number, inSeconds = true): number {\n  const localTimeDate: Dayjs = inSeconds ? dayjs.unix(timestamp) : dayjs(timestamp);\n  const utcDate = localTimeDate.utc(true);\n  const utcTimestamp = inSeconds ? utcDate.unix() : utcDate.valueOf();\n  return utcTimestamp;\n}\n\n/**\n * is given date is a valid date\n * @param date\n */\nexport function isValidDate(date: ConfigType): boolean {\n  return dayjs(date).isValid();\n}\n","import { ValidationErrors } from '@angular/forms';\nimport { isNil } from 'lodash';\nimport { addDurationTime, getDateByTime, getFormatDate } from '../../../../utils/date-time/date-time.util';\nimport { ConfigType } from 'dayjs';\n\nconst TIME_PICKER_FORMAT = 'h:mm a';\n\n/**\n * check if given time is valid time.\n * in case time is undefined, null, '' or moment return isValid the function return null which indicate valid.\n *\n * @param time\n */\nexport function isValidTime(time: string): ValidationErrors | null {\n  return _isNilOrEmptyString(time) || getDateByTime(time).isValid() ? null : { invalidTime: true };\n}\n\n/**\n * get time and add to it minutes\n * @param time\n * @param minutes\n */\nexport function addMinutes(time: ConfigType, minutes: number): string {\n  const newTime = addDurationTime(time, minutes, 'minute');\n  if (newTime.isValid()) {\n    time = getFormatDate(newTime, TIME_PICKER_FORMAT);\n  } else {\n    time = '';\n  }\n  return time;\n}\n\n/**\n * check if given value is `null` or `undefined` or empty string\n * @param value\n * @private\n */\nfunction _isNilOrEmptyString(value: string): boolean {\n  return isNil(value) || value === '';\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { isValidTime } from '../../range-time-picker/utils/range-time-picker.util';\n\n/**\n * reactive form custom validator.\n * check if time is valid\n *\n * Invalid Example: 'not-valid-value'\n * Valid Example: '1:00 am'\n * @param control\n * @constructor\n */\nexport function ValidateTimeValue(control: AbstractControl): ValidationErrors | null {\n  return isValidTime(control.value);\n}\n","import { getDateByTime, getFormatDate } from '../../../../utils/date-time/date-time.util';\n\nconst TIME_PICKER_FORMAT = 'h:mm a';\n\n/**\n * try to format given time to format of \"h:mm a\"\n * in case time not valid return empty string\n *\n * @param time\n */\nexport function formatToAmPmTime(time: string): string {\n  const date = getDateByTime(time);\n  if (date.isValid()) {\n    time = getFormatDate(date, TIME_PICKER_FORMAT);\n  } else {\n    time = '';\n  }\n  return time;\n}\n\n/**\n * create a mapper object that helps us indicate\n * which item in the time dropdown options should be active (highlighted)\n */\nexport function createTimeMap(): any {\n  const timeMap = {};\n  for (let i = 0; i < 25; i++) {\n    const amOrPm = i < 13 || i === 24 ? 'am' : 'pm';\n    let hour;\n    if (i === 0) {\n      hour = 12;\n    } else if (i < 13) {\n      hour = i;\n    } else {\n      hour = Math.abs(i - 12);\n    }\n\n    timeMap[`${i}`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:0`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:00`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:00 ${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:00${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${hour}:00 ${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${hour}:00${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n    timeMap[`${i}:3`] = `${hour}:30 ${amOrPm}`;\n    timeMap[`${i}:30`] = `${hour}:30 ${amOrPm}`;\n    timeMap[`${i}:30 ${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n    timeMap[`${i}:30${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n    timeMap[`${hour}:30 ${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n    timeMap[`${hour}:30${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n\n    if (i > 0 && i < 10) {\n      timeMap[`0${i}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:0`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:00`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:00 ${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:00${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${hour}:00 ${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${hour}:00${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${i}:3`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${i}:30`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${i}:30 ${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${i}:30${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${hour}:30 ${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${hour}:30${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n    }\n    if (i > 9) {\n      timeMap[`0${hour}:00 ${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${hour}:00${amOrPm}`] = `${hour}:00 ${amOrPm}`;\n      timeMap[`0${hour}:30 ${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n      timeMap[`0${hour}:30${amOrPm}`] = `${hour}:30 ${amOrPm}`;\n    }\n\n    if (i === 0) {\n      timeMap['00'] = `${hour}:00 ${amOrPm}`;\n      timeMap['00:'] = `${hour}:00 ${amOrPm}`;\n      timeMap['00:0'] = `${hour}:00 ${amOrPm}`;\n      timeMap['00:00'] = `${hour}:00 ${amOrPm}`;\n      timeMap['00:3'] = `${hour}:30 ${amOrPm}`;\n      timeMap['00:30'] = `${hour}:30 ${amOrPm}`;\n    }\n  }\n  return timeMap;\n}\n","import { createTimeMap } from '../utils/time-picker.utils';\n\nexport const TIME_OPTIONS = [\n  '12:00 am',\n  '12:30 am',\n  '1:00 am',\n  '1:30 am',\n  '2:00 am',\n  '2:30 am',\n  '3:00 am',\n  '3:30 am',\n  '4:00 am',\n  '4:30 am',\n  '5:00 am',\n  '5:30 am',\n  '6:00 am',\n  '6:30 am',\n  '7:00 am',\n  '7:30 am',\n  '8:00 am',\n  '8:30 am',\n  '9:00 am',\n  '9:30 am',\n  '10:00 am',\n  '10:30 am',\n  '11:00 am',\n  '11:30 am',\n  '12:00 pm',\n  '12:30 pm',\n  '1:00 pm',\n  '1:30 pm',\n  '2:00 pm',\n  '2:30 pm',\n  '3:00 pm',\n  '3:30 pm',\n  '4:00 pm',\n  '4:30 pm',\n  '5:00 pm',\n  '5:30 pm',\n  '6:00 pm',\n  '6:30 pm',\n  '7:00 pm',\n  '7:30 pm',\n  '8:00 pm',\n  '8:30 pm',\n  '9:00 pm',\n  '9:30 pm',\n  '10:00 pm',\n  '10:30 pm',\n  '11:00 pm',\n  '11:30 pm',\n];\n\nexport const TIME_MAP = createTimeMap();\n","import { AbstractControl } from '@angular/forms';\n\n/**\n * disable or enable form field\n * @param {AbstractControl} abstractControl\n * @param {boolean} disable\n * @param emitEvent\n */\nexport function disableEnableFormField(abstractControl: AbstractControl, disable: boolean, emitEvent = false): void {\n  if (abstractControl) {\n    if (disable) {\n      abstractControl.disable({ emitEvent });\n    } else {\n      abstractControl.enable({ emitEvent });\n    }\n  }\n}\n","import { ControlValueAccessor, FormGroup, ValidationErrors, Validator } from '@angular/forms';\nimport { ChangeDetectorRef, Directive, Input } from '@angular/core';\nimport { disableEnableFormField } from '../../../../utils/reactive-form-utils/reactive-form.utils';\nimport { TIME_MAP } from '../consts/time-picker.consts';\n\n@Directive()\nexport class TimePickerReactiveFormImplementationDirective implements ControlValueAccessor, Validator {\n  @Input()\n  time = '';\n  @Input()\n  disabled = false;\n  form: FormGroup;\n\n  constructor(public cdr: ChangeDetectorRef) {}\n\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: any) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   * will add class of 'ng-touched' on sing-time-picker element\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   */\n  setDisabledState(isDisabled: boolean): void {\n    disableEnableFormField(this.form.controls.time, isDisabled);\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   * We try to extract the time from the TIME_MAP and if we can't we get it from time else empty string\n   * @param time\n   */\n  writeValue(time: string): void {\n    this.time = TIME_MAP[time] || time || '';\n    this.form.controls.time.patchValue(this.time);\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * validate\n   * Part of the NG_VALIDATORS (reactive form)\n   */\n  validate(): ValidationErrors | null {\n    return this.form.controls.time.errors;\n  }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-time-option-item',\n  templateUrl: './time-option-item.component.html',\n  styleUrls: ['./time-option-item.component.scss'],\n})\nexport class TimeOptionItemComponent {\n  @Input() timeItem;\n}\n","<div class='time-item'>\n  {{timeItem}}\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TIME_OPTIONS } from '../../consts/time-picker.consts';\n\n@Component({\n  selector: 'sing-time-options',\n  templateUrl: './time-options.component.html',\n  styleUrls: ['./time-options.component.scss'],\n})\nexport class TimeOptionsComponent {\n  readonly timeOptions = TIME_OPTIONS;\n  @Input() timeOptionsStyle;\n  @Input() currentActiveId;\n  @Output() timeSelected = new EventEmitter<string>();\n  @Output() updateCurrentActiveId = new EventEmitter<string>();\n}\n","<div [ngStyle]='timeOptionsStyle' class='time-options-container'>\n  <sing-time-option-item\n    (click)='timeSelected.emit(timeItem)'\n\n    (mouseenter)='updateCurrentActiveId.emit(timeItem)'\n    (mouseleave)='updateCurrentActiveId.emit(undefined)'\n    *ngFor='let timeItem of timeOptions'\n\n    [class.active]='currentActiveId === timeItem'\n    [id]='timeItem'\n    [timeItem]='timeItem'>\n  </sing-time-option-item>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators } from '@angular/forms';\nimport { FlexibleConnectedPositionStrategyOrigin, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { fromEvent, Subject } from 'rxjs';\nimport { auditTime, filter, takeUntil, tap } from 'rxjs/operators';\nimport { ValidateTimeValue } from '../validators/time-picker.validator';\nimport { formatToAmPmTime } from '../utils/time-picker.utils';\nimport { TIME_MAP } from '../consts/time-picker.consts';\nimport { EventCodeOptions } from '../../../../enums/event-code-options.enum';\nimport { isNil, toNumber } from 'lodash';\nimport { TimePickerReactiveFormImplementationDirective } from './time-picker-reactive-form-implementation.class';\n\n@Component({\n  selector: 'sing-time-picker',\n  templateUrl: './time-picker.component.html',\n  styleUrls: ['./time-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingTimePickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => SingTimePickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingTimePickerComponent extends TimePickerReactiveFormImplementationDirective implements OnDestroy {\n  @Input()\n  automationId: string;\n  @Input()\n  placeholder = '00:00 am';\n  @Input()\n  defaultActiveTime: string;\n\n  width = '90px';\n  @Input()\n  timeInputStyle = { width: this.width };\n  @Input()\n  timeOptionsStyle = { width: this.width };\n  timePickerValidations = [ValidateTimeValue];\n  @Output() timeChanged = new EventEmitter<string>();\n  @Output() touched = new EventEmitter<void>();\n  @Output() timeBlurred = new EventEmitter<string>();\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  /**\n   * a property that indicates which time item in the dropdown\n   * should be highlighted\n   */\n  currentActiveId = void 0;\n  focus$ = new Subject<void>();\n  alignTimeOnBlur$ = new Subject<void>();\n  onFocusEmit$ = this.focus$.asObservable().pipe(auditTime(100), takeUntil(this.ngUnSubscribe));\n  /**\n   * timeElement is our time text-box\n   */\n  @ViewChild('timeElement') timeElement: ElementRef;\n  /**\n   * timeOptions is our time dropdown\n   */\n  @ViewChild('timeOptions') timeOptions: TemplateRef<any>;\n  overlayRef: OverlayRef | null;\n\n  constructor(\n    private fb: FormBuilder,\n    private overlay: Overlay,\n    private viewContainerRef: ViewContainerRef,\n    public cdr: ChangeDetectorRef\n  ) {\n    super(cdr);\n    this.initFormControl();\n    this.initListenToFocusObservable();\n    this.alignTimeOnBlur$\n      .asObservable()\n      .pipe(auditTime(200), takeUntil(this.ngUnSubscribe))\n      .subscribe(this.alignTimeOnBlur.bind(this));\n    this.listenToEscape();\n  }\n\n  _inFocus = false;\n\n  get inFocus(): boolean {\n    return this._inFocus;\n  }\n\n  set inFocus(inFocus: boolean) {\n    this._inFocus = inFocus;\n    this.handleOpenCloseTimeOptionsDropdown();\n    this.initActivateTimeItem();\n    this.alignTimeOnBlur$.next();\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * add required validators\n   */\n  @Input()\n  set required(required: boolean) {\n    if (required) {\n      this.validators = [Validators.required];\n    }\n  }\n\n  /**\n   * reactive form validators.\n   */\n  _validators: ValidatorFn[] | null = [];\n\n  @Input()\n  set validators(validators: ValidatorFn[] | null) {\n    const validatorFns = [...this._validators, ...validators, ...this.timePickerValidations];\n    this._validators = [...new Set(validatorFns)];\n    this.form.controls.time.setValidators(this._validators);\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * init form control\n   */\n  initFormControl(): void {\n    this.form = this.fb.group({\n      time: [{ value: '', disabled: false }, this.timePickerValidations],\n    });\n  }\n\n  /**\n   * on inFocus property change check if need to open or close dropdown\n   */\n  handleOpenCloseTimeOptionsDropdown(): void {\n    if (this.inFocus) {\n      /**\n       * there are cases where the text-box is in focus and the user clicks one more time inside the text-box\n       * so in this case the dropdown should be open so if it's open we dont need to reopen it.\n       */\n      if (!this.overlayRef) {\n        this.openTimeOptionsDropdown();\n      }\n    } else {\n      this.closeTimeOptionsDropdown();\n    }\n  }\n\n  /**\n   * open time options dropdown.\n   * we are using the angular CDK overlay\n   */\n  openTimeOptionsDropdown(): void {\n    const xAndYPosition = this.createTimeOptionsDropdownPosition();\n    const positionStrategy = this.overlay\n      .position()\n      .flexibleConnectedTo(xAndYPosition)\n      .withPositions([\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n        },\n      ]);\n\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n    });\n\n    this.overlayRef.attach(new TemplatePortal(this.timeOptions, this.viewContainerRef, {}));\n  }\n\n  /**\n   * close time options dropdown\n   */\n  closeTimeOptionsDropdown(): void {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n  }\n\n  /**\n   * calculate the X and Y position where we will display the time options dropdown.\n   */\n  createTimeOptionsDropdownPosition(): FlexibleConnectedPositionStrategyOrigin {\n    const { x, y, height, width } = this.timeElement.nativeElement.getBoundingClientRect();\n    const yp = toNumber(y) + toNumber(height);\n    const xp = toNumber(x) + toNumber(width);\n    return { x: xp, y: yp };\n  }\n\n  /**\n   * on the time text-box we are listening to focus and click events\n   * and when they trigger we want to call the focus method.\n   * which will set text in focus and open the time dropdown options.\n   *\n   * Note we are using observable with auditTime since there are cases where both focus and click are triggered.\n   */\n  initListenToFocusObservable(): void {\n    this.onFocusEmit$.pipe(takeUntil(this.ngUnSubscribe)).subscribe(this.focus.bind(this));\n  }\n\n  /**\n   * when user type inside the time text-box\n   * we activate the time item in the time dropdown options.\n   *\n   * @param inputValue\n   */\n  timeChange(inputValue: string): void {\n    const timeItemId = formatToAmPmTime(inputValue);\n    this.activateTimeItem(timeItemId);\n    this.setTime(inputValue);\n  }\n\n  /**\n   * when time text-box is in focus we should open time options dropdown + set text in focus.\n   */\n  focus(): void {\n    this.onTouched();\n    this.touched.emit();\n    if (!this.inFocus) {\n      this.timeElement.nativeElement.select();\n    }\n    this.updateInFocus(true);\n  }\n\n  /**\n   * this method is called when time is selected from the time dropdown options.\n   *\n   * on method call we update the time text-box with the selected time and we close the dropdown\n   * @param selectedTime\n   */\n  timeSelected(selectedTime: string): void {\n    this.updateInFocus(false);\n    this.setTime(selectedTime);\n  }\n\n  /**\n   * update time property with new value + update host (parent) component\n   * with new time value\n   * @param time\n   */\n  setTime(time): void {\n    if (this.time !== time) {\n      this.time = time;\n      this.timeChanged.emit(this.time);\n      this.form.controls.time.patchValue(this.time);\n      this.cdr.markForCheck();\n      this.propagateChange(this.time);\n    }\n  }\n\n  /**\n   * update the inFocus with the given value.\n   * we need the setTimeout of 200ms, otherwise\n   * the selected value from dropdown will not get set to time text-box\n   * @param inFocus\n   */\n  updateInFocus(inFocus: boolean): void {\n    setTimeout(() => {\n      this.inFocus = inFocus;\n    }, 200);\n  }\n\n  /**\n   * each time the in focus is set to true we want to set the active item.\n   * Cases\n   * - we recognize the time we highlight the time item\n   * - we didn't recognize time but we get defaultActiveTime\n   * - none of the above: we set '12:00 am'\n   */\n  initActivateTimeItem(): void {\n    if (this.inFocus) {\n      const inputTimeValue = this.timeElement.nativeElement.value;\n      let newActiveId;\n      if (inputTimeValue && inputTimeValue.length) {\n        newActiveId = TIME_MAP[inputTimeValue];\n      } else if (this.isDefaultActiveTimeExistInDom()) {\n        newActiveId = this.defaultActiveTime;\n      } else {\n        newActiveId = '12:00 am';\n      }\n      setTimeout(() => {\n        this.activateTimeItem(newActiveId);\n      }, 100);\n    }\n  }\n\n  /**\n   * check if given defaultActiveTime exists in dom.\n   * if it exists we can later set it as active\n   */\n  isDefaultActiveTimeExistInDom(): boolean {\n    return this.defaultActiveTime && !!document.getElementById(this.defaultActiveTime);\n  }\n\n  /**\n   * handle key down from time text-box.\n   * - in case inFocus is false we update the inFocus to be true.\n   *   we need this since there are cases where the time text-box is in focus and the time dropdown\n   *   is closed and on click arrow we want to reopen the time dropdown\n   * - in case arrow up or down navigate between time items inside the dropdown\n   * - in case enter set the active time item as the selected time\n   *\n   * @param event\n   */\n  keyDown(event: KeyboardEvent): void {\n    if (!this.inFocus) {\n      this.updateInFocus(true);\n    }\n    switch (event.code) {\n      case EventCodeOptions.ArrowDown:\n      case EventCodeOptions.ArrowUp: {\n        this.activateTimeItemOnArrowClicked(event.code);\n        break;\n      }\n      case EventCodeOptions.Enter: {\n        event.preventDefault(); // prevent form submit\n        if (!isNil(this.currentActiveId)) {\n          this.setTime(this.currentActiveId);\n        }\n        this.updateInFocus(false);\n        break;\n      }\n    }\n  }\n\n  /**\n   * highlight item in time options dropdown.\n   * in case currentActiveId doesn't exist -> we set the 12:00 am as the active item\n   * @param eventCode\n   */\n  activateTimeItemOnArrowClicked(eventCode: EventCodeOptions): void {\n    if (this.currentActiveId) {\n      let timeItemElement: Element = document.getElementById(this.currentActiveId);\n      if (timeItemElement) {\n        if (eventCode === EventCodeOptions.ArrowUp) {\n          timeItemElement = timeItemElement.previousElementSibling;\n        } else {\n          timeItemElement = timeItemElement.nextElementSibling;\n        }\n        if (timeItemElement) {\n          this.activateTimeItem(timeItemElement.id);\n        }\n      }\n    } else {\n      this.activateTimeItem('12:00 am');\n    }\n  }\n\n  /**\n   * activate time item = highlight + display time item inside the dropdown.\n   *\n   * @param newActiveId\n   */\n  activateTimeItem(newActiveId: string): void {\n    this.currentActiveId = void 0;\n    if (newActiveId) {\n      const timeItemElement: Element = document.getElementById(newActiveId);\n      if (timeItemElement) {\n        timeItemElement.scrollIntoView();\n        this.currentActiveId = newActiveId;\n        this.cdr.markForCheck();\n      }\n    }\n  }\n\n  /**\n   * on blur we check if we recognize the value in the time text-box\n   * and if we do we update the value in text box\n   */\n  alignTimeOnBlur(): void {\n    if (!this.inFocus) {\n      const time = this.timeElement.nativeElement.value;\n      const timeItemId = formatToAmPmTime(time);\n      if (timeItemId) {\n        this.setTime(timeItemId);\n      }\n      this.timeBlurred.emit(this.timeElement.nativeElement.value);\n    }\n  }\n\n  /**\n   * close selection\n   */\n  @HostListener('document:keydown.escape')\n  onEscape() {\n    if (this.overlayRef) {\n      this.closeTimeOptionsDropdown();\n    }\n  }\n\n  /**\n   * listen to escape keydown.\n   * when user click on the escape key close the time options.\n   * we are use the stopPropagation since there are cases where we have this component used inside dialog\n   * and we want on escape to close just the time options without closing the dialog.\n   */\n  listenToEscape(): void {\n    fromEvent(document, 'keydown', { capture: true })\n      .pipe(\n        filter((event: any) => this.overlayRef && event.code === EventCodeOptions.Escape),\n        tap((event: any) => event.stopPropagation()),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe(() => {\n        this.closeTimeOptionsDropdown();\n      });\n  }\n}\n","<!--Time Input-->\n<ng-container [formGroup]='form'>\n  <sing-input>\n    <input\n      #timeElement\n      (blur)='updateInFocus(false)'\n      (click)='focus$.next()'\n\n      (focus)='focus$.next()'\n\n      (input)='timeChange(timeElement.value)'\n      (keydown)='keyDown($event)'\n      [attr.data-mgmtAutomationId]='automationId'\n      [ngStyle]='timeInputStyle'\n\n      [placeholder]='placeholder'\n      [value]='time'\n      class='time-input'\n      formControlName='time'\n      type='text'>\n\n    <!--Error Text-->\n    <div singError>\n      <ng-container *ngIf='!inFocus'>\n        <ng-container *ngIf='form?.controls?.time?.errors?.required'>\n          Required\n        </ng-container>\n        <ng-container *ngIf='form?.controls?.time?.errors?.invalidTime'>\n          Invalid time\n        </ng-container>\n      </ng-container>\n    </div>\n  </sing-input>\n</ng-container>\n\n<!--Time Options-->\n<ng-template #timeOptions>\n  <sing-time-options\n    (singScrollOutEvent)='updateInFocus(false)'\n\n    (timeSelected)='timeSelected($event)'\n    (updateCurrentActiveId)='currentActiveId = $event'\n\n    [currentActiveId]='currentActiveId'\n    [timeOptionsStyle]='timeOptionsStyle'\n  ></sing-time-options>\n</ng-template>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingTimePickerComponent } from './time-picker/time-picker.component';\nimport { TimeOptionsComponent } from './components/time-options/time-options.component';\nimport { SingInputModule } from '../input/input.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TimeOptionItemComponent } from './components/time-option-item/time-option-item.component';\nimport { ScrollOutEventModule } from '../../../modules/directives/scroll-out-event/scroll-out-event.module';\n\n@NgModule({\n  imports: [CommonModule, SingInputModule, ReactiveFormsModule, ScrollOutEventModule],\n  declarations: [SingTimePickerComponent, TimeOptionsComponent, TimeOptionItemComponent],\n  exports: [SingTimePickerComponent],\n})\nexport class SingTimePickerModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './time-picker.module';\nexport * from './time-picker/time-picker.component';\n","import { AsyncValidator, ControlValueAccessor, FormGroup, ValidationErrors } from '@angular/forms';\nimport { Directive, Input } from '@angular/core';\nimport { Observable, timer } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { RangeTime } from '../models/range-time.model';\nimport { disableEnableFormField } from '../../../../utils/reactive-form-utils/reactive-form.utils';\n\n@Directive()\nexport class RangeTimePickerReactiveFormImplementationDirective implements ControlValueAccessor, AsyncValidator {\n  @Input() formControlName: string;\n\n  errorMessage: string;\n  form: FormGroup;\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: any) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   * will add class of 'ng-touched' on sing-time-picker element\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   * update fromTime and toTime to be enable or disable\n   */\n  setDisabledState(isDisabled: boolean): void {\n    disableEnableFormField(this.form.controls.fromTime, isDisabled);\n    disableEnableFormField(this.form.controls.toTime, isDisabled);\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   */\n  writeValue(rangeTime: RangeTime): void {\n    this.form.controls.fromTime.patchValue(rangeTime.fromTime);\n    this.form.controls.toTime.patchValue(rangeTime.toTime);\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * validate\n   * Part of the NG_VALIDATORS (reactive form)\n   */\n  validate(): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\n    return timer(0).pipe(\n      take(1),\n      map(() => {\n        const controls = this.form.controls;\n        const fromTime = controls.fromTime;\n        const toTime = controls.toTime;\n        return fromTime.valid && toTime.valid ? null : { error: 'range time picker fields are invalid' };\n      })\n    );\n  }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, Input, OnDestroy } from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FormBuilder, NG_ASYNC_VALIDATORS, NG_VALUE_ACCESSOR, ValidatorFn, Validators } from '@angular/forms';\nimport { RangeTimePickerReactiveFormImplementationDirective } from '../../range-time-picker/range-time-picker/range-time-picker-reactive-form-implementation.class';\nimport { RangeTime } from '../../range-time-picker/models/range-time.model';\nimport { addMinutes } from '../../range-time-picker/utils/range-time-picker.util';\nimport { getDateByTime, getFormatDate, isSameOrAfter } from '../../../../utils/date-time/date-time.util';\n\n@Component({\n  selector: 'sing-range-time-picker',\n  templateUrl: './range-time-picker.component.html',\n  styleUrls: ['./range-time-picker.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingRangeTimePickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_ASYNC_VALIDATORS,\n      useExisting: forwardRef(() => SingRangeTimePickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingRangeTimePickerComponent\n  extends RangeTimePickerReactiveFormImplementationDirective\n  implements OnDestroy {\n  @Input() automationIdPrefix;\n  defaultToActiveTime: string;\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  constructor(private fb: FormBuilder) {\n    super();\n    this.initFormControl();\n\n    this.form.valueChanges.pipe(takeUntil(this.ngUnSubscribe)).subscribe((rangeTime: RangeTime) => {\n      this.updateHostReactiveFormWithNewValue(rangeTime);\n    });\n  }\n\n  /**\n   * add required validators\n   */\n  @Input()\n  set required(required: boolean) {\n    if (required) {\n      this.validators = [Validators.required];\n    }\n  }\n\n  /**\n   * reactive form validators.\n   */\n  _validators: ValidatorFn[] | null = [];\n\n  get validators(): ValidatorFn[] | null {\n    return this._validators;\n  }\n\n  @Input()\n  set validators(validators: ValidatorFn[] | null) {\n    const validatorFns = [...this._validators, ...validators];\n    this._validators = [...new Set(validatorFns)];\n    this.setValidators();\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  /**\n   * init form control\n   */\n  initFormControl(): void {\n    this.form = this.fb.group({\n      fromTime: [{ value: '', disabled: false }],\n      toTime: [{ value: '', disabled: false }],\n    });\n  }\n\n  /**\n   * update host component with the new selected time.\n   * @param fromTime\n   * @param toTime\n   */\n  updateHostReactiveFormWithNewValue({ fromTime, toTime }): void {\n    this.defaultToActiveTime = void 0;\n    this.propagateChange({ fromTime, toTime });\n    this.defaultToActiveTime = this.normalizeFromTime(fromTime, 30);\n  }\n\n  /**\n   * normalize from time.\n   * in case fromTime is 11:30 PM, we return the fromTime. otherwise we return the current time + 30 minutes\n   * @param fromTime\n   * @param minutes\n   */\n  normalizeFromTime(fromTime: string, minutes: number): string {\n    if (fromTime === '11:30 pm') {\n      return fromTime;\n    } else {\n      const date = getDateByTime(fromTime);\n      return addMinutes(date, minutes);\n    }\n  }\n\n  /**\n   * set form controls with given reactive form validators\n   */\n  setValidators(): void {\n    this.form.controls.fromTime.setValidators(this.validators);\n    this.form.controls.toTime.setValidators(this.validators);\n  }\n\n  /**\n   * on blur we check if fromTime > toTime and update toTime to be with fromTime\n   */\n  timeBlurred(): void {\n    const toTime = getDateByTime(this.form.controls.toTime.value);\n    const fromTime = getDateByTime(this.form.controls.fromTime.value);\n    if (toTime && fromTime && getFormatDate(toTime, 'hh:mm a') !== '11:30 pm' && isSameOrAfter(fromTime, toTime)) {\n      const newToTime = this.normalizeFromTime(this.form.controls.fromTime.value, 30);\n      this.form.controls.toTime.patchValue(newToTime);\n      this.propagateChange({ fromTime: getFormatDate(fromTime, 'hh:mm a'), toTime: newToTime });\n    }\n  }\n}\n","<div [formGroup]='form' class='range-time-picker-container'>\n  <!--From Time-->\n  <sing-time-picker\n    (timeBlurred)='timeBlurred()'\n    (touched)='onTouched()'\n    [automationId]=\"automationIdPrefix ? automationIdPrefix + 'FromTime' : null\"\n    [validators]='validators'\n    formControlName='fromTime'\n  ></sing-time-picker>\n\n  <div class='to-container'>\n    <div class='to-text'>to</div>\n  </div>\n\n  <!--To Time-->\n  <sing-time-picker\n    (timeBlurred)='timeBlurred()'\n    (touched)='onTouched()'\n    [automationId]=\"automationIdPrefix ? automationIdPrefix + 'ToTime' : null\"\n    [defaultActiveTime]='defaultToActiveTime'\n    [validators]='validators'\n    formControlName='toTime'\n  ></sing-time-picker>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { SingRangeTimePickerComponent } from './range-time-picker/range-time-picker.component';\nimport { SingTimePickerModule } from '../time-picker/time-picker.module';\n\n@NgModule({\n  imports: [CommonModule, SingTimePickerModule, ReactiveFormsModule],\n  declarations: [SingRangeTimePickerComponent],\n  exports: [SingRangeTimePickerComponent],\n})\nexport class SingRangeTimePickerModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './range-time-picker.module';\nexport * from './range-time-picker/range-time-picker.component';\nexport * from './models/range-time.model';\n","/**\n * this enum is used to define actions from outside\n * so when the parent component wants to trigger an event in this component\n * the parent changes the action @Input for this component and this component\n * executes the requested action\n * for example, the parent component set the [action]={actionType=UiRangeDatepickerActions.RESET_DATE_RANGE}. *\n */\nexport enum RangeDatepickerActions {\n  RESET_DATE_RANGE,\n  START_OPEN,\n  CLOSE,\n}\n","import { AbstractControl } from '@angular/forms';\n\n/**\n * check time input has value.\n * valid examples:\n * 10:20:30 <- valid true\n * 10:20 <- valid true\n *\n * invalid examples:\n * 10:20:ss <- valid false\n * 1h:20:11 <- valid false\n * 1h:m0:11 <- valid false\n * 10:mm <- valid false\n */\nexport function validateRequiredTime(control: AbstractControl): { [key: string]: any } | null {\n  if (control.value.match(/h|m|s/)) {\n    return { validTime: '' };\n  }\n  return null;\n}\n","import MaskedRange from 'imask/esm/masked/range';\nimport { IMyDate } from 'mydaterangepicker';\n\nexport const DEFAULT_MASK_INPUT_CONFIGURATION = {\n  mask: 'hh:mm:ss',\n  autofix: true,\n  overwrite: true,\n  lazy: false,\n  blocks: {\n    hh: {\n      mask: MaskedRange,\n      placeholderChar: 'h',\n      from: 0,\n      to: 23,\n      maxLength: 2,\n      autofix: true,\n    },\n    mm: {\n      mask: MaskedRange,\n      placeholderChar: 'm',\n      from: 0,\n      to: 59,\n      maxLength: 2,\n      autofix: true,\n    },\n    ss: {\n      mask: MaskedRange,\n      placeholderChar: 's',\n      from: 0,\n      to: 59,\n      maxLength: 2,\n      autofix: true,\n    },\n  },\n};\n\nexport const RESET_DATEPICKER_DATE: IMyDate = { year: 0, month: 0, day: 0 } as const;\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FromToLabel } from '../../model/from-to-label.interface';\nimport { TimeAsInputSelectedTime } from '../../model/range-datepicker-time-as-input.interface';\nimport { validateRequiredTime } from './range-datepicker-time.validator';\nimport { DEFAULT_MASK_INPUT_CONFIGURATION } from '../../consts/range-datepicker.consts';\n\n@Component({\n  selector: 'sing-range-datepicker-time',\n  templateUrl: './range-datepicker-time.component.html',\n  styleUrls: ['./range-datepicker-time.component.scss'],\n  exportAs: 'sing-range-datepicker-time',\n})\nexport class RangeDatepickerTimeComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() fromToLabelText: FromToLabel = {\n    from: 'From',\n    to: 'To',\n  };\n  @Input() isMonthOrYearView = false;\n  @Input() timeFormat = 'hh:mm:ss';\n  @Input('time') setTime: TimeAsInputSelectedTime;\n  @Output() timeChanged = new EventEmitter<TimeAsInputSelectedTime>();\n  @Output() timeInputBlur = new EventEmitter<void>();\n  public showTimeTo = true;\n  public showFromLabel = true;\n  public form = new FormGroup({\n    timeFrom: new FormControl(this.timeFormat, [validateRequiredTime]),\n    timeTo: new FormControl(this.timeFormat, [validateRequiredTime]),\n  });\n  public mask: any = this._getMaskConfiguration();\n  /**\n   * in case the current time is \"hh:mm:ss\"\n   * this timeFromAsPlaceholder is true.\n   * we use it in order to show the \"hh:mm:ss\" as placeholder\n   */\n  public timeFromAsPlaceholder = true;\n  public timeToAsPlaceholder = true;\n  private _ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  private _isSingleDatePicker = false;\n\n  get isSingleDatePicker(): boolean {\n    return this._isSingleDatePicker;\n  }\n\n  @Input()\n  set isSingleDatePicker(isSingleDatePicker: boolean) {\n    this._isSingleDatePicker = isSingleDatePicker;\n    this.showTimeTo = !isSingleDatePicker;\n    this.showFromLabel = !isSingleDatePicker;\n    if (this.isSingleDatePicker) {\n      this.form.removeControl('timeTo');\n    }\n  }\n\n  public get isRangeDatePicker(): boolean {\n    return !this.isSingleDatePicker;\n  }\n\n  public ngOnInit(): void {\n    this.form.valueChanges.pipe(takeUntil(this._ngUnSubscribe)).subscribe(() => {\n      const time = { timeFrom: this.form.controls.timeFrom.value, timeTo: null };\n      if (this.isRangeDatePicker) {\n        time.timeTo = this.form?.controls?.timeTo?.value;\n      }\n      this.timeChanged.emit(time);\n      this._updateAsPlaceholder();\n    });\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.setTime) {\n      this._updateFormControlValue(changes.setTime.currentValue);\n    }\n    if (changes.timeFormat) {\n      this.mask = this._getMaskConfiguration();\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this._ngUnSubscribe.next();\n    this._ngUnSubscribe.complete();\n  }\n\n  /**\n   * on blur we check if we still have a placeholder that isn't set with value and we change it to 0.\n   * for example:\n   * the time is -> \"1h:mm:ss\" after blur time is -> \"1:00:00\"\n   * @param controlName\n   */\n  public blur(controlName: string): void {\n    const control = this.form.controls[controlName];\n    const value = control.value.replace(/h/g, '0').replace(/m/g, '0').replace(/s/g, '0');\n    control.patchValue(value);\n    this.timeInputBlur.emit();\n  }\n\n  private _updateFormControlValue(time: TimeAsInputSelectedTime): void {\n    this.form.patchValue({ timeFrom: time?.timeFrom?.trim() || this.timeFormat });\n    if (this.isRangeDatePicker) {\n      this.form.patchValue({ timeTo: time?.timeTo?.trim() || this.timeFormat });\n    }\n    this._updateAsPlaceholder();\n  }\n\n  /**\n   * check if the time input should display as a placeholder style.\n   * in case the current time string value === \"hh:mm:ss\" the style will be as placeholder\n   * @private\n   */\n  private _updateAsPlaceholder(): void {\n    this.timeFromAsPlaceholder = this.form.controls.timeFrom.value === this.timeFormat;\n    if (this.isRangeDatePicker) {\n      this.timeToAsPlaceholder = this.form.controls.timeTo.value === this.timeFormat;\n    }\n  }\n\n  private _getMaskConfiguration(): any {\n    return { ...DEFAULT_MASK_INPUT_CONFIGURATION, ...{ mask: this.timeFormat } };\n  }\n}\n","<form *ngIf='!isMonthOrYearView' [formGroup]='form'>\n  <div class='from-label-cell'>\n    <label *ngIf='showFromLabel' class='s1-label-overline'>{{fromToLabelText?.from}}</label>\n  </div>\n  <div></div>\n  <div class='to-label-cell'>\n    <label *ngIf='showTimeTo' class='s1-label-overline'>{{fromToLabelText?.to}}</label>\n  </div>\n  <sing-input>\n    <input\n      (blur)=\"blur('timeFrom')\"\n      (keydown.Tab)='$event.stopPropagation();'\n      [class.as-placeholder]='timeFromAsPlaceholder'\n      [imask]='mask'\n      formControlName='timeFrom'\n      data-mgmtautomationid=\"timeFrom\"\n      type='text'>\n  </sing-input>\n  <div *ngIf='showTimeTo' class='separation'>\n    <div class='separation-line'></div>\n  </div>\n  <sing-input *ngIf='showTimeTo'>\n    <input\n      (blur)=\"blur('timeTo')\"\n      (keydown.Tab)='$event.stopPropagation();'\n      [class.as-placeholder]='timeToAsPlaceholder'\n      [imask]='mask'\n      formControlName='timeTo'\n      data-mgmtautomationid=\"timeTo\"\n      type='text'>\n  </sing-input>\n</form>\n","/**\n * this enum is used to define inner actions\n * so when the component emits an event, the action is included in the event object\n * that way the parent component can know what action trigger the event.\n * for example when a user clicks the Reset button.\n */\nexport enum RangeDatepickerInActions {\n  IN_RESET_DATE_RANGE,\n  IN_APPLY,\n  INIT,\n  INPUT_RANGE_DATE,\n}\n","export enum RangeDatepickerTimeFormatOptions {\n  hh_mm_ss = 'hh:mm:ss',\n  hh_mm = 'hh:mm',\n}\n","export enum RangeDatepickerSkin {\n  formDatepicker = 'form-datepicker',\n  defaultDatepicker = 'default-datepicker',\n}\n","import { IMyDate } from 'mydaterangepicker';\nimport { SingleDateModel } from '../model/single-date-model.interface';\nimport { RangeDateModel } from '../model/range-date-model.interface';\nimport { DropdownMinutesModel } from '../model/dropdown-minutes.interface';\nimport { SelectedRangeDateModel } from '../model/selected-range-date-model.interface';\nimport { SelectedSingleDateModel } from '../model/selected-single-date-model.interface';\nimport { Dayjs } from 'dayjs';\nimport {\n  addDurationTime,\n  getDateUtc,\n  getDayOfMonthNumber,\n  getMinute,\n  getMonthNumber,\n  getUnixTimestamp,\n  getYear,\n  subtractDurationTime,\n} from '../../../../utils/date-time/date-time.util';\n\nconst ms = 1000;\n\n/**\n * create drop down hours\n * @returns {Array<any>} hours\n */\nexport function createDropdownHours(): Array<any> {\n  const hours = [];\n  for (let i = 0; i < 24; i++) {\n    if (i > 9) {\n      hours.push({ id: i, value: i.toString() });\n    } else {\n      hours.push({ id: i, value: `0${i}` });\n    }\n  }\n  return hours;\n}\n\n/**\n * get now minute in order to display the toMinute value in drop down\n * @returns {string} now minute\n */\nexport function getNowMinute(): string {\n  let minute: any = getMinute();\n  if (minute <= 15) {\n    minute = '15';\n  } else if (minute <= 30) {\n    minute = '30';\n  } else {\n    minute = '45';\n  }\n  return minute;\n}\n\n/**\n * get initial single date model\n * @returns {SingleDateModel}\n */\nexport function getInitialSingleDateModel(): SingleDateModel {\n  return {\n    date: {\n      year: getYear(),\n      month: getMonthNumber(),\n      day: null,\n    },\n  };\n}\n\n/**\n * get initial range date model\n * @returns {RangeDateModel}\n */\nexport function getInitialRangeDateModel(): RangeDateModel {\n  return {\n    beginDate: {\n      year: null,\n      month: null,\n      day: null,\n    },\n    endDate: {\n      year: null,\n      month: null,\n      day: null,\n    },\n  };\n}\n\n/**\n * get dropdown minutes\n * @returns {DropdownMinutesModel[]}\n */\nexport function getDropdownMinutes(): DropdownMinutesModel[] {\n  return [\n    { id: 0, value: '00' },\n    { id: 15, value: '15' },\n    { id: 30, value: '30' },\n    { id: 45, value: '45' },\n  ];\n}\n\n/**\n * create unix date\n * @param date\n * @param {string} hours\n * @param {string} minutes\n * @returns {number}\n */\nexport function createUnixDate(date: any, hours: string, minutes: string, seconds: string): number {\n  let tempDate = addDurationTime(date, hours, 'hour');\n  tempDate = addDurationTime(tempDate, minutes, 'minute');\n  tempDate = addDurationTime(tempDate, seconds, 'second');\n  return getUnixTimestamp(tempDate);\n}\n\n/**\n * get range as unix date\n * use this to filter server side\n * @param {SelectedRangeDateModel} selectedRangeDateModel\n * @returns {string} `${fromTimeUnix}-${toTimeUnix}`\n */\nexport function getRangeUnixDate(selectedRangeDateModel: SelectedRangeDateModel): string {\n  const fromTimeUnix =\n    ms *\n    createUnixDate(\n      selectedRangeDateModel.dateModel.beginJsDate,\n      selectedRangeDateModel.fromHours,\n      selectedRangeDateModel.fromMinute,\n      selectedRangeDateModel.fromSeconds\n    );\n  const toTimeUnix =\n    ms *\n    createUnixDate(\n      selectedRangeDateModel.dateModel.endJsDate,\n      selectedRangeDateModel.toHours,\n      selectedRangeDateModel.toMinute,\n      selectedRangeDateModel.toSeconds\n    );\n  return `${fromTimeUnix}-${toTimeUnix}`;\n}\n\n/**\n * get single date as unix date\n * use this to filter server side\n * @param {SelectedSingleDateModel} selectedSingleDateModel\n * @returns {string} `${fromTimeUnix}`\n */\nexport function getSingleUnixDate(selectedSingleDateModel: SelectedSingleDateModel): string {\n  const fromTimeUnix =\n    ms *\n    createUnixDate(\n      selectedSingleDateModel.dateModel.jsdate,\n      selectedSingleDateModel.hours,\n      selectedSingleDateModel.minute,\n      selectedSingleDateModel.seconds\n    );\n  return `${fromTimeUnix}`;\n}\n\n/**\n * convert mx unix time to ISOS string\n * @param {string} msUnixTime\n * @returns {string}\n */\nexport function convertMsUnixTimeToISOSString(msUnixTime: string): string {\n  return new Date(parseInt(msUnixTime, 0)).toISOString();\n}\n\nexport function getJsDate(date: IMyDate): Date {\n  return new Date(date.year, date.month - 1, date.day, 0, 0, 0, 0);\n}\n\n/**\n * get the previous days from now - amount days.\n * @param {number} daysAmount\n * @returns {Dayjs}\n */\nexport function getPreviousDays(daysAmount: number): Dayjs {\n  const date = getDateUtc();\n  return subtractDurationTime(date, daysAmount, 'day'); // now - amount days\n}\n\n/**\n * get the next days from now - amount days.\n * @param {number} daysAmount\n * @returns {Dayjs}\n */\nexport function getNextDays(daysAmount: number): Dayjs {\n  const date = getDateUtc();\n  return addDurationTime(date, daysAmount, 'day'); // now - amount days\n}\n\n/**\n * get the next days from now - amount months.\n * @param {number} monthsAmount\n * @returns {Dayjs}\n */\nexport function getNextMonths(monthsAmount: number): Dayjs {\n  const date = getDateUtc();\n  return addDurationTime(date, monthsAmount, 'month'); // now - amount days\n}\n\n/**\n * convert date to IMyDate.\n * IMyDate = {year, month, day}\n * @returns {IMyDate}\n * @param date\n */\nexport function convertDateToIMyDate(date: Dayjs): IMyDate {\n  return {\n    year: getYear(date),\n    month: getMonthNumber(date),\n    day: getDayOfMonthNumber(date),\n  };\n}\n\n/**\n * get the previous days of given days amount in shape of IMyDate\n * IMyDate = {year, month, day}\n * @param {number} daysAmount\n * @returns {IMyDate}\n */\nexport function getPreviousDaysAsIMyDate(daysAmount: number): IMyDate {\n  const date = getPreviousDays(daysAmount);\n  return convertDateToIMyDate(date);\n}\n\n/**\n * get the next days of given days amount in shape of IMyDate\n * IMyDate = {year, month, day}\n * @param {number} daysAmount\n * @returns {IMyDate}\n */\nexport function getNextDaysAsIMyDate(daysAmount: number): IMyDate {\n  const date = getNextDays(daysAmount);\n  return convertDateToIMyDate(date);\n}\n\n/**\n * get the next months of given days amount in shape of IMyDate\n * IMyDate = {year, month, day}\n * @param {number} monthsAmount\n * @returns {IMyDate}\n */\nexport function getNextMonthsAsIMyDate(monthsAmount: number): IMyDate {\n  const date = getNextMonths(monthsAmount);\n  return convertDateToIMyDate(date);\n}\n\n/**\n * convert iso string date to unix\n * @param {string} isoStringDate\n * @returns {number}\n */\nexport function isoToUnix(isoStringDate: string): number {\n  return getUnixTimestamp(isoStringDate) * ms;\n}\n\nexport function getNormalizedDateObject(date: IMyDate): Date {\n  return new Date(date.year, date.month - 1, date.day);\n}\n\nexport function getNormalizedDatepickerObject(date: Date): IMyDate {\n  return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n}\n\nexport function getTomorrowDate(): Date {\n  const date = new Date();\n  date.setDate(date.getDate() + 1);\n  return date;\n}\n","export enum RangeDatepickerCustomSelectActions {\n  OPEN_SELECTION_RANGE = 1,\n  CLOSE_SELECTION_RANGE,\n}\n","import { Component, Input } from '@angular/core';\nimport { PlaceHolderSelectedModel } from '../../model/selected-model.interface';\nimport { getFormatDate } from '../../../../../utils/date-time/date-time.util';\n\n@Component({\n  selector: 'sing-placeholder',\n  templateUrl: './placeholder.component.html',\n  styleUrls: ['./placeholder.component.scss'],\n})\nexport class PlaceholderComponent {\n  showPlaceholder = true;\n  fromDate: string;\n  toDate: string;\n  fromTime: string;\n  toTime: string;\n  isRangeDate: boolean;\n\n  _placeholder: string;\n  @Input()\n  set placeholder(placeholder: string) {\n    this._placeholder = placeholder;\n  }\n\n  /**\n   * show placeholder and not the selected date\n   */\n  _showPlaceHolderOnly = false;\n  @Input()\n  set showPlaceHolderOnly(showPlaceHolderOnly: boolean) {\n    this._showPlaceHolderOnly = showPlaceHolderOnly;\n  }\n\n  /**\n   * show placeholder time\n   */\n  _showPlaceHolderTime = true;\n  @Input()\n  set showPlaceHolderTime(showPlaceHolderTime: boolean) {\n    this._showPlaceHolderTime = showPlaceHolderTime;\n  }\n\n  /**\n   * date format\n   */\n  _dateFormat: any;\n\n  get dateFormat(): string {\n    return this._dateFormat ? this._dateFormat : 'MMM DD, YYYY';\n  }\n\n  @Input()\n  set dateFormat(dateFormat: string) {\n    this._dateFormat = dateFormat;\n  }\n\n  _showPlaceholderSeconds = false;\n\n  get showPlaceholderSeconds(): boolean {\n    return this._showPlaceholderSeconds;\n  }\n\n  @Input()\n  set showPlaceholderSeconds(showPlaceholderSeconds: boolean) {\n    this._showPlaceholderSeconds = showPlaceholderSeconds;\n    if (this._placeHolderSelectedModel) {\n      this.createPlaceHolder(this._placeHolderSelectedModel);\n    }\n  }\n\n  _placeHolderSelectedModel: PlaceHolderSelectedModel;\n  @Input()\n  set placeHolderSelectedModel(placeHolderSelectedModel: PlaceHolderSelectedModel) {\n    this.createPlaceHolder(placeHolderSelectedModel);\n  }\n\n  createPlaceHolder(placeHolderSelectedModel: PlaceHolderSelectedModel): void {\n    const DATE_FORMAT = this.dateFormat;\n    this._placeHolderSelectedModel = placeHolderSelectedModel;\n    if (placeHolderSelectedModel) {\n      this.isRangeDate = !!placeHolderSelectedModel.selectedRangeDateModel;\n      if (this.isRangeDate) {\n        const selectedRangeDateModel = this._placeHolderSelectedModel.selectedRangeDateModel;\n        const rangeDateModel = selectedRangeDateModel.dateModel;\n        this.showPlaceholder = rangeDateModel.beginDate.year === null;\n        this.fromDate = getFormatDate(rangeDateModel.beginJsDate, DATE_FORMAT);\n        this.toDate = getFormatDate(rangeDateModel.endJsDate, DATE_FORMAT);\n        this.fromTime = `${selectedRangeDateModel.fromHours}:${selectedRangeDateModel.fromMinute}`;\n        if (this.showPlaceholderSeconds) {\n          this.fromTime += `:${selectedRangeDateModel.fromSeconds}`;\n        }\n        this.toTime = `${selectedRangeDateModel.toHours}:${selectedRangeDateModel.toMinute}`;\n        if (this.showPlaceholderSeconds) {\n          this.toTime += `:${selectedRangeDateModel.toSeconds}`;\n        }\n      } else {\n        const selectedSingleDateModel = this._placeHolderSelectedModel.selectedSingleDateModel;\n        const rangeDateModel = selectedSingleDateModel.dateModel;\n        this.showPlaceholder = rangeDateModel.date.day === null;\n        this.fromDate = getFormatDate(rangeDateModel.jsdate, DATE_FORMAT);\n        this.fromTime = `${selectedSingleDateModel.hours}:${selectedSingleDateModel.minute}`;\n        if (this.showPlaceholderSeconds) {\n          this.fromTime += `:${selectedSingleDateModel.seconds}`;\n        }\n      }\n    }\n  }\n}\n","<span *ngIf='_showPlaceHolderOnly || showPlaceholder; else selectedRangeDate'\n      class='placeholder s1-placeholder'>{{_placeholder}}</span>\n<ng-template #selectedRangeDate>\n  <div class='selected-range-date'>\n    <span class='from-date'>{{fromDate}}</span>\n    <span *ngIf='_showPlaceHolderTime' class='from-hour'>{{fromTime}}</span>\n    <div *ngIf='isRangeDate' class='to-date'>\n      <span class='dash'>-</span>\n      <span class='to-date'>{{toDate}}</span>\n      <span *ngIf='_showPlaceHolderTime' class='to-hour'>{{toTime}}</span>\n    </div>\n  </div>\n</ng-template>\n","import {\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  EventEmitter,\n  forwardRef,\n  HostListener,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { IMyDateSelected, IMyDrpOptions } from 'mydaterangepicker';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\nimport { TimeAsInputSelectedTime } from '../model/range-datepicker-time-as-input.interface';\nimport { RangeDatepickerAction } from '../model/range-date-action-model.interface';\nimport { cloneDeep, isNil } from 'lodash';\nimport { SelectedRangeDateModel } from '../model/selected-range-date-model.interface';\nimport { SelectedSingleDateModel } from '../model/selected-single-date-model.interface';\nimport {\n  fromObjectToDayjs,\n  getDate,\n  getFormatDate,\n  getLocalDate,\n  getMonthNumber,\n  getYear,\n  isBefore,\n} from '../../../../utils/date-time/date-time.util';\nimport { FromToLabel } from '../model/from-to-label.interface';\nimport { DropdownMinutesModel } from '../model/dropdown-minutes.interface';\nimport { RangeDatepickerActions } from '../enums/range-datepicker-out-actions.enum';\nimport { RangeDatepickerTimeComponent } from '../components/range-datepicker-time/range-datepicker-time.component';\nimport { RangeDatepickerInActions } from '../enums/range-datepicker-in-actions.enum';\nimport { SingleDateModel } from '../model/single-date-model.interface';\nimport { RangeDateModel } from '../model/range-date-model.interface';\nimport { RangeDatepickerTimeFormatOptions } from '../enums/range-datepicker-time-format.enum';\nimport { DropdownInitTime } from '../model/dropdown-init-time.interface';\nimport { PlaceHolderSelectedModel } from '../model/selected-model.interface';\nimport { IsoRangeDate } from '../model/iso-range-date.interface';\nimport { RangeDatepickerSkin } from '../enums/range-datepicker-skin.enum';\nimport {\n  getNormalizedDateObject,\n  getNormalizedDatepickerObject,\n  getTomorrowDate,\n  isoToUnix,\n} from '../range-datepicker/range-datepicker-utils';\nimport * as RangeDatepickerUtils from './range-datepicker-utils';\nimport { IMyDate, IMyOptions } from '@sentinel-one/mydatepicker';\nimport { RESET_DATEPICKER_DATE } from '../consts/range-datepicker.consts';\nimport { RangeDatepickerCustomSelectActions } from '../enums/range-datepicker-custom-select-actions.enum';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { EventCodeOptions } from '../../../../enums/event-code-options.enum';\n\nconst DEFAULT_PLACEHOLDER = 'Select Date';\n\n@Component({\n  selector: 'sing-range-datepicker',\n  templateUrl: './range-datepicker.component.html',\n  styleUrls: ['./range-datepicker.component.scss'],\n  exportAs: 'singRangeDatepicker',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingRangeDatepickerComponent),\n      multi: true,\n    },\n  ],\n})\nexport class SingRangeDatepickerComponent implements DoCheck, OnDestroy {\n  /**\n   * disable the option to open the datepicker\n   */\n  @Input() disable = false;\n  /**\n   * placeholder text. default value 'Select Date'\n   */\n  @Input() placeholder = DEFAULT_PLACEHOLDER;\n  /**\n   * show placeholder without showing selected date and time.\n   * by default false\n   */\n  @Input() showPlaceHolderOnly = false;\n  /**\n   * when date selected the date and time will display.\n   */\n  @Input() showPlaceHolderTime = true;\n  /**\n   * when date selected the second will display\n   */\n  @Input() showPlaceholderSeconds = false;\n  /**\n   * format the placeholder selected date.\n   * in case it's not set -> the placeholder component will use the following format: 'MMM DD, YYYY'\n   */\n  @Input() placeHolderDateFormat: string;\n  /**\n   * when true the time selection will display as dropdown option.\n   * by default true\n   * NOTE when automaticApply is true, the time dropdown will not be displayed\n   */\n  @Input() showTimeAsDropdown = true;\n  /**\n   * when true the time selection will show as input.\n   */\n  @Input() showTimeAsInput = false;\n  /**\n   * when true the reset button will display.\n   * when limitLiveDateRangeDays is provided, reset button will display by default.\n   * by default true\n   */\n  private _showReset = true;\n  @Input()\n  set showReset(val: boolean) {\n    if (val || (val === false && !this._limitLiveDateRangeDays)) {\n      this._showReset = val;\n    }\n  }\n\n  get showReset(): boolean {\n    return this._showReset;\n  }\n  /**\n   * Style of the datepicker trigger button\n   */\n  @Input() skin = RangeDatepickerSkin.defaultDatepicker;\n  /**\n   * Set the \"from\"/\"to\" text in label if passed,\n   * else default value as is \"from\", \"to\".\n   */\n  @Input() fromToLabelText: FromToLabel = {\n    from: 'From',\n    to: 'To',\n  };\n  /**\n   * true will show the today button.\n   */\n  @Input() showTodayButton = false;\n  /**\n   * time format for input.\n   * support only: \"hh:mm:ss\" or \"hh:mm\"\n   */\n  @Input() timeFormatForTimeAsInput = RangeDatepickerTimeFormatOptions.hh_mm_ss;\n  /**\n   * in case false it will prevent rotate the toggle arrow\n   */\n  @Input() allowToggleArrowRotate = true;\n  /**\n   * hide trigger button\n   */\n  @Input() hideTriggerButton = false;\n\n  _limitLiveDateRangeDays: number;\n  /**\n   * set the range limit when starting range selection\n   */\n  @Input()\n  set limitLiveDateRangeDays(days: number) {\n    this._limitLiveDateRangeDays = days;\n    if (days) {\n      this.showReset = true;\n    }\n  }\n\n  private _disableFutureDates = false;\n  @Input()\n  set disableFutureDates(val: boolean) {\n    this._disableFutureDates = val;\n    if (val) {\n      const startDisabledDate = getTomorrowDate();\n      this._datepickerOptions = {\n        ...this._datepickerOptions,\n        disableSince: getNormalizedDatepickerObject(startDisabledDate),\n      };\n    } else {\n      this._datepickerOptions = {\n        ...this._datepickerOptions,\n        disableSince: RESET_DATEPICKER_DATE,\n      };\n    }\n  }\n\n  get disableFutureDates(): boolean {\n    return this._disableFutureDates;\n  }\n\n  @ViewChild(MatMenuTrigger, { static: true })\n  trigger: MatMenuTrigger;\n  dropdownHoursItems = RangeDatepickerUtils.createDropdownHours();\n  dropdownMinutesItems: DropdownMinutesModel[] = RangeDatepickerUtils.getDropdownMinutes();\n  rangeDateModel: RangeDateModel;\n  singleDateModel: SingleDateModel;\n  // Current Time state\n  fromHours: string;\n  toHours: string;\n  fromMinute: string;\n  toMinute = RangeDatepickerUtils.getNowMinute();\n  fromSeconds: string;\n  toSeconds: string;\n  //------------\n  selectedRange: SelectedRangeDateModel;\n  selectedSingleDate: SelectedSingleDateModel;\n  placeHolderSelectedModel: PlaceHolderSelectedModel;\n  showFooterButtons = true;\n  fromApplyOrResetAction = false;\n  /**\n   * we keep the initial date and time\n   * in case the user changes date or time\n   * but doesn't click the apply button and just clicks\n   * outside the picker dialog so we can revert to initial\n   * date and time\n   */\n  initialDateModel;\n  initialTimeModel;\n  //---------------\n  public isYearView = false;\n  datePickerElementObserver: MutationObserver;\n  public isMonthOrYearView = false;\n  public disableApplyButton = false;\n  public rangeDatepickerTimeFormatOptions = RangeDatepickerTimeFormatOptions;\n  public showApplyButton = true;\n  public timeForTimeAsInput: TimeAsInputSelectedTime = {\n    timeFrom: '',\n    timeTo: '',\n  };\n  private ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  /**\n   * on apply event\n   */\n  @Output() apply = new EventEmitter<SelectedRangeDateModel | SelectedSingleDateModel>();\n\n  /**\n   * on picker closed\n   */\n  @Output() closed = new EventEmitter<void>();\n\n  @ViewChild('datePickerComponent') datePickerElement;\n  @ViewChild(RangeDatepickerTimeComponent) public inputTimeComponent: RangeDatepickerTimeComponent;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.initDateRange(RangeDatepickerInActions.INIT);\n    this.listenToEscape();\n  }\n\n  /**\n   * get as input iso range date and set in range date picker\n   */\n  @Input() set initRangeDateWithIso(isoRangeDate: IsoRangeDate) {\n    setTimeout(() => {\n      if (isoRangeDate && isoRangeDate.fromDate && isoRangeDate.toDate) {\n        const fromDateUnix = isoToUnix(isoRangeDate.fromDate);\n        const toDateUnix = isoToUnix(isoRangeDate.toDate);\n        this.rangeDate = `${fromDateUnix}-${toDateUnix}`;\n      }\n    });\n  }\n\n  /**\n   * get as input range unix date and set in range date picker\n   */\n  @Input() set rangeDate(rangeUnixTime: string) {\n    if (rangeUnixTime) {\n      // Extract range unix time to moment local\n      const range = rangeUnixTime.split('-');\n      // Extract FROM\n      const fromDate = getLocalDate(parseInt(range[0]));\n      const fromYear = fromDate.format('YYYY');\n      const fromMonth = fromDate.format('MM');\n      const fromDay = fromDate.format('DD');\n      const fromHours = fromDate.format('HH');\n      const fromMinute = fromDate.format('mm');\n      const fromSeconds = fromDate.format('ss');\n      // Extract To\n      const toDate = getLocalDate(parseInt(range[1]));\n      const toYear = toDate.format('YYYY');\n      const toMonth = toDate.format('MM');\n      const toDay = toDate.format('DD');\n      const toHours = toDate.format('HH');\n      const toMinute = toDate.format('mm');\n      const toSeconds = toDate.format('ss');\n\n      /**\n       * init time state for component.\n       * this is also dropdown time model.\n       * the dropdown time not include seconds\n       */\n      this.fromHours = fromHours;\n      this.fromMinute = fromMinute;\n      this.fromSeconds = fromSeconds;\n      this.toHours = toHours;\n      this.toMinute = toMinute;\n      this.toSeconds = toSeconds;\n\n      /**\n       * init time model for input time.\n       */\n      if (this.showTimeAsInput) {\n        this.timeForTimeAsInput = {\n          timeFrom: this.toTimeInput(this.fromHours, this.fromMinute, this.fromSeconds),\n          timeTo: this.toTimeInput(this.toHours, this.toMinute, this.toSeconds),\n        };\n      }\n\n      this.rangeDateModel = {\n        beginDate: {\n          year: parseInt(fromYear),\n          month: parseInt(fromMonth),\n          day: parseInt(fromDay),\n        },\n        endDate: {\n          year: parseInt(toYear),\n          month: parseInt(toMonth),\n          day: parseInt(toDay),\n        },\n      };\n\n      this.rangeDateModel.beginJsDate = RangeDatepickerUtils.getJsDate(this.rangeDateModel.beginDate);\n      this.rangeDateModel.endJsDate = RangeDatepickerUtils.getJsDate(this.rangeDateModel.endDate);\n\n      const selectedRangeDateModel: SelectedRangeDateModel = {\n        dateModel: this.rangeDateModel,\n        fromHours,\n        toHours,\n        fromMinute,\n        toMinute,\n        fromSeconds,\n        toSeconds,\n        selectedRangeInUnixTime: rangeUnixTime,\n        action: RangeDatepickerInActions.INPUT_RANGE_DATE,\n      };\n\n      setTimeout(() => {\n        this.createSelectionRange(selectedRangeDateModel);\n      });\n    }\n  }\n\n  /**\n   * get as input iso date and set in date picker\n   */\n  @Input() set initSingleDateWithIso(isoDate: string) {\n    setTimeout(() => {\n      if (isoDate) {\n        const fromDateUnix = isoToUnix(isoDate);\n        this.initSingleDate = `${fromDateUnix}`;\n      }\n    });\n  }\n\n  /**\n   * get as input unix date and set in date picker\n   */\n  @Input() set initSingleDate(unixTime: string) {\n    if (unixTime) {\n      // Extract FROM\n      const fromDate = getLocalDate(parseInt(unixTime));\n      const fromYear = fromDate.format('YYYY');\n      const fromMonth = fromDate.format('MM');\n      const fromDay = fromDate.format('DD');\n      const hours = fromDate.format('HH');\n      const minute = fromDate.format('mm');\n      const seconds = fromDate.format('ss');\n\n      /**\n       * init time state for component.\n       * this is also dropdown time model.\n       * the dropdown time not include seconds\n       */\n      this.fromHours = hours;\n      this.fromMinute = minute;\n      this.fromSeconds = seconds;\n\n      /**\n       * init time model for input time.\n       */\n      if (this.showTimeAsInput) {\n        this.timeForTimeAsInput = {\n          timeFrom: this.toTimeInput(hours, minute, seconds),\n          timeTo: null,\n        };\n      }\n\n      this.singleDateModel = {\n        date: {\n          year: parseInt(fromYear),\n          month: parseInt(fromMonth),\n          day: parseInt(fromDay),\n        },\n      };\n\n      this.singleDateModel.jsdate = RangeDatepickerUtils.getJsDate(this.singleDateModel.date);\n\n      const selectedDateModel: SelectedSingleDateModel = {\n        dateModel: this.singleDateModel,\n        hours,\n        minute,\n        seconds,\n        selectedInUnixTime: unixTime,\n        selectedInISOString: RangeDatepickerUtils.convertMsUnixTimeToISOSString(unixTime),\n        action: RangeDatepickerInActions.INPUT_RANGE_DATE,\n      };\n\n      setTimeout(() => {\n        this.createSelectionSingleDate(selectedDateModel);\n      });\n    }\n  }\n\n  /**\n   * get action from parent component and execute it\n   */\n  @Input() set executeAction(action: RangeDatepickerAction) {\n    if (action) {\n      switch (action.actionType) {\n        case RangeDatepickerActions.RESET_DATE_RANGE:\n          this.initDateRange(RangeDatepickerInActions.IN_RESET_DATE_RANGE);\n          break;\n        case RangeDatepickerActions.START_OPEN:\n          this.trigger.openMenu();\n          break;\n        case RangeDatepickerActions.CLOSE:\n          this.trigger.closeMenu();\n          break;\n      }\n    }\n  }\n\n  private _initDropdownTime: DropdownInitTime;\n\n  get initDropdownTime(): DropdownInitTime {\n    return this._initDropdownTime;\n  }\n\n  /**\n   * init time dropdown with hours and minutes\n   * @param initTime\n   */\n  @Input() set initDropdownTime(initTime: DropdownInitTime) {\n    this._initDropdownTime = initTime;\n    if (this.isSingleDatePicker) {\n      this.initDateRange(RangeDatepickerInActions.INIT);\n    }\n  }\n\n  /**\n   * date picker options. additional info can be found:\n   * https://github.com/kekeh/mydatepicker,\n   * https://github.com/kekeh/mydaterangepicker\n   */\n  _datepickerOptions: IMyOptions = {\n    dateFormat: 'dd.mm.yyyy',\n    inline: true,\n  };\n\n  /**\n   * date picker options used by my-date-picker or my-date-range-picker\n   */\n  @Input() set datepickerOptions(datepickerOptions: IMyDrpOptions) {\n    this._datepickerOptions = Object.assign(this._datepickerOptions, datepickerOptions);\n  }\n\n  /**\n   * in case true user does not need to click the apply button.\n   * in this mode hours, apply, will not display\n   */\n  private _automaticApply = false;\n\n  get automaticApply(): boolean {\n    return this._automaticApply;\n  }\n\n  /**\n   * when true the selection date will automatically be applied.\n   * NOTE when true, time selection will not display\n   */\n  @Input() set automaticApply(automaticApply: boolean) {\n    this._automaticApply = automaticApply;\n    this.showApplyButton = !this.automaticApply;\n  }\n\n  /**\n   * set to true in order to display as single date picker\n   */\n  private _isSingleDatePicker = false;\n\n  get isSingleDatePicker(): boolean {\n    return this._isSingleDatePicker;\n  }\n\n  /**\n   * when true the single datepicker will display.\n   * by default the range date picker display\n   */\n  @Input() set isSingleDatePicker(isSingleDatePicker: boolean) {\n    this._isSingleDatePicker = isSingleDatePicker;\n    if (this.isSingleDatePicker) {\n      this.initDateRange(RangeDatepickerInActions.INIT);\n    }\n  }\n\n  /**\n   * move to today\n   */\n  onTodayClick() {\n    this.datePickerElement.today();\n  }\n\n  /**\n   * on apply button click\n   * - set the selected date\n   * - emit selected range\n   * - close menu\n   */\n  onApplyClick(): void {\n    this.applySelected();\n  }\n\n  /**\n   * apply selected\n   * check if single date or selected range\n   */\n  applySelected(): void {\n    if (this.singleDateModel) {\n      this.applySelectedDate();\n    } else {\n      this.applySelectedRange();\n    }\n  }\n\n  /**\n   * apply selected date\n   * - set the selected date\n   * - emit selected date\n   * - close menu\n   */\n  applySelectedDate(): void {\n    this.fixTimeIfNil();\n    this.selectionChanged(RangeDatepickerInActions.IN_APPLY);\n    this.timeForTimeAsInput = {\n      timeFrom: this.toTimeInput(this.fromHours, this.fromMinute, this.fromSeconds),\n      timeTo: null,\n    };\n    this.fromApplyOrResetAction = true;\n    this.trigger.closeMenu();\n  }\n\n  /**\n   * apply selected range\n   * - set the selected date\n   * - emit selected range\n   * - close menu\n   */\n  applySelectedRange(): void {\n    this.fixTimeIfNil();\n    this.selectionChanged(RangeDatepickerInActions.IN_APPLY);\n    this.timeForTimeAsInput = {\n      timeFrom: this.toTimeInput(this.fromHours, this.fromMinute, this.fromSeconds),\n      timeTo: this.toTimeInput(this.toHours, this.toMinute, this.toSeconds),\n    };\n    this.fromApplyOrResetAction = true;\n    this.trigger.closeMenu();\n  }\n\n  /**\n   * emit selection changed\n   */\n  selectionChanged(action: RangeDatepickerInActions): void {\n    if (this.isSingleDatePicker) {\n      this.initSelectedDate(action);\n      this.apply.emit(this.selectedSingleDate);\n    } else {\n      this.initSelectionRange(action);\n      this.apply.emit(this.selectedRange);\n    }\n  }\n\n  /**\n   * init selection date\n   * @param {RangeDatepickerInActions} action\n   */\n  initSelectedDate(action: RangeDatepickerInActions): void {\n    const selectedDateModel: SelectedSingleDateModel = {\n      dateModel: this.singleDateModel,\n      hours: this.fromHours,\n      minute: this.fromMinute,\n      seconds: this.fromSeconds,\n      selectedInUnixTime: null,\n      selectedInISOString: null,\n      action: action,\n    };\n    this.createSelectionSingleDate(selectedDateModel);\n  }\n\n  /**\n   * init selection range date\n   * @param {RangeDatepickerInActions} action\n   */\n  initSelectionRange(action: RangeDatepickerInActions): void {\n    const selectedRangeDateModel: SelectedRangeDateModel = {\n      dateModel: this.rangeDateModel,\n      fromHours: this.fromHours,\n      toHours: this.toHours,\n      fromMinute: this.fromMinute,\n      toMinute: this.toMinute,\n      fromSeconds: this.fromSeconds,\n      toSeconds: this.toSeconds,\n      selectedRangeInUnixTime: null,\n      action: action,\n    };\n    this.createSelectionRange(selectedRangeDateModel);\n  }\n\n  /**\n   * create selectionRange object\n   * @param {SelectedRangeDateModel} selectedRangeDateModel\n   */\n  createSelectionRange(selectedRangeDateModel: SelectedRangeDateModel) {\n    this.selectedRange = selectedRangeDateModel;\n    this.placeHolderSelectedModel = {\n      selectedRangeDateModel: this.selectedRange,\n    };\n    const { year, month, day } = this.selectedRange.dateModel.beginDate;\n    /**\n     * dont set selectedRangeInUnixTime when year && month && day are null\n     * as it came from reset action\n     */\n    if (year && month && day) {\n      this.selectedRange.selectedRangeInUnixTime = RangeDatepickerUtils.getRangeUnixDate(this.selectedRange);\n      const range = this.selectedRange.selectedRangeInUnixTime.split('-');\n      if (range.length === 2) {\n        this.selectedRange.fromDateUnixTime = range[0];\n        this.selectedRange.toDateUnixTime = range[1];\n      }\n    }\n  }\n\n  /**\n   * create selectedSingleDate object\n   * @param {SelectedSingleDateModel} selectedSingleDateModel\n   */\n  createSelectionSingleDate(selectedSingleDateModel: SelectedSingleDateModel) {\n    this.selectedSingleDate = selectedSingleDateModel;\n    this.placeHolderSelectedModel = {\n      selectedSingleDateModel: this.selectedSingleDate,\n    };\n    const { year, month, day } = this.selectedSingleDate.dateModel.date;\n    /**\n     * dont set selectedInUnixTime and selectedInISOString when year && month && day are null\n     * as it came from reset action\n     */\n    if (year && month && day) {\n      this.selectedSingleDate.selectedInUnixTime = RangeDatepickerUtils.getSingleUnixDate(this.selectedSingleDate);\n      this.selectedSingleDate.selectedInISOString = RangeDatepickerUtils.convertMsUnixTimeToISOSString(\n        this.selectedSingleDate.selectedInUnixTime\n      );\n    }\n  }\n\n  /**\n   * reset selected date to default\n   */\n  onRestClick(): void {\n    /**\n     * reset disabled dates if limited selection\n     */\n    if (this._limitLiveDateRangeDays) {\n      let disableSince = RESET_DATEPICKER_DATE;\n      // leave future dates disabled if applicable\n      if (this.disableFutureDates) {\n        const startDisabledDate = getTomorrowDate();\n        disableSince = getNormalizedDatepickerObject(startDisabledDate);\n      }\n      this._datepickerOptions = { ...this._datepickerOptions, disableSince: disableSince };\n    }\n    this.fromApplyOrResetAction = true;\n    this.initDateRange(RangeDatepickerInActions.IN_RESET_DATE_RANGE);\n    this.selectionChanged(RangeDatepickerInActions.IN_RESET_DATE_RANGE);\n  }\n\n  /**\n   * init date range data\n   */\n  initDateRange(action: RangeDatepickerInActions) {\n    this.placeholder = this.placeholder ? this.placeholder : DEFAULT_PLACEHOLDER;\n\n    if (this.isSingleDatePicker) {\n      this.singleDateModel = RangeDatepickerUtils.getInitialSingleDateModel();\n    } else {\n      this.rangeDateModel = RangeDatepickerUtils.getInitialRangeDateModel();\n    }\n\n    this.fromHours = this.showTimeAsInput ? null : '00';\n    if (this.initDropdownTime?.fromHours) {\n      this.fromHours = this.initDropdownTime.fromHours;\n    }\n    this.toHours = this.showTimeAsInput ? null : getFormatDate(getDate(), 'HH');\n\n    this.fromMinute = this.showTimeAsInput ? null : '00';\n    if (this.initDropdownTime?.fromMinute) {\n      this.fromMinute = this.initDropdownTime.fromMinute;\n    }\n    this.toMinute = this.showTimeAsInput ? null : RangeDatepickerUtils.getNowMinute();\n\n    /**\n     * on reset update the time input + reset the seconds state.\n     * we dont need to do that for time dropdown\n     */\n    if (action === RangeDatepickerInActions.IN_RESET_DATE_RANGE) {\n      if (this.showTimeAsInput) {\n        this.timeForTimeAsInput = {\n          timeFrom: null,\n          timeTo: null,\n        };\n        this.fromSeconds = null;\n        this.toSeconds = null;\n      }\n    }\n\n    this.initSelectionRange(action);\n  }\n\n  /**\n   * on date changed\n   * this method is used only if automaticApply === true\n   */\n  onDateChanged(): void {\n    if (this.automaticApply) {\n      setTimeout(() => {\n        this.applySelected();\n      }, 10);\n    }\n    setTimeout(() => {\n      this.fixRangeTimeIfNotValid();\n    }, 0);\n  }\n\n  /**\n   * act on each range selection change event\n   */\n  onDateInputChanged(event: IMyDateSelected) {\n    switch (event.type) {\n      case RangeDatepickerCustomSelectActions.OPEN_SELECTION_RANGE: {\n        if (this._limitLiveDateRangeDays) {\n          this.disableLiveSelectionRanges(event.date);\n        }\n        break;\n      }\n    }\n  }\n\n  /**\n   * disable all dates starting from (selected date + provided days limit)\n   */\n  disableLiveSelectionRanges(fromDate: IMyDate) {\n    // reset disabled dates\n    this._datepickerOptions = { ...this._datepickerOptions, disableSince: RESET_DATEPICKER_DATE };\n\n    let disableSinceDate;\n    const startDisabledDate = getNormalizedDateObject(fromDate);\n    startDisabledDate.setDate(startDisabledDate.getDate() + this._limitLiveDateRangeDays);\n\n    // if disableFutureDates is active, check if (selected date + provided days) is a date in the future\n    // if future date - disable all dates from tomorrow.\n    if (this.disableFutureDates) {\n      const tomorrowDate = getTomorrowDate();\n      disableSinceDate = tomorrowDate <= startDisabledDate ? tomorrowDate : startDisabledDate;\n    } else {\n      disableSinceDate = startDisabledDate;\n    }\n\n    this._datepickerOptions = {\n      ...this._datepickerOptions,\n      disableSince: getNormalizedDatepickerObject(disableSinceDate),\n    };\n  }\n\n  /**\n   * disable apply button in case\n   * date not selected or time not selected\n   * @returns {boolean}\n   */\n  updateDisableApplyButton(): void {\n    let disable;\n    if (this.isSingleDatePicker) {\n      disable = !this.singleDateModel.date.day;\n    } else {\n      disable = !this.rangeDateModel.beginDate.year;\n    }\n\n    if (this.inputTimeComponent?.form.invalid) {\n      disable = true;\n    }\n\n    this.disableApplyButton = disable;\n  }\n\n  /**\n   * move to today in the datepicker\n   */\n  today(): void {}\n\n  writeValue(): void {}\n\n  registerOnChange(fn: any): void {}\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  onTouched = () => {};\n\n  menuOpened(): void {\n    setTimeout(() => {\n      if (this.showTodayButton) {\n        /**\n         * we add new method to range date picker to navigate to today\n         */\n        this.datePickerElement.today = function () {\n          const todayMonth = getMonthNumber();\n          // don't remove 'this.visibleMonth' despite it seems Unused\n          this.visibleMonth = {\n            monthTxt: this.opts.monthLabels[todayMonth],\n            monthNbr: todayMonth,\n            year: getYear(),\n          };\n          this.generateCalendar(todayMonth, getYear(), true);\n          this.cdr.markForCheck();\n        };\n      }\n      this.showFromCurrentSelectedRangeDate();\n      this.ObserverDatePickerElement();\n    });\n    if (this.isSingleDatePicker) {\n      this.initialDateModel = cloneDeep(this.singleDateModel);\n    } else {\n      this.initialDateModel = cloneDeep(this.rangeDateModel);\n    }\n    this.createInitialTimeModel();\n  }\n\n  /**\n   * this method call on menu closed.\n   * for example if we execute this code -> this.trigger.closeMenu();\n   * the menuClosed will executed.\n   */\n  menuClosed(): void {\n    if (!this.fromApplyOrResetAction) {\n      this.revertToInitialDateAndTime();\n    }\n    this.fromApplyOrResetAction = false;\n    this.isMonthOrYearView = false;\n    this.datePickerElementObserver?.disconnect();\n    this.closed.emit();\n  }\n\n  /**\n   * in order to hide the month arrow button on year view we are\n   * using the MutationObserver to detect when the date picker is in year view.\n   */\n  ObserverDatePickerElement(): void {\n    if (this.datePickerElement) {\n      this.isYearView = this.datePickerElement.selectYear;\n      this.datePickerElementObserver = new MutationObserver(() => {\n        this.isYearView = this.datePickerElement.selectYear;\n        this.isMonthOrYearView = this.datePickerElement.selectYear || this.datePickerElement.selectMonth;\n        this.cdr.markForCheck();\n      });\n      this.datePickerElementObserver.observe(this.datePickerElement.elem.nativeElement, {\n        attributes: true,\n        subtree: true,\n      });\n    }\n  }\n\n  /**\n   *\n   * NOTE: THIS IS A FIX FOR A BUG OF THE DATE PICKER. (Related only for range datepicker)\n   * THE BUG:\n   * when we open the range datepicker with selected date the date picker show us today\n   * days and not the selected days.\n   *\n   */\n  showFromCurrentSelectedRangeDate(): void {\n    const { year, month, day } = this.rangeDateModel.beginDate;\n    if (!this.isSingleDatePicker && year && month && day) {\n      this.datePickerElement.toBeginDate();\n      this.cdr.markForCheck();\n    }\n  }\n\n  /**\n   * in case toTime < fromTime for the same selected date update\n   * the toTime to be equal to fromTime.\n   * this method is relevant only for time as input\n   */\n  fixRangeTimeIfNotValid(): void {\n    const isRangePicker = !this.isSingleDatePicker;\n    /**\n     * check if range datepicker and inputTimeComponent exist\n     */\n    if (isRangePicker && this.inputTimeComponent) {\n      const beginDay = this.rangeDateModel?.beginDate?.day;\n      const endDay = this.rangeDateModel?.endDate?.day;\n      const areBeginAndEndDaySelected = beginDay && endDay;\n      if (areBeginAndEndDaySelected) {\n        const timeFromAsObject = this.toObjectTime(this.inputTimeComponent?.form?.controls?.timeFrom?.value);\n        const timeToAsObject = this.toObjectTime(this.inputTimeComponent?.form?.controls?.timeTo?.value);\n        const fromDate = { ...this.rangeDateModel?.beginDate, ...timeFromAsObject };\n        const toDate = { ...this.rangeDateModel?.endDate, ...timeToAsObject };\n        const fromDateAsDayjs = fromObjectToDayjs(fromDate);\n        const toDateAsDayjs = fromObjectToDayjs(toDate);\n\n        if (isBefore(toDateAsDayjs, fromDateAsDayjs)) {\n          const timeFrom = this.inputTimeComponent?.form?.controls?.timeFrom?.value;\n          this.timeForTimeAsInput = {\n            timeFrom: timeFrom,\n            timeTo: timeFrom,\n          };\n        }\n      }\n    }\n  }\n\n  ngDoCheck(): void {\n    if (this.trigger?.menuOpen) {\n      this.updateDisableApplyButton();\n    }\n  }\n\n  toTimeInput(hour: string, minute: string, second): string {\n    return `${hour}:${minute}:${second}`;\n  }\n\n  /**\n   * on time change from the time input we update\n   * our time model with the changes\n   * @param time\n   */\n  timeChangedForTimeAsInput(time: TimeAsInputSelectedTime): void {\n    const from = this.toObjectTime(time.timeFrom);\n    this.fromHours = from.hour;\n    this.fromMinute = from.minute;\n    /**\n     * since we have cases where the time format can be\n     * \"hh:mm:ss\" or \"hh:mm\" we need to check the following\n     * is the from.second exist use it\n     * if we dont we check if we get it on the initial initialTimeModel?.fromSeconds\n     * if we dont we set it to 00\n     */\n    if (from.second) {\n      this.fromSeconds = from.second;\n    } else if (this.initialTimeModel?.fromSeconds) {\n      this.fromSeconds = this.initialTimeModel.fromSeconds;\n    } else {\n      this.fromSeconds = '00';\n    }\n\n    if (!this.isSingleDatePicker) {\n      const to = this.toObjectTime(time.timeTo);\n      this.toHours = to.hour;\n      this.toMinute = to.minute;\n      this.toSeconds = to.second;\n      /**\n       * since we have cases where the time format can be\n       * \"hh:mm:ss\" or \"hh:mm\" we need to check the following\n       * is the to.second exist use it\n       * if we dont we check if we get it on the initial initialTimeModel?.toSeconds\n       * if we dont we set it to 00\n       */\n      if (to.second) {\n        this.toSeconds = to.second;\n      } else if (this.initialTimeModel?.toSeconds) {\n        this.toSeconds = this.initialTimeModel.toSeconds;\n      } else {\n        this.toSeconds = '00';\n      }\n    }\n  }\n\n  timeInputBlur(): void {\n    this.fixRangeTimeIfNotValid();\n  }\n\n  /**\n   * back to initial date time when datepicker is closed without\n   * clicking on apply\n   */\n  revertToInitialDateAndTime(): void {\n    if (this.isSingleDatePicker) {\n      this.singleDateModel = this.initialDateModel;\n    } else {\n      this.rangeDateModel = this.initialDateModel;\n    }\n    this.fromHours = this.initialTimeModel.fromHours;\n    this.fromMinute = this.initialTimeModel.fromMinute;\n    this.fromSeconds = this.initialTimeModel.fromSeconds;\n    this.toHours = this.initialTimeModel.toHours;\n    this.toMinute = this.initialTimeModel.toMinute;\n    this.toSeconds = this.initialTimeModel.toSeconds;\n  }\n\n  /**\n   * create initialTimeModel so we can\n   * revert to this given time when datepicker is closed without clicking on apply\n   */\n  createInitialTimeModel(): void {\n    this.initialTimeModel = cloneDeep({\n      fromHours: this.fromHours,\n      fromMinute: this.fromMinute,\n      fromSeconds: this.fromSeconds,\n      toHours: this.toHours,\n      toMinute: this.toMinute,\n      toSeconds: this.toSeconds,\n    });\n  }\n\n  /**\n   * check if time model is null or undefined\n   * and if yes set to 00\n   */\n  fixTimeIfNil(): void {\n    if (isNil(this.fromHours)) {\n      this.fromHours = '00';\n    }\n    if (isNil(this.fromMinute)) {\n      this.fromMinute = '00';\n    }\n    if (isNil(this.fromSeconds)) {\n      this.fromSeconds = '00';\n    }\n    if (!this.isSingleDatePicker) {\n      if (isNil(this.toHours)) {\n        this.toHours = '00';\n      }\n      if (isNil(this.toMinute)) {\n        this.toMinute = '00';\n      }\n      if (isNil(this.toSeconds)) {\n        this.toSeconds = '00';\n      }\n    }\n  }\n\n  /**\n   * get time as string and convert it to object.\n   * for example:\n   * time = '10:20:01' return will be {hour: '10', minute: '20', second: '01'}\n   * another example\n   * time = '10:20' return will be {hour: '10', minute: '20'}\n   */\n  private toObjectTime(time: string): { hour; minute; second? } {\n    const [hour, minute, second] = time.split(':');\n    const objectTime: { hour; minute; second? } = {\n      hour,\n      minute,\n    };\n    if (second !== void 0) {\n      objectTime.second = second;\n    }\n    return objectTime;\n  }\n\n  /**\n   * close datepicker menu on escape\n   */\n  @HostListener('document:keydown.escape')\n  onEscape() {\n    if (this.trigger.menuOpen) {\n      this.trigger.closeMenu();\n    }\n  }\n\n  /**\n   * listen to escape and send message to close the dropdown\n   */\n  listenToEscape(): void {\n    fromEvent(document, 'keydown', { capture: true })\n      .pipe(\n        filter((event: any) => event.code === EventCodeOptions.Escape),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe((event: Event) => {\n        if (this.trigger.menuOpen) {\n          event.stopPropagation();\n          this.trigger.closeMenu();\n        }\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n}\n","<div [class.disabled]='disable' class='component-wrapper'>\n  <!--Head Date Button-->\n  <button\n    #trigger='matMenuTrigger'\n    [class.hide-trigger]=\"hideTriggerButton\"\n    (menuClosed)='menuClosed()'\n    (menuOpened)='menuOpened()'\n    [attr.data-mgmtAutomationId]=\"'HeadDateButton'\"\n    [disabled]='disable'\n    [matMenuTriggerFor]='appMenu'\n    class='{{skin}} head-date-button'\n    type='button'>\n    <i class='mgmt-date-picker'></i>\n    <sing-placeholder\n      [dateFormat]='placeHolderDateFormat'\n      [placeHolderSelectedModel]='placeHolderSelectedModel'\n      [placeholder]='placeholder'\n      [showPlaceHolderOnly]='showPlaceHolderOnly'\n      [showPlaceHolderTime]='showPlaceHolderTime'\n      [showPlaceholderSeconds]='showPlaceholderSeconds'\n    ></sing-placeholder>\n    <sing-toggle-arrow\n      [color]=\"disable ? 'var(--s1-N-30-color)': 'var(--s1-P-40-color)'\"\n      [open]='trigger.menuOpen && allowToggleArrowRotate'\n      [size]='4'>\n    </sing-toggle-arrow>\n  </button>\n\n  <!--Body Date Menu-->\n  <mat-menu\n    #appMenu='matMenu'\n    (closed)='onTouched()'\n    [class]=\"'sing-date-picker-panel'\"\n    [overlapTrigger]='false'\n    class='range-calender-menu'>\n\n    <div\n      (click)='$event.stopPropagation();'\n      *ngIf='trigger?.menuOpen'\n      [attr.data-mgmtAutomationId]=\"'RangeDatepickerWrapper'\"\n      [class.is-year-view]='isYearView'\n      class='range-datepicker-container'>\n\n      <div class='calender'>\n        <form>\n          <!--Single Date Picker-->\n          <my-date-picker\n            #datePickerComponent\n            (dateChanged)='onDateChanged()'\n            *ngIf='isSingleDatePicker; else rangeDatePicker'\n            [(ngModel)]='singleDateModel'\n            [options]='_datepickerOptions'\n            name='mydate'>\n          </my-date-picker>\n\n          <!--Range Date Picker-->\n          <ng-template #rangeDatePicker>\n            <my-date-range-picker\n              #datePickerComponent\n              (dateRangeChanged)='onDateChanged()'\n              (dateSelected)=\"onDateInputChanged($event)\"\n              [(ngModel)]='rangeDateModel'\n              [options]='_datepickerOptions'\n              name='mydaterange'\n            ></my-date-range-picker>\n          </ng-template>\n\n          <!--Time From To-->\n          <ng-container *ngIf='!automaticApply'>\n            <div *ngIf='showTimeAsDropdown && !showTimeAsInput' class='from-to-container'>\n              <ng-container *ngIf='!datePickerElement?.selectMonth && !datePickerElement?.selectYear'>\n                <!--From-->\n                <div class='hours-min-wrapper'>\n                  <span *ngIf='!isSingleDatePicker' class='s1-label-overline'>{{fromToLabelText.from}}</span>\n                  <div class='hours-min-drop-downs'>\n\n                    <!--Hours-->\n                    <mat-select\n                      [(ngModel)]='fromHours'\n                      name='fromHours'>\n                      <mat-option\n                        (click)='$event.stopPropagation();'\n                        *ngFor='let hour of  dropdownHoursItems'\n                        [value]='hour.value'>\n                        {{ hour.value }}\n                      </mat-option>\n                    </mat-select>\n\n                    <!--Separator-->\n                    <div class='hours-min-separator'>:</div>\n\n                    <!--Minutes-->\n                    <mat-select\n                      [(ngModel)]='fromMinute'\n                      name='fromMinute'>\n                      <mat-option\n                        (click)='$event.stopPropagation();'\n                        *ngFor='let minute of dropdownMinutesItems'\n                        [value]='minute.value'>\n                        {{ minute.value }}\n                      </mat-option>\n                    </mat-select>\n                  </div>\n                </div>\n\n                <div *ngIf='!isSingleDatePicker' class='from-to-divider'></div>\n\n                <!--To-->\n                <div *ngIf='!isSingleDatePicker' class='hours-min-wrapper'>\n                  <span class='s1-label-overline'>{{fromToLabelText.to}}</span>\n                  <div class='hours-min-drop-downs'>\n\n                    <!--Hours-->\n                    <mat-select\n                      [(ngModel)]='toHours'\n                      name='toHours'>\n                      <mat-option\n                        (click)='$event.stopPropagation();'\n                        *ngFor='let hour of  dropdownHoursItems'\n                        [value]='hour.value'>\n                        {{ hour.value }}\n                      </mat-option>\n                    </mat-select>\n\n                    <!--Separator-->\n                    <div class='hours-min-separator'>:</div>\n\n\n                    <!--Minutes-->\n                    <mat-select\n                      [(ngModel)]='toMinute'\n                      name='toMinute'>\n                      <mat-option\n                        (click)='$event.stopPropagation();'\n                        *ngFor='let minute of  dropdownMinutesItems'\n                        [value]='minute.value'>\n                        {{ minute.value }}\n                      </mat-option>\n                    </mat-select>\n                  </div>\n                </div>\n              </ng-container>\n            </div>\n\n            <sing-range-datepicker-time\n              (timeChanged)='timeChangedForTimeAsInput($event)'\n              (timeInputBlur)='timeInputBlur()'\n              *ngIf='showTimeAsInput'\n              [fromToLabelText]='fromToLabelText'\n              [isMonthOrYearView]='isMonthOrYearView'\n              [isSingleDatePicker]='isSingleDatePicker'\n\n              [timeFormat]='timeFormatForTimeAsInput'\n              [time]='timeForTimeAsInput'>\n            </sing-range-datepicker-time>\n          </ng-container>\n        </form>\n      </div>\n\n      <sing-dialog-footer *ngIf='showReset || showTodayButton || showApplyButton'>\n        <!--Rest-->\n        <button\n          (click)='onRestClick()'\n          *ngIf='showReset'\n          class='s1-btn-small-primary-link'\n          data-mgmtAutomationId='dp-reset-button'>\n          Reset\n        </button>\n\n        <div right></div>\n\n        <!--Move to Today-->\n        <button\n          (click)='onTodayClick()'\n          *ngIf='showTodayButton'\n          class='s1-btn-small-primary-outline'\n          data-mgmtAutomationId='dp-today-button'>\n          Today\n        </button>\n\n        <!--Apply-->\n        <button\n          (click)='onApplyClick()'\n          *ngIf='showApplyButton'\n          [disabled]='disableApplyButton'\n          class='s1-btn-small-primary-full'\n          data-mgmtAutomationId='dp-apply-button'>\n          Apply\n        </button>\n      </sing-dialog-footer>\n    </div>\n\n  </mat-menu>\n\n</div>\n<!--<sing-error-text></sing-error-text>-->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingRangeDatepickerComponent } from './range-datepicker/range-datepicker.component';\nimport { RangeDatepickerTimeComponent } from './components/range-datepicker-time/range-datepicker-time.component';\nimport { MatLegacySelectModule as MatSelectModule } from '@angular/material/legacy-select';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { PlaceholderComponent } from './components/placeholder/placeholder.component';\nimport { MyDatePickerModule } from '@sentinel-one/mydatepicker';\nimport { SingDialogFooterModule } from '../../popups/dialog-footer/dialog-footer.module';\nimport { SingToggleArrowModule } from '../../buttons-and-indicators/toggle-arrow/toggle-arrow.module';\nimport { SingInputModule } from '../input/input.module';\nimport { IMaskModule } from 'angular-imask';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\nimport { MyDateRangePickerModule } from 'mydaterangepicker';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MatSelectModule,\n    FormsModule,\n    MyDateRangePickerModule,\n    MyDatePickerModule,\n    SingDialogFooterModule,\n    SingToggleArrowModule,\n    SingInputModule,\n    IMaskModule,\n    ReactiveFormsModule,\n    MatMenuModule,\n  ],\n  declarations: [SingRangeDatepickerComponent, RangeDatepickerTimeComponent, PlaceholderComponent],\n  exports: [SingRangeDatepickerComponent],\n})\nexport class SingRangeDatepickerModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './range-datepicker.module';\nexport * from './range-datepicker/range-datepicker.component';\nexport * from './enums/range-datepicker-custom-select-actions.enum';\nexport * from './enums/range-datepicker-in-actions.enum';\nexport * from './enums/range-datepicker-out-actions.enum';\nexport * from './enums/range-datepicker-skin.enum';\nexport * from './enums/range-datepicker-time-format.enum';\nexport * from './model/dropdown-init-time.interface';\nexport * from './model/dropdown-minutes.interface';\nexport * from './model/from-to-label.interface';\nexport * from './model/iso-range-date.interface';\nexport * from './model/range-date-action-model.interface';\nexport * from './model/range-date-model.interface';\nexport * from './model/range-datepicker-time-as-input.interface';\nexport * from './model/selected-model.interface';\nexport * from './model/selected-range-date-model.interface';\nexport * from './model/selected-single-date-model.interface';\nexport * from './model/single-date-model.interface';\nexport * from './range-datepicker/range-datepicker-utils';\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport { SideListItem } from '../models/side-list-item.interface';\nimport { cloneDeep } from 'lodash';\n\n@Component({\n  selector: 'sing-aside-list',\n  templateUrl: './aside-list.component.html',\n  styleUrls: ['./aside-list.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingAsideListComponent {\n  private _items: SideListItem[] = [];\n  private _noItemSelected = false;\n  @Input()\n  set items(items: SideListItem[]) {\n    if (Array.isArray(items)) {\n      this._items = items;\n      if (!this._noItemSelected) {\n        const selectedItem = this._items.find((item: SideListItem) => item.id === this.selectedItemId);\n        if (selectedItem) {\n          selectedItem.selected = true;\n        }\n        this.selectTheFirstItemIfNoneAreSelected();\n      }\n    }\n  }\n\n  get items(): SideListItem[] {\n    return this._items;\n  }\n\n  @Input()\n  set noItemSelected(value: boolean) {\n    this._noItemSelected = value;\n    this.unselectAll();\n    if (!value) {\n      this.selectTheFirstItemIfNoneAreSelected();\n    }\n  }\n\n  get noItemSelected(): boolean {\n    return this._noItemSelected;\n  }\n\n  @Input() noBorder?: boolean;\n  @Input() itemTemplateRef: TemplateRef<any>;\n  @Input() hideSelectedMarker?: boolean;\n  @Output() itemSelectionChanged = new EventEmitter<SideListItem>();\n\n  private selectedItemId: string;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  /**\n   * on item selected.\n   * - first we check the selected item is not the previous one\n   * - we update the new item to be selected and emit an event with the selected item.\n   * @param item\n   */\n  itemSelected(item: SideListItem<any>): void {\n    if (item && item.id !== this.selectedItemId && !item.disabled) {\n      this.unselectAll();\n      item.selected = true;\n      this.selectedItemId = item.id;\n      this.itemSelectionChanged.emit(cloneDeep(item));\n    }\n  }\n\n  /**\n   * go over all items and unselected them.\n   * NOTE we are using the private 'this._items' and not 'this.items'\n   * since otherwise there will be an endless loop.\n   */\n  unselectAll(): void {\n    this._items = this._items.map((item) => {\n      item.selected = false;\n      return item;\n    });\n    this.selectedItemId = null;\n    this.cdr.detectChanges();\n  }\n\n  /**\n   * check if none of the items are selected.\n   * return true if none of the items selected false otherwise.\n   */\n  isNoneOfTheItemsSelected(): boolean {\n    return this._items.find((item) => item.selected) === void 0;\n  }\n\n  /**\n   * select the first enabled item if none of the items are selected.\n   * in case we get a list of items that none of them selected we set\n   * the first enabled item to be selected\n   */\n  selectTheFirstItemIfNoneAreSelected(): void {\n    if (this.isNoneOfTheItemsSelected() && this.items.length) {\n      const itemToBeSelected = this.items.find((item) => !item.disabled);\n      if (itemToBeSelected) {\n        this.itemSelected(itemToBeSelected);\n      }\n    }\n  }\n\n  trackByFn(index: number, item: SideListItem): string {\n    return item.id;\n  }\n}\n","<aside class=\"container\" [class.no-borders]=\"noBorder\">\n  <div *ngFor=\"let item of items; let i = index; trackBy:trackByFn\" [matTooltip]=\"item.tooltip\" matTooltipPosition=\"right\">\n    <div\n      class=\"item-container\"\n      [class.item-selected]=\"item.selected\"\n      [class.disabled]=\"item.disabled\"\n      (click)=\"itemSelected(item)\"\n    >\n      <div *ngIf='!hideSelectedMarker' class=\"selected-marker\" [class.selected]=\"item.selected\"></div>\n      <ng-container\n        *ngTemplateOutlet=\"itemTemplateRef ? itemTemplateRef : defaultItemTemplate; context:{$implicit: item}\">\n      </ng-container>\n    </div>\n  </div>\n</aside>\n\n<!--Default Template-->\n<ng-template #defaultItemTemplate let-item>\n  <div\n    class=\"item\"\n    [attr.data-mgmtautomationid]=\"item?.automationId || item?.name\">\n    {{ item?.name }}\n  </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingAsideListComponent } from './aside-list/aside-list.component';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\n\n@NgModule({\n  imports: [CommonModule, MatTooltipModule],\n  declarations: [SingAsideListComponent],\n  exports: [SingAsideListComponent],\n})\nexport class SingAsideListModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './aside-list.module';\nexport * from './aside-list/aside-list.component';\nexport * from './models/side-list-item.interface';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { cloneDeep } from 'lodash';\nimport { SideListItem } from '../../../layout/aside-list/models/side-list-item.interface';\n\n@Component({\n  selector: 'sing-side-list-display',\n  templateUrl: './side-list-display.component.html',\n  styleUrls: ['./side-list-display.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingSideListDisplayComponent implements OnInit {\n  @Input() title: string;\n  @Input() itemsList: SideListItem[];\n\n  @Output() selectionChanged = new EventEmitter();\n  @Output() searchChanged = new EventEmitter();\n\n  displayedItems: SideListItem[];\n\n  ngOnInit() {\n    this.displayedItems = cloneDeep(this.itemsList);\n  }\n\n  onSelect(item) {\n    this.displayedItems.forEach((displayedItem) => (displayedItem.selected = displayedItem.id === item.id));\n    this.selectionChanged.emit(item);\n  }\n\n  onSearchChange(text) {\n    const textToSearch = text.trim().toLowerCase();\n    this.displayedItems = cloneDeep(this.itemsList.filter((item) => item.name.toLowerCase().includes(textToSearch)));\n\n    this.searchChanged.emit(text);\n  }\n}\n","<div class='category-navigator'>\n  <sing-search\n    (changeText)='onSearchChange($event)'\n    [isInputOpen]='true'\n    [keepOpen]='true'\n    class='category-search'\n    placeholder='Search...'\n    themeClass='new-collapsible-search'></sing-search>\n  <div class='category-list'>\n    <label class='list-title'>{{title}}</label>\n    <sing-aside-list (itemSelectionChanged)='onSelect($event)' [items]='displayedItems'\n                     [noBorder]='true'></sing-aside-list>\n  </div>\n</div>\n<div class='vertical-separator'></div>\n<div class='content'>\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSideListDisplayComponent } from './side-list-display/side-list-display.component';\nimport { SingSearchModule } from '../../form-controls/search/search.module';\nimport { SingAsideListModule } from '../../layout/aside-list/aside-list.module';\n\n@NgModule({\n  imports: [CommonModule, SingSearchModule, SingAsideListModule],\n  declarations: [SingSideListDisplayComponent],\n  exports: [SingSideListDisplayComponent],\n})\nexport class SingSideListDisplayModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './side-list-display.module';\nexport * from './side-list-display/side-list-display.component';\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  ViewChild,\n} from '@angular/core';\n\n@Component({\n  selector: 'sing-floating-error',\n  templateUrl: './floating-error.component.html',\n  styleUrls: ['./floating-error.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingFloatingErrorComponent implements OnDestroy, AfterViewInit {\n  @Input() errorMassage: string;\n\n  @ViewChild('errorDiv') errorDiv: ElementRef;\n\n  private elementRef: ElementRef;\n  private observer: IntersectionObserver | null = null;\n\n  switchDirection = true;\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  public ngOnDestroy(): void {\n    this.observer?.disconnect();\n    this.observer = null;\n  }\n\n  ngAfterViewInit(): void {\n    this.observer = new IntersectionObserver(\n      (entries: IntersectionObserverEntry[]) => {\n        if (!entries?.[0].isIntersecting) {\n          this.switchDirection = !this.switchDirection;\n          this.cdr.markForCheck();\n        }\n      },\n      {\n        threshold: 1,\n      }\n    );\n    this.elementRef = this.errorDiv;\n    this.observer?.observe(this.elementRef.nativeElement);\n  }\n}\n","<div #errorDiv class='s1-tooltip' [ngClass]='{\"switch-direction\": switchDirection}'>{{errorMassage}}</div>\n","import {\n  ChangeDetectorRef,\n  ComponentRef,\n  Directive,\n  HostListener,\n  Input,\n  OnDestroy,\n  ViewContainerRef,\n} from '@angular/core';\nimport { SingFloatingErrorComponent } from './components/floating-error/floating-error.component';\n\n@Directive({\n  selector: '[singFloatingError]',\n})\nexport class FloatingErrorDirective implements OnDestroy {\n  private _errorMassage: string;\n  @Input('singFloatingError')\n  set errorMassage(errorMassage: string) {\n    this._errorMassage = errorMassage;\n  }\n\n  get errorMassage(): string {\n    return this._errorMassage;\n  }\n\n  component: ComponentRef<SingFloatingErrorComponent>;\n\n  constructor(private container: ViewContainerRef, private cdr: ChangeDetectorRef, private vcr: ViewContainerRef) {}\n\n  @HostListener('focus', ['$event.target'])\n  @HostListener('change', ['$event.target'])\n  @HostListener('input', ['$event.target'])\n  @HostListener('keyup', ['$event.target'])\n  handleError() {\n    if (this.component) {\n      this.component.destroy();\n    }\n    setTimeout(() => {\n      if (this.errorMassage && this.vcr.element.nativeElement === document.activeElement) {\n        this.component = this.container.createComponent(SingFloatingErrorComponent);\n        this.component.instance.errorMassage = this.errorMassage;\n        this.cdr.markForCheck();\n      }\n    });\n  }\n\n  @HostListener('blur', ['$event.target'])\n  ngOnDestroy(): void {\n    if (this.component) {\n      this.component.destroy();\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingFloatingErrorComponent } from './components/floating-error/floating-error.component';\nimport { FloatingErrorDirective } from './floating-error.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingFloatingErrorComponent, FloatingErrorDirective],\n  exports: [FloatingErrorDirective],\n})\nexport class SingFloatingErrorModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './floating-error.module';\nexport * from './floating-error.directive';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './sing-http-meta-data.interface';\nexport * from './sing-http-payload';\nexport * from './sing-http-request';\nexport * from './sing-http-response';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './models/public-api';\nexport * from './enums/sing-http-methods.enum';\nexport * from './utils/sing-http-call.utils';\nexport * from './services/sing-http-call.service';\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { MenuLeftNavItem, MenuLeftNavItemObserver } from './menu-item.interface';\nimport { isObservable, of } from 'rxjs';\n\n@Component({\n  selector: 'sing-main-left-nav',\n  templateUrl: './main-left-nav.component.html',\n  styleUrls: ['./main-left-nav.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingMainLeftNavComponent implements OnInit {\n  activeItem: MenuLeftNavItem;\n  isNavOpen = false;\n\n  constructor(private renderer: Renderer2, private el: ElementRef) {}\n\n  _menuItems: MenuLeftNavItemObserver[] = [];\n\n  @Input() overlap = true;\n\n  @Input()\n  set menuItems(menuItems: MenuLeftNavItem[]) {\n    this._menuItems = this.mapShowToObservable(menuItems);\n  }\n\n  ngOnInit() {\n    if (this.overlap) {\n      const el = this.el.nativeElement;\n      this.renderer.setStyle(el, 'position', 'absolute');\n    }\n  }\n\n  /**\n   * this method checks if show property exists and if value is boolean it maps\n   * to observable.\n   * if show property does not exist the method will add it as true observable.\n   *\n   * THE BIG PICTURE\n   * we want to be able to show and hide some of the left nav items\n   * so the component get as input menuItems on each item we can set show property\n   * this property can be boolean or Observable<boolean>\n   */\n  mapShowToObservable(menuItems: MenuLeftNavItem[]): MenuLeftNavItemObserver[] {\n    const SHOW = 'show';\n    const returnMenu: MenuLeftNavItemObserver[] = [];\n    if (!menuItems) {\n      return returnMenu;\n    }\n    menuItems\n      .map((item) => {\n        if (item.hasOwnProperty(SHOW) && !isObservable(item.show)) {\n          item.show = of(item.show);\n        }\n        return item;\n      })\n      .filter((item) => !item.hasOwnProperty(SHOW))\n      .map((item) => (item.show = of(true)));\n    Object.assign(returnMenu, menuItems);\n    return returnMenu;\n  }\n}\n","  <!--Left Nav-->\n  <nav [class.extend]='isNavOpen'>\n\n    <!--Nav Items-->\n    <ng-container *ngFor='let item of _menuItems;'>\n      <div *ngIf='item.show | async'>\n        <div [routerLinkActiveOptions]='{exact: false}'\n             class='main-menu-item'\n             routerLinkActive='active-link'>\n          <a\n            [attr.data-mgmtautomationid]='\"left-nav-\" + item.id'\n            (blur)='isNavOpen = false'\n            (focus)='isNavOpen = true'\n            [ngClass]=\"{'active': item === activeItem} \"\n            [routerLink]='item.url'>\n            <span class='active-indicator'></span>\n            <i class='icon mgmt-{{item.icon}}'></i>\n            <span class='title'>{{item.title}}</span>\n          </a>\n\n        </div>\n      </div>\n    </ng-container>\n\n  </nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingMainLeftNavComponent } from './main-left-nav/main-left-nav.component';\nimport { RouterModule } from '@angular/router';\n\n@NgModule({\n  imports: [CommonModule, RouterModule],\n  declarations: [SingMainLeftNavComponent],\n  exports: [SingMainLeftNavComponent],\n})\nexport class SingMainLeftNavModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './main-left-nav.module';\nexport * from './main-left-nav/main-left-nav.component';\nexport * from './main-left-nav/menu-item.interface';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-dialog-header',\n  templateUrl: './dialog-header.component.html',\n  styleUrls: ['./dialog-header.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingDialogHeaderComponent {\n  @Input() automationId: string;\n  @Input() disableCloseBtn = false;\n  _headerClass = 'large-clean-title';\n\n  get headerClass(): string {\n    return this._headerClass;\n  }\n\n  @Input()\n  set headerClass(headerClass: string) {\n    if (headerClass) {\n      this._headerClass = headerClass;\n    }\n  }\n}\n","<h2 [class]='headerClass' mat-dialog-title>\n  <!--Header Title-->\n  <div class='header-title-container s1-headline-2'>\n    <ng-content></ng-content>\n  </div>\n\n  <!--Close Button-->\n  <button\n    [disabled]=\"disableCloseBtn\"\n    aria-label=\"Close\"\n    class='close-button'\n    mat-dialog-close='Cancel'\n    tabindex='-1'>\n    <i [attr.data-mgmtAutomationId]='automationId' class='mgmt-x'\n    ></i>\n  </button>\n</h2>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\n\n@NgModule({\n  imports: [CommonModule, MatDialogModule],\n  declarations: [SingDialogHeaderComponent],\n  exports: [SingDialogHeaderComponent],\n})\nexport class SingDialogHeaderModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dialog-header.module';\nexport * from './dialog-header/dialog-header.component';\n","import { DropDownOptions } from '../../../../form-controls/drop-down/models/drop-down-options.interface';\nimport { SkinOptions } from '../../../../form-controls/drop-down/enums/skin-options.enum';\n\nexport const TAB_ACTIONS_MENU_OPTIONS: DropDownOptions = {\n  skinOptions: SkinOptions.Action,\n  useClientSideAscSort: false,\n} as const;\n","import { Component, ChangeDetectionStrategy, ViewChild, ElementRef, Output, Input, EventEmitter } from '@angular/core';\nimport { TabData } from '../models/page-tabs.interface';\nimport { TAB_ACTIONS_MENU_OPTIONS } from '../consts/page-tabs.consts';\nimport { DropDownItem } from '../../../../form-controls/drop-down/models/drop-down-item.interface';\nimport {\n  MultiSelectDropDownSelectionChanges,\n  SingleSelectDropDownSelectionChange,\n} from '../../../../form-controls/drop-down/models/drop-down-selection-changes.interface';\n\n@Component({\n  selector: 'sing-page-one-tab',\n  templateUrl: './page-one-tab.component.html',\n  styleUrls: ['./page-one-tab.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PageOneTabComponent {\n  @ViewChild('editText')\n  set editTextInput(elementRef: ElementRef<HTMLInputElement>) {\n    elementRef?.nativeElement?.focus();\n  }\n\n  @Input() isActive: boolean;\n  @Input() inEditMode: boolean;\n  @Output() rename: EventEmitter<string> = new EventEmitter<string>();\n  @Output() remove: EventEmitter<void> = new EventEmitter<void>();\n  @Output() menuActionSelected: EventEmitter<DropDownItem> = new EventEmitter<DropDownItem>();\n\n  @Input() showRemoveButton?: boolean;\n  @Input()\n  set tabData(value: TabData) {\n    this._tabData = value;\n    this.displayedTabName = value.name;\n  }\n  get tabData(): TabData {\n    return this._tabData;\n  }\n  private _tabData: TabData;\n\n  displayedTabName: string;\n\n  isMenuOpen: boolean;\n  dropDownOptions = TAB_ACTIONS_MENU_OPTIONS;\n\n  /**\n   * Once user finished editing the tab name,\n   * 1. exit edit mode.\n   * 2. update the data\n   */\n  finishEditing() {\n    this.inEditMode = false;\n    this.rename.emit(this.displayedTabName);\n  }\n\n  onRemoveTab() {\n    this.remove.emit();\n  }\n\n  onClick() {\n    if (this.isActive) {\n      this.inEditMode = true;\n    }\n  }\n\n  onOpenMenu($event: MouseEvent) {\n    this.isMenuOpen = !this.isMenuOpen;\n    if (this.isActive) {\n      $event.stopPropagation();\n    }\n  }\n\n  onMenuAction($event: MultiSelectDropDownSelectionChanges | SingleSelectDropDownSelectionChange) {\n    this.menuActionSelected.emit((<SingleSelectDropDownSelectionChange>$event).changedItem);\n  }\n}\n","<div class=\"one-tab\"  [class.show-menu-trigger]=\"isMenuOpen && !inEditMode\" [class.edit-mode]=\"inEditMode\">\n  <div class=\"input-container\" *ngIf=\"inEditMode; else staticTab\">\n    <sing-input>\n      <input class=\"tab-edit\"\n        #editText\n        type=\"text\"\n        [attr.data-mgmtAutomationId]=\"'tabNameInput'\"\n        (keyup.enter)=\"finishEditing()\"\n        (blur)=\"finishEditing()\"\n        [(ngModel)]=\"displayedTabName\">\n    </sing-input>\n  </div>\n\n  <ng-template #staticTab>\n    <div *ngIf=\"tabData?.showSpinner\" class=\"sing-tab-spinner\">\n      <mat-spinner\n        [diameter]=\"12\">\n      </mat-spinner>\n    </div>\n    <div class=\"tab-info\" (click)=\"onClick()\" (contextmenu)=\"hiddenTriggerDropdown.openMenu()\">\n      <div class=\"tab-name\"\n           [attr.data-mgmtAutomationId]=\"'tabName'\"\n           singEllipsis>\n        {{displayedTabName}}\n      </div>\n      <div class=\"tab-metadata\" singEllipsis *ngIf=\"tabData.metaData\" [attr.data-mgmtAutomationId]=\"'tabMetadata'\">\n        {{tabData.metaData}}\n      </div>\n    </div>\n    <div class=\"actions-container\">\n      <sing-drop-down\n        #hiddenTriggerDropdown\n        (click)=\"onOpenMenu($event)\"\n        (clickOrScrollOutside)=\"isMenuOpen = false\"\n        (selectionChanged)=\"onMenuAction($event)\"\n        [attr.data-mgmtautomationid]=\"'tab-menu'\"\n        [items]=\"tabData.menuItems\"\n        [dropDownOptions]=\"dropDownOptions\">\n      </sing-drop-down>\n      <i *ngIf=\"showRemoveButton\" class=\"mgmt-x\" (click)=\"onRemoveTab()\"  [attr.data-mgmtautomationid]=\"'remove-tab'\"></i>\n    </div>\n  </ng-template>\n</div>\n\n\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { MenuActionData, RenameTabData, TabData } from './models/page-tabs.interface';\nimport { animate, keyframes, query, stagger, style, transition, trigger } from '@angular/animations';\nimport { DropDownItem } from '../../../form-controls/drop-down/models/drop-down-item.interface';\n\n@Component({\n  selector: 'sing-page-tabs',\n  templateUrl: './page-tabs.component.html',\n  styleUrls: ['./page-tabs.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.Emulated,\n  animations: [\n    trigger('listAnimation', [\n      transition('* => *', [\n        query(':enter', style({ opacity: 0 }), { optional: true }),\n        query(':leave', style({ opacity: 1 }), { optional: true }),\n\n        query(\n          ':enter',\n          stagger('100ms', [\n            animate(\n              '100ms ease-in',\n              keyframes([\n                style({ opacity: 0, transform: 'translateY(10px)', offset: 0 }),\n                style({\n                  opacity: 0.25,\n                  transform: 'translateY(7.5px)',\n                  offset: 0.25,\n                }),\n                style({\n                  opacity: 0.5,\n                  transform: 'translateY(5px)',\n                  offset: 0.5,\n                }),\n                style({\n                  opacity: 0.75,\n                  transform: 'translateY(2.5px)',\n                  offset: 0.75,\n                }),\n                style({ opacity: 1, transform: 'translateY(0)', offset: 1.0 }),\n              ])\n            ),\n          ]),\n          { optional: true }\n        ),\n        query(\n          ':leave',\n          stagger('100ms', [\n            animate(\n              '100ms ease-out',\n              keyframes([\n                style({ opacity: 1, transform: 'translateY(0)', offset: 0 }),\n                style({\n                  opacity: 0.75,\n                  transform: 'translateY(2.5px)',\n                  offset: 0.25,\n                }),\n                style({\n                  opacity: 0.5,\n                  transform: 'translateY(5px)',\n                  offset: 0.5,\n                }),\n                style({\n                  opacity: 0.25,\n                  transform: 'translateY(7.5px)',\n                  offset: 0.75,\n                }),\n                style({ opacity: 0, transform: 'translateY(10px)', offset: 1 }),\n              ])\n            ),\n          ]),\n          { optional: true }\n        ),\n      ]),\n    ]),\n  ],\n})\nexport class SingPageTabsComponent {\n  get tabs(): TabData[] {\n    return this._tabs;\n  }\n  @Input()\n  set tabs(value: TabData[]) {\n    this._tabs = value;\n    this.setTabWidth();\n  }\n  @Output() tabAction: EventEmitter<MenuActionData> = new EventEmitter<MenuActionData>();\n  @Output() tabSelected: EventEmitter<number> = new EventEmitter<number>();\n  @Output() addTab: EventEmitter<void> = new EventEmitter<void>();\n  @Output() removeTab: EventEmitter<number> = new EventEmitter<number>();\n  @Output() renameTab: EventEmitter<RenameTabData> = new EventEmitter<RenameTabData>();\n\n  @Input() selectedTabIndex = 0;\n  @Input() editedTabIndex: number;\n  @Input() disableAddTabs: boolean;\n  @Input() disableAddTabsTooltip: string;\n  @Input() enabledAddTabsTooltip: string;\n  @Input() showRemoveButton = true;\n\n  private _tabs: TabData[];\n  tabWidth: string;\n\n  onRemoveTab(tabIndex: number) {\n    this.removeTab.emit(tabIndex);\n  }\n\n  onRenameTab(name: string, index: number) {\n    this.renameTab.emit({ index, name });\n  }\n\n  addNewTab() {\n    if (!this.disableAddTabs) {\n      this.addTab.emit();\n    }\n  }\n\n  onTabSelect($event, i: number) {\n    if (this.selectedTabIndex !== i) {\n      this.tabSelected.emit(i);\n    }\n  }\n\n  onMenuActionSelected($event: DropDownItem, tabIndex: number) {\n    this.tabAction.emit({ menuItem: $event, tabIndex });\n  }\n\n  trackByFn(value: number): number {\n    return value;\n  }\n\n  /**\n   * set the tab width based on the total number of open tabs\n   */\n  private setTabWidth() {\n    const width = 100 / this._tabs.length;\n    const addButtonDelta = 36 / this._tabs.length;\n    this.tabWidth = `calc(${width}% - ${addButtonDelta}px)`;\n  }\n}\n","<div class=\"container\" data-mgmtAutomationId=\"tabsContainer\" [@listAnimation]=\"tabs.length\">\n  <div class=\"one-tab\"\n       *ngFor=\"let tab of tabs; let i = index; trackBy: trackByFn\"\n       (click)=\"onTabSelect($event,i)\"\n       [style.width]=\"tabWidth\"\n       [class.active]=\"i === selectedTabIndex\">\n  <sing-page-one-tab\n    [class.active]=\"i === selectedTabIndex\"\n    [showRemoveButton]=\"showRemoveButton\"\n    [isActive]=\"i===selectedTabIndex\"\n    [inEditMode]=\"i===editedTabIndex\"\n    [attr.data-mgmtAutomationId]=\"'pageOneTab'+i\"\n    [tabData]=\"tab\"\n    (remove)=\"onRemoveTab(i)\"\n    (rename)=\"onRenameTab($event,i)\"\n    (menuActionSelected)=\"onMenuActionSelected($event, i)\"></sing-page-one-tab>\n\n  </div>\n  <div class=\"add-tab\"\n       [class.disabled]=\"disableAddTabs\"\n       [matTooltip]=\"disableAddTabs && disableAddTabsTooltip ? disableAddTabsTooltip: enabledAddTabsTooltip\"\n       data-mgmtAutomationId=\"addTab\"\n       (click)=\"addNewTab()\">\n    <i class=\"mgmt-new\"></i>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingPageTabsComponent } from './page-tabs/page-tabs.component';\nimport { SingInputModule } from '../../../modules/form-controls/input/input.module';\nimport { PageOneTabComponent } from './page-tabs/page-one-tab/page-one-tab.component';\nimport { FormsModule } from '@angular/forms';\nimport { SingDropDownModule } from '../../../modules/form-controls/drop-down/drop-down.module';\nimport { SingEllipsisModule } from '../../../modules/directives/ellipsis/ellipsis.module';\nimport { SingContextMenuModule } from '../../../modules/directives/context-menu/context-menu.module';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\nimport { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SingInputModule,\n    FormsModule,\n    SingDropDownModule,\n    SingEllipsisModule,\n    SingContextMenuModule,\n    MatTooltipModule,\n    MatProgressSpinnerModule,\n  ],\n  declarations: [SingPageTabsComponent, PageOneTabComponent],\n  exports: [SingPageTabsComponent],\n})\nexport class SingPageTabsModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './page-tabs.module';\nexport * from './page-tabs/page-tabs.component';\nexport * from './page-tabs/consts/page-tabs.consts';\nexport * from './page-tabs/models/page-tabs.interface';\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DynamicButton } from '../model/dynamic-button';\n\n@Component({\n  selector: 'sing-dynamic-dialog',\n  templateUrl: './dynamic-dialog.component.html',\n  styleUrls: ['./dynamic-dialog.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingDynamicDialogComponent {\n  @Input() headline: string;\n  @Input() headlineIcon?: string;\n  @Input() buttons: DynamicButton[];\n  @Input() isWithEllipsis: boolean;\n  @Input() iconColor?: string;\n}\n","<sing-dialog-header [automationId]=\"'closeDialog'\" [headerClass]=\"'large-clean-title'\">\n  <ng-container *ngIf='isWithEllipsis; then withEllipsis; else regular'></ng-container>\n  <ng-template #withEllipsis>\n    <div singEllipsis>\n      <i *ngIf='headlineIcon' [ngClass]='headlineIcon' [style.color]='iconColor' class='icon'></i>{{ headline }}\n    </div>\n  </ng-template>\n  <ng-template #regular\n  ><i *ngIf='headlineIcon' [ngClass]='headlineIcon' [style.color]='iconColor' class='icon'></i\n  >{{ headline }}</ng-template\n  >\n</sing-dialog-header>\n<div class='content'>\n  <div class='body'>\n    <ng-content select='[body]'></ng-content>\n  </div>\n  <div class='footer'>\n    <ng-content select='[footer]'></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingDynamicDialogComponent } from './dynamic-dialog/dynamic-dialog.component';\nimport { SingDialogHeaderModule } from '../dialog-header/dialog-header.module';\nimport { SingEllipsisModule } from '../../directives/ellipsis/ellipsis.module';\n\n@NgModule({\n  imports: [CommonModule, SingDialogHeaderModule, SingEllipsisModule],\n  declarations: [SingDynamicDialogComponent],\n  exports: [SingDynamicDialogComponent],\n})\nexport class SingDynamicDialogModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dynamic-dialog.module';\nexport * from './dynamic-dialog/dynamic-dialog.component';\n","export enum SingConfirmationDialogType {\n  WarningInfo,\n  Warning,\n  Info,\n  Success,\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormFooterButtonsOptions } from '../../../buttons-and-indicators/form-footer-buttons/model/form-footer-buttons-options.interface';\nimport { SingConfirmationDialogType } from './ConfirmTypeEnum';\n\n@Component({\n  selector: 'sing-confirmation-dialog',\n  templateUrl: './confirmation-dialog.component.html',\n  styleUrls: ['./confirmation-dialog.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingConfirmationDialogComponent {\n  /**\n   * dialog content text\n   */\n  @Input() text: string;\n\n  /**\n   * confirm button enabled validation function\n   */\n\n  @Input() enableConfirmValidation: () => boolean;\n\n  private _checkboxesConfig: Array<{ text: string; key: string; isSelected?: boolean }>;\n\n  /**\n   * dialog additional checkbox config\n   */\n  @Input()\n  get checkboxesConfig(): Array<{ text: string; key: string; isSelected?: boolean }> {\n    return this._checkboxesConfig;\n  }\n\n  set checkboxesConfig(value: Array<{ text: string; key: string; isSelected?: boolean }>) {\n    this._checkboxesConfig = value;\n    value\n      ?.filter((checkBoxItem) => checkBoxItem.isSelected)\n      .forEach((checkBoxItem) => {\n        this.additionalValues[checkBoxItem.key] = true;\n      });\n    if (this.enableConfirmValidation) {\n      this.buttonOptions.saveButton.disabled = this.enableConfirmValidation();\n    }\n  }\n\n  /**\n   * buttons configuration with default\n   */\n  @Input() buttonOptions: FormFooterButtonsOptions = {\n    saveButton: { show: true, name: 'Confirm' },\n    cancelButton: { show: true, name: 'Cancel' },\n  };\n  /**\n   * Confirm callbacks\n   */\n  @Output() confirm = new EventEmitter<boolean | { confirmed: boolean; additional: { [key: string]: boolean } }>();\n  private additionalValues: { [key: string]: boolean } = {};\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  /**\n   * dialog headline\n   */\n  private _headline: string;\n\n  get headline(): string {\n    return this._headline;\n  }\n\n  @Input() set headline(value: string) {\n    this._headline = value;\n    this.cdr.markForCheck();\n  }\n\n  @Input() headlineIcon?: string;\n\n  @Input() iconColor?: string;\n\n  @Input() set confirmType(value: SingConfirmationDialogType) {\n    switch (value) {\n      case SingConfirmationDialogType.WarningInfo:\n        this.headlineIcon = 'mgmt-warning-circle confirm-warning-info-color';\n        break;\n      case SingConfirmationDialogType.Info:\n        this.headlineIcon = 'mgmt-info-outline confirm-info-color';\n        break;\n      case SingConfirmationDialogType.Warning:\n        this.headlineIcon = 'mgmt-task-status-failed confirm-warning-color';\n        break;\n      case SingConfirmationDialogType.Success:\n        this.headlineIcon = 'mgmt-checked-circle-outline confirm-success-color';\n        break;\n      default:\n    }\n  }\n\n  confirmDialog(isConfirmed: boolean) {\n    const confirmValue = !this._checkboxesConfig\n      ? isConfirmed\n      : { confirmed: isConfirmed, additional: this.additionalValues };\n    this.confirm.emit(confirmValue);\n  }\n\n  changeValue($event: any, key: string) {\n    this.additionalValues[key] = $event.checked;\n    if (this.enableConfirmValidation) {\n      this.buttonOptions.saveButton.disabled = this.enableConfirmValidation();\n    }\n  }\n}\n","<sing-dynamic-dialog [headlineIcon]='headlineIcon' [headline]='headline' [iconColor]='iconColor'>\n  <div [attr.data-mgmtAutomationId]=\"'confirmation_dialog'\" body class='confirmation-content'>\n    <div class='main-text'>{{ text }}</div>\n    <div *ngIf='checkboxesConfig' class='additional-data'>\n      <mat-checkbox\n        (change)='changeValue($event, checkbox.key)'\n        *ngFor='let checkbox of checkboxesConfig'\n        [checked]='checkbox.isSelected'\n        [attr.data-mgmtAutomationId]=\"'confirmation_extra_data_' + checkbox.key\"\n      >{{ checkbox.text }}</mat-checkbox\n      >\n    </div>\n  </div>\n</sing-dynamic-dialog>\n<sing-dialog-footer [attr.data-mgmtAutomationId]=\"'confirmation_dialog_footer'\">\n\n  <!--Cancel-->\n  <button\n    (click)='confirmDialog(false)'\n    *ngIf='buttonOptions?.cancelButton?.show'\n    class='s1-btn-large-primary-link'\n    data-mgmtAutomationId='CancelButton'\n    mat-dialog-close='Cancel'\n\n    type='button'>\n    {{buttonOptions?.cancelButton?.name}}\n  </button>\n\n  <!--Save-->\n  <button\n    (click)='confirmDialog(true)'\n    *ngIf='buttonOptions?.saveButton?.show'\n    class='s1-btn-large-primary-full'\n    data-mgmtAutomationId='SaveButton'\n    [disabled]='buttonOptions?.saveButton?.disabled'\n    right\n    type='submit'>\n    {{buttonOptions?.saveButton?.name}}\n  </button>\n\n\n</sing-dialog-footer>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\nimport { SingConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\nimport { SingDynamicDialogModule } from '../dynamic-dialog/dynamic-dialog.module';\nimport { SingDialogFooterModule } from '../dialog-footer/dialog-footer.module';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\n\n@NgModule({\n  imports: [CommonModule, SingDynamicDialogModule, MatCheckboxModule, SingDialogFooterModule, MatDialogModule],\n  declarations: [SingConfirmationDialogComponent],\n  exports: [SingConfirmationDialogComponent],\n})\nexport class SingConfirmationDialogModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './confirmation-dialog.module';\nexport * from './confirmation-dialog/confirmation-dialog.component';\nexport * from './confirmation-dialog/ConfirmTypeEnum';\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { merge } from 'lodash';\nimport { FormFooterButtonsOptions } from '../model/form-footer-buttons-options.interface';\n\n@Component({\n  selector: 'sing-form-footer-buttons',\n  templateUrl: './form-footer-buttons.component.html',\n  styleUrls: ['./form-footer-buttons.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingFormFooterButtonsComponent {\n  /**\n   * Output event to indicate if user confirm or cancel\n   * true if confirm false otherwise\n   */\n  @Output() confirm = new EventEmitter<boolean>();\n\n  _formFooterButtonsOptions: FormFooterButtonsOptions = {\n    saveButton: {\n      name: 'Save',\n      show: true,\n    },\n    cancelButton: {\n      name: 'Cancel',\n      show: true,\n    },\n  };\n\n  get formFooterButtonsOptions() {\n    return this._formFooterButtonsOptions;\n  }\n\n  @Input()\n  set formFooterButtonsOptions(formFooterButtonsOptions: Partial<FormFooterButtonsOptions>) {\n    this._formFooterButtonsOptions = merge(this._formFooterButtonsOptions, formFooterButtonsOptions);\n  }\n}\n","<div mat-dialog-actions>\n  <!--Save-->\n  <button\n    (click)='confirm.emit(true)'\n    *ngIf='formFooterButtonsOptions?.saveButton?.show'\n    class='save-button s1-btn-large-primary-full'\n    data-mgmtAutomationId='SaveButton'\n\n    type='submit'>\n    {{formFooterButtonsOptions?.saveButton?.name}}\n  </button>\n\n  <!--Cancel-->\n  <button\n    (click)='confirm.emit(false)'\n    *ngIf='formFooterButtonsOptions?.cancelButton?.show'\n    class='button-link s1-btn-large-primary-link'\n    data-mgmtAutomationId='CancelButton'\n    mat-dialog-close='Cancel'\n\n    type='button'>\n    {{formFooterButtonsOptions?.cancelButton?.name}}\n  </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingFormFooterButtonsComponent } from './form-footer-buttons/form-footer-buttons.component';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\n\n@NgModule({\n  imports: [CommonModule, MatDialogModule],\n  declarations: [SingFormFooterButtonsComponent],\n  exports: [SingFormFooterButtonsComponent],\n})\nexport class SingFormFooterButtonsModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './form-footer-buttons.module';\nexport * from './form-footer-buttons/form-footer-buttons.component';\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { cloneDeep } from 'lodash';\nimport { SideNavListItem } from '../models/side-list-nav-item.interface';\nimport { SideListItem } from '../../../layout/aside-list/models/side-list-item.interface';\n\n@Component({\n  selector: 'sing-sub-page-navigation',\n  templateUrl: './sub-page-navigation.component.html',\n  styleUrls: ['./sub-page-navigation.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingSubPageNavigationComponent {\n  @Input() items: SideNavListItem[];\n  @Input() navListContainerClass = '';\n\n  @Output() itemSelectionChanged = new EventEmitter<SideNavListItem>();\n\n  constructor(private router: Router) {}\n\n  itemClicked(selectedItem: SideListItem) {\n    const _selectedItem = cloneDeep(selectedItem as SideNavListItem);\n    this.itemSelectionChanged.emit(_selectedItem);\n    this.router.navigate([_selectedItem.url]);\n  }\n}\n","<div class=\"container\">\n  <!--Side Nav-->\n  <sing-aside-list\n    class=\"default {{navListContainerClass}}\"\n    [items]=\"items\"\n    (itemSelectionChanged)=\"itemClicked($event)\"\n  ></sing-aside-list>\n\n  <!--Display Selected Feature-->\n  <div class=\"table-container\">\n    <router-outlet></router-outlet>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingSubPageNavigationComponent } from './sub-page-navigation/sub-page-navigation.component';\nimport { RouterModule } from '@angular/router';\nimport { SingAsideListModule } from '../../layout/aside-list/aside-list.module';\n\n@NgModule({\n  imports: [CommonModule, RouterModule, SingAsideListModule],\n  declarations: [SingSubPageNavigationComponent],\n  exports: [SingSubPageNavigationComponent]\n})\nexport class SingSubPageNavigationModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './sub-page-navigation.module';\nexport * from './sub-page-navigation/sub-page-navigation.component';\nexport * from './models/side-list-nav-item.interface';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './safe-html.pipe';\nexport * from './safe-html.module';\n\n","import { Injectable } from '@angular/core';\nimport { MatLegacyDialog as MatDialog, MatLegacyDialogConfig as MatDialogConfig, MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { cloneDeep } from 'lodash';\n\n/***\n * This service opens a dialog with a component using the pre-defined configurations.\n */\n@Injectable()\nexport class SingDialogService {\n  readonly standardDialogConfig: MatDialogConfig = {\n    width: '646px',\n    maxHeight: '90vh',\n    disableClose: false,\n    position: { top: '60px' },\n  };\n\n  constructor(private dialog: MatDialog) {}\n\n  /**\n   * Use the open method to use the default configuration (standardDialogConfig) or specify one of the predefined settings\n   */\n  public open<T, D = any>(\n    componentOrTemplateRef: ComponentType<T>,\n    config: MatDialogConfig<D> = this.standardDialogConfig\n  ): MatDialogRef<T> {\n    const cloneConfig = cloneDeep({ ...this.standardDialogConfig, ...config });\n    cloneConfig.panelClass = this.createPanelClass(cloneConfig.panelClass);\n    return this.dialog.open(componentOrTemplateRef, cloneConfig);\n  }\n\n  /**\n   * create panel class.\n   * we want to add the 'dialog-without-padding' css class\n   * there are couple of options:\n   * - we get panelClass as array\n   * - we get panelClass as string\n   * - panelClass not pass\n   *\n   * in each case we will add the 'dialog-without-padding' css class\n   * @private\n   */\n  private createPanelClass(panelClass: string | string[]): string[] {\n    const PANEL_CLASS = 'dialog-without-padding';\n    let _panelClass: string[];\n    if (Array.isArray(panelClass)) {\n      _panelClass = [...panelClass, PANEL_CLASS];\n    } else if (panelClass?.length) {\n      _panelClass = [panelClass, PANEL_CLASS];\n    } else {\n      _panelClass = [PANEL_CLASS];\n    }\n    return _panelClass;\n  }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-dialog-body',\n  templateUrl: './dialog-body.component.html',\n  styleUrls: ['./dialog-body.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogBodyComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\nimport { SingDialogService } from './services/dialog.service';\nimport { DialogBodyComponent } from './components/dialog-body/dialog-body.component';\n\n@NgModule({\n  imports: [CommonModule, MatDialogModule],\n  declarations: [DialogBodyComponent],\n  exports: [DialogBodyComponent],\n  providers: [SingDialogService],\n})\nexport class SingDialogModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './dialog.module';\nexport * from './services/dialog.service';\nexport * from './components/dialog-body/dialog-body.component';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './date-time.util';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-form-info',\n  templateUrl: './form-info.component.html',\n  styleUrls: ['./form-info.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingFormInfoComponent {}\n","<ng-content select=\"sing-form-info-icon\"></ng-content>\n<ng-content select=\"sing-form-info-body\"></ng-content>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-form-info-icon',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./form-info-icon.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormInfoIconComponent {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-form-info-body',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./form-info-body.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormInfoBodyComponent {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingFormInfoComponent } from './form-info/form-info.component';\nimport { FormInfoIconComponent } from './components-export/form-info-icon/form-info-icon.component';\nimport { FormInfoBodyComponent } from './components-export/form-info-body/form-info-body.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingFormInfoComponent, FormInfoIconComponent, FormInfoBodyComponent],\n  exports: [SingFormInfoComponent, FormInfoIconComponent, FormInfoBodyComponent],\n})\nexport class SingFormInfoModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './form-info.module';\nexport * from './form-info/form-info.component';\nexport * from './components-export/form-info-icon/form-info-icon.component';\nexport * from './components-export/form-info-body/form-info-body.component';\n","import { ButtonSkinOptions } from '../models/button-skin-option.interface';\n\nexport enum ButtonSkinOptionsEnum {\n  primaryLarge = 'primaryLarge',\n  secondaryLarge = 'secondaryLarge',\n  primarySmall = 'primarySmall',\n  secondarySmall = 'secondarySmall',\n}\n\nexport const ButtonSkins: ButtonSkinOptions = {\n  [ButtonSkinOptionsEnum.primaryLarge]: {\n    selected: 's1-btn-large-primary-full',\n    unselected: 's1-btn-large-primary-outline',\n    selectedIcon: 's1-icon-btn-large-primary-full',\n    unselectedIcon: 's1-icon-btn-large-primary-outline',\n  },\n  [ButtonSkinOptionsEnum.secondaryLarge]: {\n    selected: 's1-btn-large-secondary-full',\n    unselected: 's1-btn-large-secondary-outline',\n    selectedIcon: 's1-icon-btn-large-secondary-full',\n    unselectedIcon: 's1-icon-btn-large-secondary-outline',\n  },\n  [ButtonSkinOptionsEnum.primarySmall]: {\n    selected: 's1-btn-small-primary-full',\n    unselected: 's1-btn-small-primary-outline',\n    selectedIcon: 's1-icon-btn-small-primary-full',\n    unselectedIcon: 's1-icon-btn-small-primary-outline',\n  },\n  [ButtonSkinOptionsEnum.secondarySmall]: {\n    selected: 's1-btn-small-secondary-full',\n    unselected: 's1-btn-small-secondary-outline',\n    selectedIcon: 's1-icon-btn-small-secondary-full',\n    unselectedIcon: 's1-icon-btn-small-secondary-outline',\n  },\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Input,\n  Output,\n} from '@angular/core';\nimport { MultiSelectButtonItem } from '../models/multi-select-button-item.interface';\nimport { ButtonSkinOptionsEnum, ButtonSkins } from '../enums/skinOptions.enum';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cloneDeep } from 'lodash';\n\n@Component({\n  selector: 'sing-multi-select-button',\n  templateUrl: './multi-select-button.component.html',\n  styleUrls: ['./multi-select-button.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingMultiSelectButtonComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingMultiSelectButtonComponent implements AfterViewInit, ControlValueAccessor {\n  selectAllClass: string;\n  selectNoneClass: string;\n  isSelectAllSelected = false;\n  isSelectNoneSelected = false;\n  selectAllDisabled = false;\n  multiSelectButtons: MultiSelectButtonItem[];\n\n  private _disabled = false;\n\n  @Input() set buttons(value: MultiSelectButtonItem[]) {\n    this.multiSelectButtons = value;\n    this.syncButtons();\n  }\n\n  @Input()\n  skinOption: ButtonSkinOptionsEnum = ButtonSkinOptionsEnum.primaryLarge;\n\n  @Input()\n  selectAllLabel = 'All';\n\n  @Input()\n  selectAllPosition: 'left' | 'right' = 'right';\n\n  @Input()\n  selectNoneLabel = 'None';\n\n  @Input()\n  noneButton = false;\n\n  @Input()\n  automationId: string;\n\n  @Output()\n  readonly selectionChange = new EventEmitter<MultiSelectButtonItem[]>();\n\n  // Function to call when the time changes. Part of the ValueAccessor (reactive form).\n  propagateChange = (_: MultiSelectButtonItem[]) => {};\n  // Function to call when the input is touched. Part of the ValueAccessor (reactive form).\n  onTouched = () => {};\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(value: boolean) {\n    this._disabled = value;\n    this.syncButtons();\n  }\n\n  ngAfterViewInit(): void {\n    this.syncButtons();\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * switching all buttons selection state from selected to un selected and vice versa\n   */\n  public switchAll(): void {\n    this.isSelectAllSelected = !this.isSelectAllSelected;\n\n    if (this.noneButton) {\n      this.isSelectAllSelected = true;\n      this.isSelectNoneSelected = false;\n      this.selectNoneClass = this.setClass(this.isSelectNoneSelected);\n    }\n\n    this.multiSelectButtons\n      .filter((btnItem) => !btnItem.disabled)\n      .map((btn) => (btn.selected = this.isSelectAllSelected));\n    this.selectAllClass = this.setClass(this.isSelectAllSelected);\n    this.selectionChange.emit(this.multiSelectButtons);\n    this.propagateChange(this.multiSelectButtons);\n  }\n\n  /**\n   * set the buttons class related to selection state and button type (icon only or not)\n   * @param isSelected\n   * @param isIconButton\n   */\n  public setClass(isSelected: boolean, isIconButton = false): string {\n    const skin = ButtonSkins[this.skinOption];\n    if (isSelected && !this._disabled) {\n      return isIconButton ? skin.selectedIcon : skin.selected;\n    } else {\n      return isIconButton ? skin.unselectedIcon : skin.unselected;\n    }\n  }\n\n  /**\n   * trigger action on button clicked\n   */\n  public buttonClick(): void {\n    this.syncButtons();\n    this.selectionChange.emit(this.multiSelectButtons);\n    this.propagateChange(this.multiSelectButtons);\n  }\n\n  /**\n   * calculate 'Select All' button's states and class\n   */\n  public syncButtons(): void {\n    if (this.multiSelectButtons) {\n      this.selectAllDisabled = !this.multiSelectButtons.some((btn) => !btn.disabled);\n      this.isSelectAllSelected =\n        !this.selectAllDisabled &&\n        !this.multiSelectButtons.filter((btnItem) => !btnItem.disabled).some((btn) => !btn.selected);\n\n      this.isSelectNoneSelected =\n        !this.multiSelectButtons.filter((btnItem) => !btnItem.disabled).some((btn) => btn.selected);\n      // the setTimeout is for preventing console error 'Expression has changed after it was checked'\n      setTimeout(() => {\n        this.selectAllClass = this.setClass(this.isSelectAllSelected);\n        this.selectNoneClass = this.setClass(this.isSelectNoneSelected);\n        this.cdr.markForCheck();\n      });\n    }\n  }\n\n  /**\n   * view -> model\n   * Part of the ValueAccessor (reactive form)\n   */\n  registerOnChange(fn) {\n    this.propagateChange = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form).\n   * will add class of 'ng-touched' on sing-chips-input element\n   */\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Part of the ValueAccessor (reactive form)\n   */\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cdr.markForCheck();\n  }\n\n  /**\n   * model -> view\n   * Part of the ValueAccessor (reactive form)\n   */\n  writeValue(buttons: MultiSelectButtonItem[]): void {\n    const cloneButtons = Array.isArray(buttons) ? cloneDeep(buttons) : [];\n    this.multiSelectButtons = cloneDeep(cloneButtons);\n  }\n\n  /**\n   * switching all buttons off selection state from selected to un selected\n   */\n  switchAllOff() {\n    this.isSelectAllSelected = false;\n    this.isSelectNoneSelected = true;\n    this.multiSelectButtons\n      .filter((btnItem) => !btnItem.disabled)\n      .map((btn) => (btn.selected = false));\n    this.selectAllClass = this.setClass(false);\n    this.selectNoneClass = this.setClass(true);\n    this.selectionChange.emit(this.multiSelectButtons);\n    this.propagateChange(this.multiSelectButtons);\n  }\n}\n","<div [ngClass]=\"'select-all-align-' + selectAllPosition\" class='container'>\n  <button\n    (click)='switchAll()'\n    [attr.selected]='isSelectAllSelected && !disabled ? true : null'\n    [disabled]='selectAllDisabled || disabled'\n    [ngClass]='selectAllClass'\n    data-mgmtautomationid='multi-select-all'\n  >\n    {{ selectAllLabel }}\n  </button>\n  <div>\n    <button\n      (click)='buttonItem.selected = !buttonItem.selected; buttonClick()'\n      *ngFor='let buttonItem of multiSelectButtons'\n      [attr.data-mgmtautomationid]=\"'multi-select-button-' + buttonItem.automationId\"\n      [attr.selected]='buttonItem.selected && !disabled ? true : null'\n      [disabled]='buttonItem.disabled || disabled'\n      [matTooltipDisabled]='!buttonItem.tooltip'\n      [matTooltip]='buttonItem.tooltip'\n      [ngClass]='setClass(buttonItem.selected, !!buttonItem.iconClass && !buttonItem.label)'\n    >\n      <i *ngIf='!!buttonItem.iconClass' [ngClass]='buttonItem.iconClass'></i>{{ buttonItem.label }}\n    </button>\n  </div>\n  <button\n    *ngIf=\"noneButton\"\n    (click)='switchAllOff()'\n    [attr.selected]='isSelectNoneSelected && !disabled ? true : null'\n    [ngClass]='selectNoneClass'\n    data-mgmtautomationid='multi-select-none'\n  >\n    {{ selectNoneLabel }}\n  </button>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingMultiSelectButtonComponent } from './multi-select-button/multi-select-button.component';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\n\n@NgModule({\n  imports: [CommonModule, MatTooltipModule],\n  declarations: [SingMultiSelectButtonComponent],\n  exports: [SingMultiSelectButtonComponent],\n})\nexport class SingMultiSelectButtonModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './multi-select-button.module';\nexport * from './multi-select-button/multi-select-button.component';\nexport * from './models/multi-select-button-item.interface';\nexport * from './models/button-skin-option.interface';\nexport * from './enums/skinOptions.enum';\n","export enum AlertTypes {\n  info = 'info',\n  warning = 'warning',\n  critical = 'critical',\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const SING_ALERT_CLOSE_ANIMATION = [\n  trigger('singAlertCloseAnimation', [\n    transition(':leave', [\n      animate(\n        '250ms ease-in',\n        style({\n          opacity: '0',\n          transform: 'translateY(-50px)',\n        })\n      ),\n    ]),\n  ]),\n];\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { AlertTypes } from '../enums/alert-types.enum';\nimport { SING_ALERT_CLOSE_ANIMATION } from '../animations/alert-close.animation';\n\n@Component({\n  selector: 'sing-alert',\n  templateUrl: './alert.component.html',\n  styleUrls: ['./alert.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [SING_ALERT_CLOSE_ANIMATION],\n})\nexport class SingAlertComponent {\n  @Input() type = AlertTypes.info;\n  public icons = {\n    [AlertTypes.info]: 'mgmt-alert-info',\n    [AlertTypes.warning]: 'mgmt-alert-warning',\n    [AlertTypes.critical]: 'mgmt-info-outline',\n  };\n  @Output() closeClicked = new EventEmitter<void>();\n  @HostBinding('@singAlertCloseAnimation') closeAnimation;\n}\n","<div class=\"alert-container {{type}}\">\n  <i class=\"icon {{icons[type]}}\" data-mgmtAutomationId=\"alert-type-icon\"></i>\n  <ng-content select=\"sing-alert-content\"></ng-content>\n  <button *ngIf=\"closeClicked?.observed\" class=\"close-button s1-icon-btn-large-secondary\" data-mgmtAutomationId=\"alert-close-button\">\n    <i class=\"mgmt-close-button\" (click)=\"closeClicked.emit()\"></i>\n  </button>\n</div>\n\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-alert-content',\n  template: '<ng-content></ng-content>',\n  styleUrls: ['./alert-content.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingAlertContentComponent {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingAlertComponent } from './alert/alert.component';\nimport { SingAlertContentComponent } from './components/alert-content/alert-content.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [SingAlertComponent, SingAlertContentComponent],\n  exports: [SingAlertComponent, SingAlertContentComponent],\n})\nexport class SingAlertModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './alert.module';\nexport * from './alert/alert.component';\nexport * from './components/alert-content/alert-content.component';\nexport * from './enums/alert-types.enum';\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { cloneDeep } from 'lodash';\n\n@Component({\n  selector: 'sing-infinite-scroll[items][totalItems][itemTemplateRef][itemsTemplateSizeInPx]',\n  templateUrl: './infinite-scroll.component.html',\n  styleUrls: ['./infinite-scroll.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingInfiniteScrollComponent implements OnChanges {\n  /**\n   * Array of items to loop on\n   */\n  @Input() items: any[];\n  /**\n   * Total amount of list that exists in server\n   */\n  @Input() totalItems: number;\n  /**\n   * Template that will be repeated in the list\n   */\n  @Input() itemTemplateRef: TemplateRef<any>;\n  /**\n   * Size of the template item in pixels\n   */\n  @Input() itemsTemplateSizeInPx: number;\n  /**\n   * Number of items in each bulk/page\n   */\n  @Input() numOfItemsPerPage = 5;\n  /**\n   * Track by unique property for for loop performance\n   */\n  @Input() trackByIdProp: string;\n  /**\n   * Reset the component when this object reference is changed\n   */\n  @Input() reset: number;\n  /**\n   * Mark new items adds new css class to new items and if the user has scrolled it pops a notification\n   */\n  @Input() markNewItemsByIds: { [key: string]: boolean } = {};\n  /**\n   * New items bubble text\n   */\n  @Input() newItemsText = 'New Items';\n  /**\n   * Emit event to get more items when user scrolled near bottom\n   */\n  @Output() getMoreItems = new EventEmitter<{ skip: number; take: number }>();\n\n  /**\n   * emmit event to parent when new items are in viewport (visible in scroll)\n   */\n  @Output() clearMarkNewItemsByIds = new EventEmitter<{ [key: string]: boolean }>();\n\n  @ViewChild(CdkVirtualScrollViewport, { static: false }) virtualScroll: CdkVirtualScrollViewport;\n\n  public showNewEventsToast = false;\n  public isInScrollMode: boolean;\n  private skip = 0;\n  private pageNumber = 1;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.reset && changes.reset.currentValue) {\n      this.restComponent();\n    }\n\n    if (changes.markNewItemsByIds && changes.markNewItemsByIds.currentValue) {\n      this.showNewEventsToastIfUserScrolled();\n    }\n    // clone the items object so each item referance will change and cheack for changes\n    if (changes.items && changes.items.currentValue) {\n      this.items = cloneDeep(this.items);\n    }\n  }\n\n  /**\n   * ng for track by function uses the identifier from the input\n   */\n  public trackBy(index, event: any): any {\n    return event[this.trackByIdProp] || index;\n  }\n\n  /**\n   * scroll to start of the list\n   * @param isSmooth\n   */\n  public scrollToStart(isSmooth?: boolean): void {\n    if (this.virtualScroll) {\n      const scrollSmooth = isSmooth ? 'smooth' : 'auto';\n      this.virtualScroll.scrollToIndex(0, scrollSmooth);\n      this.toggleNewEventsToast(false);\n    }\n  }\n\n  /**\n   * on scroll index changed\n   * @param indexOfTheFirstVisibleItemInPortView\n   */\n  public scrolledIndexChange(indexOfTheFirstVisibleItemInPortView: number): void {\n    this.checkIfWeNeedToFetchMoreEvents();\n    this.setScrollMode(indexOfTheFirstVisibleItemInPortView);\n    this.closeNewEventsToastIfTheUserNotScrolling(indexOfTheFirstVisibleItemInPortView);\n    this.removeNewItemsIndicationIfNeeded(indexOfTheFirstVisibleItemInPortView);\n  }\n\n  /**\n   * fetch more item in case that remaining items to scroll is less then two times size of number of items in view port\n   */\n  private checkIfWeNeedToFetchMoreEvents(): void {\n    const itemsInViewPort = this.virtualScroll.getRenderedRange().end - this.virtualScroll.getRenderedRange().start;\n    const totalItemsFromServer = this.skip + this.numOfItemsPerPage;\n    const remainingItemsToScroll = totalItemsFromServer - this.virtualScroll.getRenderedRange().end;\n    if (remainingItemsToScroll < itemsInViewPort * 2 && totalItemsFromServer < this.totalItems) {\n      this.pageNumber++;\n      this.onPageChange();\n    }\n  }\n\n  /**\n   * set is scroll mode to true/false indicate is the user is currently scrolling\n   * @param indexOfTheFirstVisibleItemInPortView\n   */\n  private setScrollMode(indexOfTheFirstVisibleItemInPortView: number): void {\n    // if the index of the scrolled item is bigger then 0 meaning the user in scroll mode\n    this.isInScrollMode = indexOfTheFirstVisibleItemInPortView > 0;\n  }\n\n  /**\n   * if the user scroll top (indexOfTheFirstVisibleItemInPortView === 0)\n   * close the new events toast\n   */\n  private closeNewEventsToastIfTheUserNotScrolling(indexOfTheFirstVisibleItemInPortView: number): void {\n    if (indexOfTheFirstVisibleItemInPortView === 0) {\n      // if the user not scrolling close the new event toast\n      this.toggleNewEventsToast(false);\n    }\n  }\n\n  /**\n   * if the user scrolled top remove new items indication after 5 seconds to let the animation finish\n   */\n  private removeNewItemsIndicationIfNeeded(indexOfTheFirstVisibleItemInPortView: number): void {\n    if (\n      indexOfTheFirstVisibleItemInPortView === 0 &&\n      this.markNewItemsByIds &&\n      Object.keys(this.markNewItemsByIds).length\n    ) {\n      setTimeout(() => {\n        if (this.clearMarkNewItemsByIds) {\n          this.clearMarkNewItemsByIds.emit(this.markNewItemsByIds);\n        }\n      }, 5000);\n    }\n  }\n\n  /**\n   * check if the component input 'markNewItemsByIds' has new items to mark as new\n   * and if the user has scrolled and if so pop the notification of new items\n   */\n  private showNewEventsToastIfUserScrolled(): void {\n    if (this.isInScrollMode && this.markNewItemsByIds && Object.keys(this.markNewItemsByIds).length) {\n      this.toggleNewEventsToast(true);\n    }\n  }\n\n  /**\n   * add bubble indicating new items\n   */\n  private toggleNewEventsToast(isVisible: boolean): void {\n    this.showNewEventsToast = isVisible;\n  }\n\n  /**\n   * reset component setting page number to and the skip and scrolling to start\n   */\n  private restComponent(): void {\n    this.pageNumber = 1;\n    this.calcPaginationSkip();\n    this.scrollToStart(false);\n  }\n\n  /**\n   * when page changes after scroll we calculate the skip for the new page\n   * and trigger the get more event to get the next items for the list\n   */\n  private onPageChange(): void {\n    this.calcPaginationSkip();\n    this.getMoreItems.emit({ skip: this.skip, take: this.numOfItemsPerPage });\n  }\n\n  /**\n   * calculate the new skip for the selected page\n   */\n  private calcPaginationSkip(): void {\n    this.skip = (this.pageNumber - 1) * this.numOfItemsPerPage;\n  }\n}\n","<div class=\"scroll-container\" *ngIf=\"items?.length > 0\">\n  <!--- new events toast --->\n  <div class=\"time-line-btn timeline-toast\" [class.toast-show]=\"showNewEventsToast\" (click)=\"scrollToStart(true)\">\n    <i class=\"mgmt-arrow_ic timeline-scroll-top-icon\"></i>\n    {{ newItemsText }}\n  </div>\n\n  <!--- scroll up floating button --->\n  <i\n    class=\"time-line-btn timeline-scroll-top timeline-scroll-top-icon mgmt-arrow_ic\"\n    *ngIf=\"isInScrollMode\"\n    (click)=\"scrollToStart(true)\"\n  ></i>\n  <!--- events list infinite scroll --->\n  <cdk-virtual-scroll-viewport [itemSize]=\"itemsTemplateSizeInPx\" (scrolledIndexChange)=\"scrolledIndexChange($event)\">\n    <div\n      *cdkVirtualFor=\"\n        let item of items;\n        trackBy: trackBy.bind(this);\n        last as isLast;\n        index as index;\n        templateCacheSize: 0\n      \"\n      class=\"scroll-item\"\n      [class.new-event]=\"markNewItemsByIds && markNewItemsByIds[item[trackByIdProp]]\"\n    >\n      <ng-container *ngTemplateOutlet=\"itemTemplateRef; context: { item: item, isLast: isLast, index: index }\">\n      </ng-container>\n    </div>\n  </cdk-virtual-scroll-viewport>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInfiniteScrollComponent } from './infinite-scroll/infinite-scroll.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\n@NgModule({\n  imports: [CommonModule, ScrollingModule],\n  declarations: [SingInfiniteScrollComponent],\n  exports: [SingInfiniteScrollComponent],\n})\nexport class SingInfiniteScrollModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './infinite-scroll.module';\nexport * from './infinite-scroll/infinite-scroll.component';\n","import { DropDownItem } from '../../../../../form-controls/drop-down/models/drop-down-item.interface';\n\nexport type TimeTitle =\n  | 'Recent'\n  | 'Today'\n  | 'Last 48 Hours'\n  | 'This Month'\n  | 'Last 30 Days'\n  | 'Last 7 Days'\n  | 'Last 24 Hours'\n  | 'Last 2 Months'\n  | 'Last 3 Months'\n  | 'Last Year'\n  | 'Last Hour'\n  | 'All'\n  | 'Custom';\n\nexport const TIME_OPTIONS: DropDownItem[] = [\n  {\n    title: 'Recent',\n    value: 'Recent',\n  },\n  {\n    title: 'Last 24 Hours',\n    value: 'Last24Hours'\n  },\n  {\n    title: 'Today',\n    value: 'Today'\n  },\n  {\n    title: 'Last 48 Hours',\n    value: 'Last48Hours'\n  },\n  {\n    title: 'Last 7 Days',\n    value: 'Last7Days'\n  },\n  {\n    title: 'Last 30 Days',\n    value: 'Last30Days'\n  },\n  {\n    title: 'This Month',\n    value: 'ThisMonth'\n  },\n  {\n    title: 'Last 2 Months',\n    value: 'Last2Months'\n  },\n  {\n    title: 'Last 3 Months',\n    value: 'Last3Months'\n  },\n  {\n    title: 'Last Year',\n    value: 'LastYear'\n  },\n  {\n    title: 'Custom Range',\n    value: 'CustomRange'\n  }\n];\n\nexport const IOC_TIME_OPTIONS = [\n  {\n    title: 'Last Hour',\n    value: 'LastOneHour'\n  },\n  {\n    title: 'Last 24 Hours',\n    value: 'Last24Hours'\n  },\n  {\n    title: 'Today',\n    value: 'Today'\n  },\n  {\n    title: 'Last 48 Hours',\n    value: 'Last48Hours'\n  },\n  {\n    title: 'Last 7 Days',\n    value: 'Last7Days'\n  },\n  {\n    title: 'Last 30 Days',\n    value: 'Last30Days'\n  },\n  {\n    title: 'This Month',\n    value: 'ThisMonth'\n  },\n  {\n    title: 'Last 2 Months',\n    value: 'Last2Months'\n  },\n  {\n    title: 'Last 3 Months',\n    value: 'Last3Months'\n  },\n  {\n    title: 'Custom Range',\n    value: 'CustomRange'\n  }\n];\n","/***************************************************************************************************************************\n * @description query type\n *    Each query has the type that created it.\n *      PERMANENT: query that is created cannot be deleted\n *      DEFAULT: query once created anyone can delete it or update it\n *      USER_PREFERENCE: query is created as a result of user settings from the server.\n *      URL: query is created as a result of transferring information from url\n *      FILTER - queries that will be present in the filter bar\n *      ONLY_FILTER_COUNT - only filter count use\n *    There is a priority between the different types when, not everyone can override other information. Priorities:\n *      1) DEFAULT\n *      2) PERMANENT\n *      3) URL\n *      4) USER_PREFERENCE\n *      5) FILTER\n ***************************************************************************************************************************/\nexport enum QueryCollectionTypeEnum {\n  PERMANENT = 'PERMANENT',\n  DEFAULT = 'DEFAULT',\n  USER_PREFERENCE = 'USER_PREFERENCE',\n  URL = 'URL',\n  FILTER = 'FILTER',\n  FREE_TEXT_FILTER = 'FREE_TEXT_FILTER',\n  ONLY_FILTER_COUNT = 'ONLY_FILTER_COUNT',\n}\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA, MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\n\n@Component({\n  selector: 'sing-filter-change-set-name',\n  templateUrl: './filter-change-set-name.component.html',\n  styleUrls: ['./filter-change-set-name.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FilterChangeSetNameComponent {\n  originalFilterName: string;\n\n  constructor(public dialogRef: MatDialogRef<FilterChangeSetNameComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\n    this.originalFilterName = data.name;\n  }\n}\n","<sing-dialog-header [headerClass]=\"'large-clean-title'\">\n  Change Filter Name\n</sing-dialog-header>\n<div class=\"save-new-set\"\n     (click)=\"$event.stopPropagation();\">\n  <div class=\"second-row\">\n    <sing-input>\n      <input\n        [(ngModel)]=\"data.name\"\n        type=\"text\"\n        class=\"name-input\"\n        singInputAutoFocus>\n    </sing-input>\n    <button\n      [disabled]=\"!data.name?.length || (data.name === originalFilterName)\"\n      class=\"s1-btn-large-primary-full save-button\"\n      [mat-dialog-close]=\"data\"\n      type=\"button\">\n      Save\n    </button>\n  </div>\n</div>\n","export enum FilterMessageEnum {\n  FETCH_FILTER_COUNT,\n  SET_ADDITIONAL_PARAMETERS,\n  FREE_TEXT_BUTTON_CLICK,\n}\n","export enum ActionStatus {\n  NONE = 'NONE',\n  IN_PROGRESS = 'IN_PROGRESS',\n  DONE = 'DONE',\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { FilterPanelEventType } from '../enums/filter-panel-event.enum';\nimport { Subject } from 'rxjs';\n\n/**\n * @description - Used to emit events inside the filter component.\n *              Each filter panel component instance has its own instance of this service.\n *              Thus, events won't be shared between the component instances.\n */\n@Injectable()\nexport class FilterPanelEventsService implements OnDestroy {\n  private _eventMap = new Map<FilterPanelEventType, Subject<unknown>>();\n\n  ngOnDestroy() {\n    // complete every subject in the map\n    this._eventMap.forEach((value) => {\n      value.complete();\n    });\n    delete this._eventMap;\n  }\n\n  /**\n   * @description return the callback for the event\n   * @param eventType\n   * @private\n   */\n  private _getEvent<T>(eventType: FilterPanelEventType): Subject<T> {\n    return this._eventMap.get(eventType) as Subject<T>;\n  }\n\n  /**\n   * @description save a new event listener\n   * @param eventType\n   * @param obs\n   * @private\n   */\n  private _setCallback<T>(eventType: FilterPanelEventType, obs: Subject<T>): void {\n    this._eventMap.set(eventType, obs as Subject<unknown>);\n  }\n\n  /**\n   * @description get an event listener\n   * @param eventType\n   */\n  onEvent<T>(eventType: FilterPanelEventType): Subject<T> {\n    // if an event subject exists return the event\n    if (this._getEvent(eventType)) {\n      return this._getEvent(eventType);\n    }\n    const subject = new Subject<T>();\n    this._setCallback(eventType, subject);\n    return subject;\n  }\n\n  /**\n   * @description emit an event\n   * @param eventType\n   * @param eventData\n   */\n  emitEvent<T>(eventType: FilterPanelEventType, eventData?: T | null): void {\n    return this._getEvent<T>(eventType).next(eventData);\n  }\n}\n","export enum FilterPanelEventType {\n  freeTextButtonClick = 'freeTextButtonClick',\n}\n","import { trigger, animate, transition, style, state } from '@angular/animations';\n\nexport const popOverState = trigger('popOverState', [\n  state('show', style({ height: '{{ showHeight }}' }), { params: { showHeight: 200 } }),\n  state(\n    'hide',\n    style({\n      height: 0,\n      'overflow-y': 'hidden',\n      'box-shadow': 'none',\n      border: 'none',\n    })\n  ),\n  transition('show => hide', animate('200ms ease-out')),\n  transition('hide => show', animate('200ms ease-in')),\n]);\n","import { SingFilterMultiSort } from '../models';\n\nexport const FILTER_COLUMN_DEFAULT_SORT: SingFilterMultiSort = {\n  sortOrder: 'desc',\n  sortByProperty: 'count',\n};\n","import { Observable } from 'rxjs';\nimport { SingFilterPreferences } from '../models/filter-preferences.interface';\n\nexport abstract class FilterPreferencesProvider {\n  getFilterPreferences: (filterComponentId: string) => Observable<SingFilterPreferences | null>;\n  updateFilterPreferences: (filterComponentId: string, filterPreferences: SingFilterPreferences) => void;\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { FilterPreferencesProvider } from '../providers/filter-preferences.provider';\nimport { combineLatest, distinctUntilChanged, Observable, of, ReplaySubject, shareReplay, switchMap } from 'rxjs';\nimport { SingFilterMultiSort, SingFilterPreferences } from '../models';\nimport { map, startWith, take } from 'rxjs/operators';\nimport { FILTER_COLUMN_DEFAULT_SORT } from '../consts/filter-column-default-sort';\n\nconst DEFAULT_FILTER_PREFERENCES: SingFilterPreferences = {\n  filterKeySortMap: {},\n};\n\n@Injectable()\nexport class FilterPreferencesService {\n  private filterPreferencesObservable: Observable<SingFilterPreferences>;\n  private filterComponentId = new ReplaySubject<string>(1);\n  /**\n   * @param filterPreferencesProvider - will handle the filter preferences data.\n   */\n  constructor(@Optional() private filterPreferencesProvider: FilterPreferencesProvider) {}\n\n  set componentId(componentId: string) {\n    this.filterComponentId.next(componentId);\n  }\n\n  private getFilterPreferencesFromProvider() {\n    if (!!this.filterPreferencesProvider) {\n      return this.filterComponentId.pipe(\n        switchMap((componentId) => this.filterPreferencesProvider.getFilterPreferences(componentId)),\n        /**\n         * This is needed in case the component doesn't have an id\n         */\n        startWith(DEFAULT_FILTER_PREFERENCES)\n      );\n    }\n    return of(DEFAULT_FILTER_PREFERENCES);\n  }\n  /**\n   * @description will return the observable and store it locally to be able to modify the current object.\n   * @private\n   */\n  private get filterPreferences$(): Observable<SingFilterPreferences> {\n    if (!this.filterPreferencesObservable) {\n      this.filterPreferencesObservable = this.getFilterPreferencesFromProvider().pipe(\n        map((preferences) => preferences || DEFAULT_FILTER_PREFERENCES),\n        shareReplay(1)\n      );\n    }\n    return this.filterPreferencesObservable;\n  }\n\n  getFilterPreferences(): Observable<SingFilterPreferences> {\n    return this.filterPreferences$;\n  }\n\n  /**\n   * @description will update the specific filter sort preferences.\n   * @param filterKey - the filter to update\n   * @param filterMultiSort - the sort preference\n   */\n  updateFilterPreferencesSortMapForSpecificFilter(filterKey: string, filterMultiSort: SingFilterMultiSort) {\n    this.updateFilterPreferences({ filterKeySortMap: { [filterKey]: filterMultiSort } });\n  }\n\n  /**\n   * @description Update the filter preference by combining the previous object with the new partial one.\n   * @param filterPreferences\n   */\n  updateFilterPreferences(filterPreferences: Partial<SingFilterPreferences>): void {\n    combineLatest([this.getFilterPreferences(), this.filterComponentId])\n      .pipe(take(1))\n      .subscribe(([savedFilterPreferences, componentId]) => {\n        this.filterPreferencesProvider?.updateFilterPreferences(\n          componentId,\n          this.combineFilterPreferences(savedFilterPreferences, filterPreferences)\n        );\n      });\n  }\n\n  private combineFilterPreferences(\n    savedPreferences: SingFilterPreferences,\n    preferencesChange: Partial<SingFilterPreferences>\n  ): SingFilterPreferences {\n    return {\n      filterKeySortMap: { ...savedPreferences.filterKeySortMap, ...preferencesChange.filterKeySortMap },\n    };\n  }\n\n  getSortPreferencesByFilter(filterKey: string): Observable<SingFilterMultiSort> {\n    return this.filterPreferences$.pipe(\n      map(({ filterKeySortMap }) => filterKeySortMap?.[filterKey] ?? FILTER_COLUMN_DEFAULT_SORT),\n      distinctUntilChanged()\n    );\n  }\n}\n","export const FREE_TEXT_AUTOCOMPLETE_CONTAINER_CLASS = 'free_text_autocomplete';\n","export enum FilterItemType {\n  Radio = 'RadioSelect',\n  Multi = 'MultiSelect',\n  Custom = 'custom',\n  Range = 'range',\n  MinMax = 'min_max',\n}\n","export enum FilterItemOperator {\n  EQULAS,\n  NOT_EQUALS,\n}\n","export const NOT_FILTER_SUFFIX = 'Nin';\n","/**\n * A helper function to convert csv text to array.\n * Needed to help parse url params - in free text filters\n * @param {string} text - the csv text\n * @returns {string[]} - the array of values\n */\nimport { cloneDeep } from 'lodash';\n\nexport function csvToArray(text: string): string[] {\n  let p = '',\n    row = [''],\n    i = 0,\n    r = 0,\n    s = !0,\n    l;\n  const ret = [row];\n  for (l of text) {\n    if ('\"' === l) {\n      if (s && l === p) row[i] += l;\n      s = !s;\n    } else if (',' === l && s) l = row[++i] = '';\n    else if ('\\n' === l && s) {\n      if ('\\r' === p) row[i] = row[i].slice(0, -1);\n      row = ret[++r] = [(l = '')];\n      i = 0;\n    } else row[i] += l;\n    p = l;\n  }\n  return ret[0];\n}\n\n/**\n * A helper function to convert array of strings to csv string.\n * Needed to send free text filters containing comma\n * @param {string[]} row - the array of strings.\n * @returns {string} - the output CSV string\n */\nexport function arrayToCSV(row: string[]): string {\n  const rowItems = [];\n  for (const rowItem of row) {\n    rowItems.push(itemToCSV(rowItem));\n  }\n  return rowItems.join(',');\n}\n\nexport function itemToCSV(str: string): string {\n  return '\"' + str.replace(/\"/g, '\"\"') + '\"';\n}\n\nexport const COMMA_REPLACEMENT = '@@@';\nexport const APOSTROPHE_REPLACEMENT = '^^^';\n\n/**\n * replace apostrophe with ^^^ to avoid collision with the array functionality\n * then when displaying or sending to server we replace it back\n * ex: some' value => some^^^ value\n */\nexport function replaceApostropheIfNeeded(str: string): string {\n  // eslint-disable-next-line quotes\n  return str?.includes?.(`'`) ? `${str.replace(/'/g, APOSTROPHE_REPLACEMENT)}` : str;\n}\n\n/**\n * get the apostrophe instead of the apostrophe replacement ^^^\n * to display or to send to server it without ^^^\n * ex: some^^^ value => some' value\n */\nexport function removeApostropheReplacementIfNeeded(str: string): string {\n  // eslint-disable-next-line quotes\n  return str?.includes?.(APOSTROPHE_REPLACEMENT) ? str?.split(APOSTROPHE_REPLACEMENT).join(`'`) : str;\n}\n\n/**\n * replace comma with @@@ to avoid collision with the array functionality\n * then when displaying or sending to server we replace it back\n * ex: some, value => some@@@ value\n */\nexport function replaceCommaIfNeeded(str: string): string {\n  return str?.includes?.(',') ? `${str.replace(/,/g, COMMA_REPLACEMENT)}` : str;\n}\n\n/**\n * get the comma instead of the comma replacement @@@\n * mainly to display it without @@@\n * ex: some@@@ value => some, value\n */\nexport function removeCommaReplacementIfNeeded(str: string): string {\n  return str?.includes?.(COMMA_REPLACEMENT) ? str?.split(COMMA_REPLACEMENT).join(',') : str;\n}\n\n/**\n * replace the @@@ with comma and surround it with quotes to send to server\n * ex: some@@@ value => \"some, value\"\n */\nexport function surroundCommaWithQuotesIfContainsComma(str: string): string {\n  return str?.includes?.(COMMA_REPLACEMENT) ? `\"${str?.split(COMMA_REPLACEMENT).join(',')}\"` : str;\n}\n\n/**\n * here we are replacing back the comma replacement @@@ to comma\n * doing it by getting the array then looping each value and replacing the comma also surround it with double quotes\n * ex: some@@@ value, val1, val2 => \"some, value\", val1, val2\n */\nexport function surroundCommaWithQuotesMultiple(str: string): string {\n  if (typeof str !== 'string' || !str?.split) {\n    return str;\n  }\n  const queryArray = str?.split(',') || [];\n  const valueWithCommasIfNeeded = queryArray.map(surroundCommaWithQuotesIfContainsComma);\n  return valueWithCommasIfNeeded.join(',');\n}\n\n/**\n * here we are replacing back the comma replacement @@@ to comma and the apostrophe replacement ^^^ to '\n */\nexport function unescapeSpecialCharacters(str: string): string {\n  // replace the @@@ to comma first\n  let output = surroundCommaWithQuotesMultiple(str);\n  // replace the ^^^ to apostrophe\n  output = removeApostropheReplacementIfNeeded(output);\n  return output;\n}\n\n/**\n * replace comma for string array\n * if we get from server list with quotes and comma convert it to replacement @@@\n * ex: someVal1, \"some, value\", someVal2 => someVal1, some@@@ value, someVal2\n */\nexport function replaceCommaIfNeededForStringArr(str: string): string {\n  const csvArr = csvToArray(str);\n  return csvArr?.map((val) => replaceCommaIfNeeded(val)).join(',');\n}\n\n/**\n * replace object values with comma replacement if needed\n * ex: { key: '\"some, value\"', otherKey: 'other key' } => { key: 'some@@@ value', otherKey: 'other key' }\n */\nexport function replaceCommaIfNeededForObject(obj: { [key: string]: string }): { [key: string]: string } {\n  const cloneObj = cloneDeep(obj);\n  for (const key of Object.keys(cloneObj)) {\n    // In case we are getting value as object we don't want to replace the commas\n    if (\n      (cloneObj?.[key]?.['value'] && isStringValidJSON(cloneObj?.[key]?.['value'])) ||\n      (cloneObj?.[key] && isStringValidJSON(cloneObj[key]))\n    ) {\n      continue;\n    }\n    if (cloneObj[key]?.includes?.(',')) {\n      const csvArr = csvToArray(cloneObj[key]);\n      cloneObj[key] = csvArr?.map(replaceCommaIfNeeded).join(',') || cloneObj[key];\n    }\n  }\n  return cloneObj;\n}\n\nfunction isStringValidJSON(str) {\n  try {\n    return typeof JSON.parse(str) === 'object';\n  } catch (e) {\n    return false;\n  }\n}\n","import { replaceCommaIfNeeded } from '../../../../modules/data-table/filter-panel/list-components/filter-free-text/utils/csv.utils';\n\nexport class FilterItemValue {\n  count?: number;\n  title: string;\n  key: string;\n  selected: boolean;\n\n  constructor(filter) {\n    this.count = filter.count;\n    this.title = replaceCommaIfNeeded(filter.title);\n    this.key = replaceCommaIfNeeded(filter.value || filter.key);\n    this.selected = !!filter.selected;\n  }\n}\n","import { FilterItemOperator } from '../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { FilterItemValue } from './filter-item-value.model';\nimport { FilterItemType } from '../enums/filter-item-type.enum';\nimport { FilterItemCategory } from './filter-item.category.interface';\n\nexport class FilterItemModel {\n  key: string;\n  title: string;\n  enableNegation: boolean;\n  disableSorting?: boolean;\n  operator: FilterItemOperator;\n  values: FilterItemValue[];\n  filterType: FilterItemType;\n  metaData?: any;\n\n  constructor(filter: FilterItemCategory) {\n    if (filter.enableNegation) {\n      this.enableNegation = filter.enableNegation;\n      this.operator = FilterItemOperator.EQULAS;\n    }\n    this.disableSorting = filter.disableSorting;\n    this.key = filter.key;\n    this.title = filter.title ? filter.title : '';\n    if (filter.values) {\n      const newValues = [];\n      for (const value of filter.values) {\n        newValues.push(new FilterItemValue(value));\n      }\n      this.values = newValues;\n    }\n    if (filter.metaData) {\n      this.metaData = filter.metaData;\n    }\n    if (filter.filterType) {\n      this.filterType = filter.filterType;\n    } else {\n      if (filter.values.length === 2) {\n        this.filterType = FilterItemType.Radio;\n      } else {\n        this.filterType = FilterItemType.Multi;\n      }\n    }\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { catchError, map } from 'rxjs/operators';\nimport { cloneDeep, forOwn, uniqBy } from 'lodash';\nimport { NEVER, Observable } from 'rxjs';\nimport { ToastNotificationService } from '../../../../popups/toast-notification/services/toast-notification.service';\nimport { QueryCollectionModel } from '../../../../../services/query-collection/models/query-collection.model';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { SingHttpResponse } from '../../../../../services/http-call/models/sing-http-response';\nimport { FilterItemType } from '../../../filter-panel/enums/filter-item-type.enum';\nimport { FilterItemOperator } from '../../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { FreeTextFieldType } from '../../list-components/filter-free-text/models/free-Text-field-type.interface';\nimport { FilterFreeTextAutocompleteItem } from '../../../filter-panel/list-components/filter-free-text/models/filter-free-text-autocomplete-Item.interface';\nimport { FilterFreeTextItem } from '../../list-components/models/filter-free-text-item.model';\nimport { FilterItemValue } from '../../../filter-panel/models/filter-item-value.model';\nimport { FilterAutoCompletePayload } from '../../../filter-panel/list-components/filter-free-text/models/filter-autocomplete-payload.interface';\nimport { FilterApiHandling } from '../../../filter-panel/models/filter-api-handling.model';\nimport { getFormatDate } from '../../../../../utils/date-time/date-time.util';\nimport { NOT_FILTER_SUFFIX } from '../../../../../services/query-collection/consts/query-consts';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { SingHttpCallService } from '../../../../../services/http-call/services/sing-http-call.service';\nimport { SingHttpMethods } from '../../../../../services/http-call/enums/sing-http-methods.enum';\nimport { FilterConfiguration } from '../../models/filter.configuration';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FilterService {\n  private IGNORABLE_QUERY_PARAMS = ['page', 'limit', 'skip', 'sortBy', 'sortOrder'];\n  private NOT_EQUALS_SUFFIX = 'Nin';\n\n  constructor(\n    private httpClient: HttpClient,\n    public toastNotificationService: ToastNotificationService,\n    private httpCallService: SingHttpCallService\n  ) {}\n\n  hasValues(filterItems: FilterItemModel[]): boolean {\n    let values = 0;\n    if (filterItems) {\n      filterItems.forEach((item: FilterItemModel) => {\n        if (item.values.filter((value) => value.selected).length > 0) {\n          values++;\n        }\n      });\n    }\n    return values > 0;\n  }\n\n  getFilters(\n    currentFilterModel: FilterItemModel[],\n    url: string,\n    additionalParams: any,\n    filterToAddBefore: FilterItemModel[],\n    filtersToAddAfter: FilterItemModel[],\n    queryParams: Map<string, QueryCollectionModel>,\n    queryActions: QueryCollectionActions,\n    additionalQueryParameters: Record<any, any>,\n    onFetchFilterCountLazyLoadingMetaData: Record<string, any>,\n    excludeFromRequests: string[]\n  ): Observable<any> {\n    const queries = queryActions.actions.convertQueriesToObject();\n\n    if (excludeFromRequests?.length > 0) {\n      for (const queryKey in queries) {\n        if (excludeFromRequests.indexOf(queryKey) !== -1) {\n          delete queries[queryKey];\n        }\n      }\n    }\n\n    return this.httpCallService\n      .lazyRequest({\n        method: SingHttpMethods.GET,\n        url,\n        allowEmptyQueryParams: true,\n        throwFullError: true,\n        queryParams: { ...queries, ...additionalQueryParameters },\n        ...onFetchFilterCountLazyLoadingMetaData,\n      })\n      .pipe(\n        map((apiData: SingHttpResponse) => {\n          const mappedFilterModel = [\n            ...filterToAddBefore,\n            ...apiData.data.map((filter) => new FilterItemModel(filter)),\n            ...filtersToAddAfter,\n          ];\n          return this.enrichFilterValuesWithSelectedAndCounts(\n            currentFilterModel,\n            mappedFilterModel,\n            additionalParams,\n            queryParams,\n            queries\n          );\n        })\n      );\n  }\n\n  showErrorMessage(error) {\n    this.toastNotificationService.error(error?.error?.errors?.[0]?.detail || 'server error');\n  }\n\n  /******************************************************************************************************************************************************************\n   * @description This function runs whenever filters count is returned from the server.\n   *              It takes into account the current filter model, the new one, and another object representing the current threat filter payload.\n   *              It is necessary when there is a pre-filter like when you get here from clicking active threats link in the dashboard, and then\n   *              you have to load the threat table pre-filtered. The third parameter - filterObject is responsible to represent the pre-filter, and therefore\n   *              is being used here to decide which filter is pre-selected.\n   *              The function starts by running <i><adjustFilterValues/i> method, to get the current selected and counts. Then it makes some adjustment so\n   *              when it is prefiltered by date range - we will catch it, and then finally it makes sure all the selected values from the current pre-filter - will\n   *              be reflected in the filter model.\n   * @param currentFilterModel - current filter status\n   * @param newFilterModel - filter after changes\n   * @param filterObject - the selected filter object we are going to send\n   * @param queryParamsCollection - full queries information\n   * @param queriesObj - queries (key, value)\n   * @returns {FilterItemModel[]}\n   *******************************************************************************************************************************************************************/\n  private enrichFilterValuesWithSelectedAndCounts(\n    currentFilterModel: FilterItemModel[],\n    newFilterModel: FilterItemModel[],\n    filterObject: any,\n    queryParamsCollection: Map<string, QueryCollectionModel>,\n    queriesObj: any\n  ): FilterItemModel[] {\n    let newFilterObject = Object.assign({}, queriesObj);\n\n    newFilterObject = this.manageCreatedAt(queryParamsCollection, newFilterObject);\n\n    return cloneDeep(newFilterModel).map((model: FilterItemModel) => {\n      const collectionItem = queryParamsCollection?.has(model.key) ? queryParamsCollection.get(model.key) : null;\n      const isNin = collectionItem?.extraData?.operator || false;\n      if (!!collectionItem) {\n        if (model.filterType === FilterItemType.Custom) {\n          model = this.manageCustomFilterItemType(model, newFilterObject, collectionItem);\n        } else if (model.filterType === FilterItemType.Range) {\n          model = this.manageRangeFilterItemType(model, newFilterObject);\n        } else {\n          model = this.manageFilterItemType(model, newFilterObject, collectionItem, currentFilterModel);\n        }\n      } else {\n        model.values = model.values.map((val) => {\n          val.selected = false;\n          return val;\n        });\n      }\n      if (isNin) {\n        model.operator = FilterItemOperator.NOT_EQUALS;\n      }\n      return model;\n    });\n  }\n\n  /**\n   * Because the query params object is mutual to both the table and filter - query params which are relevant to\n   * the table only are being passed to the filter also. and it breaks the API, so here we filter them out.\n   * @param {object} queryParams\n   * @returns {object}\n   */\n  ignoreTableSpecificQueryParams(queryParams: Record<any, any>): Record<any, any> {\n    const newQueryParams = cloneDeep(queryParams);\n    this.IGNORABLE_QUERY_PARAMS.forEach((ignorable) => {\n      delete newQueryParams[ignorable];\n    });\n    return newQueryParams;\n  }\n\n  /**************************************************\n   * @description - fetch available free text field\n   * @param {string} url - the URL for fetching\n   * @returns {Observable<FreeTextFieldType[]>}\n   *************************************************/\n  fetchFreeTextAvailableFields(url: string): Observable<FreeTextFieldType[]> {\n    return this.httpClient.get(url).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data as FreeTextFieldType[];\n      }),\n      catchError((err) => {\n        if (err && err.error && err.error.errors && err.error.errors.length) {\n          this.showErrorMessage(err);\n        }\n        return NEVER;\n      })\n    );\n  }\n\n  /**********************************************************************************************\n   * @description Fetch autocomplete suggestions for a free text field, and typed text\n   * @param url - the URL to fetch from\n   * @param filterAutocompletePayload - payload containing the amount of items to fetch (limit),\n   *                                    the field ( key) to search on, and the text to look for.\n   * @returns {Observable<FilterFreeTextAutocompleteItem[]>}\n   ********************************************************************************************/\n  getAutocompleteResults(\n    url: string,\n    filterAutocompletePayload: FilterAutoCompletePayload\n  ): Observable<FilterFreeTextAutocompleteItem[]> {\n    return this.httpClient.get(url, { params: filterAutocompletePayload as any }).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data.values as FilterFreeTextAutocompleteItem[];\n      }),\n      catchError((err) => {\n        this.showErrorMessage(err);\n        return NEVER;\n      })\n    );\n  }\n\n  /****************************************************************************\n   * @description Helper function to build the object of the query params.\n   *              It is needed both for the filter in order to fetch for the\n   *              right filters-count and by the table to get the right items\n   *\n   * @param filterModels - original filters array\n   * @param freeTextItems - all free text items from BE response\n   * @returns object of key value\n   ***************************************************************************/\n  buildSearchQueryParams(\n    filterModels: FilterItemModel[] = [],\n    freeTextItems: FilterFreeTextItem[] = []\n  ): Record<any, any> {\n    const newParams = {};\n    filterModels.forEach((_val: FilterItemModel) => {\n      const value = _val.values\n        .filter((_filterValue) => _filterValue.selected)\n        .map((_filterValue: FilterItemValue) => {\n          return _filterValue.key;\n        })\n        .join(',');\n      if (value && value.length) {\n        const key = _val.operator === FilterItemOperator.NOT_EQUALS ? `${_val.key}${NOT_FILTER_SUFFIX}` : _val.key;\n        newParams[key] = value;\n      }\n    });\n    freeTextItems.forEach((_item: FilterFreeTextItem) => {\n      newParams[_item.key] = _item.value;\n    });\n    return newParams;\n  }\n\n  /*********************************************************************************************************************************\n   * @description Method to extract free text items out of the additional query params.\n   *              Being called in two scenarios:\n   *                    1) FilterConfig is changed - so we need to fetch all the available free text items, and they might change\n   *                    2) When additional query params are changed - so we should re-extract free text items from them\n   *\n   * @param freeTextHash\n   * @param filterParams\n   *****************************************************************************************************************************/\n  extractFreeTextItemsFromFilterParams(\n    freeTextHash: Record<any, any>,\n    filterParams: Record<any, any>\n  ): FilterFreeTextItem[] {\n    const freetextItems = [];\n    forOwn(filterParams, (val, key) => {\n      if (freeTextHash[key]) {\n        freetextItems.push({\n          key: key,\n          title: freeTextHash[key],\n          value: val,\n        });\n      }\n    });\n    return freetextItems;\n  }\n\n  /*******************************************************************************************************************************\n   * @description - Whether the filter key is one of the custom filters that like CPU count (ones we don't get from the server)\n   * @param key - filter key\n   * @param filterApiHandling - come from filter config - the filter before and after BE filters\n   ******************************************************************************************************************************/\n  keyIsCustom(key: string, filterApiHandling: FilterApiHandling): boolean {\n    return (\n      !!filterApiHandling.filterToAddBefore.find((filterModel) => filterModel.key === key) ||\n      !!filterApiHandling.filterToAddAfter.find((filterModel) => filterModel.key === key)\n    );\n  }\n\n  /*********************************************************************\n   * @description - Whether the filter key is one of free text filters\n   * @param key - free text key\n   **********************************************************************/\n  keyIsFreeText(key: string): boolean {\n    return key === 'query' || key.indexOf('__contains') > -1;\n  }\n\n  /***************************************************************************\n   * @description - whether the filter key is one of date and time filters\n   * @param filterKey - filter unique key\n   ***************************************************************************/\n  isKeyOfDate(filterKey: string): boolean {\n    return filterKey === 'createdAt__gt' || filterKey === 'createdAt__lt';\n  }\n\n  /**********************************************************************************************************************\n   * @description - build the countsFor list to send to the server\n   *                If needed - adds a filter to the countsFor object\n   * @param selectedKeys - the keys we explicitly selected (or got from p13n)\n   * @param filterObject - the selected filter object we are going to send\n   * @param filterApiHandling - we send it because we need to NOT add the custom filter keys to the countsFor object\n   * @param keysToIgnore - list of keys we KNOW we would like to ignore when sending countsFor\n   * @param filterAdditionalParams\n   *********************************************************************************************************************/\n  buildCountsForObject(\n    selectedKeys: string[],\n    filterObject: any,\n    filterApiHandling: FilterApiHandling,\n    keysToIgnore?: string[],\n    filterAdditionalParams?: Record<any, any>\n  ): string {\n    const objectKeys = Object.keys(filterObject);\n    objectKeys.forEach((key) => {\n      if (filterObject.hasOwnProperty(key)) {\n        if (\n          selectedKeys.indexOf(key) === -1 &&\n          !this.keyIsCustom(key, filterApiHandling) &&\n          !this.keyIsFreeText(key) &&\n          !this.isKeyOfDate(key) &&\n          !filterAdditionalParams[key] &&\n          (!keysToIgnore || keysToIgnore.indexOf(key) === -1)\n        ) {\n          selectedKeys.push(key);\n        }\n      }\n    });\n    selectedKeys = uniqBy(\n      selectedKeys.map((key) => key.replace(new RegExp(`${NOT_FILTER_SUFFIX}$`), '')),\n      (data) => data\n    );\n    return selectedKeys.join(',');\n  }\n\n  /**************************************************************************\n   * @description Get queries from current collection (with collection id)\n   * @param queries\n   *************************************************************************/\n  convertQueriesToObject(queries: Map<string, QueryCollectionModel>) {\n    const result = {};\n    if (queries && (Object.keys(queries).length > 0 || queries.size > 0)) {\n      queries.forEach((query: QueryCollectionModel, key: string) => {\n        if (query.extraData && query.extraData.operator === FilterItemOperator.NOT_EQUALS) {\n          result[`${key}${this.NOT_EQUALS_SUFFIX}`] = query.value;\n        } else {\n          result[key] = query.value;\n        }\n      });\n    }\n    return result;\n  }\n\n  /*******************************************************************************\n   * @description: define createdAt if  createdAt__gt & createdAt__lt exist\n   * @param queryParamsCollection {Map<string, QueryCollectionModel>}\n   * @param newFilterObject: object of key and value\n   * @return filter with the createdAt key\n   ******************************************************************************/\n  manageCreatedAt(queryParamsCollection: Map<string, QueryCollectionModel>, newFilterObject: any) {\n    if (\n      queryParamsCollection &&\n      queryParamsCollection.has('createdAt__gt') &&\n      parseInt(queryParamsCollection.get('createdAt__gt')?.value) > 0 &&\n      parseInt(queryParamsCollection.get('createdAt__lt')?.value) > 0\n    ) {\n      newFilterObject['createdAt'] = `${newFilterObject['createdAt__gt']}-${newFilterObject['createdAt__lt']}`;\n      delete newFilterObject['createdAt__gt'];\n      delete newFilterObject['createdAt__lt'];\n    }\n    return newFilterObject;\n  }\n\n  manageRangeFilterItemType(model: FilterItemModel, newFilterObject: any) {\n    let fromDate = newFilterObject[model.key].split('-')[0];\n    fromDate = getFormatDate(parseInt(fromDate), 'DD.MM.YYYY HH:mm');\n    let toDate = newFilterObject[model.key].split('-')[1];\n    toDate = getFormatDate(parseInt(toDate), 'DD.MM.YYYY HH:mm');\n    model.values = [{ key: newFilterObject[model.key], selected: true, title: `${fromDate} - ${toDate}` }];\n    return model;\n  }\n\n  manageCustomFilterItemType(model: FilterItemModel, newFilterObject: any, collectionItem) {\n    model.values = [{ key: newFilterObject[model.key], title: newFilterObject[model.key], selected: !!collectionItem }];\n    return model;\n  }\n\n  manageFilterItemType(\n    model: FilterItemModel,\n    newFilterObject: any,\n    collectionItem,\n    currentFilterModel: FilterItemModel[]\n  ) {\n    model.values = model.values.map((val: FilterItemValue) => {\n      const selectedValues = collectionItem.value.split(',');\n      val.selected = selectedValues.includes(val.key);\n      return val;\n    });\n\n    /*****************************************************************************************************************************************************************\n     * @description - sometimes, especially after you delete an item from a table, when filter values are dynamic - like device class in DC, or domain in Network\n     * - the values array of the filter item is an empty array instead of list of values with count:0. This is because BE limitation.\n     * In this case - we restore the value object from the previous values array, and add it as selected with count:0 to the values array.\n     * This way - we can keep it annotated when the filter is closed, and selected when the filter is open\n     * So, when we have the current filter object key, but its values length  is 0 - then we try to find this value object, and when we do -\n     * we set its count to 0 (because if the BE didn't return it - we probably have no items of those), and add it manually to the list of values,\n     * as selected, so it will appear both as selected in the open filter, and as a bubble in the closed filer line\n     ******************************************************************************************************************************************************************/\n    if (model.values.length === 0) {\n      const originalKeyValue = currentFilterModel.filter((_model) => _model.key === model.key);\n      if (originalKeyValue.length > 0) {\n        const newFilterObjectValue =\n          collectionItem?.extraData?.operator || false\n            ? newFilterObject[model.key + NOT_FILTER_SUFFIX]\n            : newFilterObject[model.key];\n        const fullVal = originalKeyValue[0].values.filter((value) => newFilterObjectValue === value.key);\n        if (fullVal.length === 1) {\n          fullVal[0].count = 0;\n        }\n        model.values = [...fullVal];\n      }\n    }\n    return model;\n  }\n\n  /************************************************************************\n   * @description - return true if there are more than 1 free text filter\n   * @param queries - current query collection values\n   ************************************************************************/\n  hasFreeText(queries: Map<string, QueryCollectionModel>): boolean {\n    if (queries) {\n      return (\n        [...queries.entries()].filter(({ 1: v }) => v.type === QueryCollectionTypeEnum.FREE_TEXT_FILTER).length > 0\n      );\n    } else {\n      return false;\n    }\n  }\n\n  /************************************************************************\n   * @description - return true if there are more than 1 object filter\n   * @param queries - current query collection values\n   ************************************************************************/\n  hasObjectFilter(queries: Map<string, QueryCollectionModel>): boolean {\n    if (queries) {\n      return [...queries.entries()].filter(({ 1: v }) => v?.extraData && v?.extraData?.objectUniqueKey).length > 0;\n    } else {\n      return false;\n    }\n  }\n\n  updateCustomDropdownQueryCollection(filterConfig: FilterConfiguration, queryActions: QueryCollectionActions) {\n    const defaultSelected = queryActions?.queryMap?.queries?.has(filterConfig?.customLeftDropDown?.filterFieldName)\n      ? queryActions.queryMap.queries.get(filterConfig.customLeftDropDown.filterFieldName).value\n      : filterConfig?.customLeftDropDown?.defaultSelected\n      ? filterConfig?.customLeftDropDown?.defaultSelected.value\n      : filterConfig.customLeftDropDown?.items\n      ? filterConfig.customLeftDropDown?.items[0].value\n      : null;\n\n    const shouldTrigger = !queryActions?.queryMap?.queries?.has(filterConfig?.customLeftDropDown?.filterFieldName);\n    if (defaultSelected) {\n      queryActions.actions.update(\n        filterConfig?.customLeftDropDown?.filterFieldName,\n        defaultSelected,\n        QueryCollectionTypeEnum.DEFAULT,\n        {},\n        shouldTrigger\n      );\n    }\n  }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { FilterMessage } from '../models/filter-message.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FilterCommunicationService implements OnDestroy {\n  readonly messages: BehaviorSubject<FilterMessage> = new BehaviorSubject(void 0);\n\n  ngOnDestroy() {\n    this.messages.complete();\n  }\n\n  on(): Observable<FilterMessage> {\n    return this.messages.asObservable();\n  }\n\n  dispatch(data: FilterMessage): void {\n    this.messages.next(data);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { NEVER, Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { FilterAutoCompletePayload } from './models/filter-autocomplete-payload.interface';\nimport { ToastNotificationService } from '../../../../popups/toast-notification/services/toast-notification.service';\nimport { SingHttpResponse } from '../../../../../services/http-call/models/sing-http-response';\nimport { FreeTextFieldType } from './models/free-Text-field-type.interface';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryCollectionModel } from '../../../../../services/query-collection/models/query-collection.model';\nimport {\n  csvToArray,\n  removeApostropheReplacementIfNeeded,\n  replaceCommaIfNeeded,\n  surroundCommaWithQuotesIfContainsComma,\n} from './utils/csv.utils';\nimport { FilterFreeTextAutocompleteItem } from './models/filter-free-text-autocomplete-Item.interface';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FilterFreeTextService {\n  constructor(private httpClient: HttpClient, public toastNotificationService: ToastNotificationService) {}\n\n  invalidAutocompleteQuery = false;\n\n  /***************************************************\n   * @description - fetch available free text fields\n   * @param {string} url - the URL for fetching\n   * @returns {Observable<FreeTextFieldType[]>}\n   ***************************************************/\n  fetchFreeTextAvailableFields(url: string): Observable<FreeTextFieldType[]> {\n    return this.httpClient.get(url).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data.map((item) => {\n          item.value = item.key;\n          item.select = false;\n          return item;\n        }) as FreeTextFieldType[];\n      }),\n      catchError((err) => {\n        if (err && err.error && err.error.errors && err.error.errors.length) {\n          this.toastNotificationService.error(err?.error?.errors?.[0]?.detail || 'server error');\n        }\n        return NEVER;\n      })\n    );\n  }\n\n  /******************************************************************************************************************************\n   * @description - fetch autocomplete suggestions for a free text field, and typed text\n   * @param {string} url - the URL to fetch from\n   * @param {FilterAutoCompletePayload} filterAutocompletePayload - payload containing the amount of items to fetch (limit),\n   *                                                                the field (key) to search on, and the text to look for.\n   * @returns {Observable<FilterFreeTextAutocompleteItem[]>}\n   *****************************************************************************************************************************/\n  getAutocompleteResults(\n    url: string,\n    filterAutocompletePayload: FilterAutoCompletePayload\n  ): Observable<FilterFreeTextAutocompleteItem[]> {\n    this.invalidAutocompleteQuery = false;\n    return this.httpClient\n      .get<{ data: { values: FilterFreeTextAutocompleteItem[] } }>(url, { params: filterAutocompletePayload as any })\n      .pipe(\n        map((apiData: SingHttpResponse) => {\n          return apiData.data.values;\n        }),\n        catchError((err) => {\n          this.toastNotificationService.error(err?.error?.errors?.[0]?.detail || 'server error');\n          this.invalidAutocompleteQuery = true;\n          return NEVER;\n        })\n      );\n  }\n\n  /**************************************************************************************************\n   * @description - when hitting ENTER - update query collection with the new free text input.\n   *                if  exist than the new user input will be appended to the old free text value\n   *                if type is query - can except one value\n   **************************************************************************************************/\n  enterPressed(\n    freeTextValid: boolean,\n    keyToNumOfValuesHash: any,\n    selectedType: FreeTextFieldType,\n    freeText: string,\n    queryActions: QueryCollectionActions\n  ): boolean {\n    freeText = replaceCommaIfNeeded(freeText);\n    if (this.invalidAutocompleteQuery || !freeTextValid || freeText.trim().length < 2) {\n      return false;\n    }\n\n    if (this.freeTextValueExist(freeText.trim(), selectedType, queryActions)) {\n      return false;\n    }\n\n    if (!keyToNumOfValuesHash[selectedType['value']] || keyToNumOfValuesHash[selectedType['value']] < 5) {\n      const { freeTextValues, displayTitles } = this.generateQueryValueAndTitle(selectedType, freeText, queryActions);\n      queryActions.actions.update(\n        selectedType['value'],\n        [...new Set(freeTextValues)].join(','),\n        QueryCollectionTypeEnum.FREE_TEXT_FILTER,\n        {\n          displayTitle: [...new Set(displayTitles)].join(','),\n          key: selectedType['value'],\n        },\n        true\n      );\n    }\n    return true;\n  }\n\n  /****************************************************************************\n   * @description - calculate the new free text values and new display values\n   * @param selectedType - current free type\n   * @param freeText - user input\n   * @param queryActions - query collection actions\n   ****************************************************************************/\n  generateQueryValueAndTitle(selectedType: FreeTextFieldType, freeText: string, queryActions: QueryCollectionActions) {\n    let freeTextValues;\n    let displayTitles;\n    let freeTextToSend = surroundCommaWithQuotesIfContainsComma(freeText.trim());\n    freeTextToSend = removeApostropheReplacementIfNeeded(freeTextToSend);\n    if (selectedType['key'] === 'query') {\n      freeTextValues = [freeTextToSend];\n      displayTitles = selectedType['title'];\n    } else {\n      freeTextValues = queryActions.queryMap.queries.get(selectedType['value'])\n        ? [queryActions.queryMap.queries.get(selectedType['value']).value, freeTextToSend]\n        : [freeTextToSend];\n      displayTitles = queryActions.queryMap.queries.get(selectedType['value'])\n        ? [queryActions.queryMap.queries.get(selectedType['value']).extraData.displayTitle, selectedType['title']]\n        : [selectedType['title']];\n    }\n    return { freeTextValues, displayTitles };\n  }\n\n  reachedTheLimit(query: QueryCollectionModel): boolean {\n    if (query) {\n      const splitQueryValue = csvToArray(query.value);\n      return splitQueryValue.length >= 5;\n    }\n    return false;\n  }\n\n  generateGetSavedPayload(\n    freeText,\n    queryActions: QueryCollectionActions,\n    selectedType: FreeTextFieldType,\n    additionalQueryParameters: Record<any, any>\n  ) {\n    const filterQueries = queryActions.actions.convertQueriesToObject();\n    if (filterQueries && filterQueries['countsFor']) {\n      delete filterQueries['countsFor'];\n    }\n    const autocompletePayload: FilterAutoCompletePayload & any = {\n      key: selectedType['value'],\n      text: freeText,\n      ...filterQueries,\n      ...additionalQueryParameters,\n      limit: 100,\n    };\n\n    delete autocompletePayload[selectedType['value']];\n    return autocompletePayload;\n  }\n\n  /*********************************************************\n   * @description - set sorting flag for free text result\n   * @param flag - sorting flag\n   ********************************************************/\n  setSortingFlag(flag?: boolean) {\n    if (flag === undefined || flag === null) return true;\n    return flag;\n  }\n\n  freeTextValueExist(freeText: string, selectedType: FreeTextFieldType, queryActions: QueryCollectionActions): boolean {\n    const query = queryActions?.queryMap?.queries?.get(selectedType?.value) || null;\n    if (query) {\n      const queryValues = query?.value?.split(',') || [];\n      return queryValues.includes(freeText);\n    }\n    return false;\n  }\n}\n","/**\n * @description query model\n */\nimport { QueryCollectionTypeEnum } from '../enums/query-collection-type.enum';\nimport { FilterItemOperator } from '../enums/filter-Item-operator.enum';\n\nexport class QueryCollectionModel {\n  /**\n   * query value\n   */\n  value: string;\n\n  /**\n   * query type\n   */\n  type: QueryCollectionTypeEnum;\n\n  /**\n   * more data about the query\n   */\n  extraData: ExtraQueryData;\n\n  constructor(value: string, type: QueryCollectionTypeEnum = QueryCollectionTypeEnum.DEFAULT, extraData: any) {\n    this.value = value;\n    this.type = type;\n    this.extraData = new ExtraQueryData(extraData);\n  }\n}\n\nexport class ExtraQueryData {\n  /**\n   * query key\n   */\n  key?: string;\n  /**\n   * display name\n   */\n  displayTitle?: string;\n\n  /**\n   * display value\n   */\n  displayValue?: string;\n\n  /**\n   * query operator\n   */\n  operator?: FilterItemOperator;\n\n  /**\n   * allow empty string or null\n   */\n  allowEmptyValue?: boolean;\n\n  /**\n   * is the value is type of object\n   */\n  objectUniqueKey?: string | boolean;\n\n  /**\n   * set of queries that depends on query collection\n   */\n  queriesDependOn?: string[];\n\n  /**\n   * force delete query when call delete property\n   */\n  forceDelete?: boolean;\n\n  constructor(extraData) {\n    this.operator = extraData && extraData.operator ? extraData.operator : FilterItemOperator.EQULAS;\n    this.displayTitle = extraData && extraData.displayTitle ? extraData.displayTitle : null;\n    this.displayValue = extraData && extraData.displayValue ? extraData.displayValue : null;\n    this.key = extraData && extraData.key ? extraData.key : null;\n    this.allowEmptyValue = extraData && extraData.allowEmptyValue ? extraData.allowEmptyValue : false;\n    this.objectUniqueKey = extraData && extraData.objectUniqueKey ? extraData.objectUniqueKey : false;\n    this.queriesDependOn = extraData?.queriesDependOn ? extraData.queriesDependOn : [];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FreeTextFieldType } from '../../list-components/filter-free-text/models/free-Text-field-type.interface';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { QueryCollectionModel } from '../../../../../services/query-collection/models/query-collection.model';\nimport { FilterItemType } from '../../../filter-panel/enums/filter-item-type.enum';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterItemOperator } from '../../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { FilterConfiguration } from '../../models/filter.configuration';\nimport { csvToArray } from '../../../filter-panel/list-components/filter-free-text/utils/csv.utils';\n\n@Injectable()\nexport class FilterPanelService {\n  /************************************************************************************************************\n   * @description sometimes we need to add more information to the search bar component.\n                  the method only adding information to changed queries or on initialization\n   * @param filterCountResponse - filter count response (include all optional values with keys and titles)\n   * @param changedKeys - changed collection items keys, when default is all keys\n   * @param queryActions - query collection actions\n   * @param freeTextFields - free text response\n   * @param useQueryParamsValue - should use query collection or filter count response\n   * @param defaultDisplayNames\n   * @param tableSettings\n   *************************************************************************************************************/\n  fillMissingQueryData(\n    filterCountResponse: FilterItemModel[],\n    changedKeys: string[],\n    queryActions: QueryCollectionActions,\n    freeTextFields: FreeTextFieldType[],\n    useQueryParamsValue: boolean,\n    defaultDisplayNames: Record<any, any>,\n    tableSettings: any\n  ) {\n    const collectionQueries = queryActions.queryMap.queries || null;\n    if (collectionQueries) {\n      collectionQueries.forEach((value, key) => {\n        if (changedKeys?.length === 0 || changedKeys?.includes(key)) {\n          const currentQueryItem = queryActions.queryMap.queries.get(key) || null;\n          const isNegativeOperator = key.indexOf('Nin') !== -1;\n          const freeTextItem = freeTextFields?.find((item) => item.value === key) || null;\n          if (freeTextItem) {\n            this.fillFreeTextItem(key, currentQueryItem, freeTextItem, queryActions);\n          } else {\n            const searchKey = isNegativeOperator ? key.split('Nin')[0] : key;\n            const dataItem = filterCountResponse.find((item) => item.key === searchKey) || null;\n            if (dataItem && !tableSettings?.objectKeysList?.includes(dataItem.key)) {\n              if (dataItem.filterType === FilterItemType.Custom) {\n                this.fillCustomFilterData(searchKey, dataItem, queryActions, currentQueryItem);\n              } else if (dataItem?.values.length === 0) {\n                this.fillFilterRangeItem(searchKey, dataItem, currentQueryItem, queryActions, isNegativeOperator);\n              } else {\n                this.fillFilterItem(\n                  searchKey,\n                  dataItem,\n                  currentQueryItem,\n                  useQueryParamsValue,\n                  queryActions,\n                  isNegativeOperator,\n                  tableSettings\n                );\n              }\n            } else {\n              if (tableSettings?.objectKeysList && tableSettings?.objectKeysList.includes(searchKey)) {\n                this.fillMissingQueryDataObjectFilter(searchKey, currentQueryItem, queryActions);\n              } else {\n                if (\n                  currentQueryItem &&\n                  currentQueryItem.extraData &&\n                  !currentQueryItem.extraData.displayTitle &&\n                  defaultDisplayNames[searchKey]\n                ) {\n                  const updatedExtraData = {\n                    ...currentQueryItem.extraData,\n                    displayTitle: defaultDisplayNames[searchKey],\n                  };\n                  queryActions.actions.update(\n                    searchKey,\n                    currentQueryItem.value,\n                    currentQueryItem.type,\n                    updatedExtraData,\n                    false\n                  );\n                }\n              }\n            }\n          }\n        }\n      });\n      this.fillPermanentFilterObject(tableSettings?.permanentFilterObject, queryActions, false);\n    }\n  }\n\n  fillPermanentFilterObject(\n    permanentFilterObject: Record<any, any>,\n    queryActions: QueryCollectionActions,\n    forceEmit: boolean\n  ) {\n    if (permanentFilterObject && Object.keys(permanentFilterObject).length > 0) {\n      Object.keys(permanentFilterObject).forEach((key: string) => {\n        if (\n          !queryActions.queryMap.queries.has(key) ||\n          (queryActions.queryMap.queries.has(key) &&\n            queryActions.queryMap.queries.get(key).type !== QueryCollectionTypeEnum.PERMANENT)\n        )\n          queryActions.actions.update(key, permanentFilterObject[key], QueryCollectionTypeEnum.PERMANENT, null, false);\n      });\n      if (forceEmit) {\n        queryActions.actions.forceEmitChanges();\n      }\n    }\n  }\n\n  /***************************************************************************************\n   * @description update free text query with all information (free text title, value)\n   * @param queryKey - query key\n   * @param query\n   * @param freeTextItem - free text item from query collection\n   * @param queryActions - query collection actions\n   **************************************************************************************/\n  fillFreeTextItem(queryKey: string, query: QueryCollectionModel, freeTextItem: FreeTextFieldType, queryActions) {\n    queryActions.actions.update(\n      queryKey,\n      query.value,\n      QueryCollectionTypeEnum.FREE_TEXT_FILTER,\n      {\n        displayValue: query?.extraData?.displayValue || null,\n        displayTitle: freeTextItem.title,\n        key: queryKey,\n      },\n      false\n    );\n  }\n\n  /***************************************************************************************\n   * @description update filter information (not free text)\n   * @param queryKey - query key\n   * @param dataItem - data item from filter count response\n   * @param currentQueryItem - query collection item\n   * @param useQueryParamsValue - should use query value or filter count response value\n   * @param queryActions - query collection actions\n   * @param isNegativeOperator - is negative query\n   * @param tableSettings\n   *************************************************************************************/\n  fillFilterItem(\n    queryKey: string,\n    dataItem,\n    currentQueryItem: QueryCollectionModel,\n    useQueryParamsValue: boolean,\n    queryActions,\n    isNegativeOperator: boolean,\n    tableSettings: any\n  ) {\n    const typeMap = ['RadioSelect', 'MultiSelect', 'range', 'min_max'];\n    if (dataItem !== null) {\n      const selectedValues =\n        dataItem.values.some((val) => val.selected) && !useQueryParamsValue\n          ? dataItem.values.filter((val) => val.selected)\n          : dataItem.values.filter((val) => csvToArray(currentQueryItem.value).includes(val.key));\n\n      if (selectedValues.length > 0) {\n        const values = selectedValues.map((selectedVal) => selectedVal.key).join(',');\n        const displayValues = selectedValues.map((selectedVal) => selectedVal.title).join(',');\n        const filterType = typeMap.includes(dataItem.filterType)\n          ? QueryCollectionTypeEnum.FILTER\n          : QueryCollectionTypeEnum.DEFAULT;\n        queryActions.actions.update(\n          this.getFilterKey(dataItem.key, currentQueryItem),\n          values,\n          filterType,\n          {\n            displayValue: displayValues,\n            displayTitle: dataItem.title,\n            operator: this.calculateFilterOperator(currentQueryItem, isNegativeOperator),\n            key: this.getFilterKey(dataItem.key, currentQueryItem),\n          },\n          false\n        );\n\n        this.updateCountForQuery(dataItem, queryActions, tableSettings);\n      }\n    }\n  }\n\n  /**********************************************************************************************************\n   * @description - update countsFor query when user inactivate key and the key is selected in the filter\n   *                     than we need to add the key to countsFor query and activate the checkbox\n   * @param dataItem - current data item from filter count response\n   * @param queryActions - query collection actions\n   * @param tableSettings - table settings (include if countsFor is allow)\n   ***********************************************************************************************************/\n  updateCountForQuery(dataItem, queryActions: QueryCollectionActions, tableSettings: any) {\n    if (\n      tableSettings?.tableFilterConfig?.filterConfig?.allowSelectFields &&\n      queryActions.queryMap.queries.has('countsFor')\n    ) {\n      const selectedCountsForQuery = queryActions.queryMap.queries.get('countsFor');\n      const currentSelectedValues = selectedCountsForQuery.value.split(',');\n      if (!currentSelectedValues.includes(dataItem.key)) {\n        queryActions.actions.update(\n          'countsFor',\n          [...currentSelectedValues, dataItem.key].join(','),\n          selectedCountsForQuery.type,\n          { ...selectedCountsForQuery.extraData, ...{ key: 'countsFor', allowEmptyValue: true } },\n          false\n        );\n      }\n    }\n  }\n\n  /****************************************************************\n   * @description adding information to range query item\n   * @param queryKey - query collection key\n   * @param filterCountResponseItem - filter count response item\n   * @param currentQueryItem - current query item\n   * @param queryActions - query collection actions\n   * @param isNegativeOperator - negative query\n   *******************************************************************/\n  fillFilterRangeItem(\n    queryKey: string,\n    filterCountResponseItem: FilterItemModel,\n    currentQueryItem,\n    queryActions,\n    isNegativeOperator: boolean\n  ) {\n    if (filterCountResponseItem !== null) {\n      const rangeType = filterCountResponseItem?.metaData?.type ? ` ${filterCountResponseItem?.metaData?.type}` : '';\n      queryActions.actions.update(\n        filterCountResponseItem.key,\n        currentQueryItem.value,\n        currentQueryItem.type,\n        {\n          displayValue:\n            currentQueryItem.value.indexOf('-') !== -1\n              ? `${currentQueryItem.value.split('-')[0]}-${currentQueryItem.value.split('-')[1]}${rangeType}`\n              : filterCountResponseItem.metaData\n              ? `${filterCountResponseItem.metaData?.min}-${filterCountResponseItem.metaData?.max}`\n              : null,\n          displayTitle: filterCountResponseItem.title,\n          operator: this.calculateFilterOperator(currentQueryItem, isNegativeOperator),\n          key: queryKey,\n        },\n        false\n      );\n    }\n  }\n\n  calculateFilterOperator(currentQueryItem, isNegativeOperator: boolean) {\n    if (isNegativeOperator) return FilterItemOperator.NOT_EQUALS;\n    return currentQueryItem.extraData && currentQueryItem.extraData.operator\n      ? currentQueryItem.extraData.operator\n      : FilterItemOperator.EQULAS;\n  }\n\n  /**************************************************************************************\n   * @description get all the filter that should    be visible at the search bar\n   * @param queries - map of key of the query and value with QueryCollectionModel data\n   * @param filterConfigInterface\n   ****************************************************************************************/\n  getFilterQuery(\n    queries: Map<string, QueryCollectionModel>,\n    filterConfigInterface: FilterConfiguration\n  ): QueryCollectionModel[] {\n    let result = [];\n    if (Object.keys(queries).length > 0 || queries.size > 0) {\n      queries.forEach((query: QueryCollectionModel, key: string) => {\n        if (this.shouldDisplayInFilterBar(query, filterConfigInterface, key)) {\n          query.extraData = { ...query.extraData, ...{ key } };\n          result = result.concat(this.convertObjectToQueries(query));\n        }\n      });\n    }\n    return result;\n  }\n\n  /***************************************************************************\n   * @description - generate list of filters and fill the missing information\n   * @param query - current query from query collection\n   **************************************************************************/\n  convertObjectToQueries(query: QueryCollectionModel) {\n    if (!query?.extraData?.objectUniqueKey) {\n      return [query];\n    } else {\n      const result = [];\n      const objectValue = JSON.parse(query.value);\n      const objectDisplayValue = query?.extraData?.displayValue ? JSON.parse(query.extraData.displayValue) : null;\n      const objectDisplayTitles = query?.extraData?.displayTitle ? JSON.parse(query.extraData.displayTitle) : null;\n\n      for (const objectValueKey in objectValue) {\n        if (objectValue.hasOwnProperty(objectValueKey)) {\n          result.push(\n            new QueryCollectionModel(objectValue[objectValueKey].join(','), query.type, {\n              displayValue: this.getObjectDisplayValues(objectDisplayValue, objectValueKey),\n              displayTitle: this.getObjectDisplayTitle(objectDisplayTitles, objectValueKey),\n              key: query.extraData.key,\n              objectUniqueKey: objectValueKey,\n              operator:\n                objectValueKey.indexOf('Nin') !== -1 ? FilterItemOperator.NOT_EQUALS : FilterItemOperator.EQULAS,\n            })\n          );\n        }\n      }\n      return result;\n    }\n  }\n\n  /*************************************************************************\n   * @description - getting values and convert them to string with comma's\n   * @param displayValueObj - object with values\n   * @param key - unique object key\n   *************************************************************************/\n  getObjectDisplayValues(displayValueObj: any, key: string) {\n    if (displayValueObj === undefined || displayValueObj === null || !displayValueObj[key]) return null;\n    return displayValueObj[key].join(',');\n  }\n\n  /*******************************************************\n   * @description - getting display title , if exit\n   * @param displayTitlesObj - object with display titles\n   * @param key - unique object key\n   *******************************************************/\n  getObjectDisplayTitle(displayTitlesObj: any, key: string) {\n    if (displayTitlesObj === undefined || displayTitlesObj === null) return null;\n    else {\n      return displayTitlesObj[key] ? displayTitlesObj[key] : key;\n    }\n  }\n\n  /*********************************************************\n   * @description should query be visible at the filter bar\n   * @param query\n   *\n   * @param filterConfigInterface\n   * @param queryKey\n   * @return boolean if should be visible\n   ************************************************************/\n  shouldDisplayInFilterBar(\n    query: QueryCollectionModel,\n    filterConfigInterface: FilterConfiguration,\n    queryKey: string\n  ): boolean {\n    return (\n      (query.type === QueryCollectionTypeEnum.FREE_TEXT_FILTER ||\n        query.type === QueryCollectionTypeEnum.FILTER ||\n        query.type === QueryCollectionTypeEnum.USER_PREFERENCE ||\n        query.type === QueryCollectionTypeEnum.URL) &&\n      queryKey !== 'countsFor' &&\n      this.isOnExcludeFilterList(filterConfigInterface, queryKey)\n    );\n  }\n\n  isOnExcludeFilterList(filterConfigInterface: FilterConfiguration, queryKey: string) {\n    if (filterConfigInterface && !!filterConfigInterface.excludeFromFilterView) {\n      return !filterConfigInterface.excludeFromFilterView.includes(queryKey);\n    }\n    return true;\n  }\n\n  getFilterKey(queryKey, currentQueryItem: QueryCollectionModel): string {\n    if (!currentQueryItem) return queryKey;\n    return currentQueryItem.extraData && currentQueryItem.extraData.key ? currentQueryItem.extraData.key : queryKey;\n  }\n\n  /*********************************************************************\n   * @description fill query collection data\n   *\n   * @param queryActions\n   * @param filterConfigInterface\n   * @param freeTextFields\n   * @param data - filter BE option (response from filter count)\n   * @param changedKeys - latest changed key\n   * @param defaultDisplayNames - default display name for some queries\n   * @param useQueryParamsValue\n   *********************************************************************/\n  updateQueryInfo(\n    queryActions: QueryCollectionActions,\n    filterConfigInterface: FilterConfiguration,\n    freeTextFields: FreeTextFieldType[],\n    data,\n    changedKeys: string[],\n    defaultDisplayNames: Record<any, any>,\n    useQueryParamsValue = false\n  ) {\n    if (data && data.length > 0) {\n      this.fillMissingQueryData(\n        data,\n        changedKeys,\n        queryActions,\n        freeTextFields,\n        useQueryParamsValue,\n        defaultDisplayNames,\n        filterConfigInterface\n      );\n      return this.getFilterQuery(queryActions.queryMap.queries, filterConfigInterface);\n    }\n    return [];\n  }\n\n  /*******************************************************\n   * @description - rename some queries keys if needed\n   * @param queries\n   * @param renameMap\n   ******************************************************/\n  renameQueriesBeforeSendingToBE<T>(queries: Map<string, T>, renameMap: Record<string, string>): Map<string, T> {\n    if (!queries || queries.size === 0 || !renameMap || Object.keys(renameMap).length === 0) return queries;\n    queries.forEach((item: T, key: string) => {\n      if (renameMap[key]) {\n        queries.set(renameMap[key], item);\n        queries.delete(key);\n      }\n    });\n    return queries;\n  }\n\n  /*************************************************************\n   * @description - fill missing data for custom filter\n   *                extra data can exist in the metadata object\n   * @param queryKey - filter key\n   * @param dataItem - filter extra information\n   * @param queryActions - query collection actions\n   * @param currentQueryItem - current query item\n   *************************************************************/\n\n  fillCustomFilterData(\n    queryKey,\n    dataItem,\n    queryActions: QueryCollectionActions,\n    currentQueryItem: QueryCollectionModel\n  ) {\n    const selectedValues = currentQueryItem.value;\n    if (selectedValues.length > 0) {\n      const displayValues = currentQueryItem?.extraData?.displayValue || null;\n      const displayTitle =\n        currentQueryItem?.extraData?.displayTitle || dataItem?.metaData?.filterDefault?.displayTitle || null;\n      const type = dataItem?.metaData?.filterDefault?.type\n        ? dataItem?.metaData?.filterDefault?.type\n        : currentQueryItem.type === QueryCollectionTypeEnum.FILTER\n        ? QueryCollectionTypeEnum.FILTER\n        : QueryCollectionTypeEnum.DEFAULT;\n      queryActions.actions.update(\n        queryKey,\n        currentQueryItem.value,\n        type,\n        {\n          displayValue: displayValues,\n          displayTitle: displayTitle,\n          key: queryKey,\n        },\n        false\n      );\n    }\n  }\n\n  fillMissingQueryDataObjectFilter(\n    searchKey: string,\n    currentQueryItem: QueryCollectionModel,\n    queryActions: QueryCollectionActions\n  ) {\n    const data = JSON.parse(currentQueryItem.value);\n    const titles = Object.keys(data).reduce((res, item) => {\n      res[item] = item;\n      return res;\n    }, {});\n\n    queryActions.actions.update(\n      searchKey,\n      currentQueryItem.value,\n      QueryCollectionTypeEnum.FILTER,\n      {\n        displayValue: currentQueryItem?.extraData?.displayValue\n          ? currentQueryItem?.extraData?.displayValue\n          : JSON.stringify(data),\n        displayTitle: currentQueryItem?.extraData?.displayTitle\n          ? currentQueryItem?.extraData?.displayTitle\n          : JSON.stringify(titles),\n        key: searchKey,\n        operator: currentQueryItem?.extraData.operator\n          ? currentQueryItem.extraData.operator\n          : FilterItemOperator.EQULAS,\n        objectUniqueKey: true,\n      },\n      false\n    );\n  }\n}\n","export enum SaveFilterActionsEnum {\n  EDIT = 'edit',\n  DELETE = 'delete',\n  UPDATE = 'update',\n}\n","import { Injectable } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { SingHttpResponse } from '../../../../../services/http-call/models/sing-http-response';\n\n@Injectable()\nexport class SavedFiltersApiService {\n  constructor(private httpClient: HttpClient) {}\n\n  /**************************************\n   * @description delete exist set\n   * @param url - create new set url\n   * @param newFilter - filter\n   * @param name - set name\n   * @param saveNewSetFilter - set data\n   ***************************************/\n  saveNewSet(url: string, newFilter, name: string, saveNewSetFilter: Record<any, any>) {\n    return this.httpClient.post(url, { data: { filterFields: newFilter, name }, filter: saveNewSetFilter }).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data;\n      })\n    );\n  }\n\n  /****************************************\n   * @description delete exist set\n   * @param url - delete exist set url\n   * @param savedSetId - saved set id\n   ***************************************/\n  deleteSavedSetById(url: string, savedSetId: string) {\n    return this.httpClient.request('delete', url + '/' + savedSetId, { body: { data: savedSetId } }).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data;\n      })\n    );\n  }\n\n  /****************************************\n   * @description update exist set name\n   * @param url - update exist set name url\n   * @param savedSetId - saved set id\n   * @param newSetName - new set name\n   ***************************************/\n  updateSavedSetById(url: string, savedSetId: string, newSetName: string) {\n    return this.httpClient.put(url + '/' + savedSetId, { data: { name: newSetName } }).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data;\n      })\n    );\n  }\n\n  /****************************************\n   * @description update exist set data\n   * @param url - update exist set data url\n   * @param savedSetId - saved set id\n   * @param data - updated saved set data\n   ***************************************/\n  updateSavedSetData(url: string, savedSetId: string, data: Record<any, any>) {\n    return this.httpClient.put(url + '/' + savedSetId, { data: { filterFields: data } }).pipe(\n      map((apiData: SingHttpResponse) => {\n        return apiData.data;\n      })\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { Observable } from 'rxjs';\nimport { SavedFiltersApiService } from './saved-filters-api.service';\nimport { SetApiHandling } from '../../models/set-api-handling.model';\nimport { DropDownItem } from '../../../../form-controls/drop-down/models/drop-down-item.interface';\nimport { SaveFilterActionsEnum } from '../enums/save-filter-actions.enum';\nimport { ServerSideOptions } from '../../../../form-controls/drop-down/models/drop-down-server-options.interface';\nimport { arrayToCSV } from '../../list-components/filter-free-text/utils/csv.utils';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterItemOperator } from '../../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { FilterConfiguration } from '../../../filter-panel/models/filter.configuration';\n\n@Injectable()\nexport class SavedFiltersListService {\n  constructor(private savedFiltersApiService: SavedFiltersApiService) {}\n\n  /**\n   * @description when user saving new set\n   *\n   * @param queryActions - query collection actions\n   * @param setApiHandling - URL\n   * @param name - set name\n   * @param saveNewSetFilter - saved filters\n   */\n  onSavedNewSet(\n    queryActions: QueryCollectionActions,\n    setApiHandling: SetApiHandling,\n    name: string,\n    saveNewSetFilter: any\n  ): Observable<any> {\n    const savedFilterQueries = queryActions.actions.convertQueriesToObject();\n    delete savedFilterQueries['countsFor'];\n    return this.savedFiltersApiService.saveNewSet(setApiHandling.crudUrl, savedFilterQueries, name, saveNewSetFilter);\n  }\n\n  /***\n   * @description when user delete existing saved set\n   *\n   * @param setApiHandling\n   * @param savedSetId\n   */\n  onDeleteSet(setApiHandling: SetApiHandling, savedSetId: string) {\n    return this.savedFiltersApiService.deleteSavedSetById(setApiHandling.crudUrl, savedSetId);\n  }\n\n  /******************************************\n   * @description on user update existing set\n   * @param setApiHandling\n   * @param savedSetId\n   * @param newSetName\n   *******************************************/\n  onUpdateSetName(setApiHandling: SetApiHandling, savedSetId: string, newSetName) {\n    return this.savedFiltersApiService.updateSavedSetById(setApiHandling.crudUrl, savedSetId, newSetName);\n  }\n\n  /***********************************************\n   * @description on user updated exist saved set\n   * @param queryActions\n   * @param setApiHandling\n   * @param savedSetId\n   *********************************************/\n  onUpdateSavedSet(queryActions: QueryCollectionActions, setApiHandling: SetApiHandling, savedSetId: string) {\n    const savedFilterQueries = queryActions.actions.convertQueriesToObject();\n    delete savedFilterQueries['countsFor'];\n    return this.savedFiltersApiService.updateSavedSetData(setApiHandling.crudUrl, savedSetId, savedFilterQueries);\n  }\n\n  savedSetActions(): DropDownItem[] {\n    return [\n      { title: 'Edit set name', value: SaveFilterActionsEnum.EDIT },\n      { title: 'Delete set', value: SaveFilterActionsEnum.DELETE },\n      { title: 'Update set', value: SaveFilterActionsEnum.UPDATE },\n    ];\n  }\n\n  getSavedSetSettings(setApiHandling: SetApiHandling, outerQueryParams): ServerSideOptions {\n    return {\n      subUrl: setApiHandling.getUrl,\n      maxServerItems: 6,\n      skipFirstGet: true,\n      titleAlias: 'name',\n      valueAlias: 'id',\n      params: {\n        includeParents: true,\n        ...setApiHandling.getSetsParams,\n        ...outerQueryParams,\n      },\n      responseMapper: (dropdownItems: DropDownItem[]) => {\n        return dropdownItems.map((item: any) => {\n          item.title = item.name;\n          return item;\n        });\n      },\n    };\n  }\n\n  /************************************************************\n   * @description update query collection with exist saved set\n   * @param queryActions - query collection\n   * @param filtersList - saved set data\n   * @param filterConfiguration - filter configuration\n   ***************************************************************/\n  updateQueryCollection(\n    queryActions: QueryCollectionActions,\n    filtersList: any,\n    filterConfiguration: FilterConfiguration\n  ): Record<any, any> {\n    queryActions.actions.clearAll();\n    filtersList.map((filter) => {\n      const isNegativeFilter = filter.key.indexOf('Nin') !== -1;\n      const keyName = isNegativeFilter ? filter.key.split('Nin')[0] : filter.key;\n\n      if (filterConfiguration?.objectKeysList && filterConfiguration?.objectKeysList.includes(keyName)) {\n        this.updateObjectFilter(filter, queryActions);\n      } else {\n        this.updateNonObjectFilter(queryActions, keyName, filter, isNegativeFilter);\n      }\n    });\n\n    queryActions.actions.forceEmitChanges();\n    return queryActions.actions.convertQueriesToObject();\n  }\n\n  updateObjectFilter(filterListItem: any, queryActions: QueryCollectionActions) {\n    queryActions.actions.update(\n      filterListItem.key,\n      filterListItem.values[0].value,\n      QueryCollectionTypeEnum.FILTER,\n      {\n        key: filterListItem.key,\n        objectUniqueKey: true,\n        displayTitle: null,\n        displayValue: null,\n      },\n      false\n    );\n  }\n\n  updateNonObjectFilter(queryActions: QueryCollectionActions, keyName: string, filter: any, isNegativeFilter: boolean) {\n    queryActions.actions.update(\n      keyName,\n      filter.freeText\n        ? arrayToCSV(filter.values.map((item) => item.value))\n        : filter.values.map((item) => item.value).join(','),\n      filter.freeText ? QueryCollectionTypeEnum.FREE_TEXT_FILTER : QueryCollectionTypeEnum.FILTER,\n      {\n        displayTitle: filter.title,\n        displayValue: filter.freeText\n          ? arrayToCSV(filter.values.map((item) => item.title))\n          : filter.values.map((item) => item.title).join(','),\n        key: keyName,\n        operator: isNegativeFilter ? FilterItemOperator.NOT_EQUALS : FilterItemOperator.EQULAS,\n      },\n      false\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterConfiguration } from '../../models/filter.configuration';\nimport { ActionStatus } from './enums/dependency-status.enum';\nimport { Action } from './models/dependency-action.interface';\nimport { DependencyResponse } from './models/DependencyResponse.interface';\n\n/****************************************************************************************************************\n * @description - manage all the initialize calls (dependencies) before call to the first filter count request.\n *                for example when we need to get user preference we will do it before filter count call.\n *                when all dependencies are completed (max time waiting for all dependencies is 2500 ms)\n *                we will do some actions on the dependencies and than call filter count\n *****************************************************************************************************************/\n\n@Injectable()\nexport class ManageFilterActionsService {\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  completeAllDependencies: Subject<DependencyResponse> = new Subject<DependencyResponse>();\n  dependencies: Action[] = [];\n  dependenciesAreReady = false;\n\n  checkIfCompleteAllActions(queryActions: QueryCollectionActions, filterConfig: FilterConfiguration) {\n    if (this.dependencies.length === 0 || !this.dependencies.some((item) => item.status !== ActionStatus.DONE)) {\n      this.dependenciesAreReady = true;\n      this.triggerCompleteAllActions(queryActions, filterConfig);\n    }\n  }\n\n  /**************************************************************************************************\n   * @description executing actions and not waiting to all to finish\n   * @param queryActions - current query collection\n   * @param filterConfig - filter configuration\n   * @param dependencyAction\n   * @param filterPanelComponent\n   **************************************************************************************************/\n  executedActions(\n    queryActions: QueryCollectionActions,\n    filterConfig: FilterConfiguration,\n    dependencyAction: Action[],\n    filterPanelComponent?: any\n  ): void {\n    if (dependencyAction) {\n      dependencyAction.filter((dependency) => {\n        return !dependency.status || dependency.status === ActionStatus.NONE;\n      }).forEach((dependency, index) => {\n        dependency.action(index, this.dependencies, this, filterPanelComponent);\n        dependency.status = ActionStatus.DONE;\n      });\n    }\n  }\n\n  /**************************************************************************************************\n   * @description executing NONE action (action that not yet executed)\n   *              wait until all dependency move to DONE status or 10 tries\n   * @param actions - actions to run\n   * @param queryActions - current query collection\n   * @param filterConfig - filter configuration\n   * @param filterPanelComponent\n   **************************************************************************************************/\n  executedActionsAndWaitForAll(\n    actions: Action[],\n    queryActions: QueryCollectionActions,\n    filterConfig: FilterConfiguration,\n    filterPanelComponent?: any\n  ): void {\n    if (actions) {\n      this.dependencies = actions;\n      actions.filter((dependency) => {\n        return !dependency.status || dependency.status === ActionStatus.NONE;\n      }).forEach((dependency, index) => {\n        dependency.status = ActionStatus.IN_PROGRESS;\n        dependency.action(index, this.dependencies, this, filterPanelComponent);\n      });\n    } else {\n      this.triggerCompleteAllActions(queryActions, filterConfig);\n    }\n  }\n\n  triggerCompleteAllActions(queryActions: QueryCollectionActions, filterConfig: FilterConfiguration) {\n    this.completeAllDependencies.next({\n      dependencies: this.dependencies,\n      queryActions,\n      filterConfig,\n    });\n  }\n\n  completeAction(index: number, response) {\n    this.dependencies[index].responseData = response;\n    this.dependencies[index].status = ActionStatus.DONE;\n  }\n}\n","import { QueryCollectionModel } from '../../models/query-collection.model';\nimport { QueryCollectionTypeEnum } from '../../enums/query-collection-type.enum';\n\nexport class QueryValidation {\n  queries: Map<string, QueryCollectionModel>;\n\n  constructor() {\n    this.queries = new Map<string, QueryCollectionModel>();\n    return new Proxy(\n      { queries: this.queries },\n      {\n        /*******************************************************\n         * @description delete validation\n         *              not allowed to delete PERMANENT typ\n         * @param target - query\n         * @param key - query key\n         ******************************************************/\n        deleteProperty: function (target: QueryValidation, key: string): boolean {\n          if (\n            target.queries.get(key).type !== QueryCollectionTypeEnum.PERMANENT ||\n            (target.queries.get(key)?.extraData && target.queries.get(key)?.extraData?.forceDelete)\n          ) {\n            target.queries.delete(key);\n          }\n          return true;\n        },\n\n        /*********************************************************************\n         * @description check if query value is empty or null -> remove query\n         * @param target - query\n         * @param key - query key\n         * @param queryValue - query value\n         *******************************************************************/\n        set(target: QueryValidation, key: string, queryValue: QueryCollectionModel): boolean {\n          if (\n            !queryValue?.extraData?.allowEmptyValue &&\n            (queryValue.value === '' || queryValue.value === null || queryValue.value === undefined)\n          ) {\n            target.queries.delete(key);\n          } else {\n            /***************************************************\n             * @description check if can set key by priorities\n             *        priorities:\n             *           1) URL\n             *           2) USER_PREFERENCE\n             *           3) DEFAULT\n             *****************************************************/\n            const currentValue = target.queries.get(key) || false;\n            const priorities = [QueryCollectionTypeEnum.URL, QueryCollectionTypeEnum.USER_PREFERENCE];\n            if (\n              !currentValue ||\n              priorities.indexOf((<any>currentValue).type) === -1 ||\n              priorities.indexOf((<any>currentValue).type) >= priorities.indexOf((<any>queryValue).type)\n            ) {\n              if (currentValue && (<any>currentValue).type === QueryCollectionTypeEnum.PERMANENT) {\n                queryValue.type = QueryCollectionTypeEnum.PERMANENT;\n              }\n              target.queries.set(key, queryValue);\n            }\n          }\n          return true;\n        },\n      }\n    );\n  }\n}\n","import { QueryCollectionModel } from '../models/query-collection.model';\n\n/*************************************************************************\n @description - query collection structure\n @param - currentQueries: current collection queries (object of key - value)\n @param - previousQueries: previous queries before last change\n @param - collectionId: collection id\n ************************************************************************/\n\nexport class QueryCollectionEvent {\n  currentQueries: Map<string, QueryCollectionModel>;\n  previousQueries: Map<string, QueryCollectionModel>;\n  collectionId: string;\n  collection: any;\n  changedKeys: string[];\n\n  constructor(\n    id: string,\n    currentQueries: Map<string, QueryCollectionModel>,\n    previousQueries: Map<string, QueryCollectionModel>,\n    changedKeys: string[]\n  ) {\n    this.collectionId = id;\n    this.currentQueries = currentQueries;\n    this.previousQueries = previousQueries;\n    this.changedKeys = changedKeys;\n  }\n}\n","import { Subject, Observable } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { isEqual } from 'lodash';\nimport { QueryCollectionModel } from '../../models/query-collection.model';\nimport { QueryCollectionEvent } from '../../models/query-collection-listener.model';\n\nexport class QueryListener {\n  static event$: Subject<QueryCollectionEvent> = new Subject<QueryCollectionEvent>();\n\n  /************************************************************************************************************\n   * @description trigger next event on query params changed\n   * @param collectionId - collection unique id\n   * @param currentQueries - current queries after updated\n   * @param previousQueries - previous collection queries\n   * @param changedKeys - list of changed keys\n   * @param triggerListeners -  true: trigger changed event, false: do not trigger , null: check if changed\n   ***********************************************************************************************************/\n  static emit(\n    collectionId: string,\n    currentQueries: Map<string, QueryCollectionModel>,\n    previousQueries: Map<string, QueryCollectionModel>,\n    changedKeys: string[],\n    triggerListeners: boolean\n  ): void {\n    if (\n      triggerListeners ||\n      (triggerListeners === null && this.shouldTriggerEmitter(changedKeys, currentQueries, previousQueries))\n    ) {\n      this.event$.next(new QueryCollectionEvent(collectionId, currentQueries, previousQueries, changedKeys));\n    }\n  }\n\n  /****************************************************************************\n   * @description listen to query params changed with filter by collection id\n   * @param collectionId - start listen to collection by collection id\n   **************************************************************************/\n  static listener$(collectionId: string): Observable<QueryCollectionEvent> {\n    return this.event$.asObservable().pipe(\n      filter((obj: QueryCollectionEvent) => collectionId === obj.collectionId),\n      debounceTime(500)\n    );\n  }\n\n  /*********************************************************************************************************\n   * @description check if there are some changes - trigger should be avoided when there are no changes\n   * @param changedKeys - list of changes queries keys\n   * @param currentQueries - current query collection map\n   * @param previousQueries - previous query collection map\n   * @return boolean - true if there are some changes\n   *********************************************************************************************************/\n  static shouldTriggerEmitter(\n    changedKeys: string[],\n    currentQueries: Map<string, QueryCollectionModel>,\n    previousQueries: Map<string, QueryCollectionModel>\n  ): boolean {\n    if (!changedKeys || changedKeys.length === 0) return false;\n    for (let i = 0; i < changedKeys.length; i++) {\n      const currentQueriesItem = currentQueries.get(changedKeys[i]) || null;\n      const previousQueriesItem = previousQueries.get(changedKeys[i]) || null;\n      if (!isEqual(currentQueriesItem, previousQueriesItem)) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { QueryValidation } from '../validation/query-validation';\nimport { QueryListener } from '../listener/query-listener';\nimport { QueryCollectionTypeEnum } from '../../enums/query-collection-type.enum';\nimport { FilterItemOperator } from '../../enums/filter-Item-operator.enum';\nimport { QueryCollectionEvent } from '../../models/query-collection-listener.model';\nimport { Observable } from 'rxjs';\nimport { cloneDeep } from 'lodash';\nimport { ExtraQueryData, QueryCollectionModel } from '../../models/query-collection.model';\nimport { NOT_FILTER_SUFFIX } from '../../consts/query-consts';\nimport {\n  replaceCommaIfNeededForObject,\n  unescapeSpecialCharacters,\n} from '../../../../modules/data-table/filter-panel/list-components/filter-free-text/utils/csv.utils';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class QueryCollectionActions {\n  allCollections?: Map<string, QueryCollectionActions>;\n  queryMap: QueryValidation;\n  queriesChanged: Observable<QueryCollectionEvent>;\n  collectionId: string;\n  defaultQueries?: Record<any, any>;\n  activeLogs?: boolean;\n  numberOfListeners: number; // number of collection listeners\n\n  /*************************************************************************************\n   * @description - all action that can perform on query collection\n   * @method update - Update  key of some collection with value and type\n   * @method delete - Delete map key from collection\n   * @method deleteKeys - Delete map keys from collection\n   * @method updateMulti - Update multi key of some collection with value and type\n   * @method resetToDefault - Reset collection to default queries\n   * @method clear - clear all collection value\n   * @method unsubscribe - Unsubscribe listener from collection\n   * @method convertQueriesToObject - convert queries to object\n   * @method setOperator - set query operator\n   * @method forceEmitChanges - force emitter for all listener\n   *********************************************************************************/\n  actions: {\n    update: (key: string, value: string, type?: QueryCollectionTypeEnum, extraData?: any, force?: boolean) => void;\n    delete: (key: string) => void;\n    deleteKeys: (keys: string[]) => void;\n    updateMulti: (obj: Record<any, any>, type?: QueryCollectionTypeEnum, extraData?: any) => void;\n    resetToDefault: () => void;\n    clearAll: (excludeKeys?: string[]) => void;\n    unsubscribe: () => void;\n    convertQueriesToObject: () => any;\n    setOperator: (queryKey: string, operator: FilterItemOperator) => void;\n    forceEmitChanges: () => void;\n    emptyCollection: () => void;\n    forceDelete: (key: string) => void;\n  };\n\n  constructor(@Inject(String) collectionId: string, allCollections: Map<string, QueryCollectionActions>) {\n    this.allCollections = allCollections;\n    this.collectionId = collectionId;\n    this.queryMap = new QueryValidation();\n    this.queriesChanged = QueryListener.listener$(collectionId);\n    this.numberOfListeners = 1;\n    this.actions = {\n      update: (\n        key: string,\n        value: string,\n        type: QueryCollectionTypeEnum = QueryCollectionTypeEnum.DEFAULT,\n        extraData: any = null,\n        force: boolean = null\n      ) => {\n        this.set(this.collectionId, key, value, type, extraData, force);\n      },\n      delete: (key: string) => {\n        this.delete(this.collectionId, key, true);\n      },\n      deleteKeys: (keys: string[]) => {\n        this.deleteKeys(this.collectionId, keys, true);\n      },\n      updateMulti: (\n        obj: Record<any, any>,\n        type: QueryCollectionTypeEnum = QueryCollectionTypeEnum.DEFAULT,\n        extraData: any = null\n      ) => {\n        this.updateMulti(this.collectionId, obj, type, extraData);\n      },\n      clearAll: (excludeKeys?: string[]) => {\n        this.clearAll(this.collectionId, excludeKeys);\n      },\n      resetToDefault: () => {\n        this.resetToDefault(this.collectionId);\n      },\n      setOperator: (queryKey: string, operator: FilterItemOperator) => {\n        this.setOperator(this.collectionId, queryKey, operator);\n      },\n      unsubscribe: () => {\n        this.unsubscribe();\n      },\n      convertQueriesToObject: (ignoreQueryTypes?: QueryCollectionTypeEnum[]) => {\n        return this.convertQueriesToObject(this.collectionId, ignoreQueryTypes);\n      },\n      forceEmitChanges: () => {\n        return this.forceEmitChanges(this.collectionId);\n      },\n      emptyCollection: () => {\n        return this.emptyCollection(this.collectionId);\n      },\n      forceDelete: (key: string) => {\n        return this.forceDelete(this.collectionId, key);\n      },\n    };\n  }\n\n  emit?(collectionId: string, keys: string[], previousQueries, action: string, triggerListeners: boolean = null) {\n    QueryListener.emit(collectionId, this.queryMap.queries, previousQueries, keys, triggerListeners);\n  }\n\n  /*******************************************************************************\n   * @description  add / update collection with key & value.\n   *               if query exist it will update according to proxy validation.\n   *\n   * @param collectionId - collection id\n   * @param queryKey - key name\n   * @param queryValue - key value\n   * @param queryType - QueryCollectionTypeEnum (default is DEFAULT)\n   * @param extraData - query extra data (displayValue, displayTitle, key, operator)\n   * @param triggerListeners - should trigger listener on change\n   *    1) true - will trigger\n   *    2) false - not trigger\n   *    3) none - trigger if there are some changes\n   ******************************************************************************/\n  set?(\n    collectionId: string,\n    queryKey: string,\n    queryValue: string,\n    queryType: QueryCollectionTypeEnum = QueryCollectionTypeEnum.DEFAULT,\n    extraData: any,\n    triggerListeners: boolean\n  ) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    this.queryMap[queryKey] = new QueryCollectionModel(queryValue, queryType, extraData);\n    this.emit(collectionId, [queryKey], oldQueries, 'SET', triggerListeners);\n  }\n\n  updateMulti?(\n    collectionId: string,\n    keyValueObjectParam: { [key: string]: any },\n    queryCollectionType: QueryCollectionTypeEnum = QueryCollectionTypeEnum.DEFAULT,\n    extraData: ExtraQueryData\n  ) {\n    const keyValueObject = replaceCommaIfNeededForObject(keyValueObjectParam);\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    Object.keys(keyValueObject).forEach((key) => {\n      if (key.indexOf(NOT_FILTER_SUFFIX) !== -1) {\n        const negativeKey = key.split(NOT_FILTER_SUFFIX)[0];\n        if (typeof keyValueObjectParam[key] === 'object' && keyValueObjectParam[key] !== null) {\n          this.setNegativeSingleQuery(collectionId, key, negativeKey, keyValueObjectParam);\n        } else {\n          this.set(\n            collectionId,\n            negativeKey,\n            keyValueObject[key],\n            queryCollectionType,\n            { ...extraData, ...{ operator: FilterItemOperator.NOT_EQUALS, key: negativeKey } },\n            false\n          );\n        }\n      } else {\n        if (typeof keyValueObjectParam[key] === 'object' && keyValueObjectParam[key] !== null) {\n          this.set(\n            collectionId,\n            key,\n            keyValueObjectParam[key]['value'],\n            keyValueObjectParam[key]['type'],\n            keyValueObjectParam[key]['extraData'],\n            false\n          );\n        } else {\n          this.set(collectionId, key, keyValueObject[key], queryCollectionType, extraData, false);\n        }\n      }\n    });\n    this.emit(collectionId, Object.keys(keyValueObject), oldQueries, 'UPDATE MULTI');\n  }\n\n  setNegativeSingleQuery(\n    collectionId: string,\n    navigateKey,\n    navigateWithoutSuffixKey: string,\n    keyValueObjectParam: any\n  ) {\n    this.set(\n      collectionId,\n      navigateWithoutSuffixKey,\n      keyValueObjectParam[navigateKey]['value'],\n      keyValueObjectParam[navigateKey]['type'],\n      {\n        ...keyValueObjectParam[navigateKey]['extraData'],\n        ...{ operator: FilterItemOperator.NOT_EQUALS, key: navigateKey },\n      },\n      false\n    );\n  }\n\n  /**************************************************\n   * @description Clear all not permanent queries\n   * @param collectionId - collection id\n   * @param excludeKeys - exclude remove keys from queries\n   *************************************************/\n  clearAll?(collectionId: string, excludeKeys?: string[]) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    this.queryMap.queries.forEach((query: QueryCollectionModel, key: string) => {\n      if (!excludeKeys || !excludeKeys.includes(key)) {\n        this.delete(collectionId, key);\n      }\n    });\n    this.emit(collectionId, [], oldQueries, 'CLEAR ALL', true);\n  }\n\n  /***********************************************************************\n   * @description delete collection key - not all keys can deleted.\n   *              delete is manage by query validation.\n   *              query with type PERMANENT can't deleted\n   *\n   * @param collectionId - collection id\n   * @param deleteKey - delete key value\n   * @param triggerListeners - should trigger listener on change\n   *    1) true - will trigger\n   *    2) false - not trigger\n   *    3) none - trigger if there are some changes\n   **********************************************************************/\n  delete?(collectionId: string, deleteKey: string, triggerListeners: boolean = null) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    if (this?.queryMap?.queries?.has(deleteKey)) {\n      delete this.queryMap[deleteKey];\n      this.emit(collectionId, [deleteKey], oldQueries, 'DELETE', triggerListeners);\n    }\n  }\n\n  forceDelete?(collectionId: string, deleteKey: string, triggerListeners: boolean = null) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    if (this?.queryMap?.queries?.has(deleteKey)) {\n      const query = this?.queryMap?.queries.get(deleteKey);\n      if (this?.queryMap?.queries.get(deleteKey).extraData) {\n        query.extraData.forceDelete = true;\n      } else {\n        query.extraData = {\n          forceDelete: true,\n        };\n      }\n      this?.queryMap?.queries.set(deleteKey, query);\n      delete this.queryMap[deleteKey];\n      this.emit(collectionId, [deleteKey], oldQueries, 'FORCE DELETE', triggerListeners);\n    }\n  }\n\n  deleteKeys?(collectionId: string, deleteKeys: string[], triggerListeners: boolean = null) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    deleteKeys.forEach((deleteKey) => delete this.queryMap[deleteKey]);\n    this.emit(collectionId, deleteKeys, oldQueries, 'DELETE', triggerListeners);\n  }\n\n  resetToDefault?(collectionId: string) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    const keys = this?.defaultQueries ? this?.defaultQueries : null;\n    if (keys) {\n      this.updateMulti(collectionId, this.defaultQueries, QueryCollectionTypeEnum.DEFAULT, null);\n    }\n\n    this.emit(collectionId, keys ? Object.keys(keys) : [], oldQueries, 'RESET TO DEFAULT');\n  }\n\n  /*********************************************************************************\n   * @description change the query operator status.\n   *              there are two type of operators:\n   *                1) NOT_EQUALS\n   *                2) EQUALS\n   *              if the operator is EQUALS than the key will send to the BE as is\n   *              otherwise the key will concat with Nin\n   *\n   * @param collectionId - collection id\n   * @param queryKey - exist query key\n   * @param operator - new operator\n   **********************************************************************************/\n  setOperator?(collectionId: string, queryKey: string, operator: FilterItemOperator) {\n    if (this.queryMap.queries.has(queryKey)) {\n      const query = this.queryMap.queries.get(queryKey);\n      const extraData = { ...query.extraData, ...{ operator: operator } };\n\n      const oldQueries = cloneDeep(this.queryMap.queries);\n      this.queryMap[queryKey] = new QueryCollectionModel(query.value, query.type, extraData);\n      this.emit(collectionId, [queryKey], oldQueries, 'SET OPERATOR', true);\n    }\n  }\n\n  /********************************************************************\n   * @description  Unsubscribe listener from collection.\n   *               If number of listener is 0 then delete collection\n   * @param collectionId - collection id\n   **********************************************************************/\n  unsubscribe?() {\n    this.numberOfListeners--;\n    if (this.numberOfListeners === 0) {\n      //this.allCollections.delete(collectionId);\n    }\n  }\n\n  /************************************************************************************\n   * @description Get queries from current collection (with collection id)\n   * @param collectionId - current widget collection id\n   * @param ignoreQueryTypes - ignore some query types when convert the map to object\n   *************************************************************************************/\n  convertQueriesToObject?(\n    collectionId: string,\n    ignoreQueryTypes: QueryCollectionTypeEnum[] = []\n  ): Record<string, string> {\n    const queries = this.queryMap.queries;\n    const result: Record<string, string> = {};\n    if (Object.keys(queries).length > 0 || queries.size > 0) {\n      queries.forEach((query: QueryCollectionModel, key: string) => {\n        const keyName = this.calculateKeyName(key, query);\n        if (query.type === QueryCollectionTypeEnum.FREE_TEXT_FILTER) {\n          const val = query.extraData && query.extraData.displayValue ? query.extraData.displayValue : query.value;\n          result[keyName] = unescapeSpecialCharacters(val);\n        } else {\n          if (!ignoreQueryTypes.includes(query.type)) {\n            result[keyName] = unescapeSpecialCharacters(query.value);\n          }\n        }\n      });\n    }\n    return result;\n  }\n\n  /*************************************************************************\n   * @description - calculate BE query key name according to query operator\n   * @param queryKey - current query key name\n   * @param queryCollectionModel - full query information -\n   *************************************************************************/\n  calculateKeyName?(queryKey: string, queryCollectionModel: QueryCollectionModel): string {\n    if (\n      queryKey.indexOf(NOT_FILTER_SUFFIX) === -1 &&\n      queryCollectionModel.extraData &&\n      queryCollectionModel.extraData.operator === FilterItemOperator.NOT_EQUALS\n    ) {\n      return `${queryKey}${NOT_FILTER_SUFFIX}`;\n    }\n    return queryKey;\n  }\n\n  /*******************************************************\n   * @description - force listener event query changed\n   *********************************************************/\n  forceEmitChanges?(collectionId: string) {\n    QueryListener.emit(collectionId, this.queryMap.queries, this.queryMap.queries, [], true);\n  }\n\n  emptyCollection?(collectionId: string) {\n    const oldQueries = cloneDeep(this.queryMap.queries);\n    this.queryMap.queries.forEach((query: QueryCollectionModel, key: string) => {\n      this.forceDelete(collectionId, key);\n    });\n    this.emit(collectionId, [], oldQueries, 'EMPTY COLLECTION', true);\n  }\n}\n","import { QueryCollectionActions } from '../actions/query-collection-actions';\n\nexport class QueryCollectionLogs {\n  constructor(private queryCollectionActions: QueryCollectionActions) {}\n\n  /********************************************************\n   * @description query collection console\n   * @param msg - message to print\n   * @param collectionId - collection id (should be unique)\n   *******************************************************/\n  log(msg: string, collectionId: string) {\n    const newQueries = this.queryCollectionActions.actions.convertQueriesToObject();\n    console.log(`${msg}, collection id: ${collectionId}, current queries: ${JSON.stringify(newQueries)}`);\n  }\n}\n","import { QueryCollectionActions } from '../actions/query-collection-actions';\nimport { QueryCollectionLogs } from '../logs/query-collection-logs';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class QueryActions {\n  /***************************************************************************\n   @var collections : all application collection - each collection has unique id.\n   @var queryCollectionLogs : application query log\n   ****************************************************************************/\n  collections: Map<string, QueryCollectionActions>;\n  queryCollectionLogs: QueryCollectionLogs;\n\n  constructor() {\n    this.collections = new Map<string, QueryCollectionActions>();\n  }\n\n  /************************************************************************************************\n   * @description register component to collection with unique id\n   *              return existing collection if there is collection with the same otherwise\n   *              create new collection\n   * @param collectionId - collection id\n   * @param activeLogs - should print action to console\n   * @param defaultQueries - object of key:value of default values\n   ************************************************************************************************/\n  register(collectionId: string, activeLogs: boolean, defaultQueries?: Record<any, any>): QueryCollectionActions {\n    if (this.collections.has(collectionId)) {\n      this.collections.get(collectionId).numberOfListeners++;\n      if (defaultQueries) {\n        this.collections.get(collectionId).defaultQueries = defaultQueries;\n      }\n      return this.collections.get(collectionId);\n    }\n\n    this.collections.set(collectionId, new QueryCollectionActions(collectionId, this.collections));\n    if (defaultQueries) {\n      this.collections.get(collectionId).defaultQueries = defaultQueries;\n      this.collections.get(collectionId).actions.updateMulti(defaultQueries);\n      this.queryCollectionLogs?.log('SET DEFAULT', collectionId);\n    }\n    this.queryCollectionLogs = activeLogs ? new QueryCollectionLogs(this.collections.get(collectionId)) : null;\n    return this.collections.get(collectionId);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { QueryActions } from '../actions/query-actions';\nimport { QueryCollectionActions } from '../actions/query-collection-actions';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class QueryRegister {\n  constructor(private queryStringCollection: QueryActions) {}\n\n  /**\n   * current collection id - should be unique ( if not unique it will register to exist collection)\n   */\n  collectionId: string;\n\n  /**\n   * event that trigger when there is some queries change in the collection\n   */\n  queryParamsChanged: Subject<any>;\n\n  /**\n   * all action that can run on the current collection\n   */\n  queriesCollection: QueryCollectionActions;\n\n  /**\n   * unsubscribe component from collection\n   */\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  /********************************************************\n   * @description Register / Assign to exist QS collection\n   * @param collectionId - collection id (should be unique)\n   * @param activeLogs - should print log to console\n   * @param defaultQueries - default collection queries\n   *******************************************************/\n  register(collectionId: string, activeLogs: boolean, defaultQueries?: Record<string, any>): QueryCollectionActions {\n    this.collectionId = collectionId;\n    this.queriesCollection = this.queryStringCollection.register(collectionId, activeLogs, defaultQueries);\n    return {\n      numberOfListeners: this.queryStringCollection.collections.get(collectionId).numberOfListeners,\n      queryMap: this.queriesCollection.queryMap,\n      queriesChanged: this.queriesCollection.queriesChanged,\n      collectionId: this.collectionId,\n      actions: this.queriesCollection.actions,\n      defaultQueries: this.queriesCollection.defaultQueries,\n      setNegativeSingleQuery: this.queriesCollection.setNegativeSingleQuery,\n    };\n  }\n}\n","export type ScopeParentsEvent = {\n  [key in ScopePanelFilters]: boolean;\n};\nexport enum ScopePanelFilters {\n  IncludeParents = 'includeParents',\n  IncludeChildren = 'includeChildren',\n}\n","import { Injectable } from '@angular/core';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { DropDownItem } from '../../../../form-controls/drop-down/public-api';\nimport { ScopeParentsEvent } from '../../enums/scope-pane-filters.enum';\n\n@Injectable()\nexport class FilterScopeDropdownService {\n  /*********************************************************************\n   * @description - get dropdown title according to the filter value\n   * @param includeChildren\n   * @param includeParents\n   *********************************************************************/\n  getDropdownTitle(includeChildren: boolean, includeParents: boolean): string {\n    if (includeChildren && includeParents) {\n      return 'All related scopes';\n    }\n    if (includeChildren) {\n      return 'This scope and its descendants';\n    }\n    if (includeParents) {\n      return 'This scope and its ancestors';\n    }\n    return 'Only this scope';\n  }\n\n  /************************************************************************************\n   * @description - on user dropdown change event\n   *                updating query collection value\n   * @param dropDownSelectedState - current dropdown status (include changedItems)\n   * @param queryActions - query collection actions\n   *************************************************************************************/\n  scopeFilterChanged(dropDownSelectedState, queryActions) {\n    dropDownSelectedState.changedItems.forEach((item) => {\n      if (!item.selected) {\n        queryActions.actions.delete(item.value, QueryCollectionTypeEnum.DEFAULT, false);\n      } else {\n        queryActions.actions.update(item.value, item.selected, QueryCollectionTypeEnum.DEFAULT, null, false);\n      }\n    });\n    queryActions.actions.forceEmitChanges();\n  }\n\n  /************************************************************\n   * @description - update default selected dropdown options\n   * @param items - dropdown items\n   * @param queryActions - query collection actions\n   * @param defaultSelection - default selected items\n   **************************************************************/\n  extractFilterFromDropdown(items: DropDownItem[] | DropDownItem, queryActions, defaultSelection): ScopeParentsEvent {\n    items = Array.isArray(items) ? items : [items];\n\n    return items.reduce((map, dropdownItem) => {\n      if (queryActions.queryMap.queries.has(dropdownItem.value)) {\n        map[dropdownItem.value] = queryActions.queryMap.queries.get(dropdownItem.value).value;\n      } else {\n        map[dropdownItem.value] = defaultSelection[dropdownItem.value];\n        if (defaultSelection[dropdownItem.value]) {\n          queryActions.actions.update(\n            dropdownItem.value,\n            defaultSelection[dropdownItem.value],\n            QueryCollectionTypeEnum.DEFAULT,\n            false\n          );\n        } else {\n          queryActions.actions.delete(dropdownItem.value, false);\n        }\n      }\n      return map;\n    }, {} as ScopeParentsEvent);\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { DropDownItem } from '../../../../form-controls/drop-down/models/drop-down-item.interface';\nimport { SkinOptions } from '../../../../form-controls/drop-down/enums/skin-options.enum';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { DropDownMatMenuPanelStyle } from '../../../../form-controls/drop-down/models/drop-down-mat-menu-panel-style.interface';\nimport { FilterScopeDropdownService } from '../../../filter-panel/list-components/filter-scope-dropdown/filter-scope-dropdown.service';\nimport { ScopePanelFilters, ScopeParentsEvent } from '../../enums/scope-pane-filters.enum';\n\n/*******************************************************************************************\n * @description extra dropdown in exclusion and blacklist tabs.\n *              user can select one or two scope options (IncludeChildren, IncludeParents)\n ******************************************************************************************/\n@Component({\n  selector: 'sing-filter-scope-dropdown',\n  templateUrl: './filter-scope-dropdown.component.html',\n  styleUrls: ['./filter-scope-dropdown.component.scss'],\n})\nexport class FilterScopeDropdownComponent implements OnInit {\n  skinOptions = SkinOptions;\n  currentFilter: ScopeParentsEvent;\n  queryActions: QueryCollectionActions;\n\n  @Input() isMultiSelect = true;\n  @Input() defaultSelection: any;\n  @Input() dropdownWidth = '245px';\n  @Input() menuStyle: DropDownMatMenuPanelStyle = { 'max-width': '245px' };\n  @Input() items: DropDownItem[] = [\n    {\n      value: ScopePanelFilters.IncludeChildren,\n      title: 'This scope and its descendants',\n      automationId: 'IncludeChildren',\n    },\n    { value: ScopePanelFilters.IncludeParents, title: 'This scope and its ancestors', automationId: 'IncludeParents' },\n  ];\n\n  @Input()\n  set queryCollectionActions(queryActions: QueryCollectionActions) {\n    this.queryActions = queryActions;\n  }\n\n  constructor(private filterScopeDropdownService: FilterScopeDropdownService) {}\n\n  ngOnInit(): void {\n    if (this.defaultSelection) {\n      this.items.forEach((item) => (item.selected = !!this.defaultSelection[item.value]));\n    }\n    this.currentFilter = this.filterScopeDropdownService.extractFilterFromDropdown(\n      this.items,\n      this.queryActions,\n      this.defaultSelection\n    );\n  }\n\n  scopeFilterChanged(dropDownSelectedState) {\n    this.filterScopeDropdownService.scopeFilterChanged(dropDownSelectedState, this.queryActions);\n  }\n\n  getDropdownTitle(): string {\n    const includeChildren = this.queryActions.queryMap.queries.has('includeChildren')\n      ? JSON.parse(this.queryActions.queryMap.queries.get('includeChildren').value)\n      : null;\n\n    const includeParents = this.queryActions.queryMap.queries.has('includeParents')\n      ? JSON.parse(this.queryActions.queryMap.queries.get('includeParents').value)\n      : null;\n\n    return this.filterScopeDropdownService.getDropdownTitle(includeChildren, includeParents);\n  }\n}\n","<sing-drop-down\n  [dropDownOptions]=\"{\n    skinOptions: skinOptions.SecondaryLink,\n    menuStyle: menuStyle,\n    isMultipleSelection: isMultiSelect,\n    placeholder: 'Only this scope',\n    capitalize: false,\n    triggerTitle: getDropdownTitle()\n  }\"\n  [items]=\"items\"\n  [ngStyle]=\"{'width': dropdownWidth}\"\n  (selectionChanged)=\"scopeFilterChanged($event)\"\n>\n</sing-drop-down>\n","import { Injectable } from '@angular/core';\nimport { cloneDeep, isArray, isBoolean } from 'lodash';\nimport { QueryCollectionModel } from '../../../../../../services/query-collection/models/query-collection.model';\nimport { csvToArray } from '../../../../filter-panel/list-components/filter-free-text/utils/csv.utils';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterItemOperator } from '../../../../../../services/query-collection/enums/filter-Item-operator.enum';\n\n@Injectable()\nexport class FilterSearchBarItemService {\n  /****************************************************************************\n   * @description calculate display value after user remove item from list\n   *              there are two option. the first is when remove\n   *              item when the items are from  CSV type\n   *              the second when the items are list of strings\n   *\n   * @param query: query from query collection\n   * @param index: index place to remove\n   ******************************************************************************/\n  removeItemDisplayValue(query: QueryCollectionModel, index: number): string {\n    let displayValue = null;\n    if (query.extraData?.displayValue) {\n      displayValue = isArray(query.extraData?.displayValue)\n        ? query.extraData?.displayValue\n        : csvToArray(query.extraData?.displayValue);\n      displayValue.splice(index, 1);\n    }\n    return displayValue;\n  }\n\n  /******************************************************************************************************\n   * @description calculate query new value after user remove item from list\n   *              there are two option. the first is when remove item when the items are from  CSV type\n   *              the second when the items are list of strings\n   *\n   * @param query: query from query collection\n   * @param index: index place to remove\n   ******************************************************************************************************/\n  removeItemValue(query: QueryCollectionModel, index: number): string[] {\n    const values = csvToArray(query.value);\n    values.splice(index, 1);\n    return values;\n  }\n\n  /****************************************************************\n   * @description calculate query bar item on initialize query\n   * @param query - query collection item\n   * @return list of values (string)\n   ****************************************************************/\n  setupQuery(query: QueryCollectionModel): string[] {\n    return query.extraData && query.extraData.displayValue\n      ? isArray(query.extraData.displayValue)\n        ? query.extraData.displayValue\n        : csvToArray(query.extraData.displayValue)\n      : isBoolean(query.value)\n      ? csvToArray(<string>query.value)\n      : isArray(query.value)\n      ? query.value\n      : csvToArray(query.value);\n  }\n\n  /******************************************************************\n   * @description - calculate remove one value from free text list\n   * @param values - list of array with free text values\n   * @param index - index place to remove\n   *****************************************************************/\n  calculateRemoveValue(values: string[], index): string {\n    values.splice(index, 1);\n    return values\n      .map((str: string) => {\n        str = str.indexOf(',') !== -1 ? `\"${str}\"` : str.replace(/['\"]+/g, '');\n        return str;\n      })\n      .join(',');\n  }\n\n  removeValueFromObject(\n    query: QueryCollectionModel,\n    queryActions: QueryCollectionActions,\n    index: number,\n    removeAllNestedFilter?: boolean\n  ) {\n    const fullObjectQuery = queryActions.queryMap.queries.get(query.extraData.key);\n    if (fullObjectQuery) {\n      const numberOfExisingValues = query.value.split(',').length;\n      const updatingValues = this.gettingUpdatedQueryValues(\n        query,\n        fullObjectQuery,\n        index,\n        numberOfExisingValues,\n        removeAllNestedFilter\n      );\n      const updatingDisplayValues = this.gettingUpdatedQueryDisplay(\n        query,\n        fullObjectQuery,\n        index,\n        numberOfExisingValues,\n        removeAllNestedFilter\n      );\n      const updatingDisplayTitles = this.gettingUpdatedQueryTitles(\n        query,\n        fullObjectQuery,\n        numberOfExisingValues,\n        removeAllNestedFilter\n      );\n\n      if (Object.keys(updatingValues).length === 0) {\n        queryActions.actions.delete(query.extraData.key);\n      } else {\n        queryActions.actions.update(query.extraData.key, JSON.stringify(updatingValues), fullObjectQuery.type, {\n          displayValue: updatingDisplayValues ? JSON.stringify(updatingDisplayValues) : null,\n          displayTitle: updatingDisplayTitles ? JSON.stringify(updatingDisplayTitles) : null,\n          key: fullObjectQuery.extraData.key,\n          objectUniqueKey: true,\n        });\n      }\n    }\n  }\n\n  /*****************************************************************************\n   * @description - calculate the full query values after removing one value\n   * @param query - current query with the remove action\n   * @param fullQuery - full object query\n   * @param index - index of remove option\n   * @param numberOfExisingValues - remains key value options (before remove)\n   * @param removeAllNestedFilter - remove all nested filter (default = false)\n   ****************************************************************************/\n  gettingUpdatedQueryValues(\n    query: QueryCollectionModel,\n    fullQuery: QueryCollectionModel,\n    index: number,\n    numberOfExisingValues: number,\n    removeAllNestedFilter?: boolean\n  ): any {\n    const fullObjectQueryValues = JSON.parse(fullQuery.value);\n    if (numberOfExisingValues > 1 && !removeAllNestedFilter) {\n      const updatingValues = query.value.split(',');\n      updatingValues.splice(index, 1);\n      fullObjectQueryValues[<string>query.extraData.objectUniqueKey] = updatingValues;\n    } else {\n      delete fullObjectQueryValues[<string>query.extraData.objectUniqueKey];\n    }\n    return fullObjectQueryValues;\n  }\n\n  /*****************************************************************************\n   * @description - calculate the full query display after removing one value\n   * @param query - current query with the remove action\n   * @param fullQuery - full object query\n   * @param index - index of remove option\n   * @param numberOfExisingValues - remains key value options (before remove)\n   * @param removeAllNestedFilter - remove all nested filter (default = false)\n   ****************************************************************************/\n  gettingUpdatedQueryDisplay(\n    query: QueryCollectionModel,\n    fullQuery: QueryCollectionModel,\n    index: number,\n    numberOfExisingValues: number,\n    removeAllNestedFilter?: boolean\n  ): any {\n    if (!query?.extraData?.displayValue) return null;\n    const fullDisplayObjectQueryValues = JSON.parse(fullQuery.extraData.displayValue);\n    if (numberOfExisingValues > 1 && !removeAllNestedFilter) {\n      const updatingValues = query.extraData.displayValue.split(',');\n      updatingValues.splice(index, 1);\n      fullDisplayObjectQueryValues[<string>query.extraData.objectUniqueKey] = updatingValues;\n    } else {\n      delete fullDisplayObjectQueryValues[<string>query.extraData.objectUniqueKey];\n    }\n    return fullDisplayObjectQueryValues;\n  }\n\n  /*******************************************************************************\n   * @description - return updating titles after remove option from object filter\n   * @param query - current query\n   * @param fullQuery - full query filter with all sub filter information\n   * @param numberOfExisingValues - remains key value options (before remove)\n   * @param removeAllNestedFilter - remove all nested filter (default = false)\n   ****************************************************************************/\n  gettingUpdatedQueryTitles(\n    query: QueryCollectionModel,\n    fullQuery: QueryCollectionModel,\n    numberOfExisingValues: number,\n    removeAllNestedFilter?: boolean\n  ) {\n    if (!fullQuery?.extraData?.displayTitle) return null;\n    const titles = JSON.parse(fullQuery.extraData.displayTitle);\n    if (numberOfExisingValues === 1 || removeAllNestedFilter) {\n      delete titles[<string>query.extraData.objectUniqueKey];\n    }\n    return titles;\n  }\n\n  /*******************************************************************\n   * @description - changing the operator type from search bar filter\n   * @param query - query with the changing operator\n   * @param queryCollection - query collection actions\n   * @param changeToOperator - selected operator to change to\n   *****************************************************************/\n  changeObjectFilterOperator(\n    query: QueryCollectionModel,\n    queryCollection: QueryCollectionActions,\n    changeToOperator: FilterItemOperator\n  ) {\n    if (!query.extraData.objectUniqueKey) {\n      if (query.extraData?.operator === FilterItemOperator.EQULAS) {\n        queryCollection.actions.setOperator(query.extraData.key, FilterItemOperator.NOT_EQUALS);\n      } else {\n        queryCollection.actions.setOperator(query.extraData.key, FilterItemOperator.EQULAS);\n      }\n    } else {\n      const fullObjectFilter = queryCollection.queryMap.queries.get(query.extraData.key);\n\n      let fullObjectFilterValues = JSON.parse(fullObjectFilter.value);\n      let fullObjectFilterDisplayValues = fullObjectFilter?.extraData?.displayValue\n        ? JSON.parse(fullObjectFilter.extraData.displayValue)\n        : null;\n      let fullObjectFilterDisplayTitle = fullObjectFilter?.extraData?.displayTitle\n        ? JSON.parse(fullObjectFilter.extraData.displayTitle)\n        : null;\n\n      if (changeToOperator === FilterItemOperator.EQULAS) {\n        const newKeyName =\n          (<string>query.extraData.objectUniqueKey).indexOf('Nin') !== -1\n            ? (<string>query.extraData.objectUniqueKey).split('Nin')[0]\n            : `${query.extraData.objectUniqueKey}Nin`;\n\n        fullObjectFilterValues = this.changeObjectKey(\n          fullObjectFilterValues,\n          <string>query.extraData.objectUniqueKey,\n          newKeyName\n        );\n        fullObjectFilterDisplayValues = this.changeObjectKey(\n          fullObjectFilterDisplayValues,\n          <string>query.extraData.objectUniqueKey,\n          newKeyName\n        );\n        fullObjectFilterDisplayTitle = this.changeObjectKey(\n          fullObjectFilterDisplayTitle,\n          <string>query.extraData.objectUniqueKey,\n          newKeyName\n        );\n\n        queryCollection.actions.update(query.extraData.key, JSON.stringify(fullObjectFilterValues), query.type, {\n          displayTitle: fullObjectFilterDisplayTitle ? JSON.stringify(fullObjectFilterDisplayTitle) : null,\n          displayValue: fullObjectFilterDisplayValues ? JSON.stringify(fullObjectFilterDisplayValues) : null,\n          key: query.extraData.key,\n          operator: changeToOperator,\n          objectUniqueKey: true,\n        });\n      }\n    }\n  }\n\n  /*******************************************************************\n   * @description - changing the operator type from search bar filter\n   * @param objectToChange - object with the old key\n   * @param oldKey - old key name\n   * @param newKey - new key name\n   *****************************************************************/\n  changeObjectKey(objectToChange, oldKey, newKey) {\n    if (objectToChange) {\n      const otherKeys = cloneDeep(objectToChange);\n      delete otherKeys[oldKey];\n\n      const changedKey = objectToChange[oldKey];\n      return { ...{ [newKey]: changedKey }, ...otherKeys };\n    }\n    return objectToChange;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {\n  removeApostropheReplacementIfNeeded,\n  removeCommaReplacementIfNeeded,\n} from '../../../../modules/data-table/filter-panel/list-components/filter-free-text/utils/csv.utils';\n\n@Pipe({\n  name: 'displaySpecialCharacters',\n})\nexport class DisplaySpecialCharactersPipe implements PipeTransform {\n  transform(text: string): any {\n    let output = removeApostropheReplacementIfNeeded(text);\n    output = removeCommaReplacementIfNeeded(output);\n    return output;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { cloneDeep } from 'lodash';\nimport { FilterSearchBarItemService } from '../../../../filter-panel/list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.service';\nimport { QueryCollectionModel } from '../../../../../../services/query-collection/models/query-collection.model';\nimport { FilterItemOperator } from '../../../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { csvToArray } from '../../filter-free-text/utils/csv.utils';\n\n@Component({\n  selector: 'sing-filter-search-bar-item-core',\n  templateUrl: './filter-search-bar-item.component.html',\n  styleUrls: ['./filter-search-bar-item.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterSearchBarItemComponent {\n  constructor(private filterSearchBarItemService: FilterSearchBarItemService) {}\n\n  @Input() queryActions: QueryCollectionActions;\n\n  /******************************************************************************\n   * @description: each filter query will display on the search bar component\n   *               when each one is independent\n   * @param query - QueryCollectionModel\n   ******************************************************************************/\n  @Input()\n  set queryModel(query: QueryCollectionModel) {\n    this.query = cloneDeep(query);\n    this.filterQueryValues = this.filterSearchBarItemService.setupQuery(this.query);\n  }\n\n  filterQueryValues: string[] = [];\n  filterOperatorEnum = FilterItemOperator;\n  query: QueryCollectionModel;\n\n  /**************************************************************************************************\n   * @description:  when removing only one value from a multi select filter (when clicking the inner X)\n   *                If this is the last value - we need to remove the whole filter model.\n   * @param event\n   * @param query: QueryCollectionModel\n   * @param index: number\n   ****************************************************************************************************/\n  removeValue(event, query: QueryCollectionModel, index: number) {\n    event.stopPropagation();\n    if (!query?.extraData?.objectUniqueKey) {\n      const values: string[] = this.filterSearchBarItemService.removeItemValue(this.query, index);\n      if (values.length === 0) {\n        this.removeFilter(event, query);\n      } else {\n        const updatedDisplayValue = this.filterSearchBarItemService.removeItemDisplayValue(this.query, index);\n        const filterValuesWithoutIndex = this.filterSearchBarItemService.calculateRemoveValue(\n          csvToArray(this.query.value),\n          index\n        );\n        this.queryActions.actions.update(\n          query.extraData.key,\n          filterValuesWithoutIndex,\n          query.type,\n          {\n            displayTitle: query.extraData ? query.extraData.displayTitle : null,\n            displayValue: updatedDisplayValue,\n            operator: query.extraData.operator,\n          },\n          true\n        );\n      }\n    } else {\n      event.stopPropagation();\n      this.filterSearchBarItemService.removeValueFromObject(query, this.queryActions, index);\n    }\n  }\n\n  /********************************************************************************\n   * @description: When removing the whole filter (with all its value)\n   *               trigger update collection key with null value\n   *               when update value with null the collection validation will delete the key\n   * @param event\n   * @param {QueryCollectionModel} query\n   *******************************************************************************/\n  removeFilter(event, query: QueryCollectionModel) {\n    event.stopPropagation();\n    if (!query?.extraData?.objectUniqueKey) {\n      this.queryActions.actions.delete(query.extraData.key);\n      this.queryActions.actions.deleteKeys(query.extraData.queriesDependOn);\n    } else {\n      this.filterSearchBarItemService.removeValueFromObject(query, this.queryActions, 0, true);\n    }\n  }\n\n  /*******************************************************************\n   * @description - changing the operator type from search bar filter\n   * @param event - click event\n   * @param query - query with the changing operator\n   *****************************************************************/\n  changeOperator(event, query: QueryCollectionModel) {\n    event.stopPropagation();\n    let newOperator;\n    if (!query?.extraData?.operator) {\n      newOperator = FilterItemOperator.NOT_EQUALS;\n    } else {\n      newOperator =\n        query.extraData.operator !== FilterItemOperator.NOT_EQUALS\n          ? FilterItemOperator.NOT_EQUALS\n          : FilterItemOperator.EQULAS;\n    }\n    this.filterSearchBarItemService.changeObjectFilterOperator(query, this.queryActions, newOperator);\n  }\n}\n","<div id=\"filter-holder\" class=\"holder\">\n  <i\n    class=\"mgmt-not-equal\"\n    *ngIf=\"query?.extraData?.operator === filterOperatorEnum.NOT_EQUALS\"\n    (click)=\"changeOperator($event, query)\"\n  ></i>\n  <div [attr.data-mgmtAutomationId]=\"'key_' + query?.extraData?.displayTitle | displaySpecialCharacters\" class=\"key\">\n    {{ query?.extraData?.displayTitle | displaySpecialCharacters }}\n  </div>\n  <div class=\"value-holder\">\n    <div\n      class=\"value\"\n      [ngClass]=\"{ 'hide-close': filterQueryValues.length === 1 }\"\n      *ngFor=\"let filterQueryValue of filterQueryValues; let i = index\"\n      [attr.data-mgmtAutomationId]=\"'RemoveFilterValue_' + filterQueryValue | displaySpecialCharacters\"\n      (click)=\"removeValue($event, query, i)\"\n    >\n      <div\n        class=\"text-value ellipsis\"\n        singEllipsis\n        [attr.data-mgmtAutomationId]=\"\n          'filter_search_bar_item_' +\n          (query?.extraData?.displayTitle | displaySpecialCharacters) +\n          '_' +\n          (filterQueryValue | displaySpecialCharacters) +\n          (query?.extraData?.operator === filterOperatorEnum.NOT_EQUALS ? '_not_equals' : '')\n        \"\n      >\n        {{ filterQueryValue | displaySpecialCharacters }}\n      </div>\n    </div>\n  </div>\n  <i\n    class=\"remove-button mgmt-x\"\n    (click)=\"removeFilter($event, query)\"\n    [attr.data-mgmtAutomationId]=\"'RemoveFilterItem_' + query.extraData.key\"\n  ></i>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { QueryCollectionModel } from '../../../../../services/query-collection/models/query-collection.model';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterFreeTextItem } from '../../../filter-panel/list-components/models/filter-free-text-item.model';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { FilterService } from '../../services/filter-service/filter.service';\nimport { Subject } from 'rxjs';\n\n@Component({\n  selector: 'sing-filter-search-bar',\n  templateUrl: './filter-search-bar.component.html',\n  styleUrls: ['./filter-search-bar.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterSearchBarComponent implements OnDestroy {\n  @Output() loadedSetCleared = new EventEmitter<any>();\n\n  @Input()\n  set queryCollectionActions(queryActions: QueryCollectionActions) {\n    this.queryActionsCollection = queryActions;\n  }\n\n  get freeTextKeysHash(): Record<any, any> {\n    return this._freeTextKeysHash;\n  }\n\n  @Input()\n  set freeTextKeysHash(value: Record<any, any>) {\n    this._freeTextKeysHash = value;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  get loadedSet(): string {\n    return this._loadedSet;\n  }\n\n  @Input()\n  set loadedSet(value: string) {\n    this._loadedSet = value;\n  }\n\n  @Input()\n  set queryCollectionModels(value: QueryCollectionModel[]) {\n    this.searchBarFilters = value;\n  }\n\n  @Input()\n  set tagsData(value: { [key: string]: string[] }) {\n    if (!value) {\n      return;\n    }\n    const arr = [];\n    Object.keys(value).forEach((key) => {\n      arr.push({\n        key: key,\n        title: key,\n        values: value[key].map((item) => {\n          return {\n            title: item,\n            key: item,\n            selected: true,\n          };\n        }),\n      });\n    });\n    this._tagsData = arr;\n  }\n\n  constructor(private filterService: FilterService) {}\n\n  @Input() loadedSetName: string = null;\n\n  @Input()\n  freeTextItems: FilterFreeTextItem[];\n\n  queryActionsCollection: QueryCollectionActions;\n\n  private _analyticsCategory: string;\n  private _freeTextKeysHash: Record<any, any>;\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  private _loadedSet: string;\n  _tagsData: any[] = [];\n  selectedFilters: FilterItemModel[];\n  uiFilterSearchBarCollection: QueryCollectionActions;\n  searchBarFilters: QueryCollectionModel[];\n\n  /********************************************************************************\n   @description clear search filters - clear all query params (not PERMANENT type)\n   ********************************************************************************/\n  clearSearch() {\n    this.queryActionsCollection?.actions?.clearAll(['countsFor']);\n    this._loadedSet = null;\n    this.loadedSetCleared.emit();\n  }\n\n  ngOnDestroy() {\n    this.uiFilterSearchBarCollection?.actions?.unsubscribe();\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n}\n","<div class=\"s1-placeholder\"\n     *ngIf=\"searchBarFilters?.length === 0\">\n  Select filters…\n</div>\n\n<div class='loaded-filter'\n     [attr.data-mgmtAutomationId]=\"'saved_filter_name'\"\n     *ngIf=\"searchBarFilters?.length > 0\">\n  {{ loadedSetName }}\n</div>\n\n<div class=\"filter-holder\"\n     *ngIf=\"freeTextItems.length > 0 || _tagsData.length > 0 || searchBarFilters?.length > 0\">\n<!--  <sol-filter-search-bar-item-core-->\n<!--    [queryActions]='queryActionsCollection'-->\n<!--    *ngFor=\"let tagItem of _tagsData\"-->\n<!--    [query]=\"tagItem\"-->\n<!--  ></sol-filter-search-bar-item-core>-->\n\n    <sing-filter-search-bar-item-core\n      *ngFor=\"let searchBarFilter of searchBarFilters\"\n      [queryActions]='queryActionsCollection'\n      [queryModel]=\"searchBarFilter\"\n    ></sing-filter-search-bar-item-core>\n\n\n  <div class=\"clear-button\"\n       [attr.data-mgmtAutomationId]=\"'clear_filter_btn'\"\n       *ngIf=\"selectedFilters?.length > 0 || searchBarFilters.length > 0\"\n       (click)=\"clearSearch(); $event.stopPropagation();\">\n    <i class=\"mgmt-x\"></i>\n  </div>\n</div>\n","import { TimeRange } from './time-range';\nimport { TimeTitle } from './time-consts';\nimport {\n  getDate,\n  getDateUtc,\n  getStartOf,\n  subtractDurationTime\n} from '../../../../../../utils/date-time/date-time.util';\nimport { SelectedRangeDateModel } from '../../../../../form-controls/range-datepicker/model/selected-range-date-model.interface';\n\n/**\n * Gets time title and returns the time range object\n * @param {DVTimeTitle} timeTitle\n * @returns {DVTimeRange}\n */\nexport function convertTimeTitle(timeTitle: TimeTitle): TimeRange {\n  const from = getDateFromOption(timeTitle);\n  const to = getDateUtc().valueOf();\n  return getTimeRangeObj(from, to);\n}\n\n/**\n * Creates the date object only from the time title\n * @param {DVTimeTitle} option\n */\nexport function getDateFromOption(option: TimeTitle): number {\n  const recentDataRetention = getRecentDataRetention();\n  let afterDateChange = subtractDurationTime(getDate(), recentDataRetention, 'minute');\n\n  switch (option) {\n    case 'Recent':\n    case 'Last Hour':\n      // using data from server\n      afterDateChange = subtractDurationTime(getDate(), 60, 'minute');\n      break;\n    case 'Today':\n      // set to 12:00 am today\n      afterDateChange = getStartOf(getDate(), 'day');\n      break;\n    case 'Last 48 Hours':\n      // now - 48 hours\n      afterDateChange = subtractDurationTime(getDate(), 48, 'hour');\n      break;\n    case 'This Month':\n      // set to the first of this month, 12:00 am\n      afterDateChange = getStartOf(getDate(), 'month');\n      break;\n    case 'Last 30 Days':\n      // now - 30 days\n      afterDateChange = subtractDurationTime(getDate(), 30, 'day');\n      break;\n    case 'Last 7 Days':\n      // now - 7 days\n      afterDateChange = subtractDurationTime(getDate(), 7, 'day');\n      break;\n    case 'Last 24 Hours':\n      // now - 24 hours\n      afterDateChange = subtractDurationTime(getDate(), 24, 'hour');\n      break;\n    case 'Last 2 Months':\n      // now - 2 month\n      afterDateChange = subtractDurationTime(getDate(), 2, 'month');\n      break;\n    case 'Last 3 Months':\n      // now - 3 month\n      afterDateChange = subtractDurationTime(getDate(), 3, 'month');\n      break;\n    case 'Last Year':\n      // now - 1 year\n      afterDateChange = subtractDurationTime(getDate(), 1, 'year');\n      break;\n  }\n  return getDateUtc(afterDateChange).valueOf();\n}\n\n/**\n * takes the from time selected , add hh:mm\n * returns local time\n * @returns {any}\n */\nexport function getLocalFromDate(model: SelectedRangeDateModel): number {\n  return (\n    getDate(model.dateModel.beginJsDate)\n      .add(+model.fromHours, 'hour')\n      .add(+model.fromMinute, 'minute')\n      .unix() * 1000\n  );\n}\n\n/**\n * takes the from time selected and add hh:mm\n * @returns {any}\n */\nexport function getLocalToDate(model: SelectedRangeDateModel): number {\n  return (\n    getDate(model.dateModel.endJsDate)\n      .add(+model.toHours, 'hour')\n      .add(+model.toMinute, 'minute')\n      .utc()\n      .unix() * 1000\n  );\n}\n\n/**\n * Gets the recentDataRetention from the store\n * @returns {string}\n */\nexport function getRecentDataRetention(): number {\n  return 60;\n}\n\n/**\n * Returns the proper object of time range\n * @param from\n * @param to\n * @param localize\n */\nexport function getTimeRangeObj(from, to, localize = false): TimeRange {\n  let timeString = `${getDate(from).format('DD.MM.YYYY HH:mm')} to ${getDate(to).format('DD.MM.YYYY HH:mm')}`;\n  // can be written better?\n  if (localize) {\n    timeString = `${getDate(from).local().format('DD.MM.YYYY HH:mm')} to ${getDate(to)\n      .local()\n      .format('DD.MM.YYYY HH:mm')}`;\n  }\n  return {\n    from,\n    to,\n    timeString,\n  };\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TIME_OPTIONS, TimeTitle } from './model/time-consts';\nimport { TimeRange, TimeRangeAndTitle } from './model/time-range';\nimport { convertTimeTitle, getLocalFromDate, getLocalToDate, getTimeRangeObj } from './model/time-utils';\nimport { SelectedTimeChangedPayload } from './model/selected-time-changed-payload';\n\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { RangeDatepickerTimeFormatOptions } from '../../../../form-controls/range-datepicker/enums/range-datepicker-time-format.enum';\nimport { DropDownItem } from '../../../../form-controls/drop-down/models/drop-down-item.interface';\nimport { SkinOptions } from '../../../../form-controls/drop-down/enums/skin-options.enum';\nimport { RangeDatepickerActions } from '../../../../form-controls/range-datepicker/enums/range-datepicker-out-actions.enum';\nimport { ActivatedRoute } from '@angular/router';\nimport { isObject } from 'lodash';\nimport { TabTimeConfigInterface } from '../../models/tab-time-config.interface';\n\n@Component({\n  selector: 'sing-tab-time-core',\n  templateUrl: './tab-time.component.html',\n  styleUrls: ['./tab-time.component.scss'],\n})\nexport class TabTimeComponent {\n  timeDropDownTitle: string;\n  widthClass: string;\n  startOpen;\n  timeRange: TimeRange;\n  timeFormatOptions = RangeDatepickerTimeFormatOptions;\n  skinOptions = SkinOptions;\n  selectedItem: DropDownItem;\n  dropDownToggle: boolean;\n  withTimeRangeConfigVal: boolean | TabTimeConfigInterface;\n\n  private _timeTitle: TimeTitle;\n  private queryActions: QueryCollectionActions;\n\n  @Input() timeOptions = TIME_OPTIONS;\n  @Input() grayWhenNotOpened: boolean;\n  @Input() disabled: boolean;\n\n  @Input() set withTimeRangeConfig(val: boolean | TabTimeConfigInterface) {\n    this.withTimeRangeConfigVal = val;\n    this.setDefault();\n  }\n\n  @Input() additionalClassName: string;\n\n  @Input()\n  set queryCollectionActions(queryActions: QueryCollectionActions) {\n    this.queryActions = queryActions;\n    this.setDefault();\n  }\n\n  @Input() set timeRangeAndTitle(_val: TimeRangeAndTitle) {\n    this.timeRange = _val.timeRange;\n    this._timeTitle = _val.timeTitle;\n    this.timeDropDownTitle = this.setTimeDropDownTitle(_val.timeTitle);\n    this.setSelectedOption(_val.timeTitle);\n  }\n\n  @Output() timeChanged = new EventEmitter<SelectedTimeChangedPayload>();\n\n  constructor(private route: ActivatedRoute) {}\n\n  setDefault() {\n    if (\n      isObject(this.withTimeRangeConfigVal) &&\n      this.withTimeRangeConfigVal?.active &&\n      this.withTimeRangeConfigVal.withTimeRangeDisplayValueUrl &&\n      this.timeOptions.length > 0 &&\n      this.queryActions\n    ) {\n      this.route.queryParams.subscribe((params) => {\n        let timeTitle = null;\n        if (params['filter'] && JSON.parse(params['filter'])?.timeTitle) {\n          timeTitle = JSON.parse(params['filter'])?.timeTitle;\n        } else {\n          timeTitle = isObject(this.withTimeRangeConfigVal) ? this.withTimeRangeConfigVal.defaultVal : undefined;\n        }\n        if (timeTitle) {\n          const selectedTimeOption = this.timeOptions.find((item: DropDownItem) => {\n            return item.title === timeTitle;\n          });\n          if (selectedTimeOption) {\n            this.setDefaultNotCustom(selectedTimeOption);\n          } else {\n            this.setDefaultCustom();\n          }\n        }\n      });\n    }\n  }\n\n  private setDefaultNotCustom(selectedTimeOption) {\n    this.onActionClick(selectedTimeOption);\n    this.setSelectedOption(selectedTimeOption.value);\n    if (selectedTimeOption.value !== 'CustomRange' && selectedTimeOption.value !== 'Custom') {\n      this.setTime(selectedTimeOption.title);\n    }\n  }\n\n  private setDefaultCustom() {\n    const createdAt__gt = this.queryActions?.queryMap?.queries?.get('createdAt__gt')?.value || null;\n    const createdAt__lt = this.queryActions?.queryMap?.queries?.get('createdAt__lt')?.value || null;\n\n    if (createdAt__gt && createdAt__lt) {\n      const from = new Date(createdAt__gt).getTime();\n      const to = new Date(createdAt__lt).getTime();\n      const timeRange: TimeRange = getTimeRangeObj(from, to);\n      this.timeDropDownTitle = timeRange.timeString;\n      this.widthClass = 'long';\n    }\n  }\n\n  private setTimeDropDownTitle(timeTitle): string {\n    switch (timeTitle) {\n      case 'Custom':\n        this.widthClass = 'long';\n        break;\n      case 'Recent':\n      case 'Today':\n        this.widthClass = 'small';\n        break;\n      default:\n        this.widthClass = 'mid';\n    }\n    return timeTitle === 'Custom' ? this.timeRange.timeString : timeTitle;\n  }\n\n  /******************************************************************\n   * @description -once a user selected anything from the dropdown,\n   *                controls the actions that will happen\n   * @param action - selected dropdown item\n   *******************************************************************/\n  onActionClick(action: DropDownItem) {\n    this.setSelectedOption(action.value);\n    if (action.value === 'CustomRange') {\n      this.showDatePicker();\n    } else {\n      this.setTime(action.title);\n    }\n  }\n\n  /**************************************************************************\n   * @description -once user select custom range, date picker wil shown.\n   *               needs to simulate a click event on the element\n   **************************************************************************/\n  private showDatePicker() {\n    this.startOpen = { actionType: RangeDatepickerActions.START_OPEN };\n  }\n\n  /**************************************************************************\n   * @description - will be emitted once user changed time on custom range\n   * @param {SelectedRangeDateModel} dateDetails\n   **************************************************************************/\n  onRangeDateChange(dateDetails: any) {\n    const from = getLocalFromDate(dateDetails);\n    const to = getLocalToDate(dateDetails);\n    const timeRange: TimeRange = getTimeRangeObj(from, to);\n    this.createTimeObj('Custom', timeRange);\n  }\n\n  /*********************************************************************************\n   * @description - Will be emitted once a user clicked on any time and not custom\n   * @param title\n   ****************************************************************************/\n  private setTime(title) {\n    this.createTimeObj(title);\n  }\n\n  private createTimeObj(queryTimeTitle: TimeTitle, queryTimeRange: TimeRange = null) {\n    let timeRange = queryTimeRange;\n    if (queryTimeTitle !== 'Custom') {\n      this.queryActions.actions.delete('createdAt__lt');\n      timeRange = convertTimeTitle(queryTimeTitle);\n    } else {\n      this.queryActions.actions.update('createdAt__lt', timeRange.to, QueryCollectionTypeEnum.DEFAULT, {\n        displayValue: queryTimeTitle,\n        key: 'createdAt__lt',\n      });\n    }\n    this.queryActions.actions.update('createdAt__gt', timeRange.from, QueryCollectionTypeEnum.DEFAULT, {\n      displayValue: queryTimeTitle,\n      key: 'createdAt__gt',\n    });\n\n    if (queryTimeTitle === 'Custom') {\n      this.timeDropDownTitle = queryTimeRange.timeString;\n      this.widthClass = 'long';\n    }\n\n    this.queryActions.actions.forceEmitChanges();\n  }\n\n  setSelectedOption(optionValue: string) {\n    const option = this.timeOptions.find((item) => {\n      return item.value === optionValue;\n    });\n\n    if (option) {\n      option.selected = true;\n      this.selectedItem = option;\n      this.timeDropDownTitle = this.setTimeDropDownTitle(option.title);\n    }\n  }\n}\n","<div class=\"time-holder {{additionalClassName ? additionalClassName : ''}}\" [class.time-select-disabled]=\"disabled\"\n     [ngClass]=\"widthClass\" [class.gray-title]=\"grayWhenNotOpened && !dropDownToggle\">\n  <sing-drop-down\n    [selected]='selectedItem'\n    data-mgmtautomationid=\"tab-time-dropdown\"\n    (clickedItem)=\"onActionClick($event)\"\n    [disabled]=\"disabled\"\n    [items]=\"timeOptions\"\n      [dropDownOptions]=\"{\n      showSelectedTitle: true,\n      skinOptions: skinOptions.Transparent,\n      triggerTitle: timeDropDownTitle,\n      showSearch: false,\n      isMultipleSelection: false,\n      showSelectedMarker: true,\n      useClientSideAscSort: false\n  }\"\n  ></sing-drop-down>\n\n\n  <sing-range-datepicker\n    [showReset]=\"false\"\n    [executeAction]=\"startOpen\"\n    [showTimeAsInput]='true'\n    [timeFormatForTimeAsInput]=\"timeFormatOptions.hh_mm\"\n    (apply)=\"onRangeDateChange($event)\">\n  </sing-range-datepicker>\n</div>\n","export enum FilterListState {\n  filters,\n  fieldSelect,\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { BehaviorSubject, map, combineLatest, Observable, shareReplay } from 'rxjs';\nimport { FilterPreferencesService } from '../../../services/filter-preferences.service';\nimport { FilterMultiSortDropDownSortByProperty } from '../../../models/filter-multi-sort-drop-down-sort-by-property';\nimport { FilterMultiSortDropDownOrder } from '../../../models/filter-multi-sort-drop-down-order';\nimport { DropDownItem } from '../../../../../form-controls/drop-down/models/drop-down-item.interface';\nimport { SkinOptions } from '../../../../../form-controls/drop-down/enums/skin-options.enum';\nimport { DropDownSelectionChanged } from '../../../../../form-controls/drop-down/models/drop-down-selection-changes.interface';\nimport { SingFilterMultiSort } from '../../../models';\nimport { FILTER_COLUMN_DEFAULT_SORT } from '../../../consts/filter-column-default-sort';\n\ntype FilterSortDropdownValue = `${FilterMultiSortDropDownSortByProperty}_${FilterMultiSortDropDownOrder}`;\n\ninterface FilterMultiSortDropDownItem extends DropDownItem {\n  value: FilterSortDropdownValue;\n}\n\nfunction getDropdownIdBySort({ sortOrder, sortByProperty }: SingFilterMultiSort): FilterSortDropdownValue {\n  return `${sortByProperty}_${sortOrder}`;\n}\nconst ORDER_ACTION_ITEMS: FilterMultiSortDropDownItem[] = [\n  {\n    leftIconClass: 'mgmt-sort-desc',\n    title: 'Results: High to low',\n    value: getDropdownIdBySort({ sortOrder: 'desc', sortByProperty: 'count' }),\n  },\n  {\n    leftIconClass: 'mgmt-sort-asc',\n    title: 'Results: Low to High',\n    value: getDropdownIdBySort({ sortOrder: 'asc', sortByProperty: 'count' }),\n  },\n  {\n    leftIconClass: 'mgmt-sort-a-to-z',\n    title: 'Name: A to Z',\n    value: getDropdownIdBySort({ sortOrder: 'asc', sortByProperty: 'name' }),\n  },\n  {\n    leftIconClass: 'mgmt-sort-z-to-a',\n    title: 'Name: Z to A',\n    value: getDropdownIdBySort({ sortOrder: 'desc', sortByProperty: 'name' }),\n  },\n];\n@Component({\n  selector: 'sing-filter-list-sort-dropdown',\n  templateUrl: './filter-list-sort-dropdown.component.html',\n  styleUrls: ['./filter-list-sort-dropdown.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterListSortDropdownComponent implements OnInit {\n  sortBy$: Observable<SingFilterMultiSort>;\n  skinOptionAction = SkinOptions.Transparent;\n  orderActionItems = ORDER_ACTION_ITEMS;\n  sortBySubject = new BehaviorSubject<SingFilterMultiSort>(null);\n  sortByDropdownItem$: Observable<DropDownItem>;\n\n  shouldShowSort = true;\n\n  @Input() filterKey: string;\n  @Input() set numberOfItems(numberOfItems: number) {\n    this.shouldShowSort = numberOfItems > 3;\n  }\n\n  constructor(private filterPreferencesService: FilterPreferencesService) {}\n\n  ngOnInit(): void {\n    this.sortBy$ = combineLatest([\n      this.filterPreferencesService.getSortPreferencesByFilter(this.filterKey),\n      this.sortBySubject,\n    ]).pipe(\n      map(([sortByFromProvider, localSortBy]) => localSortBy || sortByFromProvider),\n      map((sort) => (this.shouldShowSort ? sort : FILTER_COLUMN_DEFAULT_SORT)),\n      shareReplay(1)\n    );\n    this.sortByDropdownItem$ = this.sortBy$.pipe(\n      map((sortBy) => {\n        const dropdownValue = getDropdownIdBySort(sortBy);\n        return this.orderActionItems.find(({ value }) => value === dropdownValue);\n      })\n    );\n  }\n\n  onSortChange({ currentSelected }: DropDownSelectionChanged) {\n    const { value } = (Array.isArray(currentSelected)\n      ? currentSelected[0]\n      : currentSelected) as FilterMultiSortDropDownItem;\n    const [sortByProperty, sortOrder] = value.split('_') as [\n      FilterMultiSortDropDownSortByProperty,\n      FilterMultiSortDropDownOrder\n    ];\n    const newSortBy: SingFilterMultiSort = { sortOrder, sortByProperty };\n    this.sortBySubject.next(newSortBy);\n    this.filterPreferencesService.updateFilterPreferencesSortMapForSpecificFilter(this.filterKey, newSortBy);\n  }\n}\n","<ng-container *ngIf=\"shouldShowSort && (sortByDropdownItem$ | async) as sortByDropdownItem\">\n  <ng-template #sortTooltip>Sorted by {{ sortByDropdownItem.title }}</ng-template>\n  <i\n    class=\"filter-multi-sort-by-trigger {{ sortByDropdownItem.leftIconClass }}\"\n    (click)=\"hiddenTriggerDropdown.openMenu()\"\n    data-mgmtautomationid=\"filter-multi-sort-by-trigger\"\n    [singTooltip]=\"sortTooltip\"\n    singTooltipPosition=\"right\"\n  ></i>\n  <sing-drop-down\n    #hiddenTriggerDropdown\n    [items]=\"orderActionItems\"\n    [selected]=\"sortByDropdownItem\"\n    [dropDownOptions]=\"{\n          automationIdPrefix: 'filter-multi-sort',\n          skinOptions: skinOptionAction,\n          hideTriggerButton: true,\n          isMultipleSelection: false,\n          useClientSideAscSort: false,\n          hasBackdrop: true,\n          menuStyle: { 'margin-top': '-20px' }\n        }\"\n    (selectionChanged)=\"onSortChange($event)\"\n  ></sing-drop-down>\n</ng-container>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n  selector: 'sing-filter-search-filter',\n  templateUrl: './filter-search.component.html',\n  styleUrls: ['./filter-search.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterSearchComponent implements OnInit, OnDestroy {\n  @HostBinding('class.search') inputOpen = false;\n\n  get title(): string {\n    return this._title;\n  }\n\n  @Input()\n  set title(value: string) {\n    this._title = value;\n  }\n\n  @Input() disableSearch = false;\n\n  @Output() filterTextChange = new EventEmitter<string>();\n\n  searchControl = new FormControl<string>('');\n\n  private _title: string;\n  private ngUnSubscribe: Subject<void> = new Subject<void>();\n\n  ngOnInit() {\n    this.searchControl.valueChanges\n      .pipe(debounceTime(100), takeUntil(this.ngUnSubscribe))\n      .subscribe((value) => this.filterTextChange.emit(value));\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n  }\n\n  closeSearch() {\n    this.inputOpen = false;\n    this.searchControl.reset();\n  }\n}\n","<section class=\"header-container\">\n  <div class=\"title\">{{title}}</div>\n  <i *ngIf=\"!disableSearch\" class=\"icon mgmt-search pointer\" (click)=\" inputOpen = !inputOpen\"></i>\n</section>\n\n<div class=\"input-container\" *ngIf=\"inputOpen\">\n  <input placeholder=\"Start typing...\" autofocus type=\"text\" value=\"\" [formControl]=\"searchControl\">\n  <i class=\"icon mgmt-x-search pointer\" (click)=\"closeSearch()\"></i>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterItemValue } from '../models/filter-item-value.model';\n\n@Pipe({\n  name: 'filterFilters',\n})\nexport class FilterFiltersPipe implements PipeTransform {\n  transform(items: FilterItemValue[], searchText: string): any {\n    if (!items) {\n      return [];\n    }\n    if (!searchText) {\n      return items;\n    }\n\n    searchText = searchText.toLowerCase();\n    return items.filter((it) => it.title.toLowerCase().includes(searchText));\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterItemValue } from '../models/filter-item-value.model';\nimport { SingFilterMultiSort } from '../models/sing-filter-multi-sort';\nimport { FilterMultiSortDropDownOrder } from '../models/filter-multi-sort-drop-down-order';\n\n@Pipe({\n  name: 'sortFilterValueList',\n})\nexport class SortFilterValueListPipe implements PipeTransform {\n  transform(value: FilterItemValue[], sort: SingFilterMultiSort | null): FilterItemValue[] {\n    if (!sort) {\n      return value;\n    }\n    const { sortOrder, sortByProperty } = sort;\n    const sortingFunc = sortByProperty === 'name' ? this._determentItemsOrderByName : this._determentItemsOrderByCount;\n    return value.sort((item1, item2) => sortingFunc(item1, item2, sortOrder));\n  }\n\n  private _determentItemsOrderByName(\n    item1: FilterItemValue,\n    item2: FilterItemValue,\n    sortOrder: FilterMultiSortDropDownOrder\n  ): number {\n    const title1 = item1?.title ?? '',\n      title2 = item2?.title ?? '';\n    const compare = title1.toLowerCase().localeCompare(title2.toLowerCase());\n    return sortOrder === 'asc' ? compare : compare * -1;\n  }\n\n  private _determentItemsOrderByCount(\n    item1: FilterItemValue,\n    item2: FilterItemValue,\n    sortOrder: FilterMultiSortDropDownOrder\n  ): number {\n    const count1 = item1.count ?? 0,\n      count2 = item2.count ?? 0;\n    const compare = count1 < count2 ? -1 : count1 === count2 ? 0 : 1;\n    return sortOrder === 'asc' ? compare : compare * -1;\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryCollectionModel } from '../../../../../../services/query-collection/models/query-collection.model';\nimport { FilterItemModel } from '../../../models/filter-item.model';\nimport { FilterItemOperator } from '../../../../../../services/query-collection/enums/filter-Item-operator.enum';\nimport { FilterItemValue } from '../../../models/filter-item-value.model';\nimport { QueryCollectionTypeEnum } from '../../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterComponentModel } from '../../models/filter-component.model';\nimport { replaceCommaIfNeededForStringArr } from '../../filter-free-text/utils/csv.utils';\nimport { FilterListSortDropdownComponent } from '../filter-list-sort-dropdown/filter-list-sort-dropdown.component';\nimport { Observable, Subject, switchMap } from 'rxjs';\nimport { SingFilterMultiSort } from '../../../models';\n\n/*****************************************************************************\n @description - multi select filter\n user can select one or more values from multi options.\n the options send to the server with comma between the values\n *****************************************************************************/\n@Component({\n  selector: 'sing-filter-multi',\n  templateUrl: './filter-multi.component.html',\n  styleUrls: ['../shared-filter-items.scss', './filter-multi.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterMultiComponent implements FilterComponentModel {\n  @Input()\n  set queryInformation(queryInformation: QueryCollectionModel) {\n    // update server param to handle comma just getting the array and replace it with @@@\n    if (queryInformation?.value) {\n      queryInformation.value = replaceCommaIfNeededForStringArr(queryInformation?.value);\n    }\n    this._queryInformation = queryInformation;\n    this.operatorStatus();\n    this.setFilterOptionStatus();\n    this.areThereNoValues = this.areThereNoSelectedValues();\n  }\n\n  @Input()\n  set queryCollectionAction(queryCollectionAction: QueryCollectionActions) {\n    this.queryCollectionActions = queryCollectionAction;\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get filter(): FilterItemModel {\n    return this._filter;\n  }\n\n  @Input()\n  set filter(value: FilterItemModel) {\n    this._filter = value;\n  }\n  @ViewChild(FilterListSortDropdownComponent) set filterListSortComponent(\n    component: FilterListSortDropdownComponent | null\n  ) {\n    this._sortBy$.next(component?.sortBy$ || null);\n  }\n\n  private _filter: FilterItemModel;\n  private _analyticsCategory: string;\n  private _sortBy$ = new Subject<Observable<SingFilterMultiSort | null>>();\n  queryCollectionActions: QueryCollectionActions;\n  filterItemOperator = FilterItemOperator;\n  _queryInformation: QueryCollectionModel;\n  areThereNoValues: boolean;\n  filterSearchText: string;\n  operatorIcon: string;\n  sortBy$: Observable<SingFilterMultiSort | null> = this._sortBy$.pipe(switchMap((sortObs$) => sortObs$));\n\n  calcGradient(count: number, values: FilterItemValue[]) {\n    const fillColor = 'var(--s1-P-5-color)';\n    let sumCount = 0;\n    for (const value of values) {\n      sumCount = sumCount + value.count;\n    }\n    const percentage: number = (count / sumCount) * 100;\n    return `linear-gradient(to right, ${fillColor} ${percentage}%,var(--s1-N-0-color) 0%)`;\n  }\n\n  /*************************************************************************\n   * @description change filter value select status according query params\n   *************************************************************************/\n  setFilterOptionStatus() {\n    const selectedOptions = this?._queryInformation?.value.split(',') || [];\n    this._filter.values.forEach((item) => {\n      item.selected = selectedOptions.includes(item.key);\n    });\n  }\n\n  /************************************************************\n   * @description get multi select operator status\n   *              on init take default by filter configuration\n   *              otherwise take the query operator status\n   ***********************************************************/\n  operatorStatus() {\n    if (this._filter.enableNegation) {\n      const currentOperator = this?._queryInformation?.extraData?.operator\n        ? this?._queryInformation?.extraData?.operator\n        : this._filter.operator;\n      switch (currentOperator) {\n        case FilterItemOperator.EQULAS:\n          this.operatorIcon = 'mgmt-equal';\n          break;\n        case FilterItemOperator.NOT_EQUALS:\n          this.operatorIcon = 'mgmt-not-equal';\n          break;\n      }\n    }\n  }\n\n  /*******************************************************************************************\n   * @description: once user will click on an filter, action will be fired to add to store.\n   * @param {FilterItemModel} filter - filter count server response item\n   * @param {FilterItemValue} option - filter count server response item\n   *********************************************************************************************/\n  addFilter(filter: FilterItemModel, option: FilterItemValue) {\n    const { selectedOptions, displayValues } = this.getSelectedOptions(filter, option);\n\n    this.queryCollectionActions.actions.update(\n      filter.key,\n      selectedOptions.length > 0 ? selectedOptions.join(',') : null,\n      QueryCollectionTypeEnum.FILTER,\n      {\n        displayTitle: filter.title,\n        displayValue: displayValues.join(','),\n        operator: filter.operator,\n      },\n      true\n    );\n  }\n\n  /****************************************************************\n   * @description: add or remove option key from selected options\n   * @param filter - current filter details\n   * @param option - current selected / unselected option\n   ***************************************************************/\n  getSelectedOptions(filter: FilterItemModel, option: FilterItemValue) {\n    let selectedOptions = this._queryInformation?.value ? this._queryInformation.value.split(',') : [];\n    let displayValues = this._queryInformation?.extraData.displayValue\n      ? this._queryInformation.extraData.displayValue.split(',')\n      : [];\n    if (!selectedOptions.includes(option.key)) {\n      selectedOptions.push(option.key);\n      displayValues.push(option.title);\n    } else {\n      selectedOptions = selectedOptions.filter((item) => {\n        return item !== option.key;\n      });\n      displayValues = displayValues.filter((item) => {\n        return item !== option.title;\n      });\n    }\n    return { selectedOptions, displayValues };\n  }\n\n  /*******************************************************************************\n   @description - return if there are no selected values from the multi options\n   *******************************************************************************/\n  areThereNoSelectedValues(): boolean {\n    if (this._queryInformation?.value) {\n      return this._queryInformation?.value?.length === 0;\n    }\n    return true;\n  }\n\n  /*******************************************************************************\n   * @description: update query collection when user change the operator\n   *               when there are not selected options change operator is dismiss\n   ********************************************************************************/\n  changeOperator() {\n    if (this.areThereNoValues) return;\n    if (this._queryInformation.extraData?.operator === FilterItemOperator.EQULAS) {\n      this.operatorIcon = 'mgmt-not-equal';\n      this.queryCollectionActions.actions.setOperator(this._filter.key, FilterItemOperator.NOT_EQUALS);\n    } else {\n      this.operatorIcon = 'mgmt-equal';\n      this.queryCollectionActions.actions.setOperator(this._filter.key, FilterItemOperator.EQULAS);\n    }\n  }\n\n  /******************************************************\n   * @description - output function to get filtered text\n   * @param filterText - filter text value\n   *******************************************************/\n  onFilterTextChange(filterText: string) {\n    this.filterSearchText = filterText;\n  }\n}\n","<div class=\"title\" [attr.data-mgmtAutomationId]=\"'title-' + filter.key\">\n  <i\n    class=\"operator {{ operatorIcon }}\"\n    *ngIf=\"filter.enableNegation\"\n    [matTooltip]=\"\n      _queryInformation?.extraData?.operator === filterItemOperator.EQULAS && !areThereNoValues\n        ? 'Filter by NOT equal'\n        : areThereNoValues\n        ? 'Choose a value to exclude'\n        : ''\n    \"\n    [class.disabled]=\"areThereNoValues\"\n    (click)=\"changeOperator()\"\n  ></i>\n  <div class=\"search-input-container\">\n    <sing-filter-search-filter\n      [title]=\"filter.title\"\n      (filterTextChange)=\"onFilterTextChange($event)\"\n      [disableSearch]=\"!!!filter.values.length\"\n    ></sing-filter-search-filter>\n    <sing-filter-list-sort-dropdown\n      [filterKey]=\"filter.key\"\n      [numberOfItems]=\"filter.values.length\"\n      *ngIf=\"!filter || !filter.disableSorting\"\n    ></sing-filter-list-sort-dropdown>\n  </div>\n</div>\n<ul class=\"column-items\" [attr.data-mgmtAutomationId]=\"'filter-value-list-' + filter.key\">\n  <li\n    *ngFor=\"\n      let option of filter.values\n        | filterFilters: filterSearchText\n        | sortFilterValueList: (sortBy$ | async);\n      let index = index\n    \"\n    [class.active]=\"option.selected\"\n    [ngStyle]=\"{ background: calcGradient(option.count, filter.values) }\"\n    (click)=\"addFilter(filter, option)\"\n    [attr.data-mgmtAutomationId]=\"'ROW-' + option.title | displaySpecialCharacters\"\n  >\n    <div class=\"name\" singEllipsis>{{ option.title || 'N/A' | displaySpecialCharacters }}</div>\n    <div class=\"count\">\n      <span *ngIf=\"option.count > 0\" [attr.data-mgmtAutomationId]=\"'COUNT-' + option.title | displaySpecialCharacters\">\n        {{ option.count | number }}\n      </span>\n    </div>\n  </li>\n</ul>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'orderBySum',\n})\nexport class OrderBySumPipe implements PipeTransform {\n  transform(value: any, disableSorting = false): any {\n    if (disableSorting) {\n      return value;\n    }\n    return value.sort((a, b) => {\n      return parseFloat(b.count) - parseFloat(a.count);\n    });\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterItemModel } from '../../../models/filter-item.model';\nimport { FilterItemValue } from '../../../models/filter-item-value.model';\nimport { QueryCollectionTypeEnum } from '../../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterComponentModel } from '../../models/filter-component.model';\n\n/*********************************************\n @description - radio select filter\n user can select one value from two options\n **********************************************/\n@Component({\n  selector: 'sing-filter-radio',\n  templateUrl: './filter-radio.component.html',\n  styleUrls: ['../shared-filter-items.scss'],\n})\nexport class FilterRadioComponent implements FilterComponentModel {\n  @Input() set queryCollectionActions(val: QueryCollectionActions) {\n    this._queryCollectionActions = val;\n    this.updateDefaultSelected();\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get filter(): FilterItemModel {\n    return this._filter;\n  }\n\n  @Input()\n  set filter(value: FilterItemModel) {\n    this._filter = value;\n    this.updateDefaultSelected();\n  }\n\n  filterSearchText: string;\n\n  private _filter: FilterItemModel;\n  private _analyticsCategory: string;\n  private _queryCollectionActions: QueryCollectionActions;\n\n  updateDefaultSelected() {\n    if (this._filter && this._queryCollectionActions) {\n      const hasDefaultSelected =\n        this._filter.values.filter((item) => {\n          return item.selected;\n        }).length > 0;\n\n      if (!hasDefaultSelected && this._queryCollectionActions.queryMap.queries.has(this._filter.key)) {\n        const selectedValue = this._queryCollectionActions.queryMap.queries.get(this._filter.key).value;\n        this.filter.values.map((item) => {\n          if (item.key === selectedValue) {\n            item.selected = true;\n          }\n          return item;\n        });\n      }\n    }\n  }\n\n  calcGradient(count: number, values: FilterItemValue[]) {\n    const fillColor = 'var(--s1-P-5-color)';\n    let sumCount = 0;\n    for (const value of values) {\n      sumCount = sumCount + value.count;\n    }\n    const percentage: number = (count / sumCount) * 100;\n    return `linear-gradient(to right, ${fillColor} ${percentage}%,var(--s1-N-0-color) 0%)`;\n  }\n\n  /*******************************************************************************************\n   * @description - once user will click on an filter, action will be fired to add to store.\n   * @param {FilterItemModel} filter\n   * @param {FilterItemValue} option\n   *******************************************************************************************/\n  addFilter(filter: FilterItemModel, option: FilterItemValue) {\n    if (option.selected) {\n      option.selected = !option.selected;\n      this._queryCollectionActions.actions.delete(filter.key);\n    } else {\n      option.selected = !option.selected;\n      filter.values = filter.values.map((value) => {\n        if (value.key !== option.key && option.selected) {\n          value.selected = false;\n        }\n        return value;\n      });\n\n      this._queryCollectionActions.actions.update(filter.key, option.key, QueryCollectionTypeEnum.FILTER, {\n        displayTitle: filter.title,\n        displayValue: option.title,\n      });\n    }\n    /***************************************************\n     @description: update query collection\n     @params query key\n     @params query value\n     @params extra data - display title, display value\n     ***************************************************/\n  }\n\n  /******************************************************\n   * @description - output function to get filtered text\n   * @param filterText\n   *****************************************************/\n  onFilterTextChange(filterText: string) {\n    this.filterSearchText = filterText;\n  }\n}\n","<div class=\"title\">\n  <sing-filter-search-filter\n    [title]=\"filter.title\"\n    (filterTextChange)=\"onFilterTextChange($event)\"\n    [disableSearch]=\"!!!filter.values.length\"\n  ></sing-filter-search-filter>\n</div>\n<ul>\n  <li\n    *ngFor=\"let option of filter.values | filterFilters: filterSearchText | orderBySum\"\n    [class.active]=\"option.selected\"\n    [ngStyle]=\"{ background: calcGradient(option.count, filter.values) }\"\n    [attr.data-mgmtAutomationId]=\"'ROW-' + option.title | displaySpecialCharacters\"\n    (click)=\"addFilter(filter, option)\"\n  >\n    <div class=\"name\" singEllipsis>{{ option.title | displaySpecialCharacters }}</div>\n    <div class=\"count\">\n      <span *ngIf=\"option.count > 0\" [attr.data-mgmtAutomationId]=\"'COUNT-' + option.title | displaySpecialCharacters\">\n        {{ option.count }}</span\n      >\n    </div>\n  </li>\n</ul>\n","import { Component, Input } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterItemModel } from '../../../models/filter-item.model';\nimport { RangeDatepickerInActions } from '../../../../../form-controls/range-datepicker/enums/range-datepicker-in-actions.enum';\nimport { QueryCollectionTypeEnum } from '../../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterComponentModel } from '../../models/filter-component.model';\n\n/*********************************************************************\n @description - time range - user can select range between two dates\n *********************************************************************/\n@Component({\n  selector: 'sing-filter-time-range',\n  templateUrl: './filter-time-range.component.html',\n  styleUrls: ['../shared-filter-items.scss'],\n})\nexport class FilterTimeRangeComponent implements FilterComponentModel {\n  @Input() queryCollectionActions: QueryCollectionActions;\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get filter(): FilterItemModel {\n    return this._filter;\n  }\n\n  @Input()\n  set filter(value: FilterItemModel) {\n    this._filter = value;\n  }\n\n  private _filter: FilterItemModel;\n  private _analyticsCategory: string;\n\n  onRangeDateChange(selectedRangeDate: any, filter: FilterItemModel) {\n    if (selectedRangeDate.action !== RangeDatepickerInActions.IN_APPLY) {\n      return;\n    }\n    const { fromHours, fromMinute, toHours, toMinute, selectedRangeInUnixTime } = selectedRangeDate;\n    const { formatted } = selectedRangeDate.dateModel;\n    const split = formatted.toString().split(' - ');\n\n    /********************************************************\n     @description - update query collection\n     @params query key\n     @params query value\n     @params extra data - display title, display value\n     *********************************************************/\n    this.queryCollectionActions.actions.update(filter.key, selectedRangeInUnixTime, QueryCollectionTypeEnum.FILTER, {\n      displayTitle: filter.title,\n      displayValue: `${split[0]} ${fromHours}:${fromMinute} - ${split[1]} ${toHours}:${toMinute}`,\n    });\n  }\n}\n","<div class=\"title\">{{filter.title}}</div>\n\n<sing-range-datepicker\n  [showPlaceHolderOnly]=\"true\"\n  (apply)=\"onRangeDateChange($event, filter)\">\n</sing-range-datepicker>\n\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryCollectionModel } from '../../../../../../services/query-collection/models/query-collection.model';\nimport { QueryCollectionTypeEnum } from '../../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { FilterItemModel } from '../../../models/filter-item.model';\nimport { FilterComponentModel } from '../../models/filter-component.model';\nimport { FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms';\nimport { BehaviorSubject, distinctUntilChanged, Observable, of, Subject, switchMap } from 'rxjs';\nimport { delay, startWith, takeUntil } from 'rxjs/operators';\n\ninterface SliderForm {\n  min?: number;\n  max?: number;\n  slider: [number, number];\n}\n\nlet idCounter = 0;\n\n/********************************************************************************\n @description range filter component - user can select range between two points\n there is default range (min, max) that user can select\n each range has filter display value and query key value\n *******************************************************************************/\n@Component({\n  selector: 'sing-filter-minmax',\n  templateUrl: './filter-minmax.component.html',\n  styleUrls: ['../shared-filter-items.scss', './filter-minmax.component.scss'],\n})\nexport class FilterMinmaxComponent implements FilterComponentModel, OnDestroy {\n  @Input() queryCollectionActions: QueryCollectionActions;\n\n  @Input()\n  set queryInformation(queryInformation: QueryCollectionModel) {\n    this._queryInformation = queryInformation;\n    this._setFilterModel();\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get filter(): FilterItemModel {\n    return this._filter;\n  }\n\n  @Input()\n  set filter(value: FilterItemModel) {\n    this._filter = value;\n  }\n\n  _queryInformation: QueryCollectionModel;\n  /**************************************************\n   @description - nouislider range configuration\n   ***************************************************/\n  rangeConfig: any = {\n    behaviour: 'drag',\n    connect: true,\n    tooltips: false,\n    step: 1,\n    margin: 1,\n  };\n  showInputInfo$: Observable<boolean>;\n  isRangeSelector = false;\n  minmax: number[] = [0, 0];\n  form: FormGroup<{\n    min: FormControl<number | null>;\n    max: FormControl<number | null>;\n    slider: FormControl<[number, number]>;\n  }>;\n  componentId = `sing-filter-min-max-${idCounter++}`;\n  rangeLabelId = `${this.componentId}-range-label`;\n  minValue = 0;\n  maxValue = 0;\n\n  private _showInputInfo$ = new BehaviorSubject(false);\n  private _filter: FilterItemModel;\n  private _analyticsCategory: string;\n  private _destroy$ = new Subject<null>();\n\n  constructor(private fb: FormBuilder) {\n    this._initForm();\n    this._initFormListeners();\n    this._initHintObservable();\n  }\n\n  ngOnDestroy() {\n    this._destroy$.next(null);\n    this._destroy$.complete();\n  }\n\n  /************************************************************************************\n   * @description set the range (min, max) value from query collection (if exist)\n   *              otherwise from default metadata\n   **********************************************************************************/\n  private _setFilterModel(): void {\n    if (this._queryInformation && this._queryInformation.value) {\n      const minMaxValue = this._queryInformation.value.split('-');\n      this.minmax = [parseInt(minMaxValue[0]), parseInt(minMaxValue[1])];\n    } else {\n      this.minmax = [this._filter.metaData.min, this._filter.metaData.max];\n    }\n    this.minValue = this.minmax[0];\n    this.maxValue = this.minmax[1];\n    this.isRangeSelector = this.minmax?.length > 1;\n    this._setForm();\n  }\n\n  /***************************************************************************************\n   * @description after user pressing on apply button,\n   *              we report and update query collection with the new key value\n   * @param filter {FilterItemModel} filter configuration - with default min & max & type\n   ******************************************************************************************/\n  applyFilter(filter: FilterItemModel): void {\n    const type = filter.metaData.type ? ` ${filter.metaData.type}` : '';\n    this.queryCollectionActions.actions.update(\n      filter.key,\n      `${this.minmax[0]}-${this.minmax[1]}`,\n      QueryCollectionTypeEnum.FILTER,\n      {\n        displayValue: `${this.minmax[0]}-${this.minmax[1]}${type}`,\n        displayTitle: filter.title,\n      },\n      true\n    );\n  }\n\n  /***************************************************************************************\n   * @description create the form group with default values\n   ******************************************************************************************/\n  private _initForm(): void {\n    this.form = this.fb.group({\n      min: this.fb.control(null, [this._minValidator]), // has a max validator in the html\n      max: this.fb.control(null, [this._maxValidator]), // has a min validator in the html\n      slider: this.fb.control<[number, number]>([0, 0]), // need to supply default value\n    });\n  }\n\n  /***************************************************************************************\n   * @description get the slider control used by nouislide (3rd party)\n   ******************************************************************************************/\n  get slider(): FormControl {\n    return this.form.get('slider') as FormControl;\n  }\n\n  /***************************************************************************************\n   * @description get the min control\n   ******************************************************************************************/\n  get min(): FormControl {\n    return this.form.get('min') as FormControl;\n  }\n\n  /***************************************************************************************\n   * @description get the max control\n   ******************************************************************************************/\n  get max(): FormControl {\n    return this.form.get('max') as FormControl;\n  }\n\n  /***************************************************************************************\n   * @description validate the min form control, will be invalid when set to a number grater than the max control\n   ******************************************************************************************/\n  private _minValidator: ValidatorFn = (control) => {\n    if (!control.parent) {\n      return null;\n    }\n    const maxValue: number = control.parent.get('max').value as number;\n    if (maxValue < control.value) {\n      return { maxValue };\n    }\n    return null;\n  };\n\n  private _maxValidator: ValidatorFn = (control) => {\n    if (!control.parent) {\n      return null;\n    }\n    const minValue: number = control.parent.get('min').value as number;\n    if (minValue > control.value) {\n      return { minValue };\n    }\n    return null;\n  };\n\n  /***************************************************************************************\n   * @description Listen to changes for each control and update other controls accordingly\n   ******************************************************************************************/\n  private _initFormListeners(): void {\n    this._onMinControlChange();\n    this._onMaxControlChange();\n    this._onSliderChange();\n  }\n\n  /***************************************************************************************\n   * @description When the slider changes update the min & max controls\n   ******************************************************************************************/\n  private _onSliderChange(): void {\n    this.form\n      .get('slider')\n      .valueChanges.pipe(distinctUntilChanged(), takeUntil(this._destroy$))\n      .subscribe((values) => {\n        this.minmax = values;\n        this.form.get('min').setValue(this.minmax[0], { emitEvent: false });\n        this.form.get('max').setValue(this.minmax[1], { emitEvent: false });\n      });\n  }\n\n  /***************************************************************************************\n   * @description When max changes insure it is inside the range and change the slider accordingly\n   ******************************************************************************************/\n  private _onMaxControlChange(): void {\n    this.form\n      .get('max')\n      .valueChanges.pipe(distinctUntilChanged(), takeUntil(this._destroy$))\n      .subscribe((max) => {\n        if (this._insureValueInRange(max, 'max')) {\n          return;\n        }\n        this.minmax[1] = max ?? 0;\n        this.form.get('slider').setValue([this.minmax[0], this.minmax[1]], { emitEvent: false });\n      });\n  }\n\n  /***************************************************************************************\n   * @description When max changes insure it is inside the range and change the slider accordingly\n   ******************************************************************************************/\n  private _onMinControlChange(): void {\n    this.form\n      .get('min')\n      .valueChanges.pipe(distinctUntilChanged(), takeUntil(this._destroy$))\n      .subscribe((min) => {\n        if (this._insureValueInRange(min, 'min')) {\n          return;\n        }\n        this.minmax[0] = min;\n        this.form.get('slider').setValue([this.minmax[0], this.minmax[1]], { emitEvent: false });\n      });\n  }\n\n  private _insureValueInRange(value: number, controlName: string): boolean {\n    const { min, max } = this.filter.metaData;\n    if (value < min) {\n      this.form.get(controlName).setValue(min);\n      return true;\n    }\n    if (value > max) {\n      this.form.get(controlName).setValue(max);\n      return true;\n    }\n    return false;\n  }\n\n  /***************************************************************************************\n   * @description Set the form values to the initial values received\n   ******************************************************************************************/\n  private _setForm(): void {\n    this.form.get('min').setValue(this.minmax[0], { emitEvent: false });\n    this.form.get('max').setValue(this.minmax[1], { emitEvent: false });\n    this.form.get('slider').setValue([this.minmax[0], this.minmax[1]], { emitEvent: false });\n  }\n\n  /***************************************************************************************\n   * @description Show info message when a char key was pressed\n   ******************************************************************************************/\n  onKeyDown({ key, shiftKey, ctrlKey, altKey, metaKey }: KeyboardEvent): void {\n    /** Check that the key pressed is a char and no special key was pressed with it (e.x command + a) */\n    if (!(key >= '0' && key <= '9') && key.length === 1 && !shiftKey && !ctrlKey && !altKey && !metaKey) {\n      this._showInputInfo$.next(true);\n    }\n  }\n\n  /***************************************************************************************\n   * @description Acts like a debounce function. When false is emitted it should be emitted right away.\n   *              When true is emitted it should amit true and false after a few seconds.\n   ******************************************************************************************/\n  private _initHintObservable(): void {\n    this.showInputInfo$ = this._showInputInfo$.pipe(\n      switchMap((show) => {\n        if (!show) {\n          return of(false);\n        }\n        return of(false).pipe(delay(4000), startWith(true));\n      })\n    );\n  }\n\n  /***************************************************************************************\n   * @description when the max control is blurred change it to a valid value if needed\n   ******************************************************************************************/\n  onMaxInputBlur(): void {\n    const { max } = this.form.getRawValue() as SliderForm;\n    if (max === null || max === undefined) {\n      this.max.setValue(this.filter.metaData.max);\n    }\n  }\n\n  /***************************************************************************************\n   * @description when the min control is blurred change it to a valid value if needed\n   ******************************************************************************************/\n  onMinInputBlur(): void {\n    const { min } = this.form.getRawValue() as SliderForm;\n    if (min === null || min === undefined) {\n      this.min.setValue(this.filter.metaData.min);\n    }\n  }\n}\n","<div class=\"minmax-title\">{{ filter.title }}</div>\n\n<div class=\"slider\" [formGroup]=\"form\">\n  <nouislider\n    data-mgmtAutomationId=\"SLIDER\"\n    [formControl]=\"slider\"\n    [min]=\"filter.metaData.min\"\n    [max]=\"filter.metaData.max\"\n    [config]=\"rangeConfig\"\n  >\n  </nouislider>\n\n  <div class=\"cdk-visually-hidden\" [attr.id]=\"rangeLabelId\" #rangeLabel>\n    {{ filter.title }}. Specify a number range between {{ minValue }} and {{ maxValue }}.\n  </div>\n\n  <div\n    class=\"slider-inputs-container\"\n    (keydown.enter)=\"applyFilter(filter)\"\n    role=\"group\"\n    [attr.aria-labelledby]=\"rangeLabel.id\"\n    data-mgmtAutomationId=\"minmax-filter-range-group\"\n  >\n    <sing-input>\n      <input\n        type=\"number\"\n        formControlName=\"min\"\n        aria-label=\"Minimum value\"\n        (keydown)=\"onKeyDown($event)\"\n        (blur)=\"onMinInputBlur()\"\n        data-mgmtAutomationId=\"minmax-filter-input-min\"\n      />\n    </sing-input>\n    -\n    <sing-input>\n      <input\n        type=\"number\"\n        formControlName=\"max\"\n        aria-label=\"Maximum value\"\n        (keydown)=\"onKeyDown($event)\"\n        (blur)=\"onMaxInputBlur()\"\n        data-mgmtAutomationId=\"minmax-filter-input-max\"\n      />\n    </sing-input>\n  </div>\n  <span class=\"input-info s1-caption-2\" [ngClass]=\"{ show: showInputInfo$ | async }\">Insert digits only</span>\n</div>\n\n<div class=\"minmax-buttons\">\n  <button\n    class=\"apply-button s1-btn-large-primary-link\"\n    data-mgmtAutomationId=\"ApplySliderButton\"\n    (click)=\"applyFilter(filter)\"\n  >\n    Apply\n  </button>\n</div>\n","import {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FilterMultiComponent } from './filter-multi/filter-multi.component';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterRadioComponent } from '../../../filter-panel/list-components/filter-list-factory/filter-radio/filter-radio.component';\nimport { FilterTimeRangeComponent } from '../../../filter-panel/list-components/filter-list-factory/filter-time-range/filter-time-range.component';\nimport { FilterMinmaxComponent } from '../../../filter-panel/list-components/filter-list-factory/filter-minmax/filter-minmax.component';\nimport { SelectedFilterModel } from '../../models/selected-filter.model';\nimport { FilterComponentModel } from '../models/filter-component.model';\n\n@Component({\n  selector: 'sing-filter-factory',\n  templateUrl: './filter-list-factory.component.html',\n  styleUrls: ['./filter-list-factory.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterFactoryComponent implements AfterContentInit {\n  get panelState(): string {\n    return this._panelState;\n  }\n\n  @Input()\n  set panelState(value: string) {\n    this._panelState = value;\n    if (this.thisComponent) {\n      this.thisComponent.panelState = this._panelState;\n    }\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  get filterItem(): FilterItemModel {\n    return this._filterItem;\n  }\n\n  @Input()\n  set filterItem(value: FilterItemModel) {\n    this._filterItem = value;\n  }\n\n  /****************************************************************************************************************\n   * @description - when using a freeText component in Atlas it will render once,\n   *                but when we want to reset it (for example when pressing on the x button of the filter label)\n   *                we would like to re-render the ui-filter-factory.component.ts to make freeText box empty\n   * @param value boolean indicating if a re-render is needed\n   ****************************************************************************************************************/\n  @Input()\n  set resetItem(value: boolean) {\n    if (value) {\n      this.ngAfterContentInit();\n    }\n  }\n\n  @Input() queryActions: QueryCollectionActions;\n\n  private _filterItem: FilterItemModel;\n  private _analyticsCategory: string;\n  private _panelState: string;\n  private thisComponent: any;\n  private typeMap = {\n    RadioSelect: FilterRadioComponent,\n    MultiSelect: FilterMultiComponent,\n    range: FilterTimeRangeComponent,\n    min_max: FilterMinmaxComponent,\n  };\n  @ViewChild('filterTemplate', { read: ViewContainerRef, static: true })\n  filterTemplate: ViewContainerRef;\n\n  @Output()\n  selectedFilterChange = new EventEmitter<SelectedFilterModel>();\n\n  ngAfterContentInit(): void {\n    this.filterTemplate.clear();\n    const { filterType } = this._filterItem;\n    const componentName = this.typeMap[filterType];\n    if (componentName) {\n      this.notCustomFilter(componentName);\n    } else if (filterType === 'custom' && this._filterItem.metaData && this._filterItem.metaData.component) {\n      this.customFilter();\n    }\n  }\n\n  /******************************************************************\n   * @description - when open generic custom filter\n   * @method customComponent - include query collection actions,\n   *                        filter information,\n   *                        current query status\n   *****************************************************************/\n  customFilter() {\n    const customComponent = this.filterTemplate.createComponent<any>(this._filterItem.metaData.component).instance;\n    customComponent.filter = this._filterItem;\n    customComponent.panelState = this.panelState;\n    customComponent.analyticsCategory = this._analyticsCategory;\n    customComponent.queryCollectionActions = this.queryActions;\n    this.thisComponent = customComponent;\n  }\n\n  /****************************************************************\n   * @description - when open generic not custom filter\n   * @method createdComponent - include query collection actions,\n   *                        filter information,\n   *                        current query status\n   *****************************************************************/\n  notCustomFilter(componentName: any) {\n    const createdComponent = this.filterTemplate.createComponent<FilterComponentModel>(componentName).instance;\n    createdComponent.queryCollectionActions = this.queryActions;\n    createdComponent.analyticsCategory = this._analyticsCategory;\n    createdComponent.filter = this._filterItem;\n    createdComponent.queryInformation = this.queryActions?.queryMap?.queries.get(this._filterItem.key) || null;\n  }\n}\n","<ng-template  #filterTemplate></ng-template>\n","export enum FreeTextIconType {\n  upload = 'upload',\n}\n","import { FreeTextIconType } from '../../../enums/free-text-icon-type.enum';\n\nexport const FreeTextIconMapper: Record<FreeTextIconType, string> = {\n  [FreeTextIconType.upload]: 'mgmt-upload',\n};\n","import { EventEmitter, Output } from '@angular/core';\nimport { ContentChildren, Directive, HostListener, Input, OnChanges, QueryList, SimpleChanges } from '@angular/core';\nimport { MatLegacyOption as MatOption } from '@angular/material/legacy-core';\nimport { EventCodeOptions } from '../../../../enums/event-code-options.enum';\n\n@Directive({\n  selector: '[singKeyboardNavigation]',\n})\nexport class AutocompleteKeyboardNavigationDirective implements OnChanges {\n  /**\n   * need this to notify that key was clicked when navigation is disabled like close autocomplte panel\n   */\n  @Input() keyboardNavigationDisable: boolean;\n  /**\n   * need to know if item selected to enable or disable enter to select item\n   */\n  @Input() keyboardNavigationItemSelected: boolean;\n  /**\n   * all items that needed to loop on\n   */\n  @Input() keyboardNavigationItems: any[];\n  /**\n   * trigger navigation index change so we can mark the mat-option as active\n   */\n  @Output() keyboardNavigationIndexChange = new EventEmitter<number>();\n  /**\n   * trigger when user select option\n   */\n  @Output() keyboardSelectedOption = new EventEmitter<string | any>();\n  /**\n   * trigger when keypress and the navigation is disabled\n   * ex: the autocomplete panel is closed\n   * can be used to open the navigation panel on specific keys\n   */\n  @Output() keyboardPressWhenNavigationDisabled = new EventEmitter<KeyboardEvent>();\n  /**\n   * trigger when got to end of scroll and need to scroll back up\n   * in cases where the option is not in dom because of virtual scroll\n   */\n  @Output() keyboardScrollUpNeeded = new EventEmitter<void>();\n  @ContentChildren(MatOption) currentOptions: QueryList<MatOption>;\n  private currentNavigationIndex = 0;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const emptyItems = changes?.keyboardNavigationItems && !changes?.keyboardNavigationItems?.currentValue?.length;\n    if (emptyItems) {\n      // reset navigation on empty items\n      this.currentNavigationIndex = -1;\n      this.emitCurrentIndex();\n    }\n  }\n\n  /**\n   * handle the autocomplete key event\n   */\n  @HostListener('keydown', ['$event'])\n  public autoCompleteKeyDown(key: KeyboardEvent) {\n    // for any key if auto complete is not open just get more items\n    // which will open the autocomplete with relevant values\n    if (\n      this.keyboardNavigationDisable &&\n      (key.code === EventCodeOptions.ArrowUp || key.code === EventCodeOptions.ArrowDown)\n    ) {\n      this.keyboardPressWhenNavigationDisabled.emit(key);\n      return;\n    }\n\n    switch (key.code) {\n      case EventCodeOptions.Enter:\n        if (!this.keyboardNavigationItemSelected) {\n          const activeOption = this.getActiveKeyboardOptionValue();\n          if (activeOption !== null) {\n            this.keyboardSelectedOption.emit(activeOption);\n          }\n        }\n        break;\n      case EventCodeOptions.ArrowUp:\n        // if on top of the list and the user press arrow up  we will not loop to the end of the loop\n        // because it is infinite scroll and we dont know if we at the end\n        this.currentNavigationIndex = this.getIndexIfExistsOrMinusOne(this.currentNavigationIndex - 1);\n        this.emitCurrentIndex();\n        break;\n      case EventCodeOptions.ArrowDown:\n        // if on bottom of the list we will navigate to start\n        this.currentNavigationIndex = this.getIndexIfExistsOrMinusOne(this.currentNavigationIndex + 1);\n        this.emitCurrentIndex();\n        break;\n      default:\n        break;\n    }\n\n    if (this.currentNavigationIndex === -1) {\n      this.keyboardScrollUpNeeded.emit();\n    }\n  }\n\n  /**\n   * get index if exists in items helper if not return -1\n   */\n  private getIndexIfExistsOrMinusOne(index: number): number {\n    return this.keyboardNavigationItems?.[index] ? index : -1;\n  }\n\n  /**\n   * emit the index defined in navigation items helper or null if not fount\n   */\n  private emitCurrentIndex() {\n    // if not found in navigation helper emit null\n    if (!this.keyboardNavigationItems?.[this.currentNavigationIndex]) {\n      this.keyboardNavigationIndexChange.emit(null);\n    } else {\n      this.keyboardNavigationIndexChange.emit(this.currentNavigationIndex);\n    }\n  }\n\n  /**\n   * get the active keyboard item if the active index is FIRST_OPTION_TEMPLATE_SELECTED_INDEX (-1) return the term typed\n   * if nothing selected it will return null\n   */\n  private getActiveKeyboardOptionValue(): string | null | any {\n    return this.keyboardNavigationItems?.[this.currentNavigationIndex] ?? null;\n  }\n}\n","export function isElementExceedFromTop(elementRect: DOMRectReadOnly, parentRect: DOMRectReadOnly): boolean {\n  return elementRect.bottom <= parentRect.top;\n}\n\nexport function isElementExceedFromBottom(elementRect: DOMRectReadOnly, parentRect: DOMRectReadOnly): boolean {\n  return elementRect.top >= parentRect.bottom;\n}\n","import { HostBinding, SimpleChanges } from '@angular/core';\nimport { Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { isElementExceedFromBottom, isElementExceedFromTop } from '../utils/autocomplete-keyboard-navigation.utils';\n\n@Directive({\n  selector: '[singAutocompleteKeyboardNavigationActivateOption]',\n})\nexport class AutocompleteKeyboardNavigationActivateOptionDirective implements OnChanges {\n  @HostBinding('class.keyboard-active')\n  @Input()\n  singAutocompleteKeyboardNavigationActivateOption: boolean;\n\n  constructor(private elementRef: ElementRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (\n      changes?.singAutocompleteKeyboardNavigationActivateOption &&\n      !changes?.singAutocompleteKeyboardNavigationActivateOption?.isFirstChange()\n    ) {\n      this.setActivate();\n    }\n  }\n\n  /**\n   * set the current mat option as active also scroll the option into view\n   */\n  private setActivate() {\n    if (this.singAutocompleteKeyboardNavigationActivateOption) {\n      const elementRect = this.elementRef.nativeElement?.getBoundingClientRect();\n      const parentRect = this.elementRef.nativeElement?.closest('cdk-virtual-scroll-viewport')?.getBoundingClientRect();\n      if (elementRect && parentRect) {\n        if (isElementExceedFromTop(elementRect, parentRect)) {\n          this.elementRef.nativeElement.scrollIntoView({ block: 'end' });\n        } else if (isElementExceedFromBottom(elementRect, parentRect)) {\n          this.elementRef.nativeElement.scrollIntoView();\n        }\n      }\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { AutocompleteGetMoreResultsParams } from '../models/autocomplete.model';\nimport { SingInfiniteScrollComponent } from '../../../navigation/infinite-scroll/infinite-scroll/infinite-scroll.component';\nimport { BehaviorSubject } from 'rxjs';\nimport { MatLegacyAutocompleteTrigger as MatAutocompleteTrigger } from '@angular/material/legacy-autocomplete';\n\n@Component({\n  selector: 'sing-autocomplete',\n  templateUrl: './autocomplete.component.html',\n  styleUrls: ['./autocomplete.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingAutocompleteComponent implements OnDestroy, OnChanges {\n  /***\n   * set term in autocomplete input will not emmit change term event\n   */\n  @Input() term: string;\n  /***\n   * the items to display in autocomplete\n   */\n  @Input() items: any[];\n  /**\n   * total items from server\n   */\n  @Input() totalItems: number;\n  /**\n   * item per page in scrolling\n   * if using server side make sure that itemsPerPage is bigger then itemsToDisplay\n   */\n  @Input() itemsPerPage: number;\n  /**\n   * item per page in scrolling\n   */\n  @Input() itemsToDisplay = 5;\n  /**\n   * single auto complete item (option) height\n   */\n  @Input() singleItemHeightPx = 48;\n  /**\n   * template ref of item\n   */\n  @Input() itemTemplateRef: TemplateRef<any>;\n  /**\n   * template ref of first item for custom will be above infinite scroll\n   */\n  @Input() firstItemTemplateRef: TemplateRef<any>;\n  /**\n   * Track by unique property for for loop performance\n   */\n  @Input() trackByIdProp = 'id';\n  /**\n   * search input placeholder\n   */\n  @Input() placeholder = 'Search...';\n  /**\n   * displayWith of mat-autocomplete\n   * function that maps an option's control value to its display value in the trigger.\n   */\n  @Input() autoCompleteDisplayWith: (value: any) => string;\n  /**\n   * disable autocomplete input\n   */\n  @Input() disabled: boolean;\n  /**\n   * if exists icon will be added on the right default is undefined (without icon)                                     |\n   */\n  @Input() searchIconClass: string;\n  /**\n   * display clear (X) icon at the end of the search input                                     |\n   */\n  @Input() displayClearButton = false;\n  /**\n   * add custom css class will add to the input container as 'NAME-input' and to autocomplete container as 'NAME-dialog'\n   * default is 'sing-autocomplete'\n   */\n  @Input() customCssClass = 'sing-autocomplete';\n  /**\n   * trigger event change when scrolling change then skip is changing\n   */\n  @Output() skipChanged = new EventEmitter<number>();\n  /**\n   * trigger event user start typing\n   * so the consumer component can filter the items by this term\n   */\n  @Output() termChanged = new EventEmitter<string>();\n  /**\n   * trigger event when user select item from the autocomplete list\n   */\n  @Output() itemSelected = new EventEmitter<any>();\n  /**\n   * trigger event when input is focus\n   */\n  @Output() autoCompleteInputFocus = new EventEmitter<FocusEvent>();\n  /**\n   * trigger event when user start scrolling\n   * so the consumer component can fetch more items and concat them to the existing items\n   */\n  @Output() getMoreItems = new EventEmitter<AutocompleteGetMoreResultsParams>();\n  /**\n   * trigger event if the autocomplete closed without selecting option\n   * so the consumer component can decide if to use the term or not\n   */\n  @Output() autocompleteClosedWithoutSelectingOption = new EventEmitter<any>();\n  @ViewChild(MatAutocompleteTrigger) private autoCompleteTrigger: MatAutocompleteTrigger;\n  @ViewChild(SingInfiniteScrollComponent) private infiniteScroll: SingInfiniteScrollComponent;\n  @ViewChild('autocompleteTriggerInput') private autocompleteTriggerInput: ElementRef<HTMLInputElement>;\n\n  public term$ = new BehaviorSubject<string>(null);\n  public restAutoCompleteComponent: any;\n  public scrollHeight: string;\n  public keyboardActiveIndex: number;\n  public itemSelectedIndication = false;\n  private skip$ = new BehaviorSubject<number>(0);\n  private rAFId: number;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.scrollHeight = `${this.getMinScrollHeight()}px`;\n    if (changes?.term && !changes?.term.firstChange) {\n      this.termChangedFunc(changes?.term?.currentValue);\n    }\n  }\n\n  /**\n   * get the min div scroll height by if current items are less then the items in page\n   * we will return the min height so we can shrink the autocomplete div for few items\n   */\n  private getMinScrollHeight(): number {\n    return Math.min(this.singleItemHeightPx * this.itemsToDisplay, this.singleItemHeightPx * this.items?.length);\n  }\n\n  /**\n   * this function trigger when the scroll needs new items\n   */\n  public getMoreItemsFunc({ skip }: { skip: number; take?: number }): void {\n    this.skip$.next(skip);\n    this.skipChanged.emit(this.skip$.getValue());\n    this.emitGetMoreItems();\n  }\n\n  /**\n   * this function trigger when autocomplete input\n   */\n  public autoCompleteInputChanged($event: Event): void {\n    this.termChangedFunc((<any>$event.target)?.value);\n  }\n\n  /**\n   * trigger when term changed event if needed\n   * reset autocomplete component\n   * reset skip to 0\n   */\n  public termChangedFunc(term: string, notify = true) {\n    this.items = [];\n    this.restAutoCompleteComponent = {};\n    this.skip$.next(0);\n    this.term$.next(term);\n    this.autoCompleteTrigger.activeOption?.deselect();\n    this.autoCompleteTrigger.writeValue(term);\n    this.itemSelectedIndication = false;\n    if (notify) {\n      this.skipChanged.emit(this.skip$.getValue());\n      this.termChanged.emit(this.term$.getValue());\n      this.emitGetMoreItems();\n    }\n  }\n\n  /**\n   * emit get more items with current params\n   * @private\n   */\n  private emitGetMoreItems(): void {\n    this.getMoreItems.emit({ skip: this.skip$.getValue(), limit: this.itemsPerPage, term: this.term$.getValue() });\n  }\n\n  /**\n   * emit item selected from autocomplete\n   */\n  public autoCompleteValueSelected(selectedOption: string | any): void {\n    this.itemSelected.emit(selectedOption);\n    this.itemSelectedIndication = true;\n    this.autoCompleteTrigger.closePanel();\n  }\n\n  /**\n   * clear all auto complete data\n   * can be use from external like ViewChild\n   */\n  public resetToTerm(term = '', notify = false): void {\n    this.termChangedFunc(term, notify);\n  }\n\n  /**\n   * autocomplete close event\n   */\n  public autoCompleteClosed(): void {\n    // resetting autocomplete scroll after autocomplete closed\n    this.restAutoCompleteComponent = {};\n    this.triggerClosedWithoutSelectingOptionIfNeeded();\n  }\n\n  public triggerClosedWithoutSelectingOptionIfNeeded(): void {\n    const selectedOption = this.autoCompleteTrigger?.autocomplete?.options?.find((s) => s.selected);\n    if (!selectedOption) {\n      this.autocompleteClosedWithoutSelectingOption.emit();\n    }\n  }\n\n  public autoCompleteOpened(): void {\n    // ignore angular default autocomplete keyboard manager because it can't handle infinite scroll we will handle it ourself\n    if (this.autoCompleteTrigger?.autocomplete?._keyManager?.onKeydown) {\n      this.autoCompleteTrigger.autocomplete._keyManager.onKeydown = () => true;\n    }\n    this.updateInfiniteScrollViewport();\n  }\n\n  public keyboardPressWhenAutoCompletePanelClosed(): void {\n    this.emitGetMoreItems();\n    this.autoCompleteTrigger.openPanel();\n  }\n\n  public triggerBlur(): void {\n    this.autocompleteTriggerInput?.nativeElement?.blur();\n  }\n\n  public triggerFocus(): void {\n    cancelAnimationFrame(this.rAFId);\n    this.rAFId = requestAnimationFrame(() => {\n      this.autocompleteTriggerInput?.nativeElement?.focus();\n    });\n  }\n\n  private updateInfiniteScrollViewport() {\n    this.infiniteScroll?.virtualScroll?.checkViewportSize();\n  }\n\n  ngOnDestroy(): void {\n    if (this.rAFId) {\n      cancelAnimationFrame(this.rAFId);\n    }\n  }\n\n  public autoCompleteBlur(): void {\n    this.autoCompleteTrigger.closePanel();\n  }\n\n  public keyboardScrollUpNeeded(): void {\n    this.infiniteScroll?.virtualScroll?.scrollToIndex(0);\n  }\n}\n","<div\n  *ngIf=\"{\n    term: term$ | async\n  } as data\"\n>\n  <sing-input [class]=\"customCssClass + '-input'\">\n    <input\n      #autocompleteTriggerInput\n      [matAutocomplete]=\"keyAuto\"\n      [placeholder]=\"placeholder\"\n      [disabled]=\"disabled\"\n      (input)=\"autoCompleteInputChanged($event)\"\n      (focus)=\"autoCompleteInputFocus.emit($event)\"\n      (keydown.Tab)=\"autoCompleteBlur()\"\n      data-mgmtAutomationId=\"sing-autocomplete-input\"\n      singKeyboardNavigation\n      [keyboardNavigationDisable]=\"!keyAuto.isOpen\"\n      [keyboardNavigationItemSelected]=\"!keyAuto.isOpen\"\n      [keyboardNavigationItems]=\"items\"\n      (keyboardNavigationIndexChange)=\"keyboardActiveIndex = $event\"\n      (keyboardSelectedOption)=\"autoCompleteValueSelected($event)\"\n      (keyboardPressWhenNavigationDisabled)=\"keyboardPressWhenAutoCompletePanelClosed()\"\n      (keyboardScrollUpNeeded)=\"keyboardScrollUpNeeded()\"\n    />\n    <i *ngIf=\"searchIconClass\" [class]=\"searchIconClass\" singPos=\"start\"></i>\n    <i\n      *ngIf=\"data?.term && displayClearButton\"\n      class=\"mgmt-x-search pointer\"\n      singPos=\"end\"\n      (click)=\"resetToTerm('', true)\"\n    ></i>\n  </sing-input>\n  <mat-autocomplete\n    data-mgmtAutomationId=\"sing-autocomplete\"\n    #keyAuto=\"matAutocomplete\"\n    [displayWith]=\"autoCompleteDisplayWith\"\n    (closed)=\"autoCompleteClosed()\"\n    (opened)=\"autoCompleteOpened()\"\n    class=\"sing-autocomplete-container\"\n  >\n    <div [style.height]=\"scrollHeight\" class=\"sing-autocomplete\" [class]=\"customCssClass + '-dialog'\">\n      <sing-infinite-scroll\n        [reset]=\"restAutoCompleteComponent\"\n        [items]=\"items\"\n        [totalItems]=\"totalItems\"\n        [itemTemplateRef]=\"scrollTemplateItem\"\n        [itemsTemplateSizeInPx]=\"singleItemHeightPx\"\n        [numOfItemsPerPage]=\"itemsPerPage\"\n        (getMoreItems)=\"getMoreItemsFunc($event)\"\n        [trackByIdProp]=\"trackByIdProp\"\n      >\n      </sing-infinite-scroll>\n      <ng-template #scrollTemplateItem let-item=\"item\" let-index=\"index\" let-isLast=\"isLast\">\n        <mat-option\n          [value]=\"item\"\n          [singAutocompleteKeyboardNavigationActivateOption]=\"index === keyboardActiveIndex\"\n          (click)=\"autoCompleteValueSelected(item)\"\n          (keydown)=\"$event.stopImmediatePropagation()\"\n          data-mgmtAutomationId=\"sing-autocomplete-option\"\n        >\n          <ng-container *ngIf=\"firstItemTemplateRef && index === 0; else notFirstItem\">\n            <ng-container\n              *ngTemplateOutlet=\"firstItemTemplateRef; context: { item: item, index: index, isLast: isLast }\"\n            ></ng-container>\n          </ng-container>\n          <ng-template #notFirstItem>\n            <ng-container\n              *ngTemplateOutlet=\"itemTemplateRef; context: { item: item, index: index, isLast: isLast }\"\n            ></ng-container>\n          </ng-template>\n        </mat-option>\n      </ng-template>\n    </div>\n  </mat-autocomplete>\n</div>\n","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { FilterFreeTextService } from './filter-free-text.service';\nimport { FilterFreeTextAutocompleteItem } from './models/filter-free-text-autocomplete-Item.interface';\nimport { FreeTextFieldType } from './models/free-Text-field-type.interface';\nimport { debounceTime, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\nimport { csvToArray, replaceApostropheIfNeeded } from './utils/csv.utils';\nimport { FilterFreeTextConfiguration } from '../../models/filter-free-text-configuration.interface';\nimport { FreeTextIconMapper } from './utils/free-text-icon-mapper';\nimport { FilterPanelEventsService } from '../../services/filter-panel-events.service';\nimport { FilterPanelEventType } from '../../enums/filter-panel-event.enum';\nimport { FREE_TEXT_AUTOCOMPLETE_CONTAINER_CLASS } from '../../consts/free-text-autocomplete-container-class';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryCollectionTypeEnum } from '../../../../../services/query-collection/enums/query-collection-type.enum';\nimport { SkinOptions } from '../../../../form-controls/drop-down/enums/skin-options.enum';\nimport { QueryCollectionEvent } from '../../../../../services/query-collection/models/query-collection-listener.model';\nimport { SingAutocompleteComponent } from '../../../../../modules/form-controls/autocomplete/components/autocomplete.component';\n\n@Component({\n  selector: 'sing-filter-free-text',\n  templateUrl: './filter-free-text.component.html',\n  styleUrls: ['./filter-free-text.component.scss'],\n})\nexport class FilterFreeTextComponent implements OnInit, OnDestroy {\n  freeTextAutocompleteContainerClass = FREE_TEXT_AUTOCOMPLETE_CONTAINER_CLASS;\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  queryActions: QueryCollectionActions;\n  _filterFreeTextService: FilterFreeTextService;\n  useClientSideAscSort: boolean;\n  _freeTextFields: FreeTextFieldType[];\n\n  @Input() filterComponentId?: string;\n  @Input() set freeTextFields(val: FreeTextFieldType[]) {\n    if (val) {\n      this._freeTextFields = val;\n      this.buildKeyToValueHash(val);\n      this.updateFreeTextWithDefaultItem();\n    }\n  }\n\n  @Input()\n  set queryActionsCollection(queryActions: QueryCollectionActions) {\n    this.queryActions = queryActions;\n    this.queryActions.queriesChanged.pipe(takeUntil(this.ngUnSubscribe)).subscribe((event: QueryCollectionEvent) => {\n      if (event.changedKeys && event.changedKeys.includes(this.selectedType?.value)) {\n        this.updateInputStatus();\n      } else if (event.changedKeys && event.changedKeys.length === 0) {\n        this.show5ValuesLimitMessage = false;\n        this.textBoxEnabled = true;\n      }\n    });\n  }\n\n  @Input() currentAppliedFilter = {};\n  @Input() additionalQueryParameters: Record<any, any>;\n\n  /******************************************************************************************\n   * @description   Input with the configuration needed for this free text.\n   *                Contains a URL to fetch the available types (fields), and another URL to\n   *                fetch autocomplete suggestions (if supported)\n   ******************************************************************************************/\n  @Input()\n  set freeTextConfiguration(value: FilterFreeTextConfiguration) {\n    this.useClientSideAscSort = this.filterFreeTextService.setSortingFlag(value?.useClientSideAscSort);\n    this._freeTextConfiguration = value;\n    this.updateFreeTextWithDefaultItem();\n  }\n\n  @Input()\n  set panelState(val: string) {\n    this._panelState = val;\n    if (val === 'hide') {\n      this.clearSearchValue();\n    }\n  }\n\n  freeText: string;\n\n  selectedType: FreeTextFieldType;\n  freeTextIcon: string | null = null;\n  validationRegex: RegExp;\n  freeTextValid: boolean;\n  textBoxEnabled: boolean;\n  keyToNumOfValuesHash: any;\n  show5ValuesLimitMessage: boolean;\n  skinOptions = SkinOptions;\n  _freeTextConfiguration: FilterFreeTextConfiguration;\n  itemsAutoCompleteList$: Observable<FilterFreeTextAutocompleteItem[]>;\n\n  private _fetchAutocompleteSubject = new BehaviorSubject<string>(''); // helper subject to manage calls to autocomplete\n  private _panelState: string;\n  @ViewChild('freeTextInput', { static: true }) freeTextInput: SingAutocompleteComponent;\n\n  constructor(\n    private filterFreeTextService: FilterFreeTextService,\n    private changeDetectionRef: ChangeDetectorRef,\n    private filterEventsService: FilterPanelEventsService\n  ) {\n    this._filterFreeTextService = filterFreeTextService;\n  }\n\n  ngOnInit(): void {\n    this.filterFreeTextService.invalidAutocompleteQuery = false;\n    this.textBoxEnabled = !!this.selectedType;\n    this.freeTextValid = true;\n    this.clearSearchValue();\n    this.initAutocomplete();\n  }\n\n  private initAutocomplete() {\n    this.itemsAutoCompleteList$ = this._fetchAutocompleteSubject.pipe(\n      debounceTime(300),\n      switchMap((searchText) => this.fetchAutocomplete(searchText)),\n      takeUntil(this.ngUnSubscribe)\n    );\n  }\n\n  updateFreeTextWithDefaultItem() {\n    if (this._freeTextConfiguration?.defaultFreeTextItemKey) {\n      const fieldsMatchingKey = this._freeTextFields\n        ? this._freeTextFields.filter(\n            (field: FreeTextFieldType) => field['value'] === this._freeTextConfiguration.defaultFreeTextItemKey\n          )\n        : [];\n      if (fieldsMatchingKey.length === 1) {\n        this.typeSelectionChanged(fieldsMatchingKey[0]);\n      }\n    }\n  }\n\n  /**************************************************************************************************\n   * @description - when selecting a free text field - we save the selection on the component state,\n   *                and we enable the text input, while resetting the autocomplete list\n   * @param {FreeTextFieldType} fieldType - the selected field to free text\n   **************************************************************************************************/\n  typeSelectionChanged(fieldType) {\n    this.filterFreeTextService.invalidAutocompleteQuery = false;\n    const freeTextInput: FreeTextFieldType = fieldType.currentSelected ? fieldType.currentSelected : fieldType;\n    this.selectedType = freeTextInput;\n    this.freeTextIcon = this.selectedType.icon ? FreeTextIconMapper[this.selectedType.icon] : null;\n    if (this._freeTextConfiguration.defaultFreeTextItemKeyLocalStorageKey) {\n      localStorage.setItem(this._freeTextConfiguration.defaultFreeTextItemKeyLocalStorageKey, freeTextInput.value);\n    }\n\n    this.validationRegex = this.selectedType.validation ? new RegExp(this.selectedType.validation) : null;\n    this.freeTextValid = true;\n    this.clearSearchValue();\n    this.updateInputStatus();\n    setTimeout(() => {\n      this.freeTextInput.triggerFocus();\n    }, 300);\n  }\n\n  private isValidateText(text: string): boolean {\n    if (!text) {\n      return true;\n    }\n    return this.validationRegex?.test(text) ?? true;\n  }\n\n  /**************************************************************************************************\n   * @description - when hitting ENTER - update query collection with the new free text input.\n   *                if the exist than the new user input will be append to the old free text value\n   **************************************************************************************************/\n  enterPressed() {\n    const successUpdateQuery = this.filterFreeTextService.enterPressed(\n      this.freeTextValid,\n      this.keyToNumOfValuesHash,\n      this.selectedType,\n      this.freeText,\n      this.queryActions\n    );\n    if (successUpdateQuery) {\n      this.clearSearchValue();\n    }\n  }\n\n  updateInputStatus() {\n    const currentQuery = this.queryActions.queryMap.queries.get(this.selectedType.value);\n    this.show5ValuesLimitMessage = this.filterFreeTextService.reachedTheLimit(currentQuery);\n    this.textBoxEnabled = !this.show5ValuesLimitMessage;\n  }\n\n  /*****************************************************************\n   * @description - when user changing the value of the text input\n   *              - than autocomplete search will trigger\n   ****************************************************************/\n  textBoxChange(newSearchVal: string) {\n    this.freeText = newSearchVal;\n    this.filterFreeTextService.invalidAutocompleteQuery = false;\n    this.freeTextValid = this.isValidateText(newSearchVal.trim());\n    if (this.selectedType.autoComplete) {\n      this.fetchAutoComplete(newSearchVal);\n    }\n  }\n\n  private fetchAutoComplete(searchVal: string) {\n    this._fetchAutocompleteSubject.next(searchVal.trim());\n  }\n\n  /************************************************************************\n   * @description - function to get autocomplete suggestions based on the\n   *                selected field, and current text\n   * @param searchText\n   ***********************************************************************/\n  fetchAutocomplete(searchText: string): Observable<FilterFreeTextAutocompleteItem[]> {\n    if (searchText.length <= 2) {\n      return of([]);\n    }\n    if (this.validationRegex) {\n      if (!this.validationRegex.test(searchText)) {\n        return of([]);\n      }\n    }\n    const autocompletePayload = this.filterFreeTextService.generateGetSavedPayload(\n      searchText,\n      this.queryActions,\n      this.selectedType,\n      this.additionalQueryParameters\n    );\n    return this.filterFreeTextService\n      .getAutocompleteResults(this.selectedType.autoComplete, autocompletePayload)\n      .pipe(startWith([]));\n  }\n\n  /***************************************************************************************************\n   * @description - upon selection of autocomplete item from the list - emit a freeTextAdded event\n   * @param {string} item - the selected item\n   ***************************************************************************************************/\n  clickAutoCompleteItem(item: FilterFreeTextAutocompleteItem) {\n    const freeTextValues = this.queryActions.queryMap.queries.get(this.selectedType['value'])\n      ? csvToArray(this.queryActions.queryMap.queries.get(this.selectedType['value']).value)\n      : [];\n    freeTextValues.push(item.value);\n\n    const displayTitles = this.queryActions.queryMap.queries.get(this.selectedType['value'])\n      ? [\n          this.queryActions.queryMap.queries.get(this.selectedType['value']).extraData.displayTitle,\n          this.selectedType['title'],\n        ]\n      : [this.selectedType['title']];\n\n    const updatedValue = this.calculateFreeTextValues(freeTextValues);\n    this.queryActions.actions.update(\n      this.selectedType['value'],\n      updatedValue,\n      QueryCollectionTypeEnum.FREE_TEXT_FILTER,\n      {\n        displayTitle: [...new Set(displayTitles)].join(','),\n        key: this.selectedType['value'],\n      }\n    );\n    this.clearSearchValue();\n  }\n\n  private clearSearchValue() {\n    this.freeText = '';\n  }\n\n  /*************************************************************\n   * @description - get free text values (mix csv and text)\n   * @param freeTextValues - list of selected free text items\n   ************************************************************/\n  calculateFreeTextValues(freeTextValues: string[]): string {\n    return freeTextValues\n      .map((str: string) => {\n        str = replaceApostropheIfNeeded(str);\n        str = str.indexOf(',') !== -1 ? `\"${str}\"` : str.replace(/[\"]+/g, '');\n        return str;\n      })\n      .join(',');\n  }\n\n  /**********************************************************\n   * @description build query value that include CSV values\n   * @param freeTextItems - free text BE response\n   *********************************************************/\n  buildKeyToValueHash(freeTextItems: FreeTextFieldType[]) {\n    this.keyToNumOfValuesHash = {};\n    for (let i = 0; i < freeTextItems.length; i++) {\n      const existingKey = freeTextItems[i];\n      const existingKeyValues = csvToArray(existingKey['value']);\n      this.keyToNumOfValuesHash[existingKey['value']] = existingKeyValues.length;\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n    this.queryActions.actions.unsubscribe();\n  }\n\n  freeTextButtonClick() {\n    this.filterEventsService.emitEvent(FilterPanelEventType.freeTextButtonClick);\n  }\n}\n","<div class=\"free-text-title\">Free text search</div>\n<sing-drop-down\n  class=\"filter-type-dropdown\"\n  [items]=\"_freeTextFields\"\n  (selectionChanged)=\"typeSelectionChanged($event)\"\n  [dropDownOptions]=\"{\n    triggerTitle: selectedType?.title || 'Select type...',\n    showSearch: true,\n    hasBackdrop: true,\n    showSelectedMarker: false,\n    skinOptions: skinOptions.Outline,\n    useClientSideAscSort: useClientSideAscSort\n  }\"\n  [disabled]=\"!_freeTextFields || _freeTextFields.length === 0\"\n  data-mgmtAutomationId=\"FreeTextFilterTypeDropdown\"\n></sing-drop-down>\n\n<ng-template #freeTextBtnTooltipRef>\n  {{ _freeTextConfiguration?.freeTextBtnTooltip }}\n</ng-template>\n\n<div class=\"free-text-container\">\n  <button\n    class=\"free-text-button s1-icon-btn-large-secondary-full\"\n    *ngIf=\"freeTextIcon\"\n    [singTooltip]=\"_freeTextConfiguration?.freeTextBtnTooltip && freeTextBtnTooltipRef\"\n    (click)=\"freeTextButtonClick()\"\n    data-mgmtAutomationId=\"FreeTextIconButton\"\n  >\n    <i [ngClass]=\"freeTextIcon\"></i>\n  </button>\n  <span (keyup.enter)=\"enterPressed()\" class=\"autocomplete-container\">\n    <sing-autocomplete\n      data-mgmtAutomationId=\"FreeTextSearchField\"\n      [term]=\"freeText\"\n      [items]=\"itemsAutoCompleteList$ | async\"\n      [itemTemplateRef]=\"itemTemplate\"\n      [itemsPerPage]=\"20\"\n      (itemSelected)=\"clickAutoCompleteItem($event)\"\n      (termChanged)=\"textBoxChange($event)\"\n      [disabled]=\"!textBoxEnabled\"\n      [displayClearButton]=\"true\"\n      [customCssClass]=\"freeTextAutocompleteContainerClass\"\n      #freeTextInput\n    >\n    </sing-autocomplete>\n    <ng-template #itemTemplate let-item=\"item\">{{ item.value }} ({{ item.count }})</ng-template>\n  </span>\n</div>\n<span class=\"invalid-text\"  data-mgmtAutomationId=\"FreeTextInputErrorMessage\" *ngIf=\"!freeTextValid\">This text is not valid for search</span>\n<span class=\"invalid-text\" *ngIf=\"_filterFreeTextService?.invalidAutocompleteQuery && freeTextValid\"\n  >The server couldn't process your request</span\n>\n\n<div class=\"message-not-autocomplete\" *ngIf=\"selectedType && !selectedType?.autoComplete\">\n  Hit ENTER to search this text\n</div>\n\n<div class=\"invalid-text\" *ngIf=\"show5ValuesLimitMessage\">Limited to 5 values for each field</div>\n","import { Injectable } from '@angular/core';\nimport { differenceWith, isEqual } from 'lodash';\nimport { SelectedField } from './selected-field';\n\n@Injectable()\nexport class FilterSelectFieldsService {\n  shouldTriggerChangeSelectedFields(originalList: string[], currentList: string[]): boolean {\n    if (originalList.length !== currentList.length && currentList.length > 0) {\n      return true;\n    } else {\n      const dif = differenceWith(originalList, currentList, isEqual);\n      if (dif.length > 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  changedKeys(\n    changedDone: boolean,\n    listOfCheckboxes: SelectedField[],\n    originalListOfCheckboxes: SelectedField[]\n  ): string[] {\n    let selectedKeys = [];\n    if (changedDone) {\n      selectedKeys = listOfCheckboxes.filter((item) => item.selected).map((item) => item.key);\n      const originalSelectedKeys = originalListOfCheckboxes.filter((item) => item.selected).map((item) => item.key);\n      if (this.shouldTriggerChangeSelectedFields(originalSelectedKeys, selectedKeys)) {\n        return selectedKeys;\n      }\n      return null;\n    } else {\n      return null;\n    }\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterItemType } from '../../enums/filter-item-type.enum';\nimport { FilterItemModel } from '../../models/filter-item.model';\nimport { SelectedField } from './selected-field';\nimport { cloneDeep } from 'lodash';\nimport { FilterSelectFieldsService } from './filter-select-fields.service';\n\n@Component({\n  selector: 'sing-filter-select-fields',\n  templateUrl: './filter-select-fields.component.html',\n  styleUrls: ['./filter-select-fields.component.scss'],\n})\nexport class FilterSelectFieldsComponent {\n  listOfCheckboxes: SelectedField[];\n  originalListOfCheckboxes: SelectedField[];\n  changedDone = false;\n  queryActions: QueryCollectionActions;\n  filterModelsList: FilterItemModel[];\n\n  constructor(private filterSelectFieldsService: FilterSelectFieldsService) {}\n\n  @Input()\n  set queryActionsModel(queryActions: QueryCollectionActions) {\n    this.queryActions = queryActions;\n    this.setCheckboxList(this.filterModelsList);\n  }\n\n  @Input() set filterModels(_filterModels: FilterItemModel[]) {\n    this.filterModelsList = _filterModels;\n    this.setCheckboxList(this.filterModelsList);\n  }\n\n  @Output() backToFilters = new EventEmitter<string[]>();\n  @Output() revertToDefault = new EventEmitter();\n\n  setCheckboxList(filterModels: FilterItemModel[]) {\n    if (this.filterModelsList && this.queryActions) {\n      this.listOfCheckboxes = filterModels\n        .filter((model) => model.filterType === FilterItemType.Radio || model.filterType === FilterItemType.Multi)\n        .map((model) => {\n          return {\n            key: model.key,\n            title: model.title,\n            selected: (model.values && model.values.length > 0) || this.queryActions.queryMap.queries.has(model.key),\n          };\n        });\n    }\n    this.originalListOfCheckboxes = cloneDeep(this.listOfCheckboxes);\n  }\n\n  /*********************************************************************************\n   * @description When clicking back to fields - first make sure changes were done.\n   *              If not - send with null, os the parent will now not to fetch\n   *              filters count for nothing\n   ********************************************************************************/\n  backToFiltersMode() {\n    const changedKeys = this.filterSelectFieldsService.changedKeys(\n      this.changedDone,\n      this.listOfCheckboxes,\n      this.originalListOfCheckboxes\n    );\n    this.backToFilters.emit(changedKeys);\n  }\n\n  toggleItem(event, cbItem: SelectedField) {\n    this.changedDone = true;\n    cbItem.selected = !cbItem.selected;\n  }\n}\n","<div class=\"flex-row\">\n  <div class=\"back\" data-automationId=\"backToFilters\" (click)=\"backToFiltersMode()\">\n    <span class=\"arrow\"></span> <span class=\"text view-more-back-filter\">Back to filters</span>\n  </div>\n\n  <div class=\"flex-column-parent\">\n    <div *ngFor=\"let cbItem of listOfCheckboxes\" class=\"flex-column-item\">\n      <mat-checkbox [attr.data-automationId]=\"cbItem.key + '_chekcbox'\" [checked]=\"cbItem.selected\" (change)=\"toggleItem($event, cbItem)\">{{cbItem.title}}</mat-checkbox>\n    </div>\n  </div>\n\n  <span data-automationId=\"revert\" class=\"revert s1-btn-large-secondary-link\" (click)=\"revertToDefault.emit()\">Revert to default selection</span>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { cloneDeep } from 'lodash';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { QueryCollectionActions } from '../../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterFreeTextItem } from './models/filter-free-text-item.model';\nimport { FilterListState } from './models/filter-list-state.model';\nimport { FilterItemModel } from '../models/filter-item.model';\nimport { FilterItemType } from '../enums/filter-item-type.enum';\nimport { SelectedFilterModel } from '../models/selected-filter.model';\nimport { FilterItemValue } from '../models/filter-item-value.model';\nimport { FilterFreeTextConfiguration } from '../models/filter-free-text-configuration.interface';\nimport { FilterConfiguration } from '../models/filter.configuration';\nimport { FreeTextFieldType } from './filter-free-text/models/free-Text-field-type.interface';\nimport { FilterPanelState } from '../models/filter-panel-state';\n\nconst TIMING = '500ms ease-in-out';\n\n@Component({\n  selector: 'sing-filter-list',\n  templateUrl: './filter-list.component.html',\n  styleUrls: ['./filter-list.component.scss'],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('selectFields', [\n      transition(':enter', [\n        style({ transform: 'translateX(-100%)' }),\n        animate(TIMING, style({ transform: 'translateX(0%)' })),\n      ]),\n      transition(':leave', [\n        style({ transform: 'translateX(0%)', position: 'absolute', left: 0, right: 0, top: 0 }),\n        animate(TIMING, style({ transform: 'translateX(-100%)' })),\n      ]),\n    ]),\n    trigger('seeCounts', [\n      transition(':enter', [\n        style({ transform: 'translateX(100%)' }),\n        animate(TIMING, style({ transform: 'translateX(0%)' })),\n      ]),\n      transition(':leave', [\n        style({ transform: 'translateX(0%)', position: 'absolute', left: 0, right: 0, top: 0 }),\n        animate(TIMING, style({ transform: 'translateX(100%)' })),\n      ]),\n    ]),\n  ],\n})\nexport class FilterListComponent {\n  _filterListFreeText: FilterItemModel[];\n  resetTextField = false;\n  state: FilterListState = FilterListState.filters;\n  filterListStateEnum = FilterListState;\n  _freeTextFields: FreeTextFieldType[];\n  @Input() additionalQueryParams: any;\n  @Input() additionalQueryObject: any;\n  @Input() permanentQueryParams: any;\n  @Input() queryActions: QueryCollectionActions;\n  @Input() freeTextItems: FilterFreeTextItem[];\n  @Input() isLoading: boolean;\n  @Input() withFreeText: boolean;\n  @Input() allowSelectFields: boolean;\n  @Input() freeTextConfiguration: FilterFreeTextConfiguration;\n  @Input() selectedKeys: string[];\n  @Input() additionalQueryParameters: Record<any, any>;\n  @Input() filterConfiguration: FilterConfiguration;\n\n  @Input() set freeTextFields(val: FreeTextFieldType[]) {\n    if (val) {\n      this._freeTextFields = val;\n    }\n  }\n  @Input() set panelState(value: FilterPanelState) {\n    this.scrollUp();\n    this._panelState = value;\n    if (value === 'hide') {\n      this.state = FilterListState.filters;\n    }\n  }\n\n  get panelState(): FilterPanelState {\n    return this._panelState;\n  }\n\n  get analyticsCategory(): string {\n    return this._analyticsCategory;\n  }\n\n  @Input()\n  set analyticsCategory(value: string) {\n    this._analyticsCategory = value;\n  }\n\n  @ViewChild('filterListContainer') filterListContainer: ElementRef;\n\n  /************************************************************************************\n   * @description - render all filters on filter change except for the freeText filter,\n   *                or filters which contains count and has no values array\n   ***********************************************************************************/\n  get filterListExceptForFreeTextAndNoValues(): FilterItemModel[] {\n    return this.filterList.filter(\n      (filter) =>\n        filter.key !== 'query' &&\n        ((filter.filterType !== FilterItemType.Radio && filter.filterType !== FilterItemType.Multi) ||\n          !this.selectedKeys ||\n          this.selectedKeys.indexOf(filter.key) > -1) &&\n        this.isNotEmptyMultiSelect(filter)\n    );\n  }\n\n  /************************************************************************************************\n   * @description -\n   * 1. Assign _filterList\n   * 2. To avoid rendering the free text box each time we pause writing\n   * and by this deleting the text that was written before, we now avoid this situation.\n   * we will render the free text once, after that it will not render again unless we\n   * pressed on the x button on the filter label above for free text, than we will re-render\n   * the ui-filter-factory.component.ts by changing the value of resetTextField (boolean)\n   *************************************************************************************************/\n  @Input()\n  set filterList(value: FilterItemModel[]) {\n    this._filterList = value;\n    this._filterListFreeText = this.filterList.filter((val) => val.key === 'query');\n    this.resetTextField = !(this._filterListFreeText.length > 0 && this._filterListFreeText[0].values.length > 0);\n  }\n\n  get filterList(): FilterItemModel[] {\n    return this._filterList || [];\n  }\n\n  private _analyticsCategory: string;\n  public _filterList: FilterItemModel[];\n\n  private _panelState: FilterPanelState;\n\n  @Output()\n  closeList = new EventEmitter<FilterPanelState>();\n  @Output()\n  selectedFilterFromListChangeEvent = new EventEmitter<FilterItemModel[]>();\n\n  @Output()\n  freeTextHash = new EventEmitter<Record<any, any>>();\n\n  @Output()\n  tagsFilterAdded = new EventEmitter<{ [key: string]: string[] }>();\n\n  @Output()\n  updateSelectedFields = new EventEmitter<string[]>();\n\n  closeFilterList() {\n    this.closeList.emit('hide');\n  }\n\n  scrollUp() {\n    if (this.filterListContainer) {\n      this.filterListContainer.nativeElement.scrollTop = 0;\n    }\n  }\n\n  isNotEmptyMultiSelect(filter: FilterItemModel): boolean {\n    if (filter.filterType !== FilterItemType.Multi) return true;\n    return filter.values.length !== 0;\n  }\n\n  onSelectedFilterChangeEvent(selectedFilter: SelectedFilterModel) {\n    let _selectedFilterValues = cloneDeep(selectedFilter.values);\n    if (!_selectedFilterValues) {\n      return;\n    }\n    _selectedFilterValues = _selectedFilterValues.filter((item) => !!item);\n    if (_selectedFilterValues.length === 0) {\n      return;\n    }\n    const newFilterList = this._filterList.map((filterItem: FilterItemModel) => {\n      if (filterItem.key === selectedFilter.key) {\n        filterItem.values = filterItem.values.map((filterVal: FilterItemValue) => {\n          if (filterVal.key === selectedFilter.values[0].key) {\n            filterVal.selected = selectedFilter.values[0].selected;\n          }\n          return filterVal;\n        });\n        if (\n          selectedFilter.filterType === FilterItemType.Range ||\n          selectedFilter.filterType === FilterItemType.MinMax ||\n          selectedFilter.filterType === FilterItemType.Custom\n        ) {\n          filterItem.values = selectedFilter.values;\n        }\n      }\n      return filterItem;\n    });\n    this.selectedFilterFromListChangeEvent.emit(newFilterList);\n  }\n\n  /**\n   * @description - when you are `back to filters` after selecting the counts you want to see -\n   * we first set the state back to filters, and emit the selected fields event up to the filter panel\n   * so it can re-call fetch filters count with the new requested fields.\n   * if newKeys is null - it means no changes were done, and now need to re-fetch filters count\n   * @param newKeys\n   */\n  selectedFieldsChange(newKeys: string[]) {\n    this.state = FilterListState.filters;\n    if (newKeys) {\n      this.updateSelectedFields.emit(newKeys);\n    }\n  }\n\n  /**************************************************************\n   * @description - revert to default selected keys was clicked\n   *************************************************************/\n  revertToDefault() {\n    this.state = FilterListState.filters;\n    this.queryActions.actions.resetToDefault();\n  }\n}\n","<div class='columns' @selectFields *ngIf='state === filterListStateEnum.filters' [ngStyle]=\"{'height': filterConfiguration.popOverState ?  filterConfiguration.popOverState + 'px' : '200px' }\">\n  <div class='flex-1' #filterListContainer>\n    <sing-filter-free-text\n      [freeTextFields]='_freeTextFields'\n      [additionalQueryParameters]='additionalQueryParameters'\n      [panelState]='panelState'\n      [queryActionsCollection]='queryActions'\n      [class.hidden-list]='isLoading'\n      *ngIf='withFreeText'\n      [freeTextConfiguration]='freeTextConfiguration'\n      [filterComponentId]=\"filterConfiguration?.componentId\"\n    ></sing-filter-free-text>\n\n    <ng-container *ngIf='!isLoading'>\n      <sing-filter-factory\n        *ngIf='_filterListFreeText?.length > 0'\n        [analyticsCategory]='analyticsCategory'\n        [panelState]='panelState'\n        (selectedFilterChange)='onSelectedFilterChangeEvent($event)'\n        [filterItem]='_filterListFreeText[0]'\n        [attr.data-mgmtAutomationId]=\"'FilterColumnNumber' + 0\"\n        [resetItem]='resetTextField'\n        [queryActions]='queryActions'\n      ></sing-filter-factory>\n\n      <sing-filter-factory\n        [analyticsCategory]='analyticsCategory'\n        [panelState]='panelState'\n        (selectedFilterChange)='onSelectedFilterChangeEvent($event)'\n        *ngFor='let filter of filterListExceptForFreeTextAndNoValues; let index = index'\n        [filterItem]='filter'\n        [queryActions]='queryActions'\n        [attr.data-mgmtAutomationId]=\"'FilterColumnNumber' + index\"\n      ></sing-filter-factory>\n    </ng-container>\n  </div>\n  <div\n    data-automationId='viewMoreFields'\n    class='go-to-select'\n    *ngIf='allowSelectFields && !isLoading'\n    (click)='state = filterListStateEnum.fieldSelect'\n  >\n    <span class='arrow'></span>\n    <div class='text view-more-back-filter'>View More Filters</div>\n  </div>\n  <sing-loader class='loader-height' *ngIf='isLoading'></sing-loader>\n</div>\n\n<sing-filter-select-fields\n  (revertToDefault)='revertToDefault()'\n  @seeCounts\n  (backToFilters)='selectedFieldsChange($event)'\n  [filterModels]='_filterList'\n  [queryActionsModel]='queryActions'\n  *ngIf='state === filterListStateEnum.fieldSelect'\n>\n</sing-filter-select-fields>\n\n<div class='minimize' data-mgmtAutomationId='closeFilterButton' (click)='closeFilterList()'>\n  <div class='dropdown-down-arrow'></div>\n  Minimize\n</div>\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { SkinOptions } from '../../../../form-controls/drop-down/enums/skin-options.enum';\nimport { DropDownItem, ServerSideOptions } from '../../../../form-controls/drop-down/public-api';\nimport { FilterFreeTextItem } from '../../list-components/models/filter-free-text-item.model';\nimport { SavedFiltersListService } from './saved-filters-list.service';\nimport { SaveFilterActionsEnum } from '../enums/save-filter-actions.enum';\nimport { QueryCollectionActions } from '../../../../../services/query-collection/core/actions/query-collection-actions';\nimport { QueryRegister } from '../../../../../services/query-collection/core/register/query-register';\nimport { Subject } from 'rxjs';\nimport { SavedFilterApiHandling } from '../models/saved-filter-api-handling.model';\nimport { SavedFilter } from '../../../filter-panel/models/saved-filter.interface';\nimport { FilterConfiguration } from '../../../filter-panel/models/filter.configuration';\n\n@Component({\n  selector: 'sing-saved-filters-list',\n  templateUrl: './saved-filters-list.component.html',\n  styleUrls: ['./saved-filters-list.component.scss'],\n})\nexport class SavedFiltersListComponent implements OnInit, OnDestroy {\n  savedFiltersServerOptions: ServerSideOptions;\n  newFilterSetName: string;\n  savedFilterQueryCollection: QueryCollectionActions;\n  currentSavedFilter = null;\n  selected = null;\n  selectedSet: DropDownItem = null;\n  _setApiHandling: any;\n  _outerQueryParams: any;\n  private _saveSetEnabled: boolean;\n  private _selectSetEnabled: boolean;\n  additionalQuery: Record<any, any>;\n\n  @Input() set loadedSet(loadedSet: SavedFilter) {\n    this.selectedSet = loadedSet\n      ? <DropDownItem>{\n          value: loadedSet.id,\n          data: loadedSet,\n          title: loadedSet.title,\n        }\n      : null;\n  }\n\n  @Input() queryActions: QueryCollectionActions;\n\n  @Input() filterConfiguration: FilterConfiguration;\n\n  @Input()\n  set setApiHandling(setApiHandling: SavedFilterApiHandling) {\n    this._setApiHandling = setApiHandling;\n    this.setupSavedSet(setApiHandling);\n  }\n\n  @Input() editSetsDisabled: boolean;\n\n  @Input()\n  set selectSetEnabled(value: boolean) {\n    this._selectSetEnabled = value;\n  }\n\n  get selectSetEnabled(): boolean {\n    return this._selectSetEnabled;\n  }\n\n  get saveSetEnabled(): boolean {\n    return this._saveSetEnabled;\n  }\n\n  @Input()\n  set saveSetEnabled(value: boolean) {\n    this._saveSetEnabled = value;\n  }\n\n  @Input() set outerQueryParams(value: any) {\n    if (value) {\n      this._outerQueryParams = value;\n      this.setupSavedSet(this._setApiHandling);\n    }\n  }\n\n  @Input() selectedSetName: string = null;\n  @Input() freeTextItems: FilterFreeTextItem[];\n  @Output() selectedSavedFilter = new EventEmitter<SavedFilter>();\n  @Output() editSetNameEvent = new EventEmitter<DropDownItem>();\n  @Output() updateSetEvent = new EventEmitter<DropDownItem>();\n  @Output() deleteSetEvent = new EventEmitter<string>();\n  @Output() updateSetNameEvent = new EventEmitter<string>();\n  @Output() saveNewSetEvent = new EventEmitter<SavedFilter>();\n\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  selectedSetOptions: DropDownItem[];\n  openSaveFilterMenu: boolean;\n  skinOptions = SkinOptions;\n\n  constructor(private queryRegister: QueryRegister, private savedFiltersListService: SavedFiltersListService) {\n    this.openSaveFilterMenu = false;\n    this.selectedSetOptions = this.savedFiltersListService.savedSetActions();\n  }\n\n  ngOnInit() {\n    this.selectedSetName = '';\n    const extraQueries = this._outerQueryParams ? this._outerQueryParams : this.additionalQuery;\n    this.savedFiltersServerOptions = this.savedFiltersListService.getSavedSetSettings(\n      this._setApiHandling,\n      extraQueries\n    );\n    this.savedFilterQueryCollection = this.queryRegister.register(\n      this.queryActions.collectionId,\n      this.queryActions.activeLogs\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n    this.queryActions.actions.unsubscribe();\n  }\n\n  /*************************************************\n   * @description open/close saved set action menu\n   * @param open - true/false\n   ************************************************/\n  openSetNewFilterMenu(open) {\n    this.openSaveFilterMenu = open;\n  }\n\n  /***************************************************************************\n   * @description: when user select saved filter - update query collection\n   * @param selectedSavedSet - selected saved set\n   **************************************************************************/\n  selectSavedFilter(selectedSavedSet: DropDownItem) {\n    this.selectedSet = selectedSavedSet;\n    this.selectedSavedFilter.next(selectedSavedSet.data);\n    this.savedFiltersListService.updateQueryCollection(\n      this.queryActions,\n      selectedSavedSet.data.filterFields,\n      this.filterConfiguration\n    );\n  }\n\n  /***************************************************\n   * @description when user save new set of queries\n   * @param setName - saved set name\n   **************************************************/\n  onSaveSet(setName: string) {\n    this.openSaveFilterMenu = false;\n    this.updateSetNameEvent.emit(setName);\n    this.newFilterSetName = '';\n  }\n\n  /*******************************************************************\n   * @description once an option is being selected\n   * @param option - exist set name action - EDIT / DELETE / UPDATE\n   *****************************************************************/\n  onOptionSelected(option: DropDownItem) {\n    switch (option.value) {\n      case SaveFilterActionsEnum.EDIT:\n        this.editSetNameEvent.emit(this.selectedSet);\n        break;\n      case SaveFilterActionsEnum.DELETE:\n        this.deleteSetEvent.emit(this.selectedSet.value);\n        break;\n      case SaveFilterActionsEnum.UPDATE:\n        this.updateSetEvent.emit(this.selectedSet);\n        break;\n    }\n  }\n\n  setupSavedSet(setApiHandling: SavedFilterApiHandling) {\n    const newServerOptions = this.savedFiltersListService.getSavedSetSettings(\n      this._setApiHandling,\n      this._outerQueryParams\n    );\n    newServerOptions.subUrl = setApiHandling.getUrl;\n    this.savedFiltersServerOptions = newServerOptions;\n  }\n}\n","<div\n  class='filter-actions-holder'>\n  <div>\n    <button\n      type='button'\n      class='s1-btn-large-primary-link save-filter'\n      data-mgmtAutomationId='SaveNewSetButton'\n      [matMenuTriggerFor]='menu'\n      (onMenuOpen)='openSetNewFilterMenu(true)'\n      (onMenuClose)='openSetNewFilterMenu(false)'\n    >Save Filter\n    </button>\n  </div>\n  <div>\n    <sing-drop-down\n      [selected]=\"selectedSet\"\n      data-mgmtautomationid='LoadFilterDropdown'\n      [serverSideOptions]='savedFiltersServerOptions'\n      [dropDownOptions]=\"{\n           showSearch: true,\n           skinOptions: skinOptions.Transparent,\n           isMultipleSelection: false,\n           showClearSelected: false,\n           requiredValidators: false,\n           showSelectAll: false,\n           triggerTitle: selectedSetName ? selectedSetName : 'Load Filter'\n         }\"\n      (clickedItem)='selectSavedFilter($event)'\n    >\n    </sing-drop-down>\n  </div>\n  <div>\n    <mat-menu\n      class='save-new-set-menu'\n      #menu='matMenu'\n      [overlapTrigger]='false'>\n      <div class='save-new-set'\n           (click)='$event.stopPropagation();'\n           *ngIf='openSaveFilterMenu'>\n        <div class='first-row'>\n          <div class='save-filter-as-set-image'>\n          </div>\n          <div class='save-filter-as-set-text'>\n            <div class='text-1'>Save filters to Set</div>\n            <div class='text-2'>Save selected filters as set so</div>\n            <div class='text-2'>you can use them later</div>\n          </div>\n        </div>\n        <div class='second-row'>\n          <sing-input>\n            <input\n              type='text'\n              [(ngModel)]='newFilterSetName'\n              class='name-input'\n              maxlength='50'\n              mgmtAutomationId='new-filter-name'\n              placeholder='Set filter name...'\n              singInputAutoFocus>\n          </sing-input>\n          <button\n            [disabled]='newFilterSetName?.length === 0'\n            class='s1-btn-large-primary-full save-button'\n            type='button'\n            mgmtAutomationId='new-filter-submit'\n            (click)='onSaveSet(newFilterSetName)'>\n            Save\n          </button>\n        </div>\n      </div>\n    </mat-menu>\n  </div>\n  <div>\n    <sing-drop-down\n      *ngIf='selectedSet'\n      data-mgmtautomationid='SelectedSetOptions'\n      class='large-dd'\n      [title]='\"Selected set options\"'\n      [items]='selectedSetOptions'\n      [dropDownOptions]=\"{\n           showSearch: false,\n           skinOptions: skinOptions.Transparent,\n           isMultipleSelection: false,\n           showClearSelected: false,\n           requiredValidators: false,\n           showSelectAll: false,\n           showSelectedMarker: false,\n           triggerTitle: 'Selected set options'\n         }\"\n      (clickedItem)='onOptionSelected($event)'>\n    </sing-drop-down>\n  </div>\n</div>\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { SkinOptions } from '../../form-controls/drop-down/enums/skin-options.enum';\nimport { QueryCollectionModel } from '../../../services/query-collection/models/query-collection.model';\nimport { FreeTextFieldType } from './list-components/filter-free-text/models/free-Text-field-type.interface';\nimport { DropDownItem } from '../../../modules/form-controls/drop-down/public-api';\nimport { FilterService } from './services/filter-service/filter.service';\nimport { ToastNotificationService } from '../../../modules/popups/toast-notification/services/toast-notification.service';\nimport { SavedFiltersListService } from './saved-filters/saved-filters-list/saved-filters-list.service';\nimport { FilterFreeTextService } from './list-components/filter-free-text/filter-free-text.service';\nimport { TIME_OPTIONS } from './list-components/filter-tab-time/model/time-consts';\nimport { FilterFreeTextItem } from './list-components/models/filter-free-text-item.model';\nimport { SelectedTimeChangedPayload } from './list-components/filter-tab-time/model/selected-time-changed-payload';\nimport { cloneDeep, isEqual, isObject } from 'lodash';\nimport { QueryCollectionTypeEnum } from '../../../services/query-collection/enums/query-collection-type.enum';\nimport { QueryCollectionEvent } from '../../../services/query-collection/models/query-collection-listener.model';\nimport { QueryCollectionActions } from '../../../services/query-collection/core/actions/query-collection-actions';\nimport { FilterChangeSetNameComponent } from './saved-filters/change-saved-filter-name/filter-change-set-name.component';\nimport { SavedFilter } from './models/saved-filter.interface';\nimport { FilterConfiguration, QueryManagementConfiguration } from './models/filter.configuration';\nimport { combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\nimport { catchError, filter, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { FilterMessage } from './models/filter-message.interface';\nimport { FilterMessageEnum } from './enums/filter-message.enum';\nimport { FilterCommunicationService } from './services/filter-communication.service';\nimport { FilterPanelService } from './services/filter-panel/filter-panel.service';\nimport { ManageFilterActionsService } from './services/manage-actions/manage-filter-actions.service';\nimport { SaveSetPayload } from './models/save-set-payload.interface';\nimport { QueryRegister } from '../../../services/query-collection/core/register/query-register';\nimport { SingDialogService } from '../../../modules/popups/dialog/services/dialog.service';\nimport { FilterItemModel } from './models/filter-item.model';\nimport { ActionStatus } from './services/manage-actions/enums/dependency-status.enum';\nimport { SingHttpErrorResponse } from '../../../services/http-call/models/sing-http-response';\nimport { FullFilterModel } from './models/full-filter.interface';\nimport { DependencyResponse } from '../filter-panel/services/manage-actions/models/DependencyResponse.interface';\nimport { Action } from '../filter-panel/services/manage-actions/models/dependency-action.interface';\nimport { FilterPanelEventsService } from './services/filter-panel-events.service';\nimport { FilterPanelEventType } from './enums/filter-panel-event.enum';\nimport { popOverState } from './filter-panel-animation';\nimport { SingFilterPreferences } from './models/filter-preferences.interface';\nimport { FilterPreferencesService } from './services/filter-preferences.service';\nimport { FREE_TEXT_AUTOCOMPLETE_CONTAINER_CLASS } from './consts/free-text-autocomplete-container-class';\nimport { FilterPanelState } from './models/filter-panel-state';\n\n@Component({\n  selector: 'sing-filter-panel',\n  templateUrl: './filter-panel.component.html',\n  styleUrls: ['./filter-panel.component.scss'],\n  providers: [FilterPanelEventsService, FilterPreferencesService],\n  animations: [popOverState],\n  encapsulation: ViewEncapsulation.Emulated,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FilterPanelComponent implements OnInit, OnDestroy {\n  selectedSavedFilterName: string;\n  queryCollectionModels: QueryCollectionModel[];\n  userPreferencesFirstInit = true;\n  freeTextFields: FreeTextFieldType[];\n  selectedSetName: string;\n  skinOptions = SkinOptions;\n  queryActions: QueryCollectionActions;\n  selectedCustomDropdownItem: DropDownItem;\n  customDropdownTitle: string;\n  popOverStateWidth = '200px';\n\n  get loadedSet(): SavedFilter {\n    return this._loadedSet;\n  }\n\n  get savedSets(): SavedFilter[] {\n    return this._savedSets;\n  }\n\n  get filterList(): FilterItemModel[] {\n    return this._filterList;\n  }\n\n  get filterAdditionalSelectedSavedFilterNameParams() {\n    return this._filterAdditionalParams;\n  }\n\n  @Input()\n  set startOpen(startOpen: boolean) {\n    if (startOpen) {\n      setTimeout(() => {\n        this.panelState = 'show';\n      }, 1000);\n    }\n  }\n\n  @Input()\n  allowDynamicConfigurationChange = false;\n\n  /****************************************************************************************************************************\n   * @description when the filterConfig object is set - we need to initialize the selected\n   *              time range object if the filter includes time range, and the\n   *              os selection when the filter includes os selection (currently only on firewall control)\n   *              the value can be initialized either from timeConfig field of filerConfig explicitly or from user preferences.\n   *              The reason we wait 100 ms is for the componentId to be set.\n   * @param filterConfiguration - filter configuration- include defaults, free text and more\n   *****************************************************************************************************************************/\n  @Input()\n  set filterConfig(filterConfiguration: FilterConfiguration) {\n    const { collectionId } = this.getQueryManagementConfiguration(this._filterConfig); // this._filterConfig?.queryManagementConfiguration?.collectionId;\n    this._filterConfig = filterConfiguration;\n    this.filterPreferencesService.componentId = filterConfiguration.componentId;\n    if (filterConfiguration.customLeftDropDown?.scopeFilterConfig?.defaultSelection) {\n      this.scopesFilter = { ...filterConfiguration.customLeftDropDown?.scopeFilterConfig?.defaultSelection };\n    }\n    if (filterConfiguration?.withTimeRange) {\n      if (filterConfiguration.timeConfig) {\n        this.selectedTimeTitleAndTimeRange = {\n          queryTimeRange: filterConfiguration.timeConfig.timeRange,\n          queryTimeTitle: filterConfiguration.timeConfig.timeTitle,\n        };\n      }\n    }\n\n    // update free text filters and register query collection from the new filter configuration\n    // and update subscriptions\n    if (this.isDynamicConfigurationChangeAllowed()) {\n      this.fetchFreeTextFilters(filterConfiguration);\n      this.updateQueryCollection(collectionId);\n    }\n\n    if (\n      isObject(filterConfiguration?.withTimeRange) &&\n      filterConfiguration?.withTimeRange.active &&\n      filterConfiguration?.withTimeRange.withTimeRangeDisplayValueUrl\n    ) {\n      if (!!!filterConfiguration.excludeFromRequests) {\n        filterConfiguration.excludeFromRequests = ['timeTitle'];\n      } else {\n        filterConfiguration.excludeFromRequests = [...filterConfiguration.excludeFromRequests, 'timeTitle'];\n      }\n    }\n\n    if (this._filterConfig.popOverState) {\n      this.popOverStateWidth = `${this._filterConfig.popOverState}px`;\n    }\n    if (filterConfiguration?.withOSDropdown) {\n      this.selectedOsType = 'windows';\n    }\n    if (filterConfiguration?.customLeftDropDown && !filterConfiguration?.customLeftDropDown.scopeFilterConfig) {\n      this.customLeftDropdownResultObject = {};\n      this.customLeftDropdownResultObject[this.filterConfig.customLeftDropDown.filterFieldName] = filterConfiguration\n        .customLeftDropDown.defaultSelected\n        ? filterConfiguration.customLeftDropDown.defaultSelected.value\n        : filterConfiguration.customLeftDropDown.items[0].value;\n    }\n\n    // unsubscribe so that we do not have duplicate http calls\n    if (this._completeAllDependenciesSubscription) {\n      this._completeAllDependenciesSubscription.unsubscribe();\n    }\n\n    this._completeAllDependenciesSubscription = this.filterDependenciesService.completeAllDependencies\n      .pipe(takeUntil(this.ngUnSubscribe))\n      .subscribe((response) => {\n        this.queryActions = response.queryActions;\n        this.setDefaultSelectedFields(this._filterConfig);\n        this.setDefaultQueries(this._filterConfig);\n        this.setInitialScopeFilters(response);\n        this.setInitialCustomDropdown(this._filterConfig, response, this.queryActions);\n\n        // unsubscribe from filters count and query actions changes\n        // so that we do not have duplicate http calls\n        if (this._queryActionsChangeAndFiltersCountSubscription) {\n          this._queryActionsChangeAndFiltersCountSubscription.unsubscribe();\n        }\n\n        this._queryActionsChangeAndFiltersCountSubscription = this.combineCalls([\n          response?.queryActions.queriesChanged.pipe(startWith(response.queryActions.queryMap)),\n          this._fetchFilterCount$.pipe(startWith(0)),\n        ]);\n      });\n  }\n\n  get filterConfig(): FilterConfiguration {\n    return this._filterConfig;\n  }\n\n  @Input()\n  set additionalQuery(_additionalQuery: Record<any, any>) {\n    this.additionalQueryParameters = _additionalQuery;\n    this._fetchFilterCountSubject.next({ useCurrent: true });\n  }\n\n  /****************************************************************************************************\n   * @description In order for a way to tell this component to refresh the\n   *              filters count (for example if an item on the table was deleted) -\n   *              we added a filterCommunicationService that sends events. Here we listen to it,\n   *              and if the filterMessage is of type FETCH_FILTER_COUNT -\n   *              we call fetch.\n   *              We only listen to this service events if a componentId is set, because we have to\n   *              know the event is sent to this filter component\n   *\n   * @param componentId - current component id\n   *****************************************************************************************************/\n  @Input()\n  set componentId(componentId: string) {\n    this.filterComponentId = componentId;\n    this._listenToCommunicationService(componentId);\n    this.filterPreferencesService.componentId = componentId;\n  }\n\n  constructor(\n    private filterService: FilterService,\n    private toastMessageService: ToastNotificationService,\n    private singDialogService: SingDialogService,\n    private filterCommunicationService: FilterCommunicationService,\n    private filterFreeTextService: FilterFreeTextService,\n    private filterPanelService: FilterPanelService,\n    private savedFiltersListService: SavedFiltersListService,\n    private changeDetectionRef: ChangeDetectorRef,\n    private filterDependenciesService: ManageFilterActionsService,\n    private queryRegister: QueryRegister,\n    private cdRef: ChangeDetectorRef,\n    private filterEventsService: FilterPanelEventsService,\n    private filterPreferencesService: FilterPreferencesService\n  ) {\n    this._listenToFreeTextButtonClicked();\n  }\n\n  @Input() userPreferencesService: any;\n  @Input() preferencesCategory: string;\n  @Input() editSetsDisabled: boolean;\n  @Input() timeOptions = TIME_OPTIONS;\n  @Input() saveNewSetFilter: any;\n  @Input() outerQueryParams: any;\n\n  /*****************************************************************************\n   @description filter saved set emitter events\n   @event saveNewSet - emit after new filter set is saved\n   @event editSetPopup - emit after existing set name is updated\n   @event updateSet - emit after existing set filter is updated\n   @event loadedSetChange - emit after selecting saved set from existing list\n   @event deleteSet - emit after existing set name is deleted\n   @event loadedSetCleared - on clear search bar\n   ****************************************************************************/\n  @Output() saveNewSet = new EventEmitter<SavedFilter>();\n  @Output() editSetPopup = new EventEmitter<DropDownItem>();\n  @Output() updateSet = new EventEmitter<SaveSetPayload>();\n  @Output() loadedSetChange = new EventEmitter<SavedFilter>();\n  @Output() deleteSet = new EventEmitter<string>();\n  @Output() selectedFilterChange = new EventEmitter<FullFilterModel>();\n  @Output() loadedSetCleared = new EventEmitter<any>();\n  @Output() timeRangeChange = new EventEmitter<any>();\n  @Output() customDropdownValueChanged = new EventEmitter<any>();\n  @Output() filterChanged = new EventEmitter<Record<any, any>>();\n  @Output() freeTextButtonClick = new EventEmitter<void>();\n  @Output() changeFilterPreferences = new EventEmitter<SingFilterPreferences>();\n\n  panelState: FilterPanelState;\n  customLeftDropdownResultObject: Record<any, any>; // The object that keeps the selected item in the custom left dropdown (if there is). It is kept as an object in order to merge it when needed\n  freeTextItems: FilterFreeTextItem[];\n  selectedKeys: string[];\n  fetchSuccess: boolean;\n  _additionalFilterObject: any;\n  freeTextKeysHash: Record<any, any>;\n  selectedTimeTitleAndTimeRange: SelectedTimeChangedPayload;\n  filterComponentId: string;\n  ngUnSubscribe: Subject<void> = new Subject<void>();\n  hasValues: boolean; // whether the filter currently has values (meaning any filter is applied)\n  updateSetEnabled: boolean; // whether we should enable update set. It is enabled when there is a selected set, and we change the current filter\n  selectedOsType: string; // keep the selected OS when applied.\n  additionalQueryParameters: Record<any, any>; // additional queries that will send to filter count for example scope\n  errorResponse: SingHttpErrorResponse | string;\n  savedFilter: SavedFilter;\n  _loadedSet: SavedFilter; // the set which is currently loaded\n\n  private _filterConfig: FilterConfiguration;\n  public _tagsData: { [key: string]: string[] };\n  private _filterList: FilterItemModel[]; // the list of filters needed to be shown (and selected values if any)\n  private scopesFilter: any = {};\n  private _savedSets: SavedFilter[]; // the list of available sets\n  private _filterAdditionalParams: any = {}; //the params object we send with the filter\n  private _queryParams: Map<string, QueryCollectionModel> = null; //the query params\n  private _fetchFilterCountSubject = new Subject<any>(); // the boolean is whether to build additional parameters from filter, or take it from existing filterAdditionalParams object\n  private _fetchFilterCount$ = this._fetchFilterCountSubject.asObservable();\n  public initialScopeFilters: any;\n  private useCurrentAdditionalParams: boolean;\n  private _queryActionsChangeAndFiltersCountSubscription: Subscription;\n  private _completeAllDependenciesSubscription: Subscription;\n\n  /*************************************************************************************************************************************\n   * @description When we finish setting the additionalQueryParams - we still need to calculate them in order to make the API call:\n   *              1) First we need ot filter out table specific query params - like page and limit\n   *              2) Then we need to separate free text items to save them in order to pass them to the list and search bar.\n   * @param _value\n   **************************************************************************************************************************************/\n  private setAdditionalParams(_value: any) {\n    this._filterAdditionalParams = this.filterService.ignoreTableSpecificQueryParams(_value);\n    if (this.freeTextKeysHash) {\n      this.freeTextItems = this.filterService.extractFreeTextItemsFromFilterParams(\n        this.freeTextKeysHash,\n        this._filterAdditionalParams\n      );\n    }\n  }\n\n  private _listenToCommunicationService(componentId: string) {\n    if (componentId) {\n      this.filterCommunicationService\n        .on()\n        .pipe(\n          filter((msg: FilterMessage) => !!msg && msg.filterComponentId === componentId),\n          takeUntil(this.ngUnSubscribe)\n        )\n        .subscribe((msg: FilterMessage) => {\n          switch (msg.message) {\n            case FilterMessageEnum.FETCH_FILTER_COUNT:\n              this._fetchFilterCountSubject.next({ useCurrent: true, dontEmitParametersChange: true });\n              break;\n            case FilterMessageEnum.SET_ADDITIONAL_PARAMETERS:\n              this.setAdditionalParams(msg.data);\n              break;\n          }\n        });\n    }\n  }\n\n  setInitialCustomDropdown(\n    filterConfig: FilterConfiguration,\n    dependenciesActionResponse: DependencyResponse,\n    queryActions: QueryCollectionActions\n  ) {\n    const defaultScopeFilter =\n      dependenciesActionResponse?.dependencies?.find((item: Action) => {\n        return item.name === 'fetchUserPreferences';\n      }) || null;\n    if (\n      !(\n        defaultScopeFilter &&\n        defaultScopeFilter.responseData &&\n        defaultScopeFilter.responseData[`${this.filterComponentId}scopeFilter`]\n      )\n    ) {\n      this.filterService.updateCustomDropdownQueryCollection(filterConfig, queryActions);\n    }\n  }\n\n  /**************************************************************************************\n   @description - register filter panel to query collection with unique collection id\n   *************************************************************************************/\n  setQueryCollection() {\n    const collectionId = isObject(this.filterConfig.queryManagementConfiguration)\n      ? this.filterConfig.queryManagementConfiguration.collectionId\n      : this.filterConfig.queryManagementConfiguration;\n    const activeLogs = isObject(this.filterConfig.queryManagementConfiguration)\n      ? this.filterConfig.queryManagementConfiguration.activeLogs\n      : false;\n\n    let defaultQueries = {};\n    if (this.filterConfig.defaultSelectFieldKeys && this.filterConfig.defaultSelectFieldKeys.length > 0) {\n      defaultQueries = {\n        countsFor: this.filterConfig.defaultSelectFieldKeys.join(','),\n      };\n    }\n    this.queryActions = this.queryRegister.register(collectionId, activeLogs, defaultQueries);\n  }\n\n  /***********************************************************************************\n   * @description init, besides initializing the component state,\n   *              we listen to fetch filters subject and query collection changed and\n   *              auditTime of 100, we call the fetch method.\n   ***********************************************************************************/\n  ngOnInit() {\n    if (!!this.startOpen) {\n      setTimeout(() => {\n        this.panelState = 'show';\n      }, 1000);\n    } else {\n      this.panelState = 'hide';\n    }\n    this._filterList = [];\n    this.fetchSuccess = false;\n    this.hasValues = false;\n    this.updateSetEnabled = false;\n    this.freeTextItems = [];\n    this.setQueryCollection();\n    this.fetchFreeTextFilters(this.filterConfig);\n    this.filterDependenciesService.executedActionsAndWaitForAll(\n      this.filterConfig.onBeforeFetchFilterCountActions,\n      this.queryActions,\n      this.filterConfig\n    );\n  }\n\n  combineCalls(observables: Array<Observable<any>>): Subscription {\n    let changedKeys;\n    return combineLatest(observables)\n      .pipe(\n        tap(([queryParams, config]) => {\n          this.fetchSuccess = false;\n          this.useCurrentAdditionalParams = config.useCurrent;\n          changedKeys = queryParams.changedKeys;\n          this.queryCollectionModels = this.filterPanelService.updateQueryInfo(\n            this.queryActions,\n            this.filterConfig,\n            this.freeTextFields,\n            this._filterList,\n            changedKeys,\n            this._filterConfig?.defaultDisplayFilterName || {},\n            true\n          );\n          this.setSelectedCustomDropDown();\n          this.filterChanged.next(this.queryActions.actions.convertQueriesToObject);\n          this.cdRef.markForCheck();\n        }),\n        switchMap(([queryParams]) =>\n          this.fetchFilterCounts(queryParams, this.additionalQueryParameters).pipe(\n            catchError((err: SingHttpErrorResponse | string) => {\n              this._tagsData = {};\n              const newSelectedKeys = this.filterConfig.allowSelectFields\n                ? [...this.filterConfig.defaultSelectFieldKeys]\n                : null;\n              if (this._filterConfig.onFetchFilterCountFailedActions) {\n                const actions = this._filterConfig.onFetchFilterCountFailedActions.map((action) => {\n                  action.status = ActionStatus.NONE;\n                  return action;\n                });\n                this.errorResponse = err;\n                this.filterDependenciesService.executedActions(this.queryActions, this.filterConfig, actions, this);\n              }\n              this.selectedKeys = newSelectedKeys;\n              return of(null);\n            })\n          )\n        ),\n        takeUntil(this.ngUnSubscribe)\n      )\n      .subscribe((filterCountResponseData: FilterItemModel[]) => {\n        if (filterCountResponseData) {\n          this.queryCollectionModels = this.updateQueryInfo(filterCountResponseData);\n          this.handleFetchFilterCountsSuccess(filterCountResponseData);\n          this.userPreferencesFirstInit = false;\n        } else {\n          this.queryActions.actions.resetToDefault();\n        }\n        if (this.filterConfig.startOpen) {\n          this.panelState = 'show';\n        }\n        this.cdRef.markForCheck();\n      });\n  }\n\n  /***************************************************************************************************************\n   * @description - update query information according to filter count response data or free text response data\n   * @param filterCountResponseData\n   ***************************************************************************************************************/\n  updateQueryInfo(filterCountResponseData: FilterItemModel[]) {\n    return this.filterPanelService.updateQueryInfo(\n      this.queryActions,\n      this.filterConfig,\n      this.freeTextFields,\n      filterCountResponseData,\n      [],\n      this._filterConfig?.defaultDisplayFilterName || {}\n    );\n  }\n\n  /***********************************************************************************\n   @description - after succeed fetch filter count trigger update user preferences\n   **********************************************************************************/\n  handleFetchFilterCountsSuccess(data: FilterItemModel[]) {\n    this.fetchSuccess = true;\n    this._filterList = data;\n    this.hasValues =\n      this.filterService.hasValues(data) ||\n      this.filterService.hasFreeText(this.queryActions?.queryMap?.queries) ||\n      this.filterService.hasObjectFilter(this.queryActions?.queryMap?.queries) ||\n      this.queryCollectionModels.length > 0;\n    !isEqual(this._tagsData, {});\n    if (!this.hasValues) {\n      this._loadedSet = null;\n      this.updateSetEnabled = false;\n    }\n\n    if (this.filterConfig.onFetchFilterCountSuccessActions) {\n      const actions = this.filterConfig.onFetchFilterCountSuccessActions.map((action) => {\n        action.status = ActionStatus.NONE;\n        return action;\n      });\n      this.filterDependenciesService.executedActions(this.queryActions, this.filterConfig, actions, this);\n    }\n  }\n\n  // SAVED FILTER METHODS\n  /**************************************************************************************************\n   * @description Handler to save Set event fired. We send the current filter, the new set name,\n   *              and the selected site ID along with the saveURL to the service.\n   *              Upon success - we toast a message, update the loaded set, emit an event about it,\n   *              disable the update set button and call fetch saved sets, to add it\n   *              to the set list\n   * @param {string} val\n   **************************************************************************************************/\n  onSaveSet(val: string) {\n    const outerQueries = this.outerQueryParams ? this.outerQueryParams : this.additionalQueryParameters;\n    this.savedFiltersListService\n      .onSavedNewSet(this.queryActions, this._filterConfig.setApiHandling, val, outerQueries)\n      .subscribe({\n        next: (data) => {\n          this.toastMessageService.success('Filter saved!');\n          this._loadedSet = data;\n          this.updateSetEnabled = false;\n          this.selectedSavedFilter(val);\n          this.saveNewSet.next(data);\n        },\n        error: (err) => {\n          this.toastMessageService.error(err.error.errors[0].detail);\n        },\n      });\n  }\n\n  /***********************************************************************\n   * @description An event handler to be fired when delete set is clicked\n   * @param {string} savedSetId - current saved set id\n   ************************************************************************/\n  onDeleteSet(savedSetId: string) {\n    this.savedFiltersListService.onDeleteSet(this._filterConfig.setApiHandling, savedSetId).subscribe({\n      next: () => {\n        this.toastMessageService.success('Filter deleted!');\n        this._loadedSet = null;\n        this.updateSetEnabled = false;\n        this._tagsData = {};\n        this._fetchFilterCountSubject.next({ useCurrent: false });\n        this.deleteSet.emit(savedSetId);\n        this.selectedSavedFilter(null);\n      },\n      error: (err) => {\n        this.toastMessageService.error(err?.error?.errors?.[0]?.detail || 'server error');\n      },\n    });\n  }\n\n  /********************************************************************************************\n   * @description When user clicks edit set - we open an edit set name popup.\n   *              I he closes it by saving - we collect the name and run the api to update it.\n   *              When the update succeed - we again fetch the saved sets.\n   * @param {SavedFilter} val\n   **********************************************************************************************/\n  onEditSetPopup(val: DropDownItem) {\n    const dialogRef = this.singDialogService.open<FilterChangeSetNameComponent>(FilterChangeSetNameComponent, {\n      data: { name: val.title, id: val.value },\n      width: '400px',\n    });\n\n    dialogRef\n      .afterClosed()\n      .pipe(takeUntil(this.ngUnSubscribe))\n      .subscribe((result) => {\n        if (!result || result === 'Cancel') {\n          return;\n        }\n        this.savedFiltersListService\n          .onUpdateSetName(this._filterConfig.setApiHandling, result.id, result.name)\n          .subscribe((loadedSet) => {\n            this.toastMessageService.success('Filter was updated');\n            this._loadedSet = loadedSet;\n            this.updateSetEnabled = false;\n            this.selectedSavedFilter(result.name);\n            this.editSetPopup.emit(val);\n          });\n      });\n  }\n\n  onUpdateSet(val: DropDownItem) {\n    this.savedFiltersListService\n      .onUpdateSavedSet(this.queryActions, this._filterConfig.setApiHandling, val.value)\n      .subscribe((data) => {\n        data.value = data.id;\n        data.title = data.name;\n        this.selectedSavedFilter(data.title);\n        this.toastMessageService.success('Filter was updated');\n        this._loadedSet = data;\n        this.updateSet.emit(data);\n        this.updateSetEnabled = false;\n      });\n  }\n\n  clearSelectedSet() {\n    this.loadedSetCleared.emit();\n    this._loadedSet = null;\n    this.selectedSetName = null;\n    this.selectedSavedFilterName = null;\n  }\n\n  onLoadSetChange(val: SavedFilter) {\n    this.loadedSetChange.emit(val);\n    this.selectedSavedFilter(val.title);\n    this._loadedSet = val;\n    this._tagsData = {};\n    this.updateSetEnabled = false;\n  }\n\n  /******************************************************************************************************************\n   * @description - When filter is changed from the list of filters\n   *                (meaning - clicking a filter item to toggle it) - we update the filter state, call fetch filters count\n   *                and emit the event up.\n   * @param selectedFilterItems - list of current selected filter\n   *****************************************************************************************************************/\n  onSelectedFilterChange(selectedFilterItems: FilterItemModel[]) {\n    this._filterList = cloneDeep(selectedFilterItems);\n    this._fetchFilterCountSubject.next({ useCurrent: false });\n    if (this._loadedSet) {\n      this.updateSetEnabled = true;\n    }\n  }\n\n  freeTextHashFetched(hash: Record<any, any>) {\n    this.freeTextKeysHash = hash;\n    this.freeTextItems = this.filterService.extractFreeTextItemsFromFilterParams(hash, this._filterAdditionalParams);\n  }\n\n  toggleState() {\n    this.panelState = this.panelState === 'hide' ? 'show' : 'hide';\n  }\n\n  /**********************************************************************************************\n   * @description when date picker is open there is cdk-overlay-backdrop so we should not close\n   in this case the search\n   * @param event - the mouse event when triggered on clickAway, null otherwise\n   * @param newState\n   ***********************************************************************************************/\n  setState(event: MouseEvent | null, newState: FilterPanelState) {\n    if (event?.['fromList']) {\n      return;\n    }\n    if (this.panelState === 'show') {\n      this.closePanel(event);\n    } else {\n      this.panelState = newState;\n    }\n  }\n\n  private closePanel(event: MouseEvent | null): void {\n    if (!event || this.shouldCloseFilterOnClick(event)) {\n      this.panelState = 'hide';\n    }\n  }\n\n  private shouldCloseFilterOnClick(event: MouseEvent): boolean {\n    if (this.doesOverlayExist()) {\n      return false;\n    }\n    return !this.wasFreeTextAutocompletePanelClicked(event);\n  }\n\n  private doesOverlayExist(): boolean {\n    return !!document.querySelector('.cdk-overlay-backdrop');\n  }\n\n  private wasFreeTextAutocompletePanelClicked(mouseEvent: MouseEvent): boolean {\n    const freeTextAutocompleteDialogClass = `${FREE_TEXT_AUTOCOMPLETE_CONTAINER_CLASS}-dialog`;\n    const isFreeTextAutocompleteDialogClicked = mouseEvent\n      .composedPath()\n      .some((el) => (el as HTMLElement).classList?.contains(freeTextAutocompleteDialogClass));\n    return !!isFreeTextAutocompleteDialogClicked;\n  }\n\n  /***************************************************************************************************************************************\n   * @description The function that is responsible for initiating a call to the service to bring filter counts form the server.\n   *              It also subscribes to the results and update the filter counts in the child components.\n   * @param queryParams - query collection\n   * @param additionalQueryParameters - additional queries for example scope query\n   **************************************************************************************************************************************/\n  private fetchFilterCounts(queryParams: QueryCollectionEvent, additionalQueryParameters: Record<any, any>) {\n    this._queryParams = queryParams?.currentQueries;\n    const countsForParamObject: any = {};\n    if (this.filterConfig.allowSelectFields && this.selectedKeys) {\n      countsForParamObject.countsFor = this.filterService.buildCountsForObject(\n        this.selectedKeys,\n        { ...this.queryActions.actions.convertQueriesToObject() },\n        this._filterConfig.filterApiHandling,\n        this._filterConfig.keysToIgnore,\n        additionalQueryParameters\n      );\n    }\n\n    return this.filterService.getFilters(\n      this._filterList || [],\n      this._filterConfig.filterApiHandling.url,\n      { ...this._filterAdditionalParams, ...countsForParamObject },\n      this._filterConfig.filterApiHandling.filterToAddBefore,\n      this._filterConfig.filterApiHandling.filterToAddAfter,\n      this.filterPanelService.renameQueriesBeforeSendingToBE(\n        queryParams.currentQueries,\n        this.filterConfig.renameQueryKeys\n      ),\n      this.queryActions,\n      additionalQueryParameters,\n      this.filterConfig.onFetchFilterCountLazyLoadingMetaData,\n      this.filterConfig.excludeFromRequests\n    );\n  }\n\n  /******************************************************************************************************************\n   @description - an ugly way to get over the propagation issue that makes the free text dropdown not closed when\n   clicking the minimize button\n   *****************************************************************************************************************/\n  filterListClicked(event) {\n    event.fromList = true;\n  }\n\n  /**********************************************************************************************************\n   * @description The selected filters to present are changed\n   * @param keys - the selected keys. If null - reset to default (probably reset to default was clicked)\n   **********************************************************************************************************/\n  selectedFieldsChanged(keys: string[]) {\n    this.selectedKeys = keys || [...this.filterConfig.defaultSelectFieldKeys];\n    this.queryActions.actions.update(\n      'countsFor',\n      this.selectedKeys.join(','),\n      QueryCollectionTypeEnum.ONLY_FILTER_COUNT,\n      {\n        allowEmptyValue: true,\n      },\n      true\n    );\n  }\n\n  /******************************************************\n   * @description: trigger on user selected saved filters\n   * @param setName: saved filter name\n   ******************************************************/\n  selectedSavedFilter(setName: string) {\n    this.selectedSavedFilterName = setName;\n    this.selectedSetName = setName;\n    this.changeDetectionRef.detectChanges();\n  }\n\n  setInitialScopeFilters(dependenciesActionResponse: DependencyResponse) {\n    const defaultScopeFilter =\n      dependenciesActionResponse?.dependencies?.find((item: Action) => {\n        return item.name === 'fetchUserPreferences';\n      }) || null;\n    if (\n      defaultScopeFilter &&\n      defaultScopeFilter.responseData &&\n      defaultScopeFilter.responseData[`${this.filterComponentId}scopeFilter`]\n    ) {\n      this.initialScopeFilters = defaultScopeFilter.responseData[`${this.filterComponentId}scopeFilter`];\n    } else {\n      this.initialScopeFilters = this.filterConfig?.customLeftDropDown?.scopeFilterConfig?.defaultSelection || {};\n    }\n  }\n\n  setSelectedCustomDropdownOption(optionValue: string) {\n    const option = this.filterConfig.customLeftDropDown.items.find((item) => {\n      return item.value === optionValue;\n    });\n\n    if (option) {\n      option.selected = true;\n      this.selectedCustomDropdownItem = option;\n      this.customDropdownTitle = option.title;\n    }\n  }\n\n  setSelectedCustomDropDown() {\n    const query = this.queryActions.queryMap.queries.get(this.filterConfig?.customLeftDropDown?.filterFieldName);\n    if (query && this.filterConfig?.customLeftDropDown) {\n      this.selectedCustomDropdownItem = this.filterConfig?.customLeftDropDown?.items.find((item) => {\n        return item.value === query.value;\n      });\n    } else {\n      if (this.filterConfig?.customLeftDropDown?.defaultSelected) {\n        this.selectedCustomDropdownItem = this.filterConfig?.customLeftDropDown.defaultSelected;\n      } else if (this.filterConfig?.customLeftDropDown?.items) {\n        this.selectedCustomDropdownItem = this.filterConfig?.customLeftDropDown?.items[0];\n      }\n    }\n  }\n\n  /******************************************************\n   * @description when user change left dropdown option\n   * @param event - dropdown selection event\n   ******************************************************/\n  customLeftDropDownChanged(event) {\n    this.setSelectedCustomDropdownOption(event.value);\n    this.queryActions.actions.update(\n      this.filterConfig?.customLeftDropDown.filterFieldName,\n      event.value,\n      QueryCollectionTypeEnum.DEFAULT,\n      { key: this.filterConfig?.customLeftDropDown.filterFieldName },\n      true\n    );\n  }\n\n  setDefaultSelectedFields(filterConfiguration: FilterConfiguration) {\n    const queryCountsFor = this.queryActions.queryMap.queries.get('countsFor');\n    if (!queryCountsFor && filterConfiguration.defaultSelectFieldKeys) {\n      this.queryActions.actions.update(\n        'countsFor',\n        filterConfiguration.defaultSelectFieldKeys.join(','),\n        QueryCollectionTypeEnum.ONLY_FILTER_COUNT,\n        {\n          allowEmptyValue: true,\n        }\n      );\n    }\n  }\n\n  setDefaultQueries(filterConfiguration: FilterConfiguration) {\n    if (filterConfiguration.defaultSelectFieldKeys) {\n      this.queryActions.defaultQueries = {\n        ...this.queryActions.defaultQueries,\n        ...{ countsFor: filterConfiguration.defaultSelectFieldKeys.join(',') },\n      };\n    }\n\n    this.filterPanelService.fillPermanentFilterObject(\n      filterConfiguration?.permanentFilterObject,\n      this.queryActions,\n      true\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.ngUnSubscribe.next();\n    this.ngUnSubscribe.complete();\n    this.queryActions.actions.unsubscribe();\n\n    if (this._queryActionsChangeAndFiltersCountSubscription) {\n      this._queryActionsChangeAndFiltersCountSubscription.unsubscribe();\n    }\n\n    if (this._completeAllDependenciesSubscription) {\n      this._completeAllDependenciesSubscription.unsubscribe();\n    }\n  }\n\n  /**\n   * @description register a new event listener for free text button click\n   * @private\n   */\n  private _listenToFreeTextButtonClicked(): void {\n    this.filterEventsService\n      .onEvent(FilterPanelEventType.freeTextButtonClick)\n      .subscribe(() => this.freeTextButtonClick.emit());\n  }\n\n  private isDynamicConfigurationChangeAllowed(): boolean {\n    return this.allowDynamicConfigurationChange ?? false;\n  }\n\n  private updateQueryCollection(previousCollectionId?: string) {\n    const { collectionId, activeLogs } = this.getQueryManagementConfiguration(this.filterConfig);\n\n    let defaultQueries = {};\n    if (this.filterConfig.defaultSelectFieldKeys && this.filterConfig.defaultSelectFieldKeys.length > 0) {\n      defaultQueries = {\n        countsFor: this.filterConfig.defaultSelectFieldKeys.join(','),\n      };\n    }\n\n    // make sure that we have different configuration and can actually update\n    const canUpdateQueryCollection = this.canUpdateQueryCollection(previousCollectionId, collectionId);\n    if (canUpdateQueryCollection) {\n      this.queryActions.actions.unsubscribe;\n      this.queryActions = this.queryRegister.register(collectionId, activeLogs, defaultQueries);\n\n      this.filterDependenciesService.executedActionsAndWaitForAll(\n        this.filterConfig.onBeforeFetchFilterCountActions,\n        this.queryActions,\n        this.filterConfig\n      );\n    }\n  }\n\n  private canUpdateQueryCollection(previousCollectionId: string | undefined, currentCollectionId: string): boolean {\n    return previousCollectionId !== undefined && previousCollectionId !== currentCollectionId;\n  }\n\n  private getQueryManagementConfiguration(\n    filterConfiguration: FilterConfiguration\n  ): Partial<QueryManagementConfiguration> {\n    if (filterConfiguration?.queryManagementConfiguration === undefined) {\n      return {};\n    }\n\n    const collectionId = isObject(filterConfiguration.queryManagementConfiguration)\n      ? filterConfiguration.queryManagementConfiguration.collectionId\n      : filterConfiguration.queryManagementConfiguration;\n    const activeLogs = isObject(filterConfiguration.queryManagementConfiguration)\n      ? filterConfiguration.queryManagementConfiguration.activeLogs\n      : false;\n\n    return {\n      collectionId,\n      activeLogs,\n    };\n  }\n\n  private fetchFreeTextFilters(filterConfiguration: FilterConfiguration): void {\n    if (filterConfiguration.freeTextConfiguration) {\n      this.filterFreeTextService\n        .fetchFreeTextAvailableFields(filterConfiguration.freeTextConfiguration.getFilterTypesUrl)\n        .subscribe((_freeTextFields: FreeTextFieldType[]) => {\n          this.freeTextFields = _freeTextFields;\n        });\n    }\n  }\n}\n","<div\n  singClickOutsideNoDrag\n  [singClickOutSideNoDragActive]=\"!filterConfig?.disableAutoCollapse\"\n  (clickOutSide)=\"setState($event, 'hide')\"\n>\n  <div class=\"flex\">\n    <div class=\"container\" [class.search-open]=\"panelState === 'show'\">\n      <ng-container *ngIf=\"filterConfig?.customLeftDropDown\">\n        <sing-drop-down\n          class=\"custom-left-drop-down\"\n          *ngIf=\"filterConfig?.customLeftDropDown?.items\"\n          data-mgmtautomationid=\"custom-dropdown\"\n          [dropDownOptions]=\"{\n            showSelectedMarker: true,\n            skinOptions: skinOptions.Outline,\n            showSelectedTitle: true,\n            useClientSideAscSort: false,\n            isMultipleSelection: false,\n            triggerTitle: selectedCustomDropdownItem\n              ? selectedCustomDropdownItem.title\n              : filterConfig?.customLeftDropDown.defaultSelected\n              ? filterConfig?.customLeftDropDown.defaultSelected.title\n              : filterConfig?.customLeftDropDown.items[0].title,\n            showSearch: false\n          }\"\n          [selected]=\"selectedCustomDropdownItem\"\n          [items]=\"filterConfig?.customLeftDropDown.items\"\n          [disabled]=\"filterConfig?.customLeftDropDown.items?.length < 2\"\n          (clickedItem)=\"customLeftDropDownChanged($event)\"\n        >\n        </sing-drop-down>\n        <sing-filter-scope-dropdown\n          *ngIf=\"filterConfig?.customLeftDropDown?.scopeFilterConfig && initialScopeFilters\"\n          class=\"scope-filter-dropdown\"\n          [queryCollectionActions]=\"queryActions\"\n          [defaultSelection]=\"initialScopeFilters\"\n        ></sing-filter-scope-dropdown>\n\n        <div class=\"bolder\"></div>\n      </ng-container>\n\n      <sing-tab-time-core\n        *ngIf=\"filterConfig.withTimeRange\"\n        [withTimeRangeConfig]=\"filterConfig.withTimeRange\"\n        [additionalClassName]=\"'time-holder-filter-panel'\"\n        [timeOptions]=\"filterConfig.timeConfig?.timeOptions || timeOptions\"\n        [timeRangeAndTitle]=\"{\n          timeTitle: filterConfig.timeConfig?.timeTitle,\n          timeRange: filterConfig.timeConfig?.timeRange\n        }\"\n        [grayWhenNotOpened]=\"true\"\n        [queryCollectionActions]=\"queryActions\"\n      ></sing-tab-time-core>\n\n      <sing-filter-search-bar\n        [queryCollectionModels]=\"queryCollectionModels\"\n        [loadedSetName]=\"selectedSavedFilterName\"\n        [freeTextKeysHash]=\"freeTextKeysHash\"\n        [freeTextItems]=\"freeTextItems\"\n        [tagsData]=\"_tagsData\"\n        [loadedSet]=\"selectedSavedFilterName\"\n        (loadedSetCleared)=\"clearSelectedSet()\"\n        [analyticsCategory]=\"filterConfig.analyicsCategory || 'OTHER'\"\n        [queryCollectionActions]=\"queryActions\"\n        [attr.data-mgmtAutomationId]=\"(filterConfig.automationIdPrefix || '') + 'SearchBar'\"\n        (click)=\"toggleState()\"\n      >\n      </sing-filter-search-bar>\n    </div>\n  </div>\n  <div class=\"second-row\">\n    <sing-filter-list\n      [freeTextFields]=\"freeTextFields\"\n      [selectedKeys]=\"selectedKeys\"\n      [isLoading]=\"!fetchSuccess\"\n      [additionalQueryObject]=\"_additionalFilterObject\"\n      [permanentQueryParams]=\"filterConfig.permanentFilterObject\"\n      [freeTextItems]=\"freeTextItems\"\n      (click)=\"filterListClicked($event)\"\n      [class.with-sets]=\"filterConfig.withSets\"\n      (freeTextHash)=\"freeTextHashFetched($event)\"\n      [panelState]=\"panelState\"\n      [filterList]=\"filterList\"\n      [withFreeText]=\"!!filterConfig.freeTextConfiguration\"\n      [allowSelectFields]=\"!!filterConfig.allowSelectFields\"\n      [freeTextConfiguration]=\"filterConfig.freeTextConfiguration\"\n      data-mgmtAutomationId=\"FilterBar\"\n      [analyticsCategory]=\"filterConfig.analyicsCategory || 'OTHER'\"\n      [@popOverState]=\"{ value: panelState, params: { showHeight: popOverStateWidth } }\"\n      (updateSelectedFields)=\"selectedFieldsChanged($event)\"\n      (selectedFilterFromListChangeEvent)=\"onSelectedFilterChange($event)\"\n      (closeList)=\"setState(null, $event)\"\n      [queryActions]=\"queryActions\"\n      [additionalQueryParameters]=\"additionalQueryParameters\"\n      [filterConfiguration]=\"filterConfig\"\n    ></sing-filter-list>\n\n    <sing-saved-filters-list\n      *ngIf=\"filterConfig.withSets\"\n      [setApiHandling]=\"filterConfig.setApiHandling\"\n      [saveSetEnabled]=\"hasValues && !editSetsDisabled\"\n      [queryActions]=\"queryActions\"\n      [selectedSetName]=\"selectedSetName\"\n      [selectSetEnabled]=\"false\"\n      [filterConfiguration]=\"filterConfig\"\n      [outerQueryParams]=\"outerQueryParams\"\n      [loadedSet]=\"_loadedSet\"\n      [freeTextItems]=\"freeTextItems\"\n      (selectedSavedFilter)=\"onLoadSetChange($event)\"\n      (updateSetNameEvent)=\"onSaveSet($event)\"\n      (editSetNameEvent)=\"onEditSetPopup($event)\"\n      (updateSetEvent)=\"onUpdateSet($event)\"\n      (deleteSetEvent)=\"onDeleteSet($event)\"\n    ></sing-saved-filters-list>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingAutocompleteComponent } from './components/autocomplete.component';\nimport { MatLegacyAutocompleteModule as MatAutocompleteModule } from '@angular/material/legacy-autocomplete';\nimport { SingInputModule } from '../input/input.module';\nimport { SingInfiniteScrollModule } from '../../navigation/infinite-scroll/infinite-scroll.module';\nimport { AutocompleteKeyboardNavigationDirective } from './directives/autocomplete-keyboard-navigation.directive';\nimport { AutocompleteKeyboardNavigationActivateOptionDirective } from './directives/autocomplete-keyboard-navigation-activate-option.directive';\n\n@NgModule({\n  imports: [CommonModule, SingInputModule, MatAutocompleteModule, SingInfiniteScrollModule],\n  declarations: [\n    SingAutocompleteComponent,\n    AutocompleteKeyboardNavigationDirective,\n    AutocompleteKeyboardNavigationActivateOptionDirective,\n  ],\n  exports: [SingAutocompleteComponent],\n})\nexport class SingAutocompleteModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FilterPanelComponent } from './filter-panel.component';\nimport { FilterFreeTextComponent } from './list-components/filter-free-text/filter-free-text.component';\nimport { FilterMinmaxComponent } from './list-components/filter-list-factory/filter-minmax/filter-minmax.component';\nimport { FilterMultiComponent } from './list-components/filter-list-factory/filter-multi/filter-multi.component';\nimport { FilterRadioComponent } from './list-components/filter-list-factory/filter-radio/filter-radio.component';\nimport { FilterSearchComponent } from './list-components/filter-list-factory/filter-search/filter-search.component';\nimport { FilterTimeRangeComponent } from './list-components/filter-list-factory/filter-time-range/filter-time-range.component';\nimport { FilterFactoryComponent } from './list-components/filter-list-factory/filter-list-factory.component';\nimport { FilterScopeDropdownComponent } from './list-components/filter-scope-dropdown/filter-scope-dropdown.component';\nimport { FilterSearchBarComponent } from './list-components/filter-search-bar/filter-search-bar.component';\nimport { TabTimeComponent } from './list-components/filter-tab-time/tab-time.component';\nimport { FilterSearchBarItemComponent } from './list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.component';\nimport { FilterSearchBarItemService } from './list-components/filter-search-bar/filter-search-bar-item/filter-search-bar-item.service';\nimport { FilterListComponent } from './list-components/filter-list.component';\nimport { SingDropDownModule } from '../../../modules/form-controls/drop-down/drop-down.module';\nimport { SingRangeDatepickerModule } from '../../../modules/form-controls/range-datepicker/range-datepicker.module';\nimport { SingLoaderModule } from '../../../modules/buttons-and-indicators/loader/loader.module';\nimport { FilterSelectFieldsComponent } from './list-components/filter-select-fields/filter-select-fields.component';\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\nimport { SingEllipsisModule } from '../../../modules/directives/ellipsis/ellipsis.module';\nimport { FilterFiltersPipe } from '../filter-panel/pipes/filter.pipe';\nimport { OrderBySumPipe } from '../filter-panel/pipes/order-by-sum.pipe';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\nimport { NouisliderModule } from 'ng2-nouislider';\nimport { SingInputModule } from '../../../modules/form-controls/input/input.module';\nimport { SingInputAutoFocusModule } from '../../../modules/directives/input-auto-focus/input-auto-focus.module';\nimport { SingClickOutSideNoDragModule } from '../../../modules/directives/click-out-side-no-drag/click-out-side-no-drag.module';\nimport { FilterChangeSetNameComponent } from '../filter-panel/saved-filters/change-saved-filter-name/filter-change-set-name.component';\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\nimport { SavedFiltersListComponent } from '../filter-panel/saved-filters/saved-filters-list/saved-filters-list.component';\nimport { SavedFiltersListService } from '../filter-panel/saved-filters/saved-filters-list/saved-filters-list.service';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\nimport { SingDialogHeaderModule } from '../../popups/dialog-header/dialog-header.module';\nimport { FilterCommunicationService } from '../filter-panel/services/filter-communication.service';\nimport { FilterPanelService } from '../filter-panel/services/filter-panel/filter-panel.service';\nimport { ManageFilterActionsService } from './services/manage-actions/manage-filter-actions.service';\nimport { SavedFiltersApiService } from './saved-filters/saved-filters-list/saved-filters-api.service';\nimport { SingDialogService } from '../../popups/dialog/services/dialog.service';\nimport { FilterSelectFieldsService } from '../filter-panel/list-components/filter-select-fields/filter-select-fields.service';\nimport { FilterScopeDropdownService } from '../filter-panel/list-components/filter-scope-dropdown/filter-scope-dropdown.service';\nimport { DebounceClickModule } from '../../../modules/directives/debounce-click/debounce-click.module';\nimport { SingTooltipModule } from '../../../modules/popups/tooltip/tooltip.module';\nimport { SortFilterValueListPipe } from './pipes/sort-filter-value-list.pipe';\nimport { SingAutocompleteModule } from '../../form-controls/autocomplete/autocomplete.module';\nimport { FilterListSortDropdownComponent } from './list-components/filter-list-factory/filter-list-sort-dropdown/filter-list-sort-dropdown.component';\nimport { DisplaySpecialCharactersPipe } from './pipes/display-special-characters.pipe';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SingDropDownModule,\n    SingRangeDatepickerModule,\n    SingLoaderModule,\n    MatCheckboxModule,\n    SingEllipsisModule,\n    FormsModule,\n    MatTooltipModule,\n    NouisliderModule,\n    SingInputModule,\n    SingInputAutoFocusModule,\n    SingClickOutSideNoDragModule,\n    MatDialogModule,\n    MatMenuModule,\n    SingDialogHeaderModule,\n    DebounceClickModule,\n    SingTooltipModule,\n    ReactiveFormsModule,\n    SingAutocompleteModule,\n  ],\n  declarations: [\n    FilterPanelComponent,\n    FilterFactoryComponent,\n    FilterFreeTextComponent,\n    FilterMinmaxComponent,\n    FilterMultiComponent,\n    FilterRadioComponent,\n    FilterSearchComponent,\n    FilterTimeRangeComponent,\n    FilterScopeDropdownComponent,\n    FilterSearchBarComponent,\n    TabTimeComponent,\n    FilterSearchBarItemComponent,\n    FilterListComponent,\n    FilterSelectFieldsComponent,\n    FilterChangeSetNameComponent,\n    SavedFiltersListComponent,\n    FilterFiltersPipe,\n    DisplaySpecialCharactersPipe,\n    OrderBySumPipe,\n    SortFilterValueListPipe,\n    FilterListSortDropdownComponent,\n  ],\n  providers: [\n    FilterSearchBarItemService,\n    SavedFiltersListService,\n    FilterCommunicationService,\n    FilterPanelService,\n    ManageFilterActionsService,\n    SingDialogService,\n    SavedFiltersApiService,\n    FilterSelectFieldsService,\n    FilterScopeDropdownService,\n  ],\n  exports: [FilterPanelComponent],\n})\nexport class SingFilterPanelModule {}\n","export enum FilterOperator {\n  EQULAS,\n  NOT_EQUALS,\n}\n","export class FilterValue {\n  count?: number;\n  title: string;\n  key: string;\n  selected: boolean;\n\n  constructor(filter) {\n    this.count = filter.count;\n    this.title = filter.title;\n    this.key = filter.value;\n    this.selected = !!filter.selected;\n  }\n}\n","export enum FilterType {\n  Radio = 'RadioSelect',\n  Multi = 'MultiSelect',\n  Custom = 'custom',\n  Range = 'range',\n  MinMax = 'min_max',\n}\n","import { FilterOperator } from '../enums/filter-operator.enum';\nimport { FilterValue } from '../models/filter-value.interface';\nimport { FilterType } from '../enums/filter-type.enum';\nimport { FilterCategory } from './filter-category.interface';\n\n\nexport class FilterModel {\n  key: string;\n  title: string;\n  enableNegation: boolean;\n  operator: FilterOperator;\n  values: FilterValue[];\n  filterType: FilterType;\n  metaData?: any;\n\n  constructor(filter: FilterCategory) {\n    if (filter.enableNegation) {\n      this.enableNegation = filter.enableNegation;\n      this.operator = FilterOperator.EQULAS;\n    }\n    this.key = filter.key;\n    this.title = filter.title ? filter.title : '';\n    if (filter.values) {\n      const newValues = [];\n      for (const value of filter.values) {\n        newValues.push(new FilterValue(value));\n      }\n      this.values = newValues;\n    }\n    if (filter.metaData) {\n      this.metaData = filter.metaData;\n    }\n    if (filter.filterType) {\n      this.filterType = filter.filterType;\n    } else {\n      if (filter.values.length === 2) {\n        this.filterType = FilterType.Radio;\n      } else {\n        this.filterType = FilterType.Multi;\n      }\n    }\n  }\n}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './filter-panel.module';\nexport * from './filter-panel.component';\nexport * from './enums/filter-item-type.enum';\nexport * from './enums/filter-operator.enum';\nexport * from './list-components/models/filter-free-text-item.model';\n\nexport * from './services/manage-actions/models/dependency-action.interface';\nexport * from './services/manage-actions/models/DependencyResponse.interface';\nexport * from './services/manage-actions/enums/dependency-status.enum';\nexport * from './services/manage-actions/manage-filter-actions.service';\nexport * from './models';\nexport * from './providers';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\n\nexport * from './enums/query-collection-type.enum';\nexport * from './enums/filter-Item-operator.enum';\n\nexport * from './models/query-collection-listener.model';\nexport * from './models/query-collection.model';\n\nexport * from './core/actions/query-collection-actions';\nexport * from './core/actions/query-actions';\nexport * from './core/register/query-register';\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class SingInlineSvgService {\n  private cache: { [key: string]: string } = {};\n\n  constructor(private httpClient: HttpClient) {}\n\n  /**\n   * get asset from assets folder with http call\n   * or will get from local cache object\n   * in the future we can use js browser cache\n   */\n  public getSvg(path: string): Observable<string> {\n    // if exists in local cache do not make the http call\n    if (this.cache?.[path]) {\n      return of(this.cache[path]);\n    }\n    return this.httpClient.get(location.origin + path, { responseType: 'text' }).pipe(\n      map((content) => {\n        // injecting the SVG to temporary div, so we can extract the SVG without the XML prefix if exists\n        const div = document.createElement('div');\n        div.innerHTML = content;\n        const svg = div.querySelector('svg');\n        // save the svg in cache\n        this.cache[path] = svg.outerHTML;\n        return this.cache[path];\n      })\n    );\n  }\n}\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges, OnChanges, Output, EventEmitter } from '@angular/core';\nimport { SingInlineSvgService } from './inline-svg.service';\n\n@Directive({\n  selector: '[singInlineSvg]',\n})\nexport class SingInlineSvgModuleDirective implements OnChanges {\n  @Input('singInlineSvg') svgPath: string;\n  /**\n   * emit event when success to get the svg and attached it\n   */\n  @Output() singInlineSvgAttached = new EventEmitter<void>();\n\n  constructor(\n    private renderer: Renderer2,\n    private element: ElementRef,\n    private inlineSvgService: SingInlineSvgService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.svgPath) {\n      this.inlineSvgService.getSvg(this.svgPath).subscribe((svg: string) => {\n        this.renderer.setProperty(this.element.nativeElement, 'innerHTML', svg);\n        this.singInlineSvgAttached.emit();\n      });\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInlineSvgModuleDirective } from './inline-svg-module.directive';\nimport { SingInlineSvgService } from './inline-svg.service';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n  imports: [CommonModule, HttpClientModule],\n  declarations: [SingInlineSvgModuleDirective],\n  exports: [SingInlineSvgModuleDirective],\n  providers: [SingInlineSvgService],\n})\nexport class SingInlineSvgModuleModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './inline-svg-module.directive';\nexport * from './inline-svg-module.module';\n","import { CandyAppItem } from '../models/candy-app-item.interface';\n\n/**\n * hasNotification return true or false.\n * in case candyAppItem or hasNotification undefined false return\n */\nexport function hasNotification(candyAppItem: CandyAppItem): boolean {\n  return !!candyAppItem?.hasNotification;\n}\n\n/**\n * hasAtLeastOneNotification return true in case at list one notification exist\n */\nexport function hasAtLeastOneNotification(candyAppItems: CandyAppItem[]): boolean {\n  const candyAppItem = candyAppItems?.find((candyAppItem: CandyAppItem) => hasNotification(candyAppItem));\n  return !!candyAppItem;\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n/**\n * this directive use in order to enforce the\n * app item svg width and height\n */\n@Directive({\n  selector: '[singNormalizeIconDimensions]',\n  exportAs: 'singNormalizeIconDimensions',\n})\nexport class EnforceAppItemSvgDimensionsDirective {\n  constructor(private elr: ElementRef) {}\n\n  updateSvgSize(): void {\n    const svg = this.elr?.nativeElement?.querySelector('svg');\n    if (svg) {\n      svg.setAttribute('width', '32px');\n      svg.setAttribute('height', '32px');\n      svg.setAttribute('viewBox', '0 0 32 32');\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport { CandyAppItem } from '../../models/candy-app-item.interface';\nimport { isNil } from 'lodash';\n\n@Component({\n  selector: 'sing-candy-app-item',\n  templateUrl: './candy-app-item.component.html',\n  styleUrls: ['./candy-app-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CandyAppItemComponent implements OnChanges {\n  @Input() candyAppItem: CandyAppItem;\n  @Input() itemIndex: number;\n  @Output() appClicked = new EventEmitter<void>();\n  public tabindex: number;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!isNil(changes?.itemIndex?.currentValue)) {\n      this.tabindex = parseInt(changes?.itemIndex?.currentValue) + 1;\n    }\n  }\n}\n","<a\n  class=\"app-item\"\n  target=\"_blank\"\n  *ngIf=\"candyAppItem?.internalUrl; else externalUrl\"\n  [tabindex]=\"tabindex\"\n  [routerLink]=\"candyAppItem.url\"\n  (click)=\"appClicked.emit()\">\n  <ng-container [ngTemplateOutlet]=\"appItem\"></ng-container>\n</a>\n\n<ng-template #externalUrl>\n  <a class=\"app-item\" [tabindex]=\"tabindex\" [href]=\"candyAppItem?.url\" target=\"_blank\" (click)=\"appClicked.emit()\">\n    <ng-container [ngTemplateOutlet]=\"appItem\"></ng-container>\n  </a>\n</ng-template>\n\n<ng-template #appItem>\n  <div class=\"app-icon-container\">\n    <div\n      class=\"app-icon\"\n      singNormalizeIconDimensions\n      #singNormalizeIconDimensions=\"singNormalizeIconDimensions\"\n\n      [singInlineSvg]=\"candyAppItem?.svgUrl\"\n      (singInlineSvgAttached)=\"singNormalizeIconDimensions.updateSvgSize()\"\n      [class.notification-circle]=\"candyAppItem?.hasNotification\">\n    </div>\n  </div>\n  <div class=\"app-name s1-subtitle-2\" singEllipsis>{{candyAppItem?.name}}</div>\n  <div\n    class=\"app-short-description s1-caption-2\"\n    *ngIf=\"candyAppItem?.shortDescription\" singEllipsis>\n    {{candyAppItem?.shortDescription}}\n  </div>\n</ng-template>\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  HostListener,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { CandyAppItem } from '../models/candy-app-item.interface';\nimport { hasAtLeastOneNotification } from '../utils/candy-box.utils';\nimport { MatLegacyMenuTrigger as MatMenuTrigger } from '@angular/material/legacy-menu';\n\n@Component({\n  selector: 'sing-candy-box',\n  templateUrl: './candy-box.component.html',\n  styleUrls: ['./candy-box.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingCandyBoxComponent implements OnChanges, AfterViewInit {\n  @Input() candyAppItems: CandyAppItem[];\n  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n  @ViewChild('candyBoxTrigger', { read: ElementRef }) candyBoxTrigger: ElementRef;\n  @ViewChild('candyBoxContainer', { read: ElementRef }) candyBoxContainer: ElementRef;\n  public isItemsContainsNotification;\n  public isMenuOpen = false;\n  public hostAutoId: string;\n  allowCloseOnClickOutside = true;\n\n  constructor(private viewContainerRef: ViewContainerRef) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes?.candyAppItems?.currentValue) {\n      this.isItemsContainsNotification = hasAtLeastOneNotification(changes.candyAppItems.currentValue);\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.hostAutoId = this.viewContainerRef?.element?.nativeElement?.getAttribute('data-mgmtAutomationId');\n  }\n\n  /**\n   * update if menu is opened or closed\n   */\n  public updateMenuState(isMenuOpen: boolean): void {\n    this.isMenuOpen = isMenuOpen;\n    this.setCandyBoxContainerFocus();\n  }\n\n  /**\n   * close menu on escape\n   */\n  @HostListener('document:keydown.escape')\n  onEscape() {\n    if (this.trigger.menuOpen) {\n      this.trigger.closeMenu();\n    }\n  }\n\n  /**\n   * when use click outside the candy box menu we close the menu\n   */\n  public clickOutSide(): void {\n    if (this.allowCloseOnClickOutside) {\n      this.trigger.closeMenu();\n    }\n    this.allowCloseOnClickOutside = true;\n  }\n\n  /**\n   * when menu open we listen to key down events\n   * and stopPropagation beside escape click which we want\n   * to listen it in order to close the candy box menu\n   */\n  public handleKeyDown($event: KeyboardEvent): void {\n    if ($event.key !== 'Escape') {\n      $event.stopPropagation();\n    }\n  }\n\n  /**\n   * on trigger clicked we checked if the candy box trigger clicked.\n   * in case it clicked allowCloseOnClickOutside will set to false.\n   * as it not consider click outside.\n   */\n  public triggerClicked(event: MouseEvent): void {\n    this.allowCloseOnClickOutside = !this.candyBoxTrigger?.nativeElement?.contains(event.target);\n  }\n\n  /**\n   * set candy box container in focus.\n   * we need it so when user click on tab\n   * the app item will be in focus.\n   * NOTE: we are using setTimeout since we wait to menu to be in the dom\n   */\n  private setCandyBoxContainerFocus(): void {\n    if (this.isMenuOpen) {\n      setTimeout(() => {\n        this.candyBoxContainer?.nativeElement?.focus();\n      });\n    }\n  }\n}\n","<!--Trigger-->\n<button #candyBoxTrigger (click)=\"triggerClicked($event)\" data-mgmtAutomationId=\"candy-box-trigger-button\"\n        (menuClosed)=\"updateMenuState(false)\" (menuOpened)=\"updateMenuState(true)\" class=\"open-menu-button\" mat-button\n        [matMenuTriggerFor]=\"menu\">\n  <svg data-mgmtAutomationId=\"button-when-menu-open\" *ngIf=\"isMenuOpen;else buttonWhenMenuClose\" width=\"16\" height=\"16\"\n       viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n    <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n          d=\"M0 0h4v4H0V0zm1 3h2V1H1v2zM0 6h4v4H0V6zm1 3h2V7H1v2zm2 4H1v2h2v-2zM6 0h4v4H6V0zm1 3h2V1H7v2zm2 4H7v2h2V7zm-3 5h4v4H6v-4zm1 3h2v-2H7v2zm8-14h-2v2h2V1zm-3 5h4v4h-4V6zm1 3h2V7h-2v2zm2 4h-2v2h2v-2zM4 12v4H0v-4h4zm6-6v4H6V6h4zm6-6v4h-4V0h4zm0 12v4h-4v-4h4z\"\n          fill=\"var(--sing-candy-box-trigger-button-color)\"/>\n  </svg>\n\n  <ng-template #buttonWhenMenuClose>\n    <div data-mgmtAutomationId=\"button-when-menu-close\" class=\"button-when-menu-close\"\n         [class.notification-circle]=\"isItemsContainsNotification\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n              d=\"M0 0h4v4H0V0zm0 6h4v4H0V6zm4 6H0v4h4v-4zM6 0h4v4H6V0zm4 6H6v4h4V6zm-4 6h4v4H6v-4zM16 0h-4v4h4V0zm-4 6h4v4h-4V6zm4 6h-4v4h4v-4z\"\n              fill=\"var(--sing-candy-box-trigger-button-color)\"/>\n      </svg>\n    </div>\n  </ng-template>\n</button>\n\n<!--Menu-->\n<mat-menu\n  #menu=\"matMenu\"\n  class=\"sing-candy-box-reset-menu-overlay\"\n  [hasBackdrop]=\"false\"\n  singClickOutSide\n  (clickOutSide)=\"clickOutSide()\">\n  <div\n    tabindex=\"1\"\n    #candyBoxContainer\n    class=\"app-items-container\"\n    [attr.data-mgmtAutomationId]=\"hostAutoId + '-app-items-container'\"\n    *ngIf=\"isMenuOpen;\"\n    (keydown)=\"handleKeyDown($event)\"\n    (click)=\"$event.stopPropagation();\">\n    <sing-candy-app-item\n      *ngFor=\"let item of candyAppItems; let index = index\"\n      [attr.data-mgmtAutomationId]=\"'sing-candy-app-item-'+index\"\n      [itemIndex]=\"index\"\n      [candyAppItem]=\"item\"\n      (appClicked)=\"trigger.closeMenu()\"\n    ></sing-candy-app-item>\n  </div>\n</mat-menu>\n\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingCandyBoxComponent } from './candy-box/candy-box.component';\nimport { CandyAppItemComponent } from './components/candy-app-item/candy-app-item.component';\nimport { SingEllipsisModule } from '../../directives/ellipsis/ellipsis.module';\nimport { RouterModule } from '@angular/router';\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\nimport { SingInlineSvgModuleModule } from '../../directives/inline-svg-module/inline-svg-module.module';\nimport { SingClickOutSideModule } from '../../directives/click-out-side/click-out-side.module';\nimport { EnforceAppItemSvgDimensionsDirective } from './directives/enforce-app-item-svg-dimensions.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    SingEllipsisModule,\n    RouterModule,\n    MatMenuModule,\n    SingInlineSvgModuleModule,\n    SingClickOutSideModule,\n  ],\n  declarations: [SingCandyBoxComponent, CandyAppItemComponent, EnforceAppItemSvgDimensionsDirective],\n  exports: [SingCandyBoxComponent],\n})\nexport class SingCandyBoxModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './candy-box.module';\nexport * from './candy-box/candy-box.component';\nexport * from './models/candy-app-item.interface';\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n  selector: 'sing-inline-hierarchy-selector',\n  templateUrl: './inline-hierarchy-selector.component.html',\n  styleUrls: ['./inline-hierarchy-selector.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingInlineHierarchySelectorComponent {\n  readonly DEFAULT_MAX_WIDTH = 'fit-content';\n  @Input() showBorder = true;\n\n  @Input()\n  set maxWidth(maxWidth: string) {\n    this.hostMaxWidth = maxWidth ?? this.DEFAULT_MAX_WIDTH;\n    this.hostCustomMaxWidth = this.hostMaxWidth !== this.DEFAULT_MAX_WIDTH;\n  }\n\n  @HostBinding('style.max-width') hostMaxWidth;\n  @HostBinding('class.sing-inline-hierarchy-selector-custom-max-width') hostCustomMaxWidth;\n}\n","<div class=\"container\" [class.border]=\"showBorder\">\n  <ng-content select=\"sing-inline-hierarchy-selector-item\"></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-inline-hierarchy-selector-item',\n  templateUrl: './inline-hierarchy-selector-item.component.html',\n  styleUrls: ['./inline-hierarchy-selector-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InlineHierarchySelectorItemComponent {}\n","<ng-content>\n\n</ng-content>\n<span class=\"separator\">/</span>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n  selector: 'sing-inline-hierarchy-selector-idle-item',\n  templateUrl: './inline-hierarchy-selector-idle-item.component.html',\n  styleUrls: ['./inline-hierarchy-selector-idle-item.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InlineHierarchySelectorIdleItemComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SingInlineHierarchySelectorComponent } from './inline-hierarchy-selector/inline-hierarchy-selector.component';\nimport { InlineHierarchySelectorItemComponent } from './components/inline-hierarchy-selector-item/inline-hierarchy-selector-item.component';\nimport { InlineHierarchySelectorIdleItemComponent } from './components/inline-hierarchy-selector-idle-item/inline-hierarchy-selector-idle-item.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [\n    SingInlineHierarchySelectorComponent,\n    InlineHierarchySelectorItemComponent,\n    InlineHierarchySelectorIdleItemComponent,\n  ],\n  exports: [\n    SingInlineHierarchySelectorComponent,\n    InlineHierarchySelectorItemComponent,\n    InlineHierarchySelectorIdleItemComponent,\n  ],\n})\nexport class SingInlineHierarchySelectorModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './inline-hierarchy-selector.module';\nexport * from './inline-hierarchy-selector/inline-hierarchy-selector.component';\nexport * from './components/inline-hierarchy-selector-item/inline-hierarchy-selector-item.component';\nexport * from './components/inline-hierarchy-selector-idle-item/inline-hierarchy-selector-idle-item.component';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './autocomplete.module';\nexport * from './components/autocomplete.component';\nexport * from './models/autocomplete.model';\n","import { BehaviorSubject, Observable, timer } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { SkeletonOptions } from '../models/skeleton-options.interface';\nimport { SkeletonRowTemplateIntrface } from '../models/skeleton-row-template.intrface';\nimport { SkeletonRow } from '../models/skeleton.row';\n\nconst defaultRowTemplate: SkeletonRowTemplateIntrface = {\n  widthPercent: 100,\n  height: 16,\n  paddingTop: 8,\n  paddingBottom: 8,\n  radius: 3,\n};\n\nexport class SkeletonUtils {\n  private _height: number;\n  private _width: number;\n  private _rowTemplate: SkeletonRowTemplateIntrface[] = [defaultRowTemplate];\n\n  private _options: SkeletonOptions = {};\n  private readonly iconMinPadding = 8;\n\n  constructor(private element: HTMLElement, private showIcon: boolean) {}\n\n  public get template(): SkeletonRowTemplateIntrface[] {\n    return this._rowTemplate;\n  }\n\n  /**\n   * @description - set the template from witch the skeleton rows will be created\n   * @param template\n   */\n  public setRowTemplate(template?: SkeletonRowTemplateIntrface[]): SkeletonUtils {\n    this._rowTemplate = template?.length > 0 ? template : [defaultRowTemplate];\n    return this;\n  }\n\n  /**\n   * @description - set the skeleton options\n   * @param options\n   */\n  public setSkeletonOptions(options?: SkeletonOptions): SkeletonUtils {\n    this._options = options ?? {};\n    return this;\n  }\n\n  /**\n   * @description - calc the width once and return the saved value\n   */\n  public get width(): number {\n    if (!this._width) {\n      this._width = Math.round(this.element.getBoundingClientRect().width);\n    }\n    return this._width;\n  }\n\n  /**\n   * @description - calc the height once and return the saved value\n   */\n  public get height(): number {\n    if (!this._height) {\n      this._height = Math.round(this.element.getBoundingClientRect().height) || 110;\n    }\n    return this._height;\n  }\n\n  /**\n   * @description - calculate the Y position of the row\n   * @param row - the current row that is to be created\n   * @param previousRow - the previously created row\n   */\n  private _getYPosition(row: SkeletonRowTemplateIntrface, previousRow?: SkeletonRow): number {\n    if (!previousRow) {\n      return 0;\n    }\n    return previousRow.yPosition + previousRow.height + previousRow.paddingBottom + (row.paddingTop ?? 0);\n  }\n\n  /**\n   * @description - create all the rows that will fit inside the element\n   * @private\n   */\n  private _createRowsArr(): SkeletonRow[] {\n    const arr: SkeletonRow[] = [];\n    let heightLeft = this.height;\n    for (let i = 0; heightLeft > 0; i++) {\n      const rowTemplate = this._rowTemplate[i % this._rowTemplate.length];\n      const width = (this._getPercent(rowTemplate.widthPercent) * this.width) / 100;\n      const xPosition = rowTemplate.paddingLeftPercent\n        ? (this._getPercent(rowTemplate.paddingLeftPercent) * this.width) / 100\n        : 0;\n      if (xPosition + width + this._getPercent(rowTemplate.paddingRightPercent) > 100) {\n        rowTemplate.paddingRightPercent = 100 - width - xPosition;\n      }\n      const yPosition = this._getYPosition(rowTemplate, arr.length ? arr[arr.length - 1] : null);\n      const row: SkeletonRow = {\n        width: width,\n        widthPercent: rowTemplate.widthPercent,\n        height: rowTemplate.height ?? defaultRowTemplate.height,\n        paddingLeftPercent: rowTemplate.paddingLeftPercent ?? defaultRowTemplate.paddingLeftPercent,\n        paddingRightPercent: rowTemplate.paddingRightPercent ?? defaultRowTemplate.paddingRightPercent,\n        paddingBottom: rowTemplate.paddingBottom ?? defaultRowTemplate.paddingBottom,\n        paddingTop: rowTemplate.paddingTop ?? defaultRowTemplate.paddingTop,\n        radius: rowTemplate.radius ?? defaultRowTemplate.radius,\n        xPosition,\n        yPosition,\n      };\n      heightLeft = this.height - row.yPosition - row.height;\n      if (heightLeft > 0) {\n        this._addIcon(row);\n        arr.push(row);\n      }\n    }\n    return arr;\n  }\n\n  /**\n   * @return - Observable of the rows that need to be rendered in view\n   */\n  public createRows$(): Observable<SkeletonRow[]> {\n    const arr = this._createRowsArr();\n    const rows$ = new BehaviorSubject<SkeletonRow[]>(null);\n    this._emitArr(arr, rows$);\n    return rows$.asObservable().pipe(filter((res) => !!res));\n  }\n\n  /**\n   *\n   * @param arr - all the rows that fit in the element\n   * @param rows$ - the subject to emit the values from\n   * @private\n   */\n  private _emitArr(arr: SkeletonRow[], rows$: BehaviorSubject<SkeletonRow[]>): void {\n    if (this._options.differentialLoad) {\n      let lastIndex = 0;\n      const difOptions = this._options.differentialLoad;\n      const sub = timer(0, difOptions.delayInMilliseconds).subscribe((emit) => {\n        if (lastIndex <= arr.length) {\n          const nextIndex = (emit + 1) * difOptions.numberOfRows;\n          rows$.next(arr.slice(0, nextIndex));\n          lastIndex = nextIndex;\n        } else {\n          sub.unsubscribe();\n          rows$.complete();\n        }\n      });\n    } else {\n      rows$.next(arr);\n    }\n  }\n\n  /**\n   * @description - get a valid percent 0 < X < 100\n   * @param percent - the percent value given to the component\n   * @private\n   */\n  private _getPercent(percent?: number): number {\n    if (percent > 100) {\n      return 100;\n    }\n    if (percent < 0) {\n      return 0;\n    }\n    return percent ?? 0;\n  }\n\n  /**\n   * @description - add icon data to the row if needed\n   * @param row\n   * @private\n   */\n  private _addIcon(row: SkeletonRow): void {\n    if (this.showIcon) {\n      const radius = row.height / 2;\n      row.icon = {\n        radius,\n        y: row.yPosition + radius,\n        x: this.width - radius * 2,\n      };\n      if (row.width + radius > row.icon.x) {\n        row.width = row.icon.x - radius - this.iconMinPadding;\n      }\n    }\n  }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { SkeletonOptions } from '../models/skeleton-options.interface';\nimport { SkeletonRowTemplateIntrface } from '../models/skeleton-row-template.intrface';\nimport { SkeletonUtils } from '../utils/skeleton-utils';\nimport { SkeletonRow } from '../models/skeleton.row';\n\n@Component({\n  selector: 'sing-skeleton',\n  templateUrl: './skeleton.component.html',\n  styleUrls: ['./skeleton.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SingSkeletonComponent implements AfterViewInit {\n  public baseUrl = window.location.pathname + window.location.search; // required for the skeleton to work\n  public height: number;\n  public rows$: Observable<SkeletonRow[]>;\n  public width: number;\n  readonly colors = { primaryColor: 'var(--s1-N-20-color)', secondaryColor: 'var(--s1-N-30-color)' };\n  @Input() rowTemplate: SkeletonRowTemplateIntrface[];\n  @Input() skeletonOptions: SkeletonOptions;\n  @Input() showIcon = false;\n  private _listSkeletonUtils: SkeletonUtils;\n\n  constructor(private elementRef: ElementRef<HTMLElement>, private cd: ChangeDetectorRef) {}\n\n  async ngAfterViewInit(): Promise<void> {\n    /**\n     *  when the component is not static (e.x inside ngIF) the element will not have height / width inside after view init.\n     *  After the promise is executed the element already exist and has dimensions\n     */\n    await Promise.resolve();\n    this._listSkeletonUtils = new SkeletonUtils(this.elementRef.nativeElement, this.showIcon)\n      .setRowTemplate(this.rowTemplate)\n      .setSkeletonOptions(this.skeletonOptions);\n    this.height = this._listSkeletonUtils.height;\n    this.width = this._listSkeletonUtils.width;\n    this.rows$ = this._listSkeletonUtils.createRows$();\n    this.cd.detectChanges();\n  }\n}\n","<content-loader *ngIf=\"height\" [baseUrl]=\"baseUrl\" viewBox=\"0 0 {{width}} {{height}}\"\n                [backgroundColor]=\"colors.primaryColor\" [foregroundColor]=\"colors.secondaryColor\">\n  <ng-container *ngFor=\"let row of rows$ | async;\">\n    <svg:rect [attr.x]=\"row.xPosition\" [attr.y]=\"row.yPosition\" [attr.rx]=\"row.radius\" [attr.ry]=\"row.radius\"\n              [attr.width]=\"row.width\" [attr.height]=\"row.height\"/>\n    <svg:circle *ngIf=\"showIcon\" [attr.cx]=\"row.icon.x\" [attr.cy]=\"row.icon.y\" [attr.r]=\"row.icon.radius\"/>\n  </ng-container>\n</content-loader>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ContentLoaderModule } from '@ngneat/content-loader';\nimport { SingSkeletonComponent } from './skeleton/skeleton.component';\n\n@NgModule({\n  imports: [CommonModule, ContentLoaderModule],\n  declarations: [SingSkeletonComponent],\n  exports: [SingSkeletonComponent],\n})\nexport class SingSkeletonModule {}\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './skeleton.module';\nexport * from './skeleton/skeleton.component';\nexport * from './models/skeleton-row-template.intrface';\nexport * from './models/skeleton-deferential-load.interface';\nexport * from './models/skeleton-icon.interface';\nexport * from './models/skeleton-options.interface';\n","/*\n * Public API Surface of singularity-ui-lib\n */\n\nexport * from './lib/modules/form-controls/slide-toggle/public-api';\nexport * from './lib/modules/popups/toast-notification/public-api';\nexport * from './lib/services/color-palette/public-api';\nexport * from './lib/modules/form-controls/input/public-api';\nexport * from './lib/modules/buttons-and-indicators/progress-bar/public-api';\nexport * from './lib/modules/popups/progress-step/public-api';\nexport * from './lib/modules/navigation/breadcrumbs/public-api';\nexport * from './lib/modules/data-table/paginator/public-api';\nexport * from './lib/modules/popups/dialog-footer/public-api';\nexport * from './lib/modules/popups/tooltip/public-api';\nexport * from './lib/modules/buttons-and-indicators/help-tooltip/public-api';\nexport * from './lib/modules/directives/arrow-key-navigation/public-api';\nexport * from './lib/modules/directives/click-out-side/public-api';\nexport * from './lib/modules/directives/click-out-side-no-drag/public-api';\nexport * from './lib/modules/directives/context-menu/public-api';\nexport * from './lib/modules/directives/disable-copy/public-api';\nexport * from './lib/modules/directives/dynamic-component/public-api';\nexport * from './lib/modules/directives/ellipsis/public-api';\nexport * from './lib/modules/directives/forms/public-api';\nexport * from './lib/modules/directives/input-auto-focus/public-api';\nexport * from './lib/modules/directives/mat-checkbox-size/public-api';\nexport * from './lib/modules/directives/scroll-out-event/public-api';\nexport * from './lib/modules/directives/textarea-autosize/public-api';\nexport * from './lib/modules/directives/debounce-click/public-api';\nexport * from './lib/modules/layout/summary-box/public-api';\nexport * from './lib/modules/data-visualization/chart/public-api';\nexport * from './lib/modules/buttons-and-indicators/toggle-arrow/public-api';\nexport * from './lib/modules/layout/info-box/public-api';\nexport * from './lib/modules/layout/box/public-api';\nexport * from './lib/modules/popups/dialog-side-nav/public-api';\nexport * from './lib/modules/buttons-and-indicators/chip/public-api';\nexport * from './lib/modules/form-controls/color-picker/public-api';\nexport * from './lib/modules/form-controls/uploader/public-api';\nexport * from './lib/modules/data-table/simple-table/public-api';\nexport * from './lib/modules/buttons-and-indicators/loader/public-api';\nexport * from './lib/modules/buttons-and-indicators/empty-search-state/public-api';\nexport * from './lib/modules/form-controls/drop-down/public-api';\nexport * from './lib/modules/form-controls/chips-input/public-api';\nexport * from './lib/modules/layout/collapsible-group/public-api';\nexport * from './lib/modules/layout/collapsible/public-api';\nexport * from './lib/modules/form-controls/search/public-api';\nexport * from './lib/modules/form-controls/monaco/public-api';\nexport * from './lib/modules/form-controls/time-picker/public-api';\nexport * from './lib/modules/form-controls/range-time-picker/public-api';\nexport * from './lib/modules/form-controls/range-datepicker/public-api';\nexport * from './lib/modules/layout/aside-list/public-api';\nexport * from './lib/modules/navigation/side-list-display/public-api';\nexport * from './lib/modules/popups/floating-error/public-api';\nexport * from './lib/services/color-palette/public-api';\nexport * from './lib/services/http-call/public-api';\nexport * from './lib/modules/navigation/main-left-nav/public-api';\nexport * from './lib/modules/popups/dialog-header/public-api';\nexport * from './lib/modules/layout/page-tabs/public-api';\nexport * from './lib/modules/popups/dynamic-dialog/public-api';\nexport * from './lib/modules/popups/confirmation-dialog/public-api';\nexport * from './lib/modules/buttons-and-indicators/form-footer-buttons/public-api';\nexport * from './lib/modules/navigation/sub-page-navigation/public-api';\nexport * from './lib/modules/pipes/safe-html/public-api';\nexport * from './lib/modules/popups/dialog/public-api';\nexport * from './lib/utils/date-time/public-api';\nexport * from './lib/modules/layout/form-info/public-api';\nexport * from './lib/modules/form-controls/multi-select-button/public-api';\nexport * from './lib/modules/layout/alert/public-api';\nexport * from './lib/modules/navigation/infinite-scroll/public-api';\nexport * from './lib/modules/data-table/filter-panel/public-api';\nexport * from './lib/services/query-collection/public-api';\nexport * from './lib/modules/directives/inline-svg-module/public-api';\nexport * from './lib/modules/navigation/candy-box/public-api';\nexport * from './lib/modules/form-controls/inline-hierarchy-selector/public-api';\nexport * from './lib/modules/form-controls/autocomplete/public-api';\nexport * from './lib/modules/buttons-and-indicators/skeleton/public-api';\nexport * from './lib/shared/alignment.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ToastNotificationService","i2","i1","i1.TooltipService","i2.TooltipDirective","i1.PaginatorService","MatTooltipModule","EventCodeOptions","MatTooltip","i3","i4","i6","MAT_TOOLTIP_DEFAULT_OPTIONS","MAT_TOOLTIP_SCROLL_STRATEGY","i2.SingToggleArrowComponent","i1.DialogSideNavService","i1.SingDialogFooterComponent","i1.DialogSideNavContainerComponent","MatMenuTrigger","MatMenuModule","i3.SingProgressBarComponent","_merge","i2.SingEllipsisDirective","i3.TriggerToggleArrowComponent","i1.DropDownEventMessagesService","i2.SingInputAutoFocusDirective","i1.DropDownDynamicDirective","i3.SingPaginatorComponent","i4.SingLoaderComponent","i5.SingEmptySearchStateComponent","i7.DynamicDropDownItemContainerComponent","i8.DropDownArrowManagerDirective","i9.DropDownFilterItemsPipe","i10.AscSortPipe","i3.DefaultDropDownItemsComponent","i4.DropDownSearchComponent","i2.NestedMenuStateService","i5","i7.SingEllipsisDirective","i8.DropDownDynamicDirective","i9.DropDownCapitalizeFirstLetterPipe","i2.ToastNotificationService","i1.SingHttpCallService","merge","i2.DropDownServerSideService","i3.NestedMenuStateService","i7.DropDownDynamicDirective","i8.DropDownMenuStyleDirective","i9.DropDownMenuRepositionDirective","MatTableDataSource","MatPaginator","i2.SingDropDownComponent","i6.SingPaginatorComponent","i7","i8.SingEllipsisDirective","i9","i10.SingConnectionLoaderComponent","i11.ComponentViewDirective","i12.GetValue","i4.DefaultDropDownItemsComponent","i5.DropDownSearchComponent","MatButtonModule","MatTableModule","MatPaginatorModule","MatCheckboxModule","i1.ChipsInputServerSideService","MatAutocompleteTrigger","i3.SingEllipsisDirective","i4.SingPaginatorComponent","i5.SingLoaderComponent","i11.SingEmptySearchStateComponent","i12.SingFilterPipe","MatFormFieldModule","MatChipsModule","MatAutocompleteModule","i3.SingMatCheckboxSizeDirective","i4.NumOfSelectedChildrenPipe","i1.SingCollapsibleComponent","i2.CreateDynamicComponentDirective","TIME_PICKER_FORMAT","TIME_OPTIONS","i2.TimeOptionItemComponent","i4.SingInputComponent","i5.ScrollOutEventDirective","i6.TimeOptionsComponent","i2.SingTimePickerComponent","i3.SingInputComponent","RangeDatepickerUtils.createDropdownHours","RangeDatepickerUtils.getDropdownMinutes","RangeDatepickerUtils.getNowMinute","RangeDatepickerUtils.getJsDate","RangeDatepickerUtils.convertMsUnixTimeToISOSString","RangeDatepickerUtils.getRangeUnixDate","RangeDatepickerUtils.getSingleUnixDate","RangeDatepickerUtils.getInitialSingleDateModel","RangeDatepickerUtils.getInitialRangeDateModel","i7.SingDialogFooterComponent","i8.SingToggleArrowComponent","i10.RangeDatepickerTimeComponent","i11.PlaceholderComponent","MatSelectModule","i1.SingSearchComponent","i2.SingAsideListComponent","MatDialogModule","i2.SingInputComponent","i4.SingDropDownComponent","i5.SingEllipsisDirective","i3.PageOneTabComponent","MatProgressSpinnerModule","i2.SingDialogHeaderComponent","i2.SingDynamicDialogComponent","i4.SingDialogFooterComponent","MAT_DIALOG_DATA","i4.SingInputAutoFocusDirective","i5.SingDialogHeaderComponent","switchMap","i1.FilterPreferencesProvider","i3.SingHttpCallService","i1.SavedFiltersApiService","i1.QueryActions","i1.FilterScopeDropdownService","i3.SingDropDownComponent","i1.FilterSearchBarItemService","i4.DisplaySpecialCharactersPipe","i1.FilterService","i3.FilterSearchBarItemComponent","i4.SingRangeDatepickerComponent","map","i1.FilterPreferencesService","i4.TooltipDirective","i4.FilterSearchComponent","i5.FilterListSortDropdownComponent","i6.FilterFiltersPipe","i7.DisplaySpecialCharactersPipe","i8.SortFilterValueListPipe","i3.FilterSearchComponent","i4.FilterFiltersPipe","i5.DisplaySpecialCharactersPipe","i6.OrderBySumPipe","i1.SingRangeDatepickerComponent","MatOption","i5.SingInfiniteScrollComponent","i6.AutocompleteKeyboardNavigationDirective","i7.AutocompleteKeyboardNavigationActivateOptionDirective","i1.FilterFreeTextService","i2.FilterPanelEventsService","i5.TooltipDirective","i6.SingAutocompleteComponent","i1.FilterSelectFieldsService","i2.SingLoaderComponent","i3.FilterFactoryComponent","i4.FilterFreeTextComponent","i5.FilterSelectFieldsComponent","i1.QueryRegister","i2.SavedFiltersListService","i6.SingInputComponent","i7.SingInputAutoFocusDirective","i8","i3.SingDialogService","i4.FilterCommunicationService","i5.FilterFreeTextService","i6.FilterPanelService","i7.SavedFiltersListService","i8.ManageFilterActionsService","i9.QueryRegister","i10.FilterPanelEventsService","i11.FilterPreferencesService","i12","i13.SingDropDownComponent","i14.SingClickOutSideNoDragDirective","i15.FilterScopeDropdownComponent","i16.FilterSearchBarComponent","i17.TabTimeComponent","i18.FilterListComponent","i19.SavedFiltersListComponent","i1.SingInlineSvgService","i4.SingInlineSvgModuleDirective","i5.EnforceAppItemSvgDimensionsDirective","i3.SingClickOutSideDirective","i4.CandyAppItemComponent"],"mappings":"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"}