{"version":3,"file":"costimize-ui-lib.mjs","sources":["../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-modifier.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/FilterSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/public/modifier-options.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/LabelOrTagSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/LabelSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/TagSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/InputSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/SingleSelection.ts","../../../projects/costimize-ui-lib/src/lib/filter/mapper.ts","../../../projects/costimize-ui-lib/src/lib/filter/model/private/MultiselectSelection.ts","../../../projects/costimize-ui-lib/src/lib/design-system/menu-item/menu-item.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/menu-item/menu-item.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/inputs/ui-input/input.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/inputs/ui-input/input.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/dynamic-scroll-list/dynamic-scroll-list.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/dynamic-scroll-list/dynamic-scroll-list.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/helpers/Helpers.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/all-tab/all-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/all-tab/all-tab.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/text-button/text-button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/text-button/text-button.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/multiselect-tab/multiselect-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/multiselect-tab/multiselect-tab.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/single-select-tab/single-select-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/single-select-tab/single-select-tab.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/label-and-tag-tabs/label-or-tag-tab.ts","../../../projects/costimize-ui-lib/src/lib/common/gcp-minor-action/gcp-minor-action.component.ts","../../../projects/costimize-ui-lib/src/lib/common/gcp-minor-action/gcp-minor-action.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/label-and-tag-tabs/label-tab/label-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/label-and-tag-tabs/label-tab/label-tab.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/label-and-tag-tabs/tag-tab/tag-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/label-and-tag-tabs/tag-tab/tag-tab.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/input-tab/input-tab.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/tabs/input-tab/input-tab.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/pipes/as.pipe.ts","../../../projects/costimize-ui-lib/src/lib/design-system/tooltip/toolip.directive.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/filter-column-view-menu/filter-column-view.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector-window/filter-column-view-menu/filter-column-view.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/icon-button/icon-button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/icon-button/icon-button.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/menu/lazy-content.directive.ts","../../../projects/costimize-ui-lib/src/lib/design-system/menu/menu.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/menu/menu.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/chip/chip.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/chip/chip.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/error-and-warning-messages/error-and-warning-messages.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/error-and-warning-messages/error-and-warning-messages.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/filter-selector/filter-selector.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/dropdowns/label-dropdown/label-dropdown.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/dropdowns/label-dropdown/label-dropdown.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/grouping/grouping.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/grouping/grouping.component.html","../../../projects/costimize-ui-lib/src/lib/common/KeyValue.ts","../../../projects/costimize-ui-lib/src/lib/design-system/predefined-type-picker/predefined-type-picker.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/predefined-type-picker/predefined-type-picker.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/date/datepicker/datepicker.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/date/datepicker/datepicker.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/date/invoice-month-picker/invoice-month-picker.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/date/invoice-month-picker/invoice-month-picker.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/period-selector/period-selector-window/period-selector-window.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/period-selector/period-selector-window/period-selector-window.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/period-selector/period-selector.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/period-selector/period-selector.component.html","../../../projects/costimize-ui-lib/src/lib/filter/save-filter-dialog/save-filter-dialog.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/save-filter-dialog/save-filter-dialog.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/slider/slider/slider.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/slider/slider/slider.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/single-select-chart/single-select-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/single-select-chart/single-select-chart.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/toggle-button-group/toggle-button-group.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/toggle-button-group/toggle-button-group.component.html","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/chart-settings.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/modifiers/chart-settings/chart-settings.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/menu-window/menu-window.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/menu-window/menu-window.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/saved-filter-button/dropdown-button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/saved-filter-button/dropdown-button.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/flat-icon-button/flat-icon-button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/flat-icon-button/flat-icon-button.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/saved-filter-container/saved-filter-container.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/saved-filter-container/saved-filter-container.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/basic-elements/line/line.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/basic-elements/line/line.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/primary-button/primary-button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/primary-button/primary-button.component.html","../../../projects/costimize-ui-lib/src/lib/filter/filter.component.ts","../../../projects/costimize-ui-lib/src/lib/filter/filter.component.html","../../../projects/costimize-ui-lib/src/lib/generic-table/models/TableConfigData.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/PageSort.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/Row.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/RowColData.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/TableAction.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/CellTextAlignment.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/CellValue.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/ColumnGenTable.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/ColumnSizeEnum.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/Icon.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/models/Column.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/models/TableConfig.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/models/ConfigAndDisplayColumns.ts","../../../projects/costimize-ui-lib/src/lib/design-system/card/card.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/card/card.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-subtitle/card-subtitle.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-subtitle/card-subtitle.component.html","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/table-config-dialog/table-config-dialog.component.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/table-config-dialog/table-config-dialog.component.html","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/table-config.component.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/edit-table-menu/table-config.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-content-header/card-content-header.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-content-header/card-content-header.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/read-more/read-more.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/read-more/read-more.component.html","../../../projects/costimize-ui-lib/src/lib/generic-table/generic-table.component.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/generic-table.component.html","../../../projects/costimize-ui-lib/src/lib/generic-table/models/ButtonStyles.ts","../../../projects/costimize-ui-lib/src/lib/generic-table/models/ButtonConfig.ts","../../../projects/costimize-ui-lib/src/lib/chart/line-chart/ChartBackground.ts","../../../projects/costimize-ui-lib/src/lib/design-system/helpers/Constants.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/line-chart-skeleton-loader/line-chart-skeleton-loader.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/line-chart-skeleton-loader/line-chart-skeleton-loader.component.html","../../../projects/costimize-ui-lib/src/lib/chart/line-chart/line-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/chart/line-chart/line-chart.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/ChartColors.ts","../../../projects/costimize-ui-lib/src/lib/chart/model/ChartDot.ts","../../../projects/costimize-ui-lib/src/lib/chart/bar-chart/bar-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/chart/bar-chart/bar-chart.component.html","../../../projects/costimize-ui-lib/src/lib/chart/bar-chart/BarChartData.ts","../../../projects/costimize-ui-lib/src/lib/chart/pie-chart/pie-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/chart/pie-chart/pie-chart.component.html","../../../projects/costimize-ui-lib/src/lib/chart/doughnut-chart/doughnut-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/chart/doughnut-chart/doughnut-chart.component.html","../../../projects/costimize-ui-lib/src/lib/chart/line-chart/LineChartData.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/button/button.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/button/button.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/small-icon/small-icon.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/buttons/small-icon/small-icon.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/date/monthpicker/monthpicker.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/date/monthpicker/monthpicker.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/dropdowns/label-dropdown-multiselect/label-dropdown-multiselect.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/dropdowns/label-dropdown-multiselect/label-dropdown-multiselect.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/layout/app-layout/app-layout.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/layout/app-layout/app-layout.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/layout/page-contents/page-contents.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/layout/page-contents/page-contents.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/layout/side-menu/side-menu.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/layout/side-menu/side-menu.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/layout/top-section/top-section.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/layout/top-section/top-section.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/flat-card/flat-card.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/flat-card/flat-card.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/flat-card/flat-card-header/flat-card-header.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/flat-card/flat-card-header/flat-card-header.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/chart-card-title/chart-card-title.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/chart-card-title/chart-card-title.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/big-number/big-number.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/big-number/big-number.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/SkeletonLoaderConfig.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/Contexts/OverviewLineChartContext.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-line-chart/overview-line-chart-wrapper/overview-line-chart-wrapper.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-line-chart/overview-line-chart-wrapper/overview-line-chart-wrapper.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/pipes/UiShortCurrencyPipe.ts","../../../projects/costimize-ui-lib/src/lib/design-system/pipes/CostimizeCurrencyPipe.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-line-chart/overview-line-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-line-chart/overview-line-chart.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/data-circle-skeleton-loader.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/data-circle-skeleton-loader.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/chart-cart-skeleton-loader/chart-cart-skeleton-loader.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/chart-cart-skeleton-loader/chart-cart-skeleton-loader.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/number-skeleton-loader/number-skeleton-loader.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/data-skeleton-loader/number-skeleton-loader/number-skeleton-loader.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/Contexts/OverviewPieChartContext.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-pie-chart/overview-pie-chart-wrapper/overview-pie-chart-wrapper.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-pie-chart/overview-pie-chart-wrapper/overview-pie-chart-wrapper.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-pie-chart/overview-pie-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-pie-chart/overview-pie-chart.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/number-and-text-card/number-and-text-card.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/number-and-text-card/number-and-text-card.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/pipes/PercentPipe.ts","../../../projects/costimize-ui-lib/src/lib/design-system/toggle/toggle.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/toggle/toggle.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-title/card-title.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/card/card-title/card-title.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/charts/DoughnutChartCotnext.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/promotions-and-discounts/doughnut-chart-wrapper/doughnut-chart-wrapper.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/promotions-and-discounts/doughnut-chart-wrapper/doughnut-chart-wrapper.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/promotions-and-discounts/promotions-and-discounts.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/promotions-and-discounts/promotions-and-discounts.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/Contexts/OverviewBarChartContext.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-bar-chart/overview-bar-chart-wrapper/overview-bar-chart-wrapper.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-bar-chart/overview-bar-chart-wrapper/overview-bar-chart-wrapper.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-bar-chart/current-projected-bar-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/current-projected-bar-chart/current-projected-bar-chart.component.html","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-bar-chart/overview-bar-chart.component.ts","../../../projects/costimize-ui-lib/src/lib/design-system/overview-cards/overview-bar-chart/overview-bar-chart.component.html","../../../projects/costimize-ui-lib/src/public-api.ts","../../../projects/costimize-ui-lib/src/costimize-ui-lib.ts"],"sourcesContent":["import {PreApplyMessages, PreApplyValidator,} from '../interfaces/pre-apply-validator.interface';\n\n/**\n * A Filter modifier is a component via which the user can modify the filter params\n * thus effecting the filter results.\n */\nexport abstract class FilterModifier<T, InnerSelection> {\n  /**\n   * Current errors.\n   */\n  errorMessages: Array<string> = [];\n\n  /**\n   * Current warnings.\n   */\n  warningMessages: Array<string> = [];\n\n  /**\n   * Holds the error validation logic that comes from outside the costimize-ui-lib\n   * via the modifiers control options.\n   *\n   * {@link PreApplyValidator}\n   */\n  validator: PreApplyValidator<T>;\n\n  /**\n   * Called with specific filter selections when the user wants to apply an already saved filter.\n   *\n   * @param selection\n   */\n  abstract onSavedGcpFilterApplied(selection: InnerSelection): void;\n\n  /**\n   * Validates if the modifier selection is valid.\n   *\n   * @param selection {@link GcpFilterSelections}\n   * @returns true if the selection is valid, false otherwise\n   */\n  isValid(selection: T): boolean {\n    let messages: PreApplyMessages = {\n      errorMessages: [],\n      warningMessages: [],\n    };\n    if (this.validator) {\n      messages = this.validator.preApplyValidation(selection);\n    }\n    this.errorMessages = messages.errorMessages;\n    this.warningMessages = messages.warningMessages;\n    return this.errorMessages.length === 0;\n  }\n}\n","import {\n  ChartType,\n  SelectableOption,\n  SelectedSingleChartOption,\n  ToggleSelectedOption,\n} from '../public/modifier-options';\n\nexport abstract class FilterSelection {\n  /**\n   * The label that will be displayed in the chip.\n   */\n  title: string;\n\n  /**\n   * Returns the tooltip for the chip.\n   */\n  abstract getTooltip(): string;\n\n  /**\n   * Returns what has to be displayed in the chip.\n   */\n  abstract getLabel(): string;\n\n  /**\n   * Returns a new object copy of the FilterSelection.\n   */\n  abstract copy(): FilterSelection;\n\n  /**\n   * Returns the number of selected filter options.\n   */\n  abstract getSize(): number;\n\n  /**\n   * Clears the selected options.\n   */\n  abstract clearSelections(): void;\n\n  constructor(title: string) {\n    this.title = title;\n  }\n}\n\n/**\n * Base class for representing the user's selection.\n */\n\nexport abstract class MultiselectLabelTagSelection<T> extends FilterSelection {\n  /**\n   * Mapping to outputObject in\n   */\n  id: string;\n\n  selectedItems: Array<T> = [];\n\n  constructor(title: string, id: string) {\n    super(title);\n    this.title = title;\n    this.id = id;\n  }\n\n  /**\n   * Add the given item to the selected items.\n   *\n   * @param selectedItem\n   */\n  abstract select(selectedItem: T): void;\n\n  /**\n   * Remove the given item from the selected items.\n   *\n   * @param deselectedItem\n   */\n  abstract deselect(deselectedItem: T): void;\n\n  /**\n   * Checks if the given item is selected.\n   *\n   * @param item - Item to check\n   */\n  abstract isItemSelected(item: T): boolean;\n}\n\nexport type ToggleSelection = {\n  id: string;\n  selectedToggles: Array<ToggleSelectedOption>;\n};\n\nexport type SelectedSliderValue = {\n  id: string;\n  value: number;\n};\n\nexport type ChartSelection = {\n  chartType: ChartType;\n  selectableOptions: Array<SelectableOption>;\n  selectedToggleOptions: ToggleSelection;\n  selectedSliderValues: Array<SelectedSliderValue>;\n  selectedSingleSelectValues: SelectedSingleChartOption;\n};\n","import {TooltipPosition} from '@angular/material/tooltip';\nimport {KeyValue, KeyValueObject} from '../../../common/KeyValue';\nimport {PreApplyMessages, PreApplyValidator,} from '../../interfaces/pre-apply-validator.interface';\nimport {FormControl, ValidatorFn} from '@angular/forms';\nimport {Observable} from 'rxjs';\n\nexport enum ChartType {\n  LINE = 'LINE',\n  BAR = 'BAR',\n  PIE = 'PIE',\n  GROUPING = 'GROUPING',\n  PREDICTION = 'PREDICTION',\n  DOUGHNUT = 'DOUGHNUT',\n}\n\nexport type TogglesContainer = {\n  id: string;\n  toggles: Array<ToggleButtonGroup>;\n};\n\nexport type ToggleButtonGroup = {\n  title?: string;\n  toggleOptions: Array<KeyValue>;\n} & Mappable;\n\nexport type SelectableOption = {\n  label: string;\n  selected: boolean;\n  tooltip?: string;\n  tooltipPosition?: TooltipPosition;\n} & Mappable;\n\nexport enum LogicalOperator {\n  AND = 'AND',\n  OR = 'OR',\n}\n\nexport type Multiselection<T extends string | number | boolean> = {\n  items: Array<T>;\n  isIncludeMode: boolean;\n};\n\nexport type Labels = {\n  selectedLabels: Array<Label>;\n  logicOperation: LogicalOperator;\n};\n\nexport type Tags = {\n  selectedTags: Array<Tag>;\n  logicOperation: LogicalOperator;\n};\n\nexport type Item = {\n  display: string;\n  value: string | number | boolean;\n  cloudProvider?: string;\n  cloudProviderName?: string;\n  img?: string;\n};\nexport type ToggleSelectedOption = {\n  type: string;\n  mode: string;\n};\n\nexport type Slider = {\n  min: number;\n  max: number;\n  step: number;\n} & Mappable;\n\nexport type SliderWrapper = {\n  control: FormControl<number>;\n} & Slider;\n\nexport type SingleSelectValidation<T> = {\n  validation?: (selection: T) => boolean;\n  tooltip?: string;\n};\n\nexport type SingleSelectChartOptions<T> = {\n  title?: string;\n  items: Array<KeyValue & SingleSelectValidation<T>>;\n} & Mappable;\n\nexport type SelectedSingleChartOption = {\n  id: string;\n  item: KeyValue;\n};\n\n//The property namings are like this, so they match the BE to avoid changes in BE.\nexport type Label = {\n  label: string;\n  //We don't support multiselection at the moment but costimize wants it that way.\n  labelValues: Array<string> | null;\n};\n\nexport type LabelWithOneValue = {\n  label: string;\n  value: string;\n};\n\n//The property namings are like this, so they match the BE to avoid changes in BE.\nexport type Tag = {\n  tag: string;\n  //We don't support multiselection at the moment but costimize wants it that way.\n  tagValues: Array<string>;\n  namespace: string;\n};\n\nexport class InvoiceMonth {\n  parsedDate: string;\n  bigQueryInvoiceMonth: string;\n\n  constructor(month: string) {\n    this.bigQueryInvoiceMonth = month;\n  }\n}\n\n/**\n * Base class representing period selection.\n */\nexport class Period {\n  /**\n   * Type of selected period\n   * @example PREDEFINED | DATE_RANGE | INVOICE_MONTH\n   */\n  type: PeriodType;\n  /**\n   * Used for DATE_RANGE\n   */\n  fromDate: moment.Moment;\n  /**\n   * Used for DATE_RANGE\n   */\n  toDate: moment.Moment;\n  /**\n   * Used for PREDEFINED\n   */\n  predefinedType: string;\n  /**\n   * INVOICE_MONTH selection\n   */\n  selectedInvoiceMonths?: string[];\n}\n\nexport enum PeriodType {\n  PREDEFINED = 'PREDEFINED',\n  DATE_RANGE = 'DATE_RANGE',\n  INVOICE_MONTH = 'INVOICE_MONTH',\n}\n\n/**\n * Contains the metadata needed to create a Multiselect tab.\n * Extends FilterTab.\n */\nexport type MultiSelectTab =\n  | ({\n      type: 'MULTI_SELECT';\n      items: Array<Item>;\n      hideExclude?: boolean;\n      keepTitleOverCloudProvider?: boolean;\n      lazyLoadItems?: never;\n      loadItemsByIds?: never;\n    } & Searchable &\n      Mappable)\n  | ({\n      type: 'MULTI_SELECT';\n      items: Array<Item>;\n      hideExclude?: boolean;\n      keepTitleOverCloudProvider?: boolean;\n      lazyLoadItems: (searchString: string, length?: number) => Observable<Array<Item>>;\n      loadItemsByIds?: (ids: (string | number | boolean)[]) => Observable<Array<Item>>;\n    } & Searchable &\n      Mappable);\n\n/**\n * Contains the metadata needed to create a Single select tab.\n * Extends FilterTab.\n */\nexport type SingleSelectTab = {\n  type: 'SINGLE_SELECT';\n  /**\n   * The selectable data\n   */\n  items: Array<Item>;\n} & Mappable;\n\n/**\n * Wrapper containing the validation functions and error messages map.\n */\nexport type InputFieldValidators = {\n  validatorFunctions: Array<ValidatorFn>;\n  /**\n   * A map where the key should be the key of ValidationErrors\n   * returned by the validation function and the value should be the message.\n   */\n  errorMessages: Map<string, string>;\n};\n\nexport type InputField = {\n  label: string;\n  validators?: InputFieldValidators;\n  overrideChipText?: string;\n} & Mappable &\n  (TextInputField | NumberInputField | CheckboxInputField);\n\nexport type TextInputField = {\n  type: 'text';\n  searchInputField?: (key: string) => Observable<Array<string>>;\n};\n\nexport type NumberInputField = {\n  type: 'number';\n};\n\nexport type CheckboxInputField = {\n  type: 'checkbox';\n};\n\nexport type InputTab = {\n  type: 'INPUT';\n  inputs: Array<InputField>;\n  cloudProvider?: string;\n};\n/**\n * Contains the metadata to create a Label tab.\n * Extends FilterTab.\n */\nexport type LabelTab = {\n  type: 'LABEL';\n  additionalActionId?: string;\n  addButtonName: string;\n  additionalActionName?: string;\n\n  /**\n   * Called when the key value of a label has changed.\n   *\n   * @param key - The searched key\n   * @returns Possible keys for the given search key\n   */\n  searchKeys: (key: string) => Observable<Array<string>>;\n\n  /**\n   * Called when a label value's value has changed.\n   *\n   * @param key - The searched key\n   * @param value - The searched value\n   * @returns Posible values for the given search value.\n   */\n  searchValues: (key: string, value: string) => Observable<Array<string>>;\n\n  /**\n   * Called when a global search is initiated from the 'All' tab\n   *\n   * @param search The searched word\n   * @returns Labels that contain the search word.\n   */\n  globalSearch: (search: string) => Observable<Array<Label>>;\n} & Searchable &\n  Mappable;\n\nexport type TagTab = {\n  type: 'TAG';\n  cloudProvider: string;\n  searchNamespace: (namespace: string) => Observable<Array<string>>;\n  searchKeys: (key: string, namespace: string) => Observable<Array<string>>;\n  searchValues: (\n    key: string,\n    value: string,\n    namespace: string\n  ) => Observable<Array<string>>;\n  globalSearch: (search: string) => Observable<Array<Tag>>;\n} & Mappable &\n  Searchable;\n\nexport interface Mappable {\n  /**\n   * The name of the property in the output object to which the selection will be mapped.\n   */\n  id: string;\n}\n\nexport interface Searchable {\n  /**\n   * The prefix will be used in the global search to narrow the search to items from a specific tab.\n   */\n  searchPrefix: string;\n}\n\nexport function isSearchable(s: any): s is Searchable {\n  return (s as Searchable).searchPrefix !== undefined;\n}\n\nexport function isMappable(m: any): m is Mappable {\n  return (m as Mappable).id !== undefined;\n}\n\n/**\n * Description of a tab.\n */\nexport type FilterTab = {\n  /**\n   * The title of the tab.\n   */\n  title: string;\n} & (MultiSelectTab | SingleSelectTab | LabelTab | TagTab | InputTab);\n\nexport type NonEmptyArray<T> = [T, ...T[]] | [...T[], T] | [T, ...T[], T];\n\n/* MODIFIER OPTIONS */\n\n/**\n * Base class for all modifiers.\n */\nexport abstract class ModifierOptions<T> implements PreApplyValidator<T> {\n  preApplyValidation?: (selection: T) => PreApplyMessages;\n}\n\n/**\n * Grouping will be visualised only if GroupingOptionsm\n * are passed in the GcpFilterOptions.\n */\nexport class GroupingOptions<T> extends ModifierOptions<T> implements Mappable {\n  id: string;\n  /**\n   * The selectable options that will be used in the dropdown field.\n   * The elements can be either {@link KeyValue} or an Array of {@link KeyValue}.\n   * If the element is an Array of {@link KeyValue} hierarchy rules will be applied on\n   * the selection order.\n   *\n   * @Example [{\n   *    display: 'Period - Day',\n   *    value: 'PERIOD_DAY',\n   * }]\n   */\n  items: Array<KeyValueObject | Array<KeyValueObject>>;\n}\n\nexport class PeriodOptions<T> extends ModifierOptions<T> implements Mappable {\n  id: string;\n  predefinedPeriods?: Array<KeyValue>;\n  invoiceMonths?: Array<InvoiceMonth>;\n  hideCustomPeriod?: boolean;\n}\n\nexport class ChartOptions<T> extends ModifierOptions<T> {\n  selectableOptions?: Array<SelectableOption>;\n  togglesContainer?: TogglesContainer;\n  sliders?: Array<Slider>;\n  chartType?: FormControl<ChartType>;\n  singleSelectOptions?: SingleSelectChartOptions<T>;\n}\n\nexport class FilterOptions<T> extends ModifierOptions<T> {\n  tabs: NonEmptyArray<FilterTab>;\n}\n","import { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { Label, LogicalOperator, Tag } from '../public/modifier-options';\nimport { MultiselectLabelTagSelection } from './FilterSelection';\nimport { Observable } from 'rxjs';\n\nexport type LabelAsFormGroup = FormGroup<{\n  key: FormControl<string>;\n  value: FormControl<string | null>;\n}>;\n\nexport type TagAsFormGroup = FormGroup<{\n  namespace: FormControl<string>;\n  key: FormControl<string>;\n  value: FormControl<string>;\n}>;\n\n/**\n * Base class for selections that are composed via rows with input fields such as {@link Label} and {@link Tag}.\n */\nexport abstract class LabelOrTagSelection<\n  T extends Label | Tag\n> extends MultiselectLabelTagSelection<T> {\n  logicOperation: LogicalOperator;\n  autoCompleteKeys: Array<Array<string>>;\n  autoCompleteValues: Array<Array<string>>;\n  searchKeys: (key: string, namespace?: string) => Observable<Array<string>>;\n  searchValues: (\n    key: string,\n    value: string,\n    namespace?: string\n  ) => Observable<Array<string>>;\n  constructor(\n    title: string,\n    id: string,\n    searchKeys: (key: string, namespace?: string) => Observable<Array<string>>,\n    searchValues: (\n      key: string,\n      value: string,\n      namespace?: string\n    ) => Observable<Array<string>>\n  ) {\n    super(title, id);\n    this.autoCompleteKeys = [];\n    this.autoCompleteValues = [];\n    this.searchKeys = searchKeys;\n    this.searchValues = searchValues;\n  }\n  /**\n   * Selected items represented via Forms. Needed so that we can use\n   * mat-form-field with its full potential.\n   */\n  abstract selectedItemsAsForm:\n    | FormArray<LabelAsFormGroup>\n    | FormArray<TagAsFormGroup>;\n\n  abstract createEmptyObject(): T;\n\n  /**\n   * Create a FormGroup from the given selection.\n   *\n   * @param inputSelection\n   * @param rowId\n   */\n  abstract createFormGroup(\n    inputSelection: T,\n    rowId: number\n  ): LabelAsFormGroup | TagAsFormGroup;\n\n  abstract addNewFormGroup(): void;\n\n  override getLabel(): string {\n    return this.title;\n  }\n\n  updateAutocompleteKeys(rowId: number, key: string, namespace?: string) {\n    let search = namespace\n      ? this.searchKeys(key, namespace)\n      : this.searchKeys(key);\n    search.subscribe((keys) => (this.autoCompleteKeys[rowId] = keys));\n  }\n\n  updateAutocompleteValues(\n    rowId: number,\n    key: string,\n    value: string,\n    namespace?: string\n  ) {\n    let search = namespace\n      ? this.searchValues(key, value, namespace)\n      : this.searchValues(key, value);\n\n    search.subscribe((values) => (this.autoCompleteValues[rowId] = values));\n  }\n\n  updateAutocompleteKeysOnClick(rowId: number, namespace?: string) {\n    if (!this.autoCompleteKeys[rowId]) {\n      if (\n        (namespace && namespace.trim().length > 0) ||\n        namespace === undefined\n      ) {\n        this.updateAutocompleteKeys(\n          rowId,\n          this.selectedItemsAsForm.at(rowId).controls.key.value,\n          namespace\n        );\n      }\n    }\n  }\n\n  updateAutocompleteValuesOnClick(rowId: number, searchNamespace?: string) {\n    if (!this.autoCompleteValues[rowId]) {\n      let key = this.selectedItemsAsForm.at(rowId).controls.key.value;\n      let value = this.selectedItemsAsForm.at(rowId).controls.value.value;\n      if (\n        (searchNamespace &&\n          searchNamespace.trim().length > 0 &&\n          key &&\n          key.trim().length > 0) ||\n        (searchNamespace === undefined && key && key.trim().length > 0)\n      ) {\n        this.updateAutocompleteValues(rowId, key, value, searchNamespace);\n      }\n    }\n  }\n\n  deselectByIndex(index: number) {\n    this.selectedItemsAsForm.controls.splice(index, 1);\n  }\n}\n","import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Label, LogicalOperator } from '../public/modifier-options';\nimport { debounce, interval, Observable } from 'rxjs';\nimport { copyObject } from '../../mapper';\nimport XRegExp from 'xregexp';\nimport { LabelAsFormGroup, LabelOrTagSelection } from './LabelOrTagSelection';\n\nconst LABEL_KEY_VALIDATION = XRegExp('[A-Za-zА-Яа-я0-9_-]+$', 'u');\nconst LABEL_VALUE_VALIDATION = XRegExp('[A-Za-zА-Яа-я0-9_-]+$', 'u');\n\n/**\n * Heir of {@link FilterSelection} representing the selection from a label tab.\n */\nexport class LabelSelection extends LabelOrTagSelection<Label> {\n  additionalAction: boolean;\n  additionalActionId: string | undefined;\n  additionalActionName: string | undefined;\n  override selectedItemsAsForm: FormArray<LabelAsFormGroup>;\n\n  constructor(\n    searchKeys: (key: string) => Observable<Array<string>>,\n    searchValues: (key: string, value: string) => Observable<Array<string>>,\n    title: string,\n    id: string,\n    logicOperation?: LogicalOperator,\n    labels?: Array<Label>,\n    propagateLabels?: boolean,\n    propagateLabelsId?: string,\n    additionalActionName?: string\n  ) {\n    super(title, id, searchKeys, searchValues);\n    this.additionalAction = propagateLabels;\n    this.additionalActionId = propagateLabelsId;\n    this.additionalActionName = additionalActionName;\n    this.logicOperation = logicOperation ? logicOperation : LogicalOperator.AND;\n    this.initLabels(labels);\n\n    if (this.additionalActionId && !this.additionalActionName) {\n      console.warn(\n        'Additional label action ID was passed in options but a name was not. Fallback chip name will be used: ' +\n          this.additionalActionId\n      );\n    }\n  }\n\n  override addNewFormGroup(): void {\n    this.selectedItemsAsForm.push(\n      this.createFormGroup(\n        this.createEmptyObject(),\n        this.selectedItemsAsForm.length\n      )\n    );\n  }\n\n  override createEmptyObject(): Label {\n    return { label: '', labelValues: [''] };\n  }\n\n  override isItemSelected(label: Label): boolean {\n    return (\n      this.selectedItemsAsForm.controls.find(\n        (labelForm) =>\n          label.label === labelForm.controls.key.value &&\n          label.labelValues[0] === labelForm.controls.value.value\n      ) !== undefined\n    );\n  }\n\n  override select(selectedItem: Label): void {\n    if (\n      this.selectedItemsAsForm.length === 1 &&\n      this.selectedItemsAsForm.at(0).controls.key.value === '' &&\n      this.selectedItemsAsForm.at(0).controls.value.value === ''\n    ) {\n      this.selectedItemsAsForm.at(0).controls.key.setValue(selectedItem.label);\n      this.selectedItemsAsForm.at(0).controls.key.markAsTouched();\n      this.selectedItemsAsForm\n        .at(0)\n        .controls.value.setValue(selectedItem.labelValues[0]);\n      this.selectedItemsAsForm.at(0).controls.value.markAsTouched();\n    } else {\n      this.selectedItemsAsForm.push(\n        this.createFormGroup(selectedItem, this.selectedItemsAsForm.length)\n      );\n    }\n  }\n\n  override deselect(deselectedLabel: Label): void {\n    this.selectedItemsAsForm.controls.splice(\n      this.selectedItemsAsForm.controls.findIndex((label) => {\n        deselectedLabel.label === label.controls.key.value &&\n          deselectedLabel.labelValues[0] === label.controls.value.value;\n      }),\n      1\n    );\n  }\n\n  override getTooltip(): string {\n    return this.selectedItems\n      .map(\n        (label) =>\n          `Label with key:  ${label.label} and value: ${\n            label.labelValues?.[0] ? label.labelValues[0] : 'any'\n          }`\n      )\n      .join('\\n' + this.logicOperation + '\\n');\n  }\n\n  override getSize(): number {\n    if (this.selectedItems.length === 1) {\n      if (\n        this.selectedItems[0].label === '' &&\n        this.selectedItems[0].labelValues[0] === ''\n      ) {\n        return 0;\n      }\n    }\n    return this.selectedItems.length;\n  }\n\n  override clearSelections(): void {\n    this.additionalAction = false;\n    this.initLabels();\n  }\n\n  override copy(): LabelSelection {\n    return new LabelSelection(\n      this.searchKeys,\n      this.searchValues,\n      this.title,\n      this.id,\n      this.logicOperation,\n      copyObject(this.selectedItems),\n      this.additionalAction,\n      this.additionalActionId,\n      this.additionalActionName\n    );\n  }\n\n  private initLabels(labels?: Array<Label>) {\n    this.selectedItems =\n      labels && labels.length > 0 ? labels : [{ label: '', labelValues: [''] }];\n    this.selectedItemsAsForm = new FormArray<LabelAsFormGroup>([]);\n    this.selectedItems.forEach((selectedItem) => {\n      this.selectedItemsAsForm.push(\n        this.createFormGroup(selectedItem, this.selectedItemsAsForm.length)\n      );\n    });\n  }\n\n  override createFormGroup(label: Label, rowId: number): LabelAsFormGroup {\n    let form = new FormGroup({\n      key: new FormControl(label.label, [\n        Validators.pattern(LABEL_KEY_VALIDATION),\n        Validators.maxLength(63),\n      ]),\n      value: new FormControl(label.labelValues ? label.labelValues[0] : '', [\n        Validators.pattern(LABEL_VALUE_VALIDATION),\n        Validators.maxLength(63),\n      ]),\n    });\n    form.controls.key.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((key: string) => {\n        this.updateAutocompleteKeys(rowId, key);\n        this.updateAutocompleteValues(rowId, form.controls.key.value, '');\n      });\n    form.controls.value.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((value: string) =>\n        this.updateAutocompleteValues(rowId, form.controls.key.value, value)\n      );\n    if (label.label !== '') {\n      form.controls.key.markAsTouched();\n    }\n    if (label.label[0] !== '') {\n      form.controls.value.markAsTouched();\n    }\n    return form;\n  }\n}\n","import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { LogicalOperator, Tag } from '../public/modifier-options';\nimport { copyObject } from '../../mapper';\nimport XRegExp from 'xregexp';\nimport { LabelOrTagSelection, TagAsFormGroup } from './LabelOrTagSelection';\nimport { debounce, interval, Observable } from 'rxjs';\n\n/*\n * Validation regexes\n */\nconst TAGS_VALIDATION = XRegExp('[A-Za-zА-Яа-я0-9_-]+$', 'u');\n\nexport class TagSelection extends LabelOrTagSelection<Tag> {\n  selectedItemsAsForm: FormArray<TagAsFormGroup>;\n  autoCompleteNamespaces: Array<Array<string>>;\n  searchNamespace: (namespace: string) => Observable<Array<string>>;\n\n  constructor(\n    searchNamespace: (namespace: string) => Observable<Array<string>>,\n    searchKeys: (key: string, namespace: string) => Observable<Array<string>>,\n    searchValues: (\n      key: string,\n      value: string,\n      namespace: string\n    ) => Observable<Array<string>>,\n    title: string,\n    id: string,\n    logicOperation?: LogicalOperator,\n    tags?: Array<Tag>\n  ) {\n    super(title, id, searchKeys, searchValues);\n    this.autoCompleteNamespaces = [];\n    this.logicOperation = logicOperation ? logicOperation : LogicalOperator.AND;\n    this.searchNamespace = searchNamespace;\n    this.initTags(tags);\n  }\n\n  override addNewFormGroup(): void {\n    this.selectedItemsAsForm.push(\n      this.createFormGroup(\n        this.createEmptyObject(),\n        this.selectedItemsAsForm.length\n      )\n    );\n  }\n\n  override createEmptyObject(): Tag {\n    return { namespace: '', tag: '', tagValues: [''] };\n  }\n\n  override isItemSelected = (tag: Tag): boolean => {\n    return (\n      this.selectedItemsAsForm.controls.find(\n        (tagForm) =>\n          tag.namespace === tagForm.controls.namespace.value &&\n          tag.tag === tagForm.controls.key.value &&\n          tag.tagValues[0] === tagForm.controls.value.value\n      ) !== undefined\n    );\n  };\n\n  override select(tag: Tag): void {\n    if (\n      this.selectedItemsAsForm.length === 1 &&\n      this.selectedItemsAsForm.at(0).controls.namespace.value === '' &&\n      this.selectedItemsAsForm.at(0).controls.key.value === '' &&\n      this.selectedItemsAsForm.at(0).controls.value.value === ''\n    ) {\n      this.selectedItemsAsForm.at(0).controls.namespace.setValue(tag.namespace);\n      this.selectedItemsAsForm.at(0).controls.key.setValue(tag.tag);\n      this.selectedItemsAsForm.at(0).controls.value.setValue(tag.tagValues[0]);\n    } else {\n      this.selectedItemsAsForm.push(\n        this.createFormGroup(tag, this.selectedItemsAsForm.length)\n      );\n    }\n  }\n\n  override deselect(deselectedTag: Tag): void {\n    let foundIndex = this.selectedItemsAsForm.controls.findIndex(\n      (tag) =>\n        deselectedTag.namespace === tag.controls.namespace.value &&\n        deselectedTag.tag === tag.controls.key.value &&\n        deselectedTag.tagValues[0] === tag.controls.key.value\n    );\n    this.selectedItemsAsForm.controls.splice(foundIndex, 1);\n  }\n\n  override getTooltip(): string {\n    return this.selectedItems\n      .map(\n        (tag) =>\n          `Tag with namespace: ${\n            tag.namespace === '' ? 'any' : tag.namespace\n          } and key:  ${tag.tag === '' ? 'any' : tag.tag} and value: ${\n            tag.tagValues[0] === '' ? 'any' : tag.tagValues[0]\n          }`\n      )\n      .join('\\n' + this.logicOperation.toUpperCase() + '\\n');\n  }\n\n  override getSize(): number {\n    if (this.selectedItems.length === 1) {\n      if (\n        this.selectedItems[0].namespace.trim() === '' &&\n        this.selectedItems[0].tag.trim() === '' &&\n        this.selectedItems[0].tagValues[0].trim() === ''\n      ) {\n        return 0;\n      }\n    }\n    return this.selectedItems.length;\n  }\n\n  override clearSelections(): void {\n    this.initTags();\n  }\n\n  override copy(): TagSelection {\n    return new TagSelection(\n      this.searchNamespace,\n      this.searchKeys,\n      this.searchValues,\n      this.title,\n      this.id,\n      this.logicOperation,\n      copyObject(this.selectedItems)\n    );\n  }\n\n  updateAutocompleteNamespaces(rowId: number, namespace: string) {\n    this.searchNamespace(namespace).subscribe(\n      (namespaces) => (this.autoCompleteNamespaces[rowId] = namespaces)\n    );\n  }\n\n  private initTags(tags?: Array<Tag>) {\n    this.selectedItems =\n      tags && tags.length > 0\n        ? tags\n        : [{ namespace: '', tag: '', tagValues: [''] }];\n    this.selectedItemsAsForm = new FormArray<TagAsFormGroup>([]);\n    this.selectedItems.forEach((tag) => {\n      this.selectedItemsAsForm.push(\n        this.createFormGroup(tag, this.selectedItemsAsForm.length)\n      );\n    });\n  }\n\n  override createFormGroup(tag: Tag, rowId: number): TagAsFormGroup {\n    let tagAsForm = new FormGroup({\n      namespace: new FormControl(tag.namespace, [\n        Validators.pattern(TAGS_VALIDATION),\n        Validators.maxLength(256),\n      ]),\n      key: new FormControl(tag.tag, [\n        Validators.pattern(TAGS_VALIDATION),\n        Validators.maxLength(256),\n      ]),\n      value: new FormControl(tag.tagValues[0], [\n        Validators.pattern(TAGS_VALIDATION),\n        Validators.maxLength(256),\n      ]),\n    });\n\n    tagAsForm.controls.namespace.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((namespace) => {\n        this.updateAutocompleteNamespaces(rowId, namespace);\n        this.updateAutocompleteKeys(\n          rowId,\n          tagAsForm.controls.key.value,\n          namespace\n        );\n        this.updateAutocompleteValues(\n          rowId,\n          tagAsForm.controls.key.value,\n          tagAsForm.controls.value.value,\n          namespace\n        );\n      });\n\n    tagAsForm.controls.key.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((key: string) => {\n        this.updateAutocompleteKeys(\n          rowId,\n          key,\n          tagAsForm.controls.namespace.value\n        );\n        this.updateAutocompleteValues(\n          rowId,\n          key,\n          tagAsForm.controls.value.value,\n          tagAsForm.controls.namespace.value\n        );\n      });\n\n    tagAsForm.controls.value.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((value: string) =>\n        this.updateAutocompleteValues(\n          rowId,\n          tagAsForm.controls.key.value,\n          value,\n          tagAsForm.controls.namespace.value\n        )\n      );\n\n    if (tag.namespace !== '') {\n      tagAsForm.controls.namespace.markAsTouched();\n    }\n    if (tag.tag !== '') {\n      tagAsForm.controls.key.markAsTouched();\n    }\n    if (tag.tagValues[0] !== '') {\n      tagAsForm.controls.value.markAsTouched();\n    }\n\n    return tagAsForm;\n  }\n}\n","import { FormControl } from '@angular/forms';\nimport { InputField } from '../public/modifier-options';\nimport { FilterSelection } from './FilterSelection';\n\nexport type InputFieldWrapper = {\n  input: InputField;\n  selection: FormControl;\n  errorMessages: Array<string>;\n  autoCompleteValues?: Array<string>;\n};\n\nexport class InputSelection extends FilterSelection {\n  inputWrappers: Array<InputFieldWrapper> = [];\n  inputs: Array<InputField> = [];\n\n  constructor(\n    title: string,\n    inputs: Array<InputField>,\n    inputWrappers?: Array<InputFieldWrapper>\n  ) {\n    super(title);\n    this.inputs = inputs;\n    this.inputWrappers = inputWrappers\n      ? inputWrappers.map((wrapper) => {\n          let formControl = new FormControl(\n            wrapper.selection.value,\n            wrapper.input.validators?.validatorFunctions\n          );\n          return {\n            input: wrapper.input,\n            selection: formControl,\n            errorMessages: [],\n          };\n        })\n      : inputs.map((input) => {\n          return {\n            input: input,\n            selection: new FormControl(),\n            errorMessages: [],\n          };\n        });\n  }\n\n  override getTooltip(): string {\n    return this.inputWrappers\n      .filter((wrapper) => wrapper.selection.value !== null)\n      .map((input) => `${input.input.label} : ${input.selection.value}`)\n      .join('\\n');\n  }\n\n  override getLabel(): string {\n    return this.title;\n  }\n\n  override copy(): FilterSelection {\n    return new InputSelection(this.title, this.inputs, this.inputWrappers);\n  }\n\n  override getSize(): number {\n    return this.inputWrappers.filter(\n      (wrapper) => wrapper.selection.value !== null\n    ).length;\n  }\n\n  override clearSelections(): void {\n    this.inputWrappers.forEach((wrapper) => wrapper.selection.setValue(null));\n  }\n\n  clearSelection(index: number) {\n    this.inputWrappers.at(index).selection.setValue(null);\n  }\n}\n","import { FilterSelection } from './FilterSelection';\nimport {Item} from \"../public/modifier-options\";\n\nexport class SingleSelection extends FilterSelection {\n  id: string;\n  selectedOption: Item;\n\n  constructor(title: string, id: string, selectedOption?: Item) {\n    super(title);\n    this.id = id;\n    this.selectedOption = selectedOption ?? null;\n  }\n\n  clearSelections(): void {\n    this.selectedOption = null;\n  }\n\n  copy(): FilterSelection {\n    return new SingleSelection(this.title, this.id, this.selectedOption);\n  }\n\n  getLabel(): string {\n    return this.title;\n  }\n\n  getSize(): number {\n    return 1;\n  }\n\n  getTooltip(): string {\n    return this.selectedOption.display;\n  }\n}\n","import {\n  ChartSelection,\n  FilterSelection,\n  MultiselectLabelTagSelection,\n  ToggleSelection,\n} from './model/private/FilterSelection';\nimport {GcpFilterModifiers} from './model/public/gcp-filter-options';\nimport {\n  ChartOptions,\n  FilterOptions,\n  GroupingOptions,\n  isMappable,\n  Labels,\n  LabelTab,\n  MultiSelectTab,\n  Multiselection,\n  Period,\n  PeriodOptions,\n  SelectedSingleChartOption,\n  SingleSelectChartOptions,\n  Tags,\n  TogglesContainer,\n  ToggleSelectedOption,\n} from './model/public/modifier-options';\nimport {KeyValue, KeyValueObject} from '../common/KeyValue';\nimport {MultiselectSelection} from './model/private/MultiselectSelection';\nimport {LabelSelection} from './model/private/LabelSelection';\nimport {TagSelection} from './model/private/TagSelection';\nimport {InputFieldWrapper, InputSelection,} from './model/private/InputSelection';\nimport {FormControl} from '@angular/forms';\nimport {SingleSelection} from './model/private/SingleSelection';\nimport {forkJoin, map, Observable, of, tap} from 'rxjs';\n\n/**\n * Creating an array of {@link FilterSelection} based on the filter options and data from the source object.\n *\n * @param source The data source\n * @param filterOptions Filter modifier configuration\n * @returns The created array of {@link FilterSelection}\n */\nexport function mapObjectToFilterSelection<T>(\n  source: T,\n  filterOptions: FilterOptions<T>\n): Array<FilterSelection> {\n  let filterSelections: Array<FilterSelection> = [];\n  filterOptions.tabs.forEach((tab) => {\n    if (isMappable(tab)) {\n      if (source.hasOwnProperty(tab.id)) {\n        let prop = source[tab.id];\n        let filterSelection: FilterSelection;\n        switch (tab.type) {\n          case 'MULTI_SELECT':\n            filterSelection = prop\n              ? new MultiselectSelection(\n                  tab.title,\n                  tab.id,\n                  (prop as Multiselection<any>).isIncludeMode,\n                  (prop as Multiselection<any>).items\n                    .map(\n                      (value) =>\n                        tab.items.find((item) => item.value === value) ?? null\n                    )\n                    .filter((it) => it !== null)\n                )\n              : new MultiselectSelection(tab.title, tab.id, true);\n            break;\n          case 'SINGLE_SELECT':\n            const option = tab.items.find((it) => it.value === prop) ?? null;\n            filterSelection = new SingleSelection(\n              tab.title,\n              tab.id,\n              option ?? null\n            );\n            break;\n          case 'LABEL':\n            filterSelection = prop\n              ? new LabelSelection(\n                  tab.searchKeys,\n                  tab.searchValues,\n                  tab.title,\n                  tab.id,\n                  (prop as Labels).logicOperation,\n                  (prop as Labels).selectedLabels\n                )\n              : new LabelSelection(\n                  tab.searchKeys,\n                  tab.searchValues,\n                  tab.title,\n                  tab.id\n                );\n            break;\n          case 'TAG':\n            filterSelection = prop\n              ? new TagSelection(\n                  tab.searchNamespace,\n                  tab.searchKeys,\n                  tab.searchValues,\n                  tab.title,\n                  tab.id,\n                  (prop as Tags).logicOperation,\n                  (prop as Tags).selectedTags\n                )\n              : new TagSelection(\n                  tab.searchNamespace,\n                  tab.searchKeys,\n                  tab.searchValues,\n                  tab.title,\n                  tab.id\n                );\n            break;\n        }\n        // Additional label action\n        if (filterSelection instanceof LabelSelection) {\n          const actionTab = filterOptions.tabs.find(\n            (it) => it.type === 'LABEL'\n          ) as LabelTab;\n          if (source.hasOwnProperty(actionTab.additionalActionId)) {\n            filterSelection.additionalAction =\n              source[actionTab.additionalActionId];\n            filterSelection.additionalActionId = actionTab.additionalActionId;\n            filterSelection.additionalActionName =\n              actionTab.additionalActionName;\n          }\n        }\n        if (filterSelection) {\n          filterSelections.push(filterSelection);\n        } else {\n          console.warn(\n            'Can not create filter selection for tab ' +\n              tab.title +\n              ' with type ' +\n              tab.type\n          );\n        }\n      } else {\n        throw new Error(getMissingPropertyErrorMessage(tab.id));\n      }\n    } else {\n      if (tab.type === 'INPUT') {\n        let inputWrappers: Array<InputFieldWrapper> = [];\n        tab.inputs.forEach((input) => {\n          inputWrappers.push({\n            input: input,\n            selection: new FormControl(source[input.id]),\n            errorMessages: [],\n          });\n        });\n        filterSelections.push(\n          new InputSelection(tab.title, tab.inputs, inputWrappers)\n        );\n      }\n    }\n  });\n  return filterSelections;\n}\n\n/**\n * Async version of mapObjectToFilterSelection that loads missing items by ID for tabs\n * that have the loadItemsByIds callback configured.\n *\n * @param source The data source\n * @param filterOptions Filter modifier configuration\n * @returns Observable of the created array of FilterSelection\n */\nexport function mapObjectToFilterSelectionAsync<T>(\n  source: T,\n  filterOptions: FilterOptions<T>\n): Observable<Array<FilterSelection>> {\n  const loadRequests: Array<{\n    tab: MultiSelectTab;\n    missingIds: Array<string | number | boolean>;\n  }> = [];\n\n  filterOptions.tabs.forEach((tab) => {\n    if (\n      isMappable(tab) &&\n      tab.type === 'MULTI_SELECT' &&\n      tab.loadItemsByIds &&\n      source.hasOwnProperty(tab.id)\n    ) {\n      const prop = source[tab.id] as Multiselection<any> | null;\n      if (prop && prop.items && prop.items.length > 0) {\n        const existingValues = new Set(tab.items.map((item) => item.value));\n        const missingIds = prop.items.filter((id) => !existingValues.has(id));\n\n        if (missingIds.length > 0) {\n          loadRequests.push({ tab, missingIds });\n        }\n      }\n    }\n  });\n\n  if (loadRequests.length === 0) {\n    return of(mapObjectToFilterSelection(source, filterOptions));\n  }\n\n  const loadObservables = loadRequests.map((request) =>\n    request.tab.loadItemsByIds!(request.missingIds).pipe(\n      tap((loadedItems) => {\n        loadedItems.forEach((item) => {\n          if (!request.tab.items.find((existing) => existing.value === item.value)) {\n            request.tab.items.push(item);\n          }\n        });\n      })\n    )\n  );\n\n  return forkJoin(loadObservables).pipe(\n    map(() => mapObjectToFilterSelection(source, filterOptions))\n  );\n}\n\n/**\n * Creating an Array of {@link KeyValue} aka. \"Grouping selection\"\n * based on the source object and the grouping modifier configuration.\n *\n * @param source The data source\n * @param groupingOptions Grouping modifier configuration\n * @returns The created Array of {@link KeyValue}\n */\nexport function mapObjectToGroupingSelection<T>(\n  source: T,\n  groupingOptions: GroupingOptions<T>\n): Array<KeyValue> {\n  if (source.hasOwnProperty(groupingOptions.id)) {\n    let map = new Map<string, KeyValueObject>();\n    groupingOptions.items.forEach((groupingOption) =>\n      Array.isArray(groupingOption)\n        ? groupingOption.forEach((groupingOption) =>\n            map.set(JSON.stringify(groupingOption.value), groupingOption)\n          )\n        : map.set(JSON.stringify(groupingOption.value), groupingOption)\n    );\n\n    let sourceGrouping = source[groupingOptions.id] as Array<string>;\n    return sourceGrouping\n      ? sourceGrouping.map((value) => map.get(JSON.stringify(value)))\n      : [];\n  } else {\n    throw new Error(getMissingPropertyErrorMessage(groupingOptions.id));\n  }\n}\n\n/**\n * Creates a {@link Period} based on the source object and the period modifier configuration.\n *\n * @param source The data source\n * @param periodOptions Period modifier configuration\n * @returns The created {@link Period}\n */\nexport function mapObjectToPeriod<T>(\n  source: T,\n  periodOptions: PeriodOptions<T>\n): Period {\n  if (source.hasOwnProperty(periodOptions.id)) {\n    return source[periodOptions.id] as Period;\n  } else {\n    throw new Error(getMissingPropertyErrorMessage(periodOptions.id));\n  }\n}\n\n/**\n * Creates a {@link ChartSelection} based on the source object and the chart modifier configuration.\n *\n * @param source The data source\n * @param chartOptions Chart modifier configuration\n * @returns The created {@link ChartSelection}\n */\nexport function mapObjectToChartSelection<T>(\n  source: T,\n  chartOptions: ChartOptions<T>\n): ChartSelection {\n  if (chartOptions.chartType) {\n    chartOptions.chartType.setValue(source['chartType']);\n  }\n  let chartSelection: ChartSelection = {\n    //TODO Remove hardcode\n    chartType: source['chartType'],\n    selectableOptions: chartOptions.selectableOptions\n      ? chartOptions.selectableOptions.map((option) => {\n          if (source.hasOwnProperty(option.id)) {\n            option.selected = source[option.id];\n          } else {\n            throw new Error(getMissingPropertyErrorMessage(option.id));\n          }\n          return option;\n        })\n      : null,\n    selectedSliderValues: chartOptions.sliders\n      ? chartOptions.sliders.map((slider) => {\n          if (!source.hasOwnProperty(slider.id)) {\n            throw new Error(getMissingPropertyErrorMessage(slider.id));\n          }\n          return {\n            id: slider.id,\n            value: source[slider.id],\n          };\n        })\n      : [],\n    selectedToggleOptions: chartOptions.togglesContainer\n      ? mapTogglesFromObjectToSelection(source, chartOptions.togglesContainer)\n      : null,\n    selectedSingleSelectValues: chartOptions.singleSelectOptions\n      ? mapSingleSelectToChart(source, chartOptions.singleSelectOptions)\n      : null,\n  };\n\n  return chartSelection;\n}\n\nfunction mapSingleSelectToChart<T>(\n  source: T,\n  selectionOptions: SingleSelectChartOptions<T>\n): SelectedSingleChartOption {\n  return {\n    id: selectionOptions.id,\n    item:\n      selectionOptions.items.find(\n        (it) => it.value === source[selectionOptions.id]\n      ) ?? selectionOptions.items[0],\n  };\n}\n\nfunction mapTogglesFromObjectToSelection<T>(\n  source: T,\n  toggleContainer: TogglesContainer\n): ToggleSelection {\n  let toggleSelection: ToggleSelection = {\n    id: toggleContainer.id,\n    selectedToggles: [],\n  };\n  let selections = source[toggleContainer.id]\n    ? (source[toggleContainer.id] as Array<ToggleSelectedOption>)\n    : null;\n\n  // Check for existing toggles outside togglesContainer (creditOptions)\n  toggleContainer.toggles.forEach((toggle) => {\n    // Stops multiplication of external properties during URL digestion\n    const containedAlready = selections.find((it) => it.type === toggle.id);\n    if (source[toggle.id] && !containedAlready) {\n      selections.push({\n        type: toggle.id,\n        mode: source[toggle.id],\n      } as ToggleSelectedOption);\n    }\n  });\n\n  if (selections) {\n    let isArray = Array.isArray(selections);\n    if (\n      (isArray &&\n        selections.filter((s) => !s.hasOwnProperty('type') || !s['mode'])\n          .length > 0) ||\n      !isArray\n    ) {\n      throw new Error(\n        `Property ${toggleContainer.id} must be an array of ToggleSelectedOption!`\n      );\n    }\n  }\n\n  selections\n    ? selections.forEach((s) => toggleSelection.selectedToggles.push(s))\n    : toggleContainer.toggles.forEach((toggle) =>\n        toggleSelection.selectedToggles.push({\n          type: toggle.id,\n          mode: toggle.toggleOptions[0].value,\n        })\n      );\n\n  return toggleSelection;\n}\n\n/**\n * Maps {@link FilterSelection} data to the target object.\n *\n * @param target The object to which the data will be mapped\n * @param filterSelection The data source\n * @returns The updated object\n */\nexport function mapFilterToObject<T>(\n  target: T,\n  filterSelection: Array<FilterSelection>\n): T {\n  filterSelection.forEach((selection) => {\n    if (selection instanceof MultiselectLabelTagSelection) {\n      if (target.hasOwnProperty(selection.id)) {\n        if (selection instanceof MultiselectSelection) {\n          target[selection.id] =\n            selection.selectedItems.length > 0\n              ? ({\n                  isIncludeMode: selection.isIncludeMode,\n                  items:\n                    selection.selectedItems.length > 0\n                      ? selection.selectedItems.map((item) => item.value)\n                      : null,\n                } as Multiselection<any>)\n              : null;\n        } else if (selection instanceof LabelSelection) {\n          target[selection.id] = {\n            logicOperation: selection.logicOperation,\n            selectedLabels: selection.selectedItems.filter(\n              (label) => label.label !== ''\n            ),\n          } as Labels;\n          if (selection.additionalActionId) {\n            target[selection.additionalActionId] = selection.additionalAction;\n          }\n        } else if (selection instanceof TagSelection) {\n          target[selection.id] = {\n            logicOperation: selection.logicOperation,\n            selectedTags: selection.selectedItems.filter(\n              (tag) => tag.namespace !== '' || tag.tag !== ''\n            ),\n          } as Tags;\n        }\n      }\n    } else if (selection instanceof InputSelection) {\n      selection.inputWrappers.forEach((inputWrapper) => {\n        if (target.hasOwnProperty(inputWrapper.input.id)) {\n          target[inputWrapper.input.id] =\n            inputWrapper.input.type === 'checkbox'\n              ? inputWrapper.selection.value ?? false\n              : inputWrapper.selection.value;\n        } else {\n          throw new Error(\n            getMissingPropertyErrorMessage(inputWrapper.input.id)\n          );\n        }\n      });\n    } else if (selection instanceof SingleSelection) {\n      if (target.hasOwnProperty(selection.id)) {\n        target[selection.id] =\n          selection.selectedOption &&\n          (selection.selectedOption.value ||\n            selection.selectedOption.value === 0)\n            ? selection.selectedOption.value\n            : null;\n      } else {\n        throw new Error(getMissingPropertyErrorMessage(selection.id));\n      }\n    }\n  });\n\n  return target;\n}\n\n/**\n * Maps Array of {@link KeyValue} aka. \"Grouping selection\" to the target object.\n *\n * @param target The object to which the data will be mapped\n * @param id The property name in the target object to where the data will be mapped to\n * @param groupingSelections The source data\n * @returns The updated object\n */\nexport function mapGroupingToObject<T>(\n  target: T,\n  id: string,\n  groupingSelections: Array<string>\n): T {\n  if (target.hasOwnProperty(id)) {\n    target[id] = groupingSelections;\n  } else {\n    throw new Error(getMissingPropertyErrorMessage(id));\n  }\n\n  return target;\n}\n\n/**\n * Maps the given {@link Period} to the target object.\n *\n * @param target The object to which the data will be mapped\n * @param id The property name in the target object to where the data will be mapped to\n * @param period The data source\n * @returns The updated object\n */\nexport function mapPeriodToObject<T>(target: T, id: string, period: Period): T {\n  if (target.hasOwnProperty(id)) {\n    target[id] = period;\n  } else {\n    throw new Error(getMissingPropertyErrorMessage(id));\n  }\n  return target;\n}\n\n/**\n * Maps {@link ChartSelection} data to target object.\n *\n * @param target The object to which the data will be mapped\n * @param chartSelection The data source\n * @returns The updated object\n */\nexport function mapChartToObject<T>(\n  target: T,\n  chartSelection: ChartSelection\n): T {\n  if (chartSelection) {\n    if (chartSelection.selectableOptions) {\n      chartSelection.selectableOptions.forEach((selectedOption) => {\n        if (target.hasOwnProperty(selectedOption.id)) {\n          target[selectedOption.id] = selectedOption.selected;\n        } else {\n          throw new Error(getMissingPropertyErrorMessage(selectedOption.id));\n        }\n      });\n    }\n    if (chartSelection.selectedToggleOptions) {\n      let arrayOfToggleContainerSelections: ToggleSelectedOption[] =\n        chartSelection.selectedToggleOptions.selectedToggles;\n      // Check for properties outside togglesContainer (creditOptions)\n      chartSelection.selectedToggleOptions.selectedToggles.forEach(\n        (toggle, index) => {\n          if (target[toggle.type]) {\n            target[toggle.type] = toggle.mode;\n            arrayOfToggleContainerSelections.splice(index, 1);\n          }\n        }\n      );\n\n      if (target.hasOwnProperty(chartSelection.selectedToggleOptions.id)) {\n        target[chartSelection.selectedToggleOptions.id] =\n          arrayOfToggleContainerSelections;\n      } else {\n        throw new Error(\n          getMissingPropertyErrorMessage(\n            chartSelection.selectedToggleOptions.id\n          )\n        );\n      }\n    }\n    chartSelection.selectedSliderValues.forEach((slider) => {\n      if (target.hasOwnProperty(slider.id)) {\n        target[slider.id] = slider.value;\n      } else {\n        throw new Error(getMissingPropertyErrorMessage(slider.id));\n      }\n    });\n    if (chartSelection.selectedSingleSelectValues) {\n      if (target.hasOwnProperty(chartSelection.selectedSingleSelectValues.id)) {\n        target[chartSelection.selectedSingleSelectValues.id] =\n          chartSelection.selectedSingleSelectValues.item.value;\n      } else {\n        throw new Error(\n          getMissingPropertyErrorMessage(\n            chartSelection.selectedSingleSelectValues.id\n          )\n        );\n      }\n    }\n    target['chartType'] = chartSelection.chartType;\n  }\n  return target;\n}\n\nexport function getOutputObjectWithoutID(outputObject: any): any {\n  if (outputObject.id) {\n    const removedID = copyObject(outputObject);\n    removedID.id = null;\n    return removedID;\n  }\n  return outputObject;\n}\n\nexport function validateMappings(\n  outputObject: any,\n  gcpFilterModifiers: GcpFilterModifiers<any>\n) {\n  let ids = new Set<string>();\n  let errorMessages: Array<string> = [];\n\n  gcpFilterModifiers.filterOptions.tabs.forEach((tab) => {\n    if (isMappable(tab)) {\n      ids.has(tab.id)\n        ? errorMessages.push(getDuplicateErrorMessage(tab.id))\n        : ids.add(tab.id);\n    } else if (tab.type === 'INPUT') {\n      tab.inputs.forEach((input) => {\n        ids.has(input.id)\n          ? errorMessages.push(getDuplicateErrorMessage(input.id))\n          : ids.add(input.id);\n      });\n    }\n  });\n  if (gcpFilterModifiers.groupingOptions) {\n    ids.has(gcpFilterModifiers.groupingOptions.id)\n      ? errorMessages.push(\n          getDuplicateErrorMessage(gcpFilterModifiers.groupingOptions.id)\n        )\n      : ids.add(gcpFilterModifiers.groupingOptions.id);\n  }\n  if (gcpFilterModifiers.periodOptions) {\n    ids.has(gcpFilterModifiers.periodOptions.id)\n      ? errorMessages.push(\n          getDuplicateErrorMessage(gcpFilterModifiers.periodOptions.id)\n        )\n      : ids.add(gcpFilterModifiers.periodOptions.id);\n  }\n  if (gcpFilterModifiers.chartOptions) {\n    if (gcpFilterModifiers.chartOptions.selectableOptions) {\n      gcpFilterModifiers.chartOptions.selectableOptions.forEach((opt) =>\n        ids.has(opt.id)\n          ? errorMessages.push(getDuplicateErrorMessage(opt.id))\n          : ids.add(opt.id)\n      );\n    }\n\n    if (gcpFilterModifiers.chartOptions.togglesContainer) {\n      ids.has(gcpFilterModifiers.chartOptions.togglesContainer.id)\n        ? errorMessages.push(\n            getDuplicateErrorMessage(\n              gcpFilterModifiers.chartOptions.togglesContainer.id\n            )\n          )\n        : ids.add(gcpFilterModifiers.chartOptions.togglesContainer.id);\n      gcpFilterModifiers.chartOptions.togglesContainer.toggles.forEach(\n        (toggle) => {\n          if (outputObject[toggle.id]) {\n            ids.add(toggle.id);\n          }\n        }\n      );\n    }\n    gcpFilterModifiers.chartOptions.sliders?.forEach((slider) => {\n      ids.has(slider.id)\n        ? errorMessages.push(getDuplicateErrorMessage(slider.id))\n        : ids.add(slider.id);\n    });\n  }\n\n  ids.forEach((id) => {\n    if (!outputObject.hasOwnProperty(id)) {\n      errorMessages.push(getMissingPropertyErrorMessage(id));\n    }\n  });\n\n  if (errorMessages.length > 0) {\n    throw new Error(errorMessages.join('\\n'));\n  }\n}\n\n/**\n * Returns a deep copy of the passed object.\n *\n * @param obj T\n * @returns T\n */\nexport function copyObject<T>(obj: T): T {\n  return JSON.parse(JSON.stringify(obj));\n}\n\nfunction getDuplicateErrorMessage(id: string): string {\n  return 'Duplicate id ' + id;\n}\n\nfunction getMissingPropertyErrorMessage(id: string): string {\n  return `Missing property \"${id}\" in output object. Add it or change the modifiers.`;\n}\n","import {copyObject} from '../../mapper';\nimport {Item} from '../public/modifier-options';\nimport {MultiselectLabelTagSelection} from './FilterSelection';\n\n/**\n * Heir of {@link FilterSelection} representing the selection from a multiselect tab.\n */\nexport class MultiselectSelection extends MultiselectLabelTagSelection<Item> {\n  /**\n   * Indicates whether the items are included or excluded.\n   */\n  isIncludeMode: boolean;\n\n  constructor(\n    title: string,\n    id: string,\n    isIncludeMode: boolean,\n    items?: Array<Item>\n  ) {\n    super(title, id);\n    this.isIncludeMode = isIncludeMode;\n    this.selectedItems = items ? items : [];\n  }\n\n  override select(selectedItem: Item) {\n    this.selectedItems.push(selectedItem);\n  }\n\n  override deselect(deselectedItem: Item): void {\n    this.selectedItems.splice(\n      this.selectedItems.findIndex(\n        (selectedItem) => selectedItem.value === deselectedItem.value\n      ),\n      1\n    );\n  }\n\n  override isItemSelected = (item: Item): boolean => {\n    return (\n      this.selectedItems.find(\n        (selectedItem) => selectedItem.value === item.value\n      ) !== undefined\n    );\n  };\n\n  override getTooltip(cloudProviderName?: string): string {\n    if (cloudProviderName) {\n      let tooltipMap = new Map<string, Map<string, string[]>>();\n      let tooltip = '';\n      this.selectedItems.forEach((item: Item) => {\n        if (!tooltipMap.has(item.cloudProvider)) {\n          tooltipMap.set(\n            item.cloudProvider,\n            new Map().set(\n              item.cloudProviderName,\n              this.selectedItems\n                .filter((it) => it.cloudProvider === item.cloudProvider)\n                .map((i) => i.display)\n            )\n          );\n        }\n      });\n\n      tooltipMap.forEach((map) => {\n        map.forEach((item, key) => {\n          tooltip +=\n            key +\n            ': ' +\n            item.map((value) => {\n              return '\\n' + ' • ' + value;\n            }) +\n            '\\n\\n';\n        });\n      });\n\n      if (!this.isIncludeMode) {\n        return 'Excludes: \\n' + tooltip;\n      }\n\n      return tooltip;\n    }\n\n    let tooltip = '' ;\n\n    if (!this.isIncludeMode) {\n      tooltip += 'Excludes: \\n';\n    }\n\n    tooltip += this.selectedItems\n      .map((item) => `• ${item.display}`)\n      .join('\\n');\n\n    return tooltip;\n  }\n\n  override getLabel(): string {\n    return this.title;\n  }\n\n  override getSize(): number {\n    return this.selectedItems.length;\n  }\n\n  override clearSelections(cloudProvider?: string): void {\n    if (cloudProvider) {\n      this.selectedItems = this.selectedItems.filter(\n        (it) => it.cloudProvider !== cloudProvider\n      );\n    } else {\n      this.selectedItems = [];\n    }\n  }\n\n  override copy(): MultiselectSelection {\n    return new MultiselectSelection(\n      this.title,\n      this.id,\n      this.isIncludeMode,\n      copyObject(this.selectedItems)\n    );\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {NgClass, NgIf, NgOptimizedImage} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n    selector: 'menu-item',\n    templateUrl: './menu-item.component.html',\n    styleUrls: ['./menu-item.component.scss'],\n    imports: [\n        NgClass,\n        MatTooltip,\n        NgIf,\n        MatIcon,\n        NgOptimizedImage,\n    ]\n})\nexport class MenuItemComponent {\n  @Input()\n  name: string;\n  @Input()\n  selected: boolean;\n  @Input()\n  image: string;\n  @Input()\n  matIcon: string;\n  @Input()\n  wrapWords: boolean;\n}\n","<button\n  class=\"menu-item\"\n  [ngClass]=\"{\n    selected: selected,\n    'align-mat-icon': matIcon,\n    'image-padding': image\n  }\"\n  [matTooltip]=\"name && (name.length > 80 ? name : undefined)\"\n  matTooltipPosition=\"after\"\n>\n  <ng-container *ngIf=\"matIcon\">\n    <mat-icon>{{ matIcon }}</mat-icon>\n  </ng-container>\n  <ng-container *ngIf=\"image\">\n    <img [ngSrc]=\"image\" alt=\"cloud image\" width=\"20\" height=\"20\" />\n  </ng-container>\n  <div *ngIf=\"name\" [ngClass]=\"wrapWords ? 'word-words' : 'text-ellipsis'\">\n    {{ name }}\n  </div>\n</button>\n","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,} from '@angular/core';\nimport {FormControl, ReactiveFormsModule} from '@angular/forms';\n\n@Component({\n    selector: 'ui-input',\n    templateUrl: './input.component.html',\n    styleUrls: ['./input.component.scss'],\n    imports: [ReactiveFormsModule]\n})\nexport class InputComponent implements OnInit {\n  @Input()\n  placeholder: string;\n\n  @Output()\n  inputChange: EventEmitter<string> = new EventEmitter();\n\n  @ViewChild('inputElement')\n  inputElement: ElementRef;\n\n  inputField: FormControl<string> = new FormControl('');\n\n  ngOnInit() {\n    setTimeout(() => {\n      this.inputElement.nativeElement.focus();\n    });\n    this.inputField.valueChanges.subscribe((value) =>\n      this.inputChange.emit(value)\n    );\n  }\n}\n","<div class=\"input-restrict-container\">\n  <input\n    #inputElement\n    class=\"input\"\n    placeholder=\"{{ placeholder }}\"\n    [formControl]=\"inputField\"\n  />\n</div>\n","import {Component, ElementRef, Input, OnChanges, SimpleChanges, ViewChild,} from '@angular/core';\nimport {copyObject} from '../../../../../mapper';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {MatList, MatListItem} from '@angular/material/list';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {Observable} from 'rxjs';\n\ninterface Displayable {\n  display: string;\n  img?: string;\n  isIncluded?: boolean;\n}\n\n@Component({\n  selector: 'lib-dynamic-scroll-list',\n  templateUrl: './dynamic-scroll-list.component.html',\n  styleUrls: ['./dynamic-scroll-list.component.scss'],\n  imports: [MatList, NgFor, MatListItem, MatCheckbox, NgIf],\n})\nexport class DynamicScrollListComponent<T extends Displayable>\n  implements OnChanges\n{\n  @ViewChild('itemsList')\n  itemsList!: ElementRef;\n\n  @Input()\n  isItemSelected: (item: T) => boolean;\n\n  @Input()\n  onSelect: (item: T, selected: boolean) => void;\n\n  @Input()\n  itemsSource: Array<T> = [];\n\n  @Input()\n  skipImage: boolean;\n\n  @Input()\n  indeterminate: boolean;\n\n  @Input()\n  lazyLoadItems: (\n    searchString: string,\n    length: number\n  ) => Observable<Array<T>>;\n\n  tempItemsSource: Array<T> = [];\n\n  itemsToShow: Array<T> = [];\n\n  constructor(public sanitizer: DomSanitizer) {}\n\n  ngOnChanges(_: SimpleChanges): void {\n    this.tempItemsSource = copyObject(this.itemsSource);\n    this.initItemsToShow();\n  }\n\n  onScroll(event: Event) {\n    let itemsDiv = event.target as HTMLElement;\n    if (\n      Math.ceil(itemsDiv.scrollTop) + itemsDiv.clientHeight >=\n      itemsDiv.scrollHeight\n    ) {\n      let count = 0;\n      while (count < 10) {\n        if (!this.pushToItemsToShow()) {\n          break;\n        }\n        count++;\n      }\n    }\n  }\n\n  initItemsToShow() {\n    this.itemsToShow = [];\n    this.scrollToTop();\n    let count = 0;\n    while (count < 10) {\n      if (!this.pushToItemsToShow()) {\n        break;\n      }\n      count++;\n    }\n  }\n\n  pushToItemsToShow = (): boolean => {\n    if (this.lazyLoadItems) {\n      this.lazyLoadItems('', this.itemsSource.length).subscribe((items) => {\n        this.itemsSource.push(...items);\n        this.tempItemsSource = this.itemsSource;\n        this.itemsToShow = this.tempItemsSource;\n      });\n      return false;\n    }\n\n    let nextItemToPush = this.tempItemsSource.shift();\n    if (nextItemToPush) {\n      this.itemsToShow.push(nextItemToPush);\n    }\n    return nextItemToPush !== undefined;\n  };\n\n  scrollToTop() {\n    if (this.itemsList) {\n      (this.itemsList.nativeElement as HTMLElement).scrollTop = 0;\n    }\n  }\n\n  isIndeterminate(item: T) {\n    if (this.isItemSelected(item)) {\n      if (this.indeterminate || item.isIncluded === false) {\n        return 'indeterminate';\n      }\n    }\n    return undefined;\n  }\n}\n","<div class=\"itemsList\" #itemsList (scroll)=\"this.onScroll($event)\">\n  <mat-list>\n    <mat-list-item\n      class=\"content-row\"\n      *ngFor=\"let item of itemsToShow\"\n      (click)=\"onSelect(item, !isItemSelected(item))\"\n    >\n      <mat-checkbox [checked]=\"isItemSelected(item)\" [indeterminate]=\"isIndeterminate(item)\">\n        <div class=\"text-container d-flex align-items-center\">\n          <img\n            *ngIf=\"item.img && !skipImage\"\n            class=\"img-size\"\n            [src]=\"sanitizer.bypassSecurityTrustUrl(item.img)\"\n            alt=\"Cloud Image\"\n          />\n          <div>{{ item.display }}</div>\n        </div>\n      </mat-checkbox>\n    </mat-list-item>\n  </mat-list>\n</div>\n","import {ChartOptions} from \"chart.js\";\nimport {ChartDot} from \"../../chart/model/ChartDot\";\n\nexport class Helpers {\n  private static rgbColorStringRegex = /rgb[(]\\d{1,3},\\s*\\d{1,3},\\s*\\d{1,3}[)]/;\n\n  public static getBarChartNextDate(chartDots: ChartDot[], isMonthlyChart: boolean): Date {\n    const lastDate = new Date(chartDots[chartDots.length - 1].label)\n    let nextDate = new Date(lastDate)\n    if (isMonthlyChart) {\n      nextDate.setMonth(lastDate.getMonth() + 1);\n      return nextDate;\n    } else {\n      nextDate.setDate(lastDate.getDate() + 1);\n      return nextDate;\n    }\n  }\n\n  public static getPreviousDate(chartDots: ChartDot[], isMonthlyChart: boolean): Date {\n    let firstDate = new Date(chartDots[0].label)\n    let previousDate = new Date(firstDate)\n    if (isMonthlyChart) {\n      previousDate.setMonth(firstDate.getMonth() - 1);\n      return previousDate;\n    } else {\n      previousDate.setDate(firstDate.getDate() - 1);\n      return previousDate;\n    }\n  }\n\n  static disableChartAnimations(chartOptions: ChartOptions): ChartOptions {\n    return {\n      ...chartOptions,\n      animation: false,\n      animations: {\n        colors: false,\n        x: false,\n        y: false\n      },\n      transitions: {\n        active: {\n          animation: {\n            duration: 0\n          }\n        }\n      }\n    };\n  }\n\n  public static filterList(list: Array<any>, searchValue: String, entriesLeftToFind: number, mappingFunction: (T: any) => string = (e) => e,) {\n    let result = []\n    list\n      .every((element, index) => {\n        if (entriesLeftToFind != null && result.length >= entriesLeftToFind) return false\n        let item = mappingFunction(element);\n        searchValue = searchValue.trim().replace(/\\s/g, \"\");\n        let valueIndex = 0;\n        const splitItem = item.split(/(?=[A-Z])|(-)|(\\.)|(\\s+)|(_)/).filter(Boolean);\n        for (let word of splitItem) {\n          let wordIndex = 0;\n          word = word.charAt(0).toUpperCase() + word.slice(1);\n\n          if (searchValue.charAt(0).toUpperCase() === word.charAt(0) && valueIndex === 1) {\n            valueIndex = 0;\n          }\n\n          while (wordIndex < word.length) {\n            if (valueIndex < searchValue.length && searchValue[valueIndex].toUpperCase() === word[wordIndex]) {\n              valueIndex++;\n              wordIndex++;\n              while (valueIndex < searchValue.length && searchValue[valueIndex].toLowerCase() === word[wordIndex]) {\n                valueIndex++;\n                wordIndex++;\n              }\n            } else {\n              wordIndex++;\n            }\n          }\n\n        }\n\n        if (valueIndex === searchValue.length) {\n          result = result.concat({item: element, index: index})\n        }\n        return true\n      })\n    return result\n  }\n\n  static addOpacityToRgbColor(color: string, number: number) {\n    if (color.match(this.rgbColorStringRegex)) {\n      return color.replace(')', `,${number})`);\n    } else {\n      return color;\n    }\n  }\n\n  static copyToClipboard(val: string) {\n    const selBox = document.createElement('textarea');\n    selBox.style.position = 'fixed';\n    selBox.style.left = '0';\n    selBox.style.top = '0';\n    selBox.style.opacity = '0';\n    selBox.value = val;\n    document.body.appendChild(selBox);\n    selBox.focus();\n    selBox.select();\n    document.execCommand('copy');\n    document.body.removeChild(selBox);\n  }\n}\n","import {Component, Input, OnChanges, OnDestroy, ViewChild,} from '@angular/core';\nimport {FilterTab, isSearchable, Item, Label, Tag,} from '../../../../../model/public/modifier-options';\nimport {AbstractControl} from '@angular/forms';\nimport {DynamicScrollListComponent} from '../dynamic-scroll-list/dynamic-scroll-list.component';\nimport {debounce, interval, map, Observable, of, Subscription} from 'rxjs';\nimport {MultiselectLabelTagSelection} from '../../../../../model/private/FilterSelection';\nimport {Helpers} from '../../../../../../design-system/helpers/Helpers';\nimport {NgIf} from '@angular/common';\nimport {MultiselectSelection} from '../../../../../model/private/MultiselectSelection';\n\ntype TabSelectItem = {\n  tabIndex: number;\n  display: string;\n  value: Item | Label | Tag;\n  img?: string;\n  isIncluded?: boolean;\n};\n\ntype MultiseletionId = {\n  selectionId?: number;\n};\n\ninterface TabSelectItemProvider {\n  getItems(searchValue: string): Observable<Array<TabSelectItem>>;\n}\n\n@Component({\n  selector: 'lib-all-tab',\n  templateUrl: './all-tab.component.html',\n  styleUrls: ['./all-tab.component.scss'],\n  imports: [NgIf, DynamicScrollListComponent],\n})\nexport class AllTabComponent implements OnChanges, OnDestroy {\n  @Input()\n  filterSelections: Array<MultiselectLabelTagSelection<any>>;\n\n  @Input()\n  tabs: Array<FilterTab & MultiseletionId>;\n\n  @Input()\n  searchField: AbstractControl<string>;\n\n  @Input()\n  fullAllTab: boolean;\n\n  @Input()\n  skipImage: boolean;\n\n  @ViewChild(DynamicScrollListComponent)\n  dynamicScrollListComponent!: DynamicScrollListComponent<TabSelectItem>;\n\n  itemsSource: Array<TabSelectItem> = [];\n  searchMap: Map<string, TabSelectItemProvider> = new Map<\n    string,\n    TabSelectItemProvider\n  >();\n  searchPrefix: string;\n  showSearchPrefixMessage: boolean;\n  noResultsFound: boolean = false;\n  searchFieldSubscription: Subscription;\n\n  ngOnDestroy(): void {\n    this.searchFieldSubscription.unsubscribe();\n  }\n\n  ngOnChanges(): void {\n    this.searchMap.clear();\n    this.tabs\n      .filter((tab) => isSearchable(tab))\n      .forEach((tab, index) => {\n        if (tab.type === 'MULTI_SELECT') {\n          this.searchMap.set(tab.searchPrefix, {\n            getItems: (searchValue: string): Observable<TabSelectItem[]> => {\n              let itemsObservable: Observable<Array<Item>>;\n              if (tab.lazyLoadItems) {\n                itemsObservable = tab.lazyLoadItems(searchValue);\n              } else {\n                const initialItemsSource: Observable<Array<Item>> = of(\n                  tab.items\n                );\n                itemsObservable = initialItemsSource\n                  .pipe(\n                    map((items: Array<Item>) =>\n                      Helpers.filterList(\n                        items,\n                        searchValue,\n                        null,\n                        (item: Item) => item.display\n                      )\n                    )\n                  )\n                  .pipe(map((flat) => flat.map((item: any) => item.item)));\n              }\n              return itemsObservable.pipe(\n                map((filteredItems: Array<Item>) => {\n                  return filteredItems.map<TabSelectItem>((item) => {\n                    return {\n                      tabIndex: this.fullAllTab ? index : tab.selectionId,\n                      display:\n                        (tab.keepTitleOverCloudProvider\n                          ? tab.title\n                          : item.cloudProviderName ?? tab.title) +\n                        ' : ' +\n                        item.display,\n                      value: item,\n                      img: item.img,\n                      isIncluded: (\n                        this.filterSelections[\n                          this.fullAllTab ? index : tab.selectionId\n                        ] as MultiselectSelection\n                      )?.isIncludeMode,\n                    };\n                  });\n                })\n              );\n            },\n          });\n        } else if (tab.type === 'LABEL') {\n          this.searchMap.set(tab.searchPrefix, {\n            getItems: (searchValue: string) =>\n              tab.globalSearch(searchValue).pipe(\n                map((labels) => {\n                  return labels.map((label) => {\n                    return {\n                      tabIndex: this.fullAllTab ? index : tab.selectionId,\n                      display:\n                        tab.title +\n                        ' : ' +\n                        label.label +\n                        ' : ' +\n                        label.labelValues[0],\n                      value: label,\n                    };\n                  });\n                })\n              ),\n          });\n        } else if (tab.type === 'TAG') {\n          this.searchMap.set(tab.searchPrefix, {\n            getItems: (searchValue: string) =>\n              tab.globalSearch(searchValue).pipe(\n                map((tags) => {\n                  return tags.map((tag) => {\n                    return {\n                      tabIndex: this.fullAllTab ? index : tab.selectionId,\n                      display:\n                        tab.title +\n                        ' : ' +\n                        tag.namespace +\n                        ' : ' +\n                        tag.tag +\n                        ' : ' +\n                        tag.tagValues[0],\n                      value: tag,\n                    };\n                  });\n                })\n              ),\n          });\n        }\n      });\n    this.search(this.searchField.value);\n    this.searchFieldSubscription = this.searchField.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((searchValue) => {\n        this.search(searchValue);\n      });\n  }\n\n  search(searchValue: string) {\n    this.noResultsFound = false;\n    let trimmedSearchValue = searchValue.trimStart();\n    let specificSearch = false;\n    this.showSearchPrefixMessage = false;\n    if (trimmedSearchValue.length >= 2) {\n      if (\n        (trimmedSearchValue.charAt(1) === ':' ||\n          trimmedSearchValue.charAt(1) === ' ') &&\n        this.searchMap.has(trimmedSearchValue.charAt(0))\n      ) {\n        trimmedSearchValue = trimmedSearchValue.toLowerCase();\n        specificSearch = true;\n      }\n    }\n    if (specificSearch) {\n      let itemsProvider = this.searchMap.get(trimmedSearchValue.charAt(0));\n      if (itemsProvider) {\n        itemsProvider\n          .getItems(trimmedSearchValue.slice(2, trimmedSearchValue.length))\n          .subscribe((results) => {\n            this.itemsSource = results;\n            if (results) {\n              this.showSearchPrefixMessage = false;\n              this.noResultsFound = false;\n            }\n          });\n      } else {\n        this.showSearchPrefixMessage = true;\n        this.searchPrefix = searchValue.trimStart()[0];\n      }\n    } else {\n      this.itemsSource = [];\n      for (let provider of this.searchMap.values()) {\n        provider.getItems(trimmedSearchValue).subscribe((results) => {\n          this.itemsSource = [...this.itemsSource, ...results];\n          this.noResultsFound = this.itemsSource.length === 0;\n        });\n      }\n    }\n    if (this.itemsSource.length === 0) {\n      this.noResultsFound = true;\n    }\n  }\n\n  isItemSelected = (item: TabSelectItem): boolean => {\n    return this.filterSelections[item.tabIndex]?.isItemSelected(item.value);\n  };\n\n  onSelect = (item: TabSelectItem, selected: boolean) => {\n    selected\n      ? this.filterSelections[item.tabIndex].select(item.value)\n      : this.filterSelections[item.tabIndex].deselect(item.value);\n  };\n}\n","<div class=\"noData\" *ngIf=\"noResultsFound\">\n  No results found, please refine your search.\n</div>\n<lib-dynamic-scroll-list\n  *ngIf=\"!showSearchPrefixMessage\"\n  [itemsSource]=\"itemsSource\"\n  [isItemSelected]=\"isItemSelected\"\n  [onSelect]=\"onSelect\"\n  [skipImage]=\"skipImage\"\n/>\n<div class=\"noData\" *ngIf=\"showSearchPrefixMessage\">\n  There are no items corresponding to the search prefix {{ searchPrefix }}\n</div>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-text-button',\n    templateUrl: './text-button.component.html',\n    styleUrls: ['./text-button.component.scss'],\n    standalone: true\n})\nexport class TextButtonComponent {\n\n}\n","<button class=\"ui-text-button primary-color\" aria-label=\"Button\">\n  <span class=\"ui-text-button__text\"><ng-content></ng-content></span>\n</button>\n","import {Component, Input, OnChanges, OnInit, SimpleChanges,} from '@angular/core';\nimport {Item, MultiSelectTab,} from '../../../../../model/public/modifier-options';\nimport {AbstractControl} from '@angular/forms';\nimport {MultiselectSelection} from '../../../../../model/private/MultiselectSelection';\nimport {Helpers} from '../../../../../../design-system/helpers/Helpers';\nimport {NgClass, NgIf} from '@angular/common';\nimport {TextButtonComponent} from '../../../../../../design-system/buttons/text-button/text-button.component';\nimport {DynamicScrollListComponent} from '../dynamic-scroll-list/dynamic-scroll-list.component';\nimport {debounceTime} from 'rxjs';\n\n@Component({\n  selector: 'lib-multiselect-tab',\n  templateUrl: './multiselect-tab.component.html',\n  styleUrls: ['./multiselect-tab.component.scss'],\n  imports: [NgIf, NgClass, TextButtonComponent, DynamicScrollListComponent],\n})\nexport class MultiselectTabComponent implements OnInit, OnChanges {\n  @Input()\n  multiselectSelection: MultiselectSelection;\n\n  @Input()\n  tab: MultiSelectTab;\n\n  @Input()\n  searchField: AbstractControl;\n\n  @Input()\n  skipImage: boolean;\n\n  itemsSource: Array<Item> = [];\n\n  ngOnInit(): void {\n    this.updateItemsSource();\n    this.searchField.valueChanges\n      .pipe(debounceTime(500))\n      .subscribe((_) => {\n        this.updateItemsSource();\n      });\n  }\n\n  ngOnChanges(_: SimpleChanges) {\n    this.updateItemsSource();\n  }\n\n  updateItemsSource() {\n    if (this.tab.lazyLoadItems) {\n      this.tab\n        .lazyLoadItems(this.searchField.value, 0)\n        .subscribe((items) => (this.itemsSource = items));\n    } else {\n      this.itemsSource = Helpers.filterList(\n        this.tab.items,\n        this.searchField.value,\n        null,\n        (item: Item) => item.display + item.cloudProviderName\n      ).map((it) => it.item);\n    }\n  }\n\n  onSelect = (item: Item, selected: boolean) => {\n    selected\n      ? this.multiselectSelection.select(item)\n      : this.multiselectSelection.deselect(item);\n  };\n}\n","<div *ngIf=\"itemsSource.length > 0; else noData\" [ngClass]=\"tab.hideExclude ? 'h-100' : 'height-button'\">\n  <ui-text-button\n    class=\"sticky-top\"\n    *ngIf=\"!tab.hideExclude\"\n    (click)=\"\n      multiselectSelection.isIncludeMode = !multiselectSelection.isIncludeMode\n    \"\n  >\n    <div class=\"text-mode\">\n      {{\n        multiselectSelection.isIncludeMode\n          ? \"Change to exclude mode\"\n          : \"Change to include mode\"\n      }}\n    </div></ui-text-button\n  >\n  @if (multiselectSelection) {\n    <lib-dynamic-scroll-list\n      [itemsSource]=\"itemsSource\"\n      [isItemSelected]=\"multiselectSelection.isItemSelected\"\n      [onSelect]=\"onSelect\"\n      [skipImage]=\"skipImage\"\n      [indeterminate]=\"!multiselectSelection.isIncludeMode\"\n      [lazyLoadItems]=\"tab.lazyLoadItems\"\n    />\n  }\n</div>\n<ng-template #noData\n  ><div class=\"noData\">\n    No results found, please refine your search.\n  </div></ng-template\n>\n","import {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {SingleSelection} from '../../../../../model/private/SingleSelection';\nimport {SingleSelectTab} from '../../../../../model/public/modifier-options';\nimport {MatList, MatListOption, MatSelectionList} from '@angular/material/list';\nimport {NgFor} from '@angular/common';\n\n@Component({\n    selector: 'lib-single-select-tab',\n    templateUrl: './single-select-tab.component.html',\n    styleUrls: ['./single-select-tab.component.scss'],\n    imports: [\n        MatList,\n        MatSelectionList,\n        NgFor,\n        MatListOption,\n    ]\n})\nexport class SingleSelectTabComponent {\n  @Input()\n  tab: SingleSelectTab;\n\n  @Input()\n  singleSelectSelection: SingleSelection;\n\n  @ViewChild('itemsList')\n  itemsList!: ElementRef;\n\n  @ViewChild('singleSelect')\n  singleSelect!: MatSelectionList;\n\n  select = () => {\n    this.singleSelectSelection.selectedOption =\n      this.singleSelect.selectedOptions.selected[0].value;\n  };\n}\n","<div class=\"itemsList\">\n  <mat-list>\n    <mat-selection-list\n      #singleSelect\n      [multiple]=\"false\"\n      (click)=\"select()\"\n    >\n      <mat-list-option\n        [togglePosition]=\"'before'\"\n        [value]=\"item\"\n        [selected]=\"singleSelectSelection.selectedOption?.value === item.value\"\n        *ngFor=\"let item of tab.items\"\n      >\n        {{ item.display }}\n      </mat-list-option>\n    </mat-selection-list>\n  </mat-list>\n</div>\n","import {\n  Label,\n  LogicalOperator,\n  Tag,\n} from '../../../../../model/public/modifier-options';\nimport { debounce, interval, Observable, Subscription } from 'rxjs';\nimport { Injectable, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { LabelOrTagSelection } from '../../../../../model/private/LabelOrTagSelection';\n\n@Injectable()\nexport abstract class LabelOrTagTabComponent<T extends Label | Tag>\n  implements OnInit, OnDestroy\n{\n  inSearchMode: boolean = false;\n  labelOrTagSelection: LabelOrTagSelection<T>;\n  showPropagateLabels: boolean = false;\n  globalSearchResults: Array<T>;\n  searchKeys: (\n    searchKey: string,\n    searchNamespace?: string\n  ) => Observable<Array<string>>;\n  searchValues: (\n    searchKey: string,\n    searchValue: string,\n    searchNamespace?: string\n  ) => Observable<Array<string>>;\n  globalSearch: (search: string) => Observable<Array<T>>;\n\n  abstract search: AbstractControl<string>;\n  searchSubscription: Subscription;\n\n  ngOnInit(): void {\n    this.searchSubscription = this.search.valueChanges\n      .pipe(debounce(() => interval(500)))\n      .subscribe((searchValue) => {\n        this.onSearchSubscribeFunction(searchValue);\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.searchSubscription.unsubscribe();\n  }\n\n  onLogicalOperatorClick() {\n    this.labelOrTagSelection.logicOperation =\n      this.labelOrTagSelection.logicOperation === LogicalOperator.AND\n        ? LogicalOperator.OR\n        : LogicalOperator.AND;\n  }\n\n  onSelect(tagOrLabel: T, selected: boolean) {\n    selected\n      ? this.labelOrTagSelection.select(tagOrLabel)\n      : this.labelOrTagSelection.deselect(tagOrLabel);\n  }\n\n  onSearchSubscribeFunction = (searchValue: string) => {\n    this.inSearchMode = searchValue != '';\n    if (this.inSearchMode) {\n      this.globalSearch(searchValue).subscribe(\n        (results) => (this.globalSearchResults = results)\n      );\n    }\n  };\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n    selector: 'gcp-minor-action',\n    templateUrl: './gcp-minor-action.component.html',\n    styleUrls: ['./gcp-minor-action.component.scss'],\n    imports: [MatIcon]\n})\nexport class GcpMinorActionComponent {\n  @Input() label: string;\n  @Output() onActionClicked: EventEmitter<any> = new EventEmitter();\n}\n","<span class=\"minor-action\"\n      (click)=\"this.onActionClicked.emit('')\">\n  <mat-icon inline=\"true\" class=\"ml-2\">add_circle</mat-icon>\n  {{label}}\n</span>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {AbstractControl, ReactiveFormsModule} from '@angular/forms';\nimport {Label, LabelTab,} from '../../../../../../model/public/modifier-options';\nimport {LabelSelection} from '../../../../../../model/private/LabelSelection';\nimport {LabelOrTagTabComponent} from '../label-or-tag-tab';\nimport {MatCheckbox, MatCheckboxChange} from '@angular/material/checkbox';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatError, MatFormField, MatLabel} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatAutocomplete, MatAutocompleteTrigger} from '@angular/material/autocomplete';\nimport {MatOption} from '@angular/material/core';\nimport {MatIcon} from '@angular/material/icon';\nimport {GcpMinorActionComponent} from '../../../../../../../common/gcp-minor-action/gcp-minor-action.component';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'lib-label-tab',\n    templateUrl: './label-tab.component.html',\n    styleUrls: ['./label-tab.component.scss'],\n    imports: [\n        NgIf,\n        NgFor,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        MatAutocompleteTrigger,\n        ReactiveFormsModule,\n        MatAutocomplete,\n        MatOption,\n        MatError,\n        MatIcon,\n        GcpMinorActionComponent,\n        MatCheckbox,\n        MatTooltip,\n    ]\n})\nexport class LabelTabComponent\n  extends LabelOrTagTabComponent<Label>\n  implements OnInit\n{\n  @Input()\n  tab: LabelTab;\n\n  @Input()\n  search: AbstractControl;\n\n  @Input()\n  labelSelection: LabelSelection;\n\n  override ngOnInit(): void {\n    if (this.tab.additionalActionId) {\n      this.showPropagateLabels = true;\n      this.labelSelection.additionalActionId = this.tab.additionalActionId;\n    }\n    this.searchKeys = this.tab.searchKeys;\n    this.searchValues = this.tab.searchValues;\n    this.globalSearch = this.tab.globalSearch;\n    this.labelOrTagSelection = this.labelSelection;\n    super.ngOnInit();\n  }\n\n  setPropagation = (value: MatCheckboxChange) => {\n    this.labelSelection.additionalAction = value.checked;\n  };\n\n  removeLabel = (event : Event, rowId: number) => {\n    this.labelSelection.deselectByIndex(rowId)\n    event.stopPropagation();\n  }\n}\n","<div class=\"container\">\n  <div *ngIf=\"!inSearchMode\">\n    <div\n      class=\"row\"\n      *ngFor=\"\n        let label of labelSelection.selectedItemsAsForm.controls;\n        index as rowId\n      \"\n    >\n      <div\n        class=\"col-1 align-self-center justify-content-center centered-text\"\n        *ngIf=\"rowId > 0\"\n      >\n        <span class=\"primary-color logic-operator\" (click)=\"onLogicalOperatorClick()\">\n          {{ this.labelSelection.logicOperation }}\n        </span>\n      </div>\n      <mat-form-field class=\"label-field\">\n        <mat-label>{{ rowId === 0 ? \"Having Key\" : \"Key\" }}</mat-label>\n        <input\n          matInput\n          type=\"text\"\n          [matAutocomplete]=\"keyAuto\"\n          [formControl]=\"label.controls.key\"\n          (click)=\"labelSelection.updateAutocompleteKeysOnClick(rowId)\"\n        />\n        <mat-autocomplete #keyAuto=\"matAutocomplete\">\n          <mat-option\n            *ngFor=\"let option of labelSelection.autoCompleteKeys[rowId]\"\n            [value]=\"option\"\n            (click)=\"$event.stopPropagation()\"\n            >{{ option }}</mat-option\n          >\n        </mat-autocomplete>\n        <mat-error> Only lowercase letters, numbers, \"-\", \"_\"! </mat-error>\n      </mat-form-field>\n      <mat-form-field class=\"label-field\">\n        <mat-label>With Value</mat-label>\n        <input\n          matInput\n          type=\"text\"\n          [matAutocomplete]=\"valueAuto\"\n          [formControl]=\"label.controls.value\"\n          (click)=\"labelSelection.updateAutocompleteValuesOnClick(rowId)\"\n        />\n        <mat-autocomplete #valueAuto=\"matAutocomplete\">\n          <mat-option\n            *ngFor=\"let option of labelSelection.autoCompleteValues[rowId]\"\n            [value]=\"option\"\n            (click)=\"$event.stopPropagation()\"\n            >{{ option }}</mat-option\n          >\n        </mat-autocomplete>\n        <mat-error> Only letters, numbers, \"-\", \"_\"! </mat-error>\n      </mat-form-field>\n      <mat-icon\n        class=\"delete-icon\"\n        matTooltipClass=\"pre-line\"\n        matTooltipPosition=\"after\"\n        (click)=\"removeLabel($event, rowId)\"\n        >delete</mat-icon\n      >\n    </div>\n    <gcp-minor-action\n      label=\"{{ tab.addButtonName }}\"\n      (onActionClicked)=\"labelSelection.addNewFormGroup()\"\n    ></gcp-minor-action>\n    <div *ngIf=\"showPropagateLabels\" class=\"row align-items-center pl-1\">\n      <div class=\"col-auto align-content-center pl-3 ml-1 pt-3\">\n        <mat-checkbox\n          (change)=\"setPropagation($event)\"\n          [checked]=\"labelSelection.additionalAction\"\n        >\n          {{ tab.additionalActionName }}\n        </mat-checkbox>\n        <i\n          class=\"material-icons costimize-material-icon info-icon control-info pb-0 pl-1\"\n          matTooltip=\"If selected, project-level labels/tags will be applied to each resource within the project\"\n          matTooltipPosition=\"right\"\n          >info\n        </i>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"inSearchMode\">\n    <div class=\"d-flex align-items-center\">\n      <mat-icon>info</mat-icon>\n      <div class=\"p-1\">Clear the Search field to enter advanced mode.</div>\n    </div>\n    <div>\n      <div *ngFor=\"let label of globalSearchResults\" class=\"content-row\">\n        <mat-checkbox\n          [value]=\"label.labelValues[0]\"\n          [checked]=\"labelSelection.isItemSelected(label)\"\n          (change)=\"onSelect(label, $event.checked)\"\n        >\n          <div class=\"text-spacing\">\n            {{ label.label + \" : \" + label.labelValues }}\n          </div>\n        </mat-checkbox>\n      </div>\n    </div>\n  </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {LabelOrTagTabComponent} from '../label-or-tag-tab';\nimport {AbstractControl, ReactiveFormsModule} from '@angular/forms';\nimport {Tag, TagTab} from '../../../../../../model/public/modifier-options';\nimport {TagSelection} from '../../../../../../model/private/TagSelection';\nimport {NgClass, NgFor, NgIf} from '@angular/common';\nimport {MatError, MatFormField, MatLabel} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatAutocomplete, MatAutocompleteTrigger} from '@angular/material/autocomplete';\nimport {MatOption} from '@angular/material/core';\nimport {MatIcon} from '@angular/material/icon';\nimport {GcpMinorActionComponent} from '../../../../../../../common/gcp-minor-action/gcp-minor-action.component';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'lib-tag-tab',\n    templateUrl: './tag-tab.component.html',\n    styleUrls: ['./tag-tab.component.scss'],\n    imports: [\n        NgIf,\n        NgFor,\n        MatFormField,\n        NgClass,\n        MatLabel,\n        MatInput,\n        ReactiveFormsModule,\n        MatAutocompleteTrigger,\n        MatAutocomplete,\n        MatOption,\n        MatError,\n        MatIcon,\n        GcpMinorActionComponent,\n        MatCheckbox,\n        MatTooltip,\n    ]\n})\nexport class TagTabComponent extends LabelOrTagTabComponent<Tag> {\n  @Input()\n  tab: TagTab;\n\n  @Input()\n  search: AbstractControl<string>;\n\n  @Input()\n  tagSelection: TagSelection;\n\n  override ngOnInit(): void {\n    this.searchKeys = this.tab.searchKeys;\n    this.searchValues = this.tab.searchValues;\n    this.globalSearch = this.tab.globalSearch;\n    this.labelOrTagSelection = this.tagSelection;\n    super.ngOnInit();\n  }\n\n  updateAutocompleteNamespacesOnClick(rowId: number, searchNamespace: string) {\n    if (!this.tagSelection.autoCompleteNamespaces[rowId]) {\n      this.updateAutocompleteNamespaces(rowId, searchNamespace);\n    }\n  }\n\n  updateAutocompleteNamespaces(rowId: number, searchNamespace: string) {\n    this.tab\n      .searchNamespace(searchNamespace)\n      .subscribe(\n        (namespaces) =>\n          (this.tagSelection.autoCompleteNamespaces[rowId] = namespaces)\n      );\n  }\n\n  removeTag = (event : Event, rowId: number) => {\n    this.tagSelection.deselectByIndex(rowId)\n    event.stopPropagation();\n  }\n\n}\n","<div class=\"container\">\n  <div *ngIf=\"!inSearchMode\">\n    <div\n      class=\"row\"\n      *ngFor=\"\n        let tag of tagSelection.selectedItemsAsForm.controls;\n        index as rowId\n      \"\n    >\n      <div\n        class=\"col-1 align-self-center justify-content-center centered-text\"\n        *ngIf=\"rowId > 0\"\n      >\n        <span class=\"primary-color logic-operator\" (click)=\"onLogicalOperatorClick()\">\n          {{ this.tagSelection.logicOperation }}\n        </span>\n      </div>\n      <mat-form-field [ngClass]=\"rowId === 0 ? 'first-tag-field' : 'tag-field'\">\n        <mat-label>{{\n          rowId === 0 ? \"Having Namespace\" : \"Namespace\"\n        }}</mat-label>\n        <input\n          matInput\n          type=\"text\"\n          [formControl]=\"tag.controls.namespace\"\n          [matAutocomplete]=\"namespaceAuto\"\n          (click)=\"\n            updateAutocompleteNamespacesOnClick(\n              rowId,\n              tag.controls.namespace.value\n            )\n          \"\n        />\n        <mat-autocomplete #namespaceAuto=\"matAutocomplete\">\n          <mat-option\n            *ngFor=\"let option of tagSelection.autoCompleteNamespaces[rowId]\"\n            [value]=\"option\"\n            (click)=\"$event.stopPropagation()\"\n            >{{ option }}</mat-option\n          >\n        </mat-autocomplete>\n        <mat-error> Only lowercase letters, numbers, \"-\", \"_\"! </mat-error>\n      </mat-form-field>\n      <mat-form-field [ngClass]=\"rowId === 0 ? 'first-tag-field' : 'tag-field'\">\n        <mat-label>With Key</mat-label>\n        <input\n          matInput\n          type=\"text\"\n          [formControl]=\"tag.controls.key\"\n          [matAutocomplete]=\"keyAuto\"\n          (click)=\"\n            tagSelection.updateAutocompleteKeysOnClick(\n              rowId,\n              tag.controls.namespace.value\n            )\n          \"\n        />\n        <mat-autocomplete #keyAuto=\"matAutocomplete\">\n          <mat-option\n            *ngFor=\"let option of tagSelection.autoCompleteKeys[rowId]\"\n            [value]=\"option\"\n            (click)=\"$event.stopPropagation()\"\n            >{{ option }}</mat-option\n          >\n        </mat-autocomplete>\n        <mat-error> Only lowercase letters, numbers, \"-\", \"_\"! </mat-error>\n      </mat-form-field>\n      <mat-form-field [ngClass]=\"rowId === 0 ? 'first-tag-field' : 'tag-field'\">\n        <mat-label>And Value</mat-label>\n        <input\n          matInput\n          type=\"text\"\n          [formControl]=\"tag.controls.value\"\n          [matAutocomplete]=\"valueAuto\"\n          (click)=\"\n            tagSelection.updateAutocompleteValuesOnClick(\n              rowId,\n              tag.controls.namespace.value\n            )\n          \"\n        />\n        <mat-autocomplete #valueAuto=\"matAutocomplete\">\n          <mat-option\n            *ngFor=\"let option of tagSelection.autoCompleteValues[rowId]\"\n            [value]=\"option\"\n            (click)=\"$event.stopPropagation()\"\n            >{{ option }}</mat-option\n          >\n        </mat-autocomplete>\n        <mat-error> Only letters, numbers, \"-\", \"_\"! </mat-error>\n      </mat-form-field>\n      <mat-icon\n        class=\"delete-icon\"\n        matTooltipClass=\"pre-line\"\n        matTooltipPosition=\"after\"\n        (click)=\"removeTag($event, rowId)\"\n        >delete</mat-icon\n      >\n    </div>\n    <gcp-minor-action\n      label=\"Add Tag\"\n      (onActionClicked)=\"tagSelection.addNewFormGroup()\"\n    ></gcp-minor-action>\n    <div *ngIf=\"showPropagateLabels\" class=\"row align-items-center\">\n      <div class=\"col-auto\">\n        <mat-checkbox formControlName=\"propagateProjectLabels\">\n          Propagate tags\n        </mat-checkbox>\n        <i\n          class=\"material-icons costimize-material-icon info-icon control-info pb-0\"\n          matTooltip=\"If selected, project-level tags will be applied to each resource within the project\"\n          matTooltipPosition=\"right\"\n          >info\n        </i>\n      </div>\n    </div>\n  </div>\n  <div *ngIf=\"inSearchMode\">\n    <div class=\"d-flex align-items-center\">\n      <mat-icon>info</mat-icon>\n      <div class=\"p-1\">Clear the Search field to enter advanced mode.</div>\n    </div>\n    <div>\n      <div *ngFor=\"let tag of globalSearchResults\" class=\"content-row\">\n        <mat-checkbox\n          [value]=\"tag.tagValues[0]\"\n          [checked]=\"tagSelection.isItemSelected(tag)\"\n          (change)=\"onSelect(tag, $event.checked)\"\n        >\n          <div class=\"text-spacing\">\n            {{ tag.namespace + \" : \" + tag.tag + \" : \" + tag.tagValues[0] }}\n          </div>\n        </mat-checkbox>\n      </div>\n    </div>\n  </div>\n</div>\n","import {Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\nimport {InputFieldWrapper, InputSelection,} from '../../../../../model/private/InputSelection';\nimport {TextInputField} from '../../../../../model/public/modifier-options';\nimport {debounce, interval} from 'rxjs';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatError, MatFormField, MatLabel} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatAutocomplete, MatAutocompleteTrigger} from '@angular/material/autocomplete';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {MatOption} from '@angular/material/core';\nimport {MatCheckbox} from '@angular/material/checkbox';\n\n@Component({\n    selector: 'lib-input-tab',\n    templateUrl: './input-tab.component.html',\n    styleUrls: ['./input-tab.component.scss'],\n    imports: [\n        NgFor,\n        NgIf,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        MatAutocompleteTrigger,\n        ReactiveFormsModule,\n        MatError,\n        MatAutocomplete,\n        MatOption,\n        MatCheckbox,\n    ]\n})\nexport class InputTabComponent implements OnInit {\n  @Input()\n  inputSelection: InputSelection;\n\n  @ViewChild('firstInput') firstInput: ElementRef;\n\n  ngOnInit() {\n    if (\n      this.inputSelection.inputWrappers.find((it) => it.input.type === 'text')\n    ) {\n      // Timeout needed, otherwise error occurs and input filed is not selected\n      setTimeout(() => this.firstInput.nativeElement.focus());\n    }\n\n    const textInputWithAutoComplete = this.inputSelection.inputWrappers.filter(\n      (it) =>\n        it.input.type === 'text' &&\n        (it.input as TextInputField).searchInputField\n    );\n    if (textInputWithAutoComplete) {\n      textInputWithAutoComplete.forEach((inputWrapper) =>\n        inputWrapper.selection.valueChanges\n          .pipe(debounce(() => interval(500)))\n          .subscribe((it) => {\n            (inputWrapper.input as TextInputField)\n              .searchInputField(it)\n              .subscribe(\n                (values) => (inputWrapper.autoCompleteValues = values)\n              );\n          })\n      );\n    }\n  }\n\n  getErrors(wrapper: InputFieldWrapper) {\n    return wrapper.selection.errors\n      ? Object.keys(wrapper.selection.errors)\n          .map((error) => wrapper.input.validators?.errorMessages.get(error))\n          .join('\\n')\n      : null;\n  }\n  Object = Object;\n}\n","<div\n  *ngFor=\"let inputWrapper of inputSelection.inputWrappers; let i = index\"\n  class=\"input-margin\"\n>\n  <mat-form-field\n    *ngIf=\"inputWrapper.input.type !== 'checkbox'\"\n    class=\"full-width\"\n  >\n    <mat-label>{{ inputWrapper.input.label }}</mat-label>\n    <input\n      *ngIf=\"i == 0\"\n      #firstInput\n      matInput\n      [matAutocomplete]=\"keyAuto\"\n      [type]=\"inputWrapper.input.type\"\n      [formControl]=\"inputWrapper.selection\"\n    />\n    <input\n      *ngIf=\"i != 0\"\n      matInput\n      [matAutocomplete]=\"keyAuto\"\n      [type]=\"inputWrapper.input.type\"\n      [formControl]=\"inputWrapper.selection\"\n    />\n    <mat-error>{{ inputWrapper.errorMessages.join(\"/n\") }}</mat-error>\n    <mat-autocomplete #keyAuto=\"matAutocomplete\">\n      <mat-option\n        *ngFor=\"let option of inputWrapper.autoCompleteValues\"\n        [value]=\"option\"\n        (click)=\"$event.stopPropagation()\"\n        >{{ option }}</mat-option\n      >\n    </mat-autocomplete>\n  </mat-form-field>\n  <mat-checkbox\n    *ngIf=\"inputWrapper.input.type === 'checkbox'\"\n    [formControl]=\"inputWrapper.selection\"\n  >\n    {{ inputWrapper.input.label }}\n  </mat-checkbox>\n</div>\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n    name: 'as',\n    standalone: true,\n})\nexport class AsPipe implements PipeTransform {\n  transform<T>(value: unknown, _type: (new (...args: any[]) => T) | T): T {\n    return value as T;\n  }\n}\n","import {Directive, ElementRef, EmbeddedViewRef, Input, OnDestroy, TemplateRef, ViewContainerRef,} from '@angular/core';\n\n@Directive({\n  selector: '[libTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n  @Input() libTooltip!: TemplateRef<any>;\n  @Input() tooltipPosition: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n  private tooltipElement: HTMLElement | null = null;\n  private viewRef: EmbeddedViewRef<any> | null = null;\n\n  constructor(private el: ElementRef, private vcr: ViewContainerRef) {\n    this.setupEventListeners();\n  }\n\n  private setupEventListeners(): void {\n    this.el.nativeElement.addEventListener(\n      'mouseenter',\n      this.showTooltip.bind(this)\n    );\n    this.el.nativeElement.addEventListener(\n      'mouseleave',\n      this.hideTooltip.bind(this)\n    );\n  }\n\n  private adjustPositionForViewport(\n    hostRect: DOMRect,\n    tooltipRect: DOMRect\n  ): 'top' | 'bottom' | 'left' | 'right' {\n    const viewportWidth = window.innerWidth;\n    const viewportHeight = window.innerHeight;\n    const originalPosition = this.tooltipPosition;\n\n    switch (originalPosition) {\n      case 'top': {\n        const requiredSpace = tooltipRect.height + 8;\n        if (hostRect.top >= requiredSpace) {\n          return 'top';\n        } else {\n          return 'bottom';\n        }\n      }\n      case 'bottom': {\n        const requiredSpace = tooltipRect.height + 8;\n        const spaceAvailable = viewportHeight - hostRect.bottom;\n        if (spaceAvailable >= requiredSpace) {\n          return 'bottom';\n        } else {\n          return 'top';\n        }\n      }\n      case 'left': {\n        const requiredSpace = tooltipRect.width + 8;\n        if (hostRect.left >= requiredSpace) {\n          return 'left';\n        } else {\n          return 'right';\n        }\n      }\n      case 'right': {\n        const requiredSpace = tooltipRect.width + 8;\n        const spaceAvailable = viewportWidth - hostRect.right;\n        if (spaceAvailable >= requiredSpace) {\n          return 'right';\n        } else {\n          return 'left';\n        }\n      }\n      default:\n        return originalPosition;\n    }\n  }\n\n  private positionTooltip(): void {\n    if (!this.tooltipElement) return;\n\n    const hostRect = this.el.nativeElement.getBoundingClientRect();\n    const tooltipRect = this.tooltipElement.getBoundingClientRect();\n\n    const adjustedPosition = this.adjustPositionForViewport(\n      hostRect,\n      tooltipRect\n    );\n\n    let top: number, left: number;\n\n    switch (adjustedPosition) {\n      case 'top':\n        top = hostRect.top * 0.85 - tooltipRect.height - 8;\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n        break;\n      case 'bottom':\n        top = hostRect.bottom + 8;\n        left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\n        break;\n      case 'left':\n        top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\n        left = hostRect.left - tooltipRect.width - hostRect.width;\n        break;\n      case 'right':\n        top = hostRect.top - (hostRect.height - tooltipRect.height) / 2;\n        left = hostRect.right + 8;\n        break;\n    }\n\n    this.tooltipElement.style.top = `${top}px`;\n    this.tooltipElement.style.left = `${left}px`;\n\n    this.tooltipElement.classList.remove('top', 'bottom', 'left', 'right');\n    this.tooltipElement.classList.add(adjustedPosition);\n  }\n\n  private showTooltip(): void {\n    if (!this.libTooltip) return;\n\n    this.viewRef = this.vcr.createEmbeddedView(this.libTooltip);\n    const tooltipContent = this.viewRef.rootNodes[0];\n\n    this.tooltipElement = document.createElement('div');\n    this.tooltipElement.classList.add('custom-tooltip', this.tooltipPosition);\n    this.tooltipElement.appendChild(tooltipContent);\n    document.body.appendChild(this.tooltipElement);\n\n    this.positionTooltip();\n\n    setTimeout(() => {\n      if (this.tooltipElement) {\n        this.tooltipElement.classList.add('visible');\n      }\n    }, 10);\n  }\n\n  private hideTooltip(): void {\n    if (this.tooltipElement) {\n      this.tooltipElement.classList.remove('visible');\n\n      setTimeout(() => {\n        if (\n          this.tooltipElement &&\n          document.body.contains(this.tooltipElement)\n        ) {\n          document.body.removeChild(this.tooltipElement);\n        }\n        this.tooltipElement = null;\n\n        if (this.viewRef) {\n          this.viewRef.destroy();\n          this.viewRef = null;\n        }\n      }, 150);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.hideTooltip();\n    this.el.nativeElement.removeEventListener('mouseenter', this.showTooltip);\n    this.el.nativeElement.removeEventListener('mouseleave', this.hideTooltip);\n  }\n}\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FilterTab, isSearchable, Item, MultiSelectTab, Searchable,} from '../../../../model/public/modifier-options';\nimport {FilterSelection, MultiselectLabelTagSelection,} from '../../../../model/private/FilterSelection';\nimport {KeyValueObject} from '../../../../../common/KeyValue';\nimport {LabelSelection} from '../../../../model/private/LabelSelection';\nimport {TagSelection} from '../../../../model/private/TagSelection';\nimport {InputSelection} from '../../../../model/private/InputSelection';\nimport {MultiselectSelection} from '../../../../model/private/MultiselectSelection';\nimport {FormControl} from '@angular/forms';\nimport {SingleSelection} from '../../../../model/private/SingleSelection';\nimport {LabelOrTagSelection} from '../../../../model/private/LabelOrTagSelection';\nimport {EnrolledCloud} from '../../../../model/public/gcp-filter-options';\nimport {copyObject} from '../../../../mapper';\nimport {NgClass, NgFor, NgIf} from '@angular/common';\nimport {MenuItemComponent} from '../../../../../design-system/menu-item/menu-item.component';\nimport {MatDivider} from '@angular/material/divider';\nimport {InputComponent} from '../../../../../design-system/inputs/ui-input/input.component';\nimport {MatIcon} from '@angular/material/icon';\nimport {AllTabComponent} from '../tabs/all-tab/all-tab.component';\nimport {MultiselectTabComponent} from '../tabs/multiselect-tab/multiselect-tab.component';\nimport {SingleSelectTabComponent} from '../tabs/single-select-tab/single-select-tab.component';\nimport {LabelTabComponent} from '../tabs/label-and-tag-tabs/label-tab/label-tab.component';\nimport {TagTabComponent} from '../tabs/label-and-tag-tabs/tag-tab/tag-tab.component';\nimport {InputTabComponent} from '../tabs/input-tab/input-tab.component';\nimport {MatButton} from '@angular/material/button';\nimport {AsPipe} from '../../../../../design-system/pipes/as.pipe';\nimport {TooltipDirective} from '../../../../../design-system/tooltip/toolip.directive';\n\ntype MultiseletionId = {\n  selectionId?: number;\n};\n\n@Component({\n  selector: 'ui-filter-column-view',\n  templateUrl: './filter-column-view.component.html',\n  styleUrls: ['./filter-column-view.component.scss'],\n  imports: [\n    NgClass,\n    NgIf,\n    MenuItemComponent,\n    NgFor,\n    MatDivider,\n    InputComponent,\n    MatIcon,\n    AllTabComponent,\n    MultiselectTabComponent,\n    SingleSelectTabComponent,\n    LabelTabComponent,\n    TagTabComponent,\n    InputTabComponent,\n    MatButton,\n    AsPipe,\n    TooltipDirective,\n  ],\n})\nexport class FilterColumnViewComponent implements OnInit {\n  @Input()\n  tabs: Array<FilterTab>;\n\n  @Input()\n  filterSelections: Array<FilterSelection>;\n\n  @Input()\n  persistedFilterSelections: Array<FilterSelection>;\n\n  @Input()\n  enrolledClouds: Array<EnrolledCloud>;\n\n  @Output()\n  onClose: EventEmitter<any> = new EventEmitter();\n\n  @Output()\n  onApply: EventEmitter<any> = new EventEmitter();\n\n  search: FormControl<string>;\n  hideTabsColumn: boolean = false;\n  showAllTabAndSearchField: boolean = true;\n  cloudSplitTabs: Map<EnrolledCloud, Array<FilterTab>> = new Map();\n  cloudTabs: Array<FilterTab> = null;\n  commonsTabs: Array<FilterTab & MultiseletionId> = [];\n  items: Array<KeyValueObject> = [];\n  multiselectLabelTagSelections: Array<MultiselectLabelTagSelection<any>>;\n  selectedTab: FilterTab & MultiseletionId = null;\n  selectedCloud: EnrolledCloud;\n\n  ngOnInit() {\n    this.selectedTab = null;\n    this.search = new FormControl('');\n    this.extractFilterTabsWithoutCloud();\n    this.extractCloudFilterTabs();\n    this.mapAllTabSelectionToFilterSelection();\n    this.showAllTabAndSearchField =\n      this.multiselectLabelTagSelections.length > 0;\n    this.mapCommonTabs();\n    this.hideTabsColumn = this.tabs.length < 1;\n\n    if (\n      this.multiselectLabelTagSelections.length == 0 &&\n      this.commonsTabs.length > 0\n    ) {\n      this.selectedTab = this.commonsTabs[0];\n    }\n\n    this.search.valueChanges.subscribe((_) => {\n      if (this.selectedTab && this.selectedTab.type !== 'MULTI_SELECT') {\n        this.selectedTab = null;\n      }\n    });\n  }\n\n  mapCommonTabs = () => {\n    this.items = this.commonsTabs.map((it) => {\n      return { display: it.title, value: it };\n    });\n    if (this.showAllTabAndSearchField) {\n      this.items.splice(0, 0, { display: 'All', value: null });\n    }\n  };\n\n  findCloudItemsInTab = (\n    tab: FilterTab & MultiSelectTab,\n    cloud: EnrolledCloud\n  ) => {\n    const filteredTab = copyObject(tab) as FilterTab & MultiSelectTab;\n    const cloudTab = tab.items.find(\n      (it) => it.cloudProvider === cloud.cloudProvider\n    );\n    if (cloudTab && !filteredTab.keepTitleOverCloudProvider) {\n      filteredTab.title = cloudTab.cloudProviderName;\n    }\n    filteredTab.items = tab.items.filter(\n      (item) => item.cloudProvider === cloud.cloudProvider\n    );\n    filteredTab.items = filteredTab.items.map((it): Item => {\n      return {\n        display: it.display,\n        value: it.value,\n        cloudProvider: cloud.cloudProvider,\n        cloudProviderName: it.cloudProviderName,\n        img: cloud.imageURL,\n      };\n    });\n    if (tab.lazyLoadItems) {\n      filteredTab.lazyLoadItems = tab.lazyLoadItems;\n    }\n    return filteredTab;\n  };\n\n  extractFilterTabsWithoutCloud = () => {\n    this.tabs.forEach((tab, index) => {\n      const itemExists = this.commonsTabs.find(\n        (it) => it.selectionId === index\n      );\n      if (!itemExists) {\n        if (tab.type === 'MULTI_SELECT' || tab.type === 'SINGLE_SELECT') {\n          const tabWithoutCloud = tab.items.find((item) => !item.cloudProvider);\n          const tabWithItemsWithUnknownClouds = tab.items.find(\n            (item) =>\n              !this.enrolledClouds.find(\n                (it) => it.cloudProvider === item.cloudProvider\n              )\n          );\n          if (tabWithoutCloud) {\n            this.commonsTabs.push({\n              ...tab,\n              selectionId: index,\n            });\n          }\n          if (!tabWithoutCloud && tabWithItemsWithUnknownClouds) {\n            const unknownCloudsTab = copyObject<FilterTab & MultiseletionId>(\n              tab\n            );\n            if (\n              unknownCloudsTab.type === 'MULTI_SELECT' ||\n              unknownCloudsTab.type === 'SINGLE_SELECT'\n            ) {\n              unknownCloudsTab.items = tab.items.filter(\n                (item) =>\n                  !this.enrolledClouds.find(\n                    (it) => it.cloudProvider === item.cloudProvider\n                  )\n              );\n              unknownCloudsTab.title =\n                unknownCloudsTab.items[0].cloudProviderName;\n              this.commonsTabs.push({\n                ...unknownCloudsTab,\n                selectionId: index,\n              });\n            }\n          }\n        } else if (\n          (tab.type !== 'TAG' && tab.type !== 'INPUT') ||\n          (tab.type === 'INPUT' && !tab.cloudProvider)\n        ) {\n          this.commonsTabs.push({\n            ...tab,\n            selectionId: index,\n          });\n        }\n      }\n    });\n  };\n\n  extractCloudFilterTabs = () => {\n    this.enrolledClouds.forEach((cloud) => {\n      this.cloudSplitTabs.set(\n        cloud,\n        this.tabs\n          .map((tab, index) => {\n            if (tab.type === 'MULTI_SELECT' || tab.type === 'SINGLE_SELECT') {\n              const filteredTab = this.findCloudItemsInTab(\n                tab as FilterTab & MultiSelectTab,\n                cloud\n              );\n              return filteredTab.items.length !== 0\n                ? ({\n                    ...filteredTab,\n                    selectionId: index,\n                  } as FilterTab & MultiseletionId)\n                : null;\n            } else if (tab.type === 'TAG' || tab.type === 'INPUT') {\n              if (tab.cloudProvider === cloud.cloudProvider) {\n                return { ...tab, selectionId: index };\n              } else return null;\n            }\n            return null;\n          })\n          .filter((it) => it)\n      );\n    });\n\n    this.cloudSplitTabs.forEach((it, index) => {\n      if (!it.length) {\n        this.enrolledClouds.splice(this.enrolledClouds.indexOf(index), 1);\n      }\n    });\n  };\n\n  mapAllTabSelectionToFilterSelection = () => {\n    this.multiselectLabelTagSelections = this.filterSelections.filter(\n      (selection) => selection instanceof MultiselectLabelTagSelection\n    ) as Array<MultiselectLabelTagSelection<any>>;\n  };\n\n  selectCommon = () => {\n    if (this.selectedCloud) {\n      this.cloudTabs = null;\n      this.selectedCloud = null;\n      this.selectedTab = null;\n      this.mapCommonTabs();\n    }\n  };\n\n  selectCloud = (value: EnrolledCloud) => {\n    if (this.selectedCloud === value) {\n      this.selectCommon();\n    } else {\n      this.selectedCloud = value;\n      this.cloudTabs = this.cloudSplitTabs.get(value);\n      this.items = this.cloudTabs.map((it) => {\n        return { display: it.title, value: it };\n      });\n      this.selectedTab = null;\n    }\n  };\n\n  selectTab = (event: KeyValueObject) => {\n    if (this.selectedTab === event.value) {\n      this.selectedTab = null;\n    } else {\n      this.selectedTab = event.value;\n    }\n  };\n\n  getSearchIconTooltip(): string {\n    const tabs = this.cloudTabs ?? this.tabs;\n    return (\n      'You can narrow your search by using modifiers:\\n' +\n      tabs\n        .filter((tab) => isSearchable(tab))\n        .map(\n          (tab) =>\n            (tab as Searchable).searchPrefix +\n            ': or ' +\n            (tab as Searchable).searchPrefix +\n            ' (space) - ' +\n            tab.title\n        )\n        .join('\\n') +\n      '\\n\\nFor example:\\n p: asia matches project: asia-network, but not region asia-east1\\n\\n You can perform fuzzy-search. For example:\\nbnp matches Ben-new-project '\n    );\n  }\n\n  submitFilter() {\n    if (this.validateLabelsTagsAndInput()) {\n      this.onApply.emit();\n    }\n  }\n\n  validateLabelsTagsAndInput = (): boolean => {\n    for (let i = 0; i < this.filterSelections.length; i++) {\n      let filterSelection = this.filterSelections[i];\n      if (filterSelection instanceof LabelOrTagSelection) {\n        if (!filterSelection.selectedItemsAsForm.valid) {\n          return false;\n        }\n      } else if (filterSelection instanceof InputSelection) {\n        for (let wrapper of filterSelection.inputWrappers) {\n          if (!wrapper.selection.valid) {\n            return false;\n          }\n        }\n      }\n    }\n    return true;\n  };\n\n  closeDialog() {\n    this.onClose.emit();\n  }\n\n  setSearchField = (input: string) => {\n    this.search.setValue(input);\n  };\n\n  protected readonly LabelSelection = LabelSelection;\n  protected readonly TagSelection = TagSelection;\n  protected readonly InputSelection = InputSelection;\n  protected readonly MultiselectSelection = MultiselectSelection;\n  protected readonly SingleSelection = SingleSelection;\n}\n","<div\n  class=\"column-view-container\"\n  [ngClass]=\"{ 'compact-container': hideTabsColumn }\"\n>\n  <div\n    *ngIf=\"enrolledClouds.length > 0 && !hideTabsColumn\"\n    class=\"column icon-tabs\"\n  >\n    <menu-item\n      matIcon=\"dehaze\"\n      [selected]=\"!selectedCloud\"\n      (click)=\"selectCommon()\"\n    />\n    <menu-item\n      *ngFor=\"let cloud of enrolledClouds\"\n      [image]=\"cloud.imageURL\"\n      [selected]=\"selectedCloud === cloud\"\n      (click)=\"selectCloud(cloud)\"\n    />\n  </div>\n  <mat-divider [vertical]=\"true\" />\n  <div\n    *ngIf=\"\n      !hideTabsColumn &&\n      !(this.multiselectLabelTagSelections.length < 1 && this.tabs.length === 1)\n    \"\n    class=\"column tabs\"\n  >\n    <menu-item\n      *ngFor=\"let item of items\"\n      [name]=\"item.display\"\n      [wrapWords]=\"true\"\n      [selected]=\"selectedTab === item.value\"\n      (click)=\"selectTab(item)\"\n    />\n    <div *ngIf=\"items.length === 0\" class=\"no-tabs\">\n      No tabs are associated with this cloud provider.\n    </div>\n  </div>\n  <mat-divider [vertical]=\"true\" />\n  <div class=\"column flex-grow-1\">\n    <div *ngIf=\"showAllTabAndSearchField\" class=\"search-bar-wrapper\">\n      <ui-input\n        placeholder=\"Search...\"\n        (inputChange)=\"setSearchField($event)\"\n        class=\"d-flex flex-grow-1\"\n      >\n      </ui-input>\n      <mat-icon\n        class=\"primary-color info-icon\"\n        [libTooltip]=\"tooltip\"\n        tooltipPosition=\"right\"\n        >info\n      </mat-icon>\n      <ng-template #tooltip>\n        <div class=\"tooltip\">{{ getSearchIconTooltip() }}</div>\n      </ng-template>\n    </div>\n    <div *ngIf=\"!selectedTab\" class=\"no-overflow flex-grow-1\">\n      <lib-all-tab\n        [tabs]=\"cloudTabs ?? tabs\"\n        [filterSelections]=\"multiselectLabelTagSelections\"\n        [searchField]=\"search\"\n        [fullAllTab]=\"!cloudTabs\"\n        [skipImage]=\"!!cloudTabs\"\n      />\n    </div>\n    <div *ngIf=\"selectedTab\" class=\"h-100 flex-grow-1 no-overflow\">\n      <lib-multiselect-tab\n        *ngIf=\"selectedTab.type === 'MULTI_SELECT'\"\n        [tab]=\"selectedTab\"\n        [multiselectSelection]=\"\n          filterSelections[selectedTab.selectionId] | as : MultiselectSelection\n        \"\n        [searchField]=\"search\"\n        [skipImage]=\"!!cloudTabs\"\n      />\n      <lib-single-select-tab\n        *ngIf=\"selectedTab.type === 'SINGLE_SELECT'\"\n        [tab]=\"selectedTab\"\n        [singleSelectSelection]=\"\n          filterSelections[selectedTab.selectionId] | as : SingleSelection\n        \"\n      />\n      <lib-label-tab\n        *ngIf=\"selectedTab.type === 'LABEL'\"\n        [tab]=\"selectedTab\"\n        [labelSelection]=\"\n          filterSelections[selectedTab.selectionId] | as : LabelSelection\n        \"\n        [search]=\"search\"\n      />\n      <lib-tag-tab\n        *ngIf=\"selectedTab.type === 'TAG'\"\n        [tab]=\"selectedTab\"\n        [tagSelection]=\"\n          filterSelections[selectedTab.selectionId] | as : TagSelection\n        \"\n        [search]=\"search\"\n      />\n      <lib-input-tab\n        *ngIf=\"selectedTab.type === 'INPUT'\"\n        class=\"input-tab\"\n        [inputSelection]=\"\n          filterSelections[selectedTab.selectionId] | as : InputSelection\n        \"\n      />\n    </div>\n    <div class=\"button-group\">\n      <button\n        mat-button\n        class=\"button non-accent send\"\n        type=\"button\"\n        (click)=\"closeDialog()\"\n      >\n        Cancel\n      </button>\n      <button\n        mat-raised-button\n        #submitButton\n        color=\"primary\"\n        class=\"button non-accent send\"\n        type=\"submit\"\n        (click)=\"submitFilter()\"\n      >\n        Apply\n      </button>\n    </div>\n  </div>\n</div>\n","import {AfterViewInit, Component, Input, ViewChild} from '@angular/core';\nimport {MatMenu, MatMenuTrigger} from '@angular/material/menu';\nimport {NgIf} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n    selector: 'ui-icon-button',\n    templateUrl: './icon-button.component.html',\n    styleUrls: ['./icon-button.component.scss'],\n    imports: [\n        NgIf,\n        MatMenuTrigger,\n        MatIcon,\n    ]\n})\nexport class IconButtonComponent implements AfterViewInit {\n  @Input()\n  icon: string;\n\n  @Input()\n  text: string;\n\n  @Input()\n  matMenu: MatMenu | null = null;\n\n  @ViewChild(MatMenuTrigger, { static: false })\n  trigger: MatMenuTrigger;\n\n  ngAfterViewInit(): void {\n    if (this.matMenu && this.trigger) {\n      this.trigger.menu = this.matMenu;\n    }\n  }\n\n  openMenu() {\n    this.trigger.openMenu();\n  }\n}\n","<button\n  class=\"ui-icon-button\"\n  aria-label=\"Button Description\"\n  [matMenuTriggerFor]=\"matMenu\"\n  *ngIf=\"matMenu\"\n>\n  <span class=\"ui-icon-button__icon\" aria-hidden=\"true\">\n    <mat-icon>{{ icon }}</mat-icon>\n  </span>\n  <span class=\"ui-icon-button__text\">{{ text }}</span>\n</button>\n<button class=\"ui-icon-button\" aria-label=\"Button Description\" *ngIf=\"!matMenu\">\n  <span class=\"ui-icon-button__icon\" aria-hidden=\"true\">\n    <mat-icon>{{ icon }}</mat-icon>\n  </span>\n  <span class=\"ui-icon-button__text\">{{ text }}</span>\n</button>\n","import {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n    selector: '[lazyContent]',\n    standalone: true,\n})\nexport class LazyContentDirective {\n  constructor(public template: TemplateRef<any>) {}\n}\n","import {Component, ContentChild, EventEmitter, Input, Output, TemplateRef,} from '@angular/core';\nimport {LazyContentDirective} from './lazy-content.directive';\nimport {NgIf, NgTemplateOutlet} from '@angular/common';\nimport {NgClickOutsideDirective, NgClickOutsideExcludeDirective} from 'ng-click-outside2';\n\n@Component({\n    selector: 'lib-menu',\n    templateUrl: './menu.component.html',\n    styleUrls: ['./menu.component.scss'],\n    imports: [\n        NgIf,\n        NgClickOutsideExcludeDirective,\n        NgClickOutsideDirective,\n        NgTemplateOutlet,\n    ]\n})\nexport class MenuComponent {\n  @Input()\n  menuOpen: boolean;\n\n  // CSS class or document element name needed (not working with IDs)\n  @Input()\n  excludeButton: string;\n\n  @Input()\n  marginTop: string;\n\n  @ContentChild(LazyContentDirective, { read: TemplateRef, static: true })\n  template: TemplateRef<any>;\n\n  @Output()\n  clickedOutside: EventEmitter<PointerEvent> = new EventEmitter();\n\n  closeMenu = (event: Event) => {\n    this.clickedOutside.emit(event as PointerEvent);\n  };\n}\n","<div\n  *ngIf=\"menuOpen\"\n  class=\"menu-window\"\n  [style.margin-top]=\"marginTop + 'px'\"\n  (clickOutside)=\"closeMenu($event)\"\n  [clickOutsideExclude]=\"excludeButton\"\n>\n  <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {NgClass, NgIf, NgStyle} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\nimport {SameOrderLabel} from '../../../filter/model/private/Chip';\n\n@Component({\n  selector: 'ui-chip',\n  templateUrl: './chip.component.html',\n  styleUrls: ['./chip.component.scss'],\n  imports: [MatTooltip, NgIf, MatIcon, NgClass, NgStyle],\n})\nexport class ChipComponent {\n  @Input()\n  tooltipText: string | null;\n\n  @Input()\n  iconBefore: string | null;\n\n  @Input()\n  boldText: string;\n\n  @Input()\n  sameOrderLabel: SameOrderLabel[];\n\n  @Input()\n  deleteOption: boolean = true;\n\n  @Input()\n  cursor: 'move' | 'pointer' | 'unset' | null\n\n  @Input()\n  isTableChip: boolean = false;\n\n  @Output() onClose = new EventEmitter<any>();\n\n  deleteEvent($event: any) {\n    this.onClose.emit($event);\n  }\n}\n","<button\n  class=\"ui-chip\"\n  [ngClass]=\"{ 'same-order': sameOrderLabel?.length > 1,  'table-chip' : isTableChip}\"\n  matTooltipClass=\"pre-line\"\n  aria-label=\"Button\"\n  [matTooltip]=\"tooltipText\"\n  matTooltipPosition=\"right\"\n  [ngStyle]=\"{'cursor': cursor ? cursor: 'pointer'}\"\n>\n  @if (sameOrderLabel) {\n  <div class=\"d-flex flex-column same-order-spacing\">\n    @for (chip of sameOrderLabel; track chip) {\n    <div class=\"d-flex justify-content-start align-items-center\">\n      @if (chip.beforeImage) {\n      <img class=\"mr-1\" src=\"{{ chip.beforeImage }}\" width=\"15\" alt=\"{{ chip.label }}\" />\n      }\n      <span class=\"ui-chip__text\">\n        {{ chip.label }}\n        <span class=\"bold\" *ngIf=\"chip.boldLabel\">{{ chip.boldLabel }}</span>\n      </span>\n    </div>\n    }\n  </div>\n  } @else {\n  <span class=\"ui-chip__icon\" *ngIf=\"iconBefore\">\n    <mat-icon>{{ iconBefore }}</mat-icon>\n  </span>\n  <span class=\"ui-chip__text\">\n    <ng-content></ng-content>\n    <span class=\"bold\" *ngIf=\"boldText\">{{ boldText }}</span>\n  </span>\n  }\n  <mat-icon *ngIf=\"deleteOption\" (click)=\"deleteEvent($event)\" class=\"ui-chip__close\">\n    close\n  </mat-icon>\n</button>\n","import {Component, Input} from '@angular/core';\nimport {NgFor} from '@angular/common';\nimport {MatError} from '@angular/material/form-field';\n\n@Component({\n    selector: 'lib-error-and-warning-messages',\n    templateUrl: './error-and-warning-messages.component.html',\n    styleUrls: ['./error-and-warning-messages.component.scss'],\n    imports: [NgFor, MatError]\n})\nexport class ErrorAndWarningMessagesComponent {\n  @Input()\n  errorMessages: Array<string>;\n\n  @Input()\n  warningMessages: Array<string>;\n}\n","<div>\n  <div class=\"warning-color\" *ngFor=\"let warning of warningMessages\">\n    {{ warning }}\n  </div>\n  <mat-error *ngFor=\"let error of errorMessages\" class=\"grouping-error\">\n    {{ error }}\n  </mat-error>\n</div>\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild,} from '@angular/core';\nimport {Chip} from '../../model/private/Chip';\nimport {FilterModifier} from '../filter-modifier';\nimport {FilterOptions, FilterTab, Label, NonEmptyArray, Tag,} from '../../model/public/modifier-options';\nimport {MultiselectSelection} from '../../model/private/MultiselectSelection';\nimport {LabelSelection} from '../../model/private/LabelSelection';\nimport {TagSelection} from '../../model/private/TagSelection';\nimport {InputSelection} from '../../model/private/InputSelection';\nimport {FilterSelection} from '../../model/private/FilterSelection';\nimport {SingleSelection} from '../../model/private/SingleSelection';\nimport {FilterColumnViewComponent} from './filter-selector-window/filter-column-view-menu/filter-column-view.component';\nimport {EnrolledCloud} from '../../model/public/gcp-filter-options';\nimport {getOutputObjectWithoutID, mapFilterToObject, mapObjectToFilterSelection, mapObjectToFilterSelectionAsync,} from '../../mapper';\nimport {IconButtonComponent} from '../../../design-system/buttons/icon-button/icon-button.component';\nimport {MenuComponent} from '../../../design-system/menu/menu.component';\nimport {LazyContentDirective} from '../../../design-system/menu/lazy-content.directive';\nimport {NgFor} from '@angular/common';\nimport {ChipComponent} from '../../../design-system/buttons/chip/chip.component';\nimport {ErrorAndWarningMessagesComponent} from '../error-and-warning-messages/error-and-warning-messages.component';\n\n@Component({\n  selector: 'ui-filter-selector',\n  templateUrl: './filter-selector.component.html',\n  styleUrls: ['./filter-selector.component.scss'],\n  imports: [\n    IconButtonComponent,\n    MenuComponent,\n    LazyContentDirective,\n    FilterColumnViewComponent,\n    NgFor,\n    ChipComponent,\n    ErrorAndWarningMessagesComponent,\n  ],\n})\nexport class FilterSelectorComponent<T>\n  extends FilterModifier<T, Array<FilterSelection>>\n  implements OnInit, OnChanges\n{\n  @Output()\n  applyFilter: EventEmitter<T> = new EventEmitter();\n\n  @Input()\n  options: FilterOptions<T>;\n\n  @Input()\n  outputObject: T;\n\n  @Input()\n  savedFilter: any;\n\n  @Input()\n  enrolledClouds: Array<EnrolledCloud>;\n\n  @ViewChild(FilterColumnViewComponent)\n  filterDialog: FilterColumnViewComponent;\n\n  chips: Array<Chip> = [];\n\n  showMenu: boolean = false;\n\n  /*\n   * filterSelections and filterSelectionsOnInit are the most important data structures in the ui-filter-selector component. Since the user\n   * can cancel his selections at any time, we cannot rely on the state of the selectable objects to determine if they are selected.\n   * Instead, we have a cache mechanism. filterSelections hold the temporary selections. persistedFilterSelections holds the selection\n   * that the user has already confirmed.\n   * The temporary selections become persisted when the user clicks OK in the dialog. If the dialog is closed without the user clicking\n   * \"OK\", all changes to filterSelections are reverted using the persistedFilterSelections.\n   */\n  filterSelections: Array<FilterSelection> = [];\n  persistedFilterSelections: Array<FilterSelection> = [];\n\n  ngOnInit(): void {\n    if (this.options.preApplyValidation) {\n      this.validator = { preApplyValidation: this.options.preApplyValidation };\n    }\n    this.options.tabs = this.options.tabs.filter(\n      (it) => it.title\n    ) as NonEmptyArray<FilterTab>;\n    this.initFilterSelections();\n    this.initLazyLoadTabs();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['savedFilter'] && changes['savedFilter'].currentValue) {\n      const savedFilter = changes['savedFilter'].currentValue;\n\n      const hasMissingItems = this.options.tabs.some((tab) => {\n        if (tab.type !== 'MULTI_SELECT' || !tab.loadItemsByIds) {\n          return false;\n        }\n        const filterItems = savedFilter[tab.id]?.items;\n        if (!filterItems || filterItems.length === 0) {\n          return false;\n        }\n        const existingValues = new Set(tab.items.map((item) => item.value));\n        return filterItems.some((id: any) => !existingValues.has(id));\n      });\n\n      if (hasMissingItems) {\n        mapObjectToFilterSelectionAsync(savedFilter, this.options)\n          .subscribe((selections) => this.onSavedGcpFilterApplied(selections));\n      } else {\n        this.onSavedGcpFilterApplied(\n          mapObjectToFilterSelection(savedFilter, this.options)\n        );\n      }\n    }\n  }\n\n  initLazyLoadTabs(): void {\n    this.options.tabs.forEach((tab) => {\n      if (\n        tab.type === 'MULTI_SELECT' &&\n        tab.lazyLoadItems &&\n        tab.items.length === 0\n      ) {\n        tab.lazyLoadItems('', 0).subscribe((items) => tab.items.push(...items));\n      }\n    });\n  }\n\n  initFilterSelections() {\n    if (!this.filterSelections) {\n      this.filterSelections = [];\n      this.options.tabs.forEach((tab) => {\n        let filterSelection: FilterSelection;\n        if (tab.type === 'MULTI_SELECT') {\n          filterSelection = new MultiselectSelection(tab.title, tab.id, true);\n        } else if (tab.type === 'SINGLE_SELECT') {\n          filterSelection = new SingleSelection(tab.title, tab.id);\n        } else if (tab.type === 'LABEL') {\n          filterSelection = new LabelSelection(\n            tab.searchKeys,\n            tab.searchValues,\n            tab.title,\n            tab.id\n          );\n        } else if (tab.type === 'TAG') {\n          filterSelection = new TagSelection(\n            tab.searchNamespace,\n            tab.searchKeys,\n            tab.searchValues,\n            tab.title,\n            tab.id\n          );\n        } else if (tab.type === 'INPUT') {\n          filterSelection = new InputSelection(tab.title, tab.inputs);\n        }\n        if (filterSelection) {\n          this.filterSelections.push(filterSelection);\n        }\n      });\n      this.persistedFilterSelections = this.filterSelections.map(\n        (filterSelection) => filterSelection.copy()\n      );\n    }\n  }\n\n  openMenu = () => {\n    this.showMenu = !this.showMenu;\n  };\n\n  onClose() {\n    this.filterSelections = this.persistedFilterSelections.map(\n      (filterSelection) => filterSelection.copy()\n    );\n    this.filterDialog.search.setValue('');\n    this.closeMenu();\n  }\n\n  closeMenu() {\n    this.showMenu = false;\n  }\n\n  closeChip(chip: Chip) {\n    this.chips.splice(this.chips.indexOf(chip), 1);\n    chip.isInputSelection\n      ? (this.filterSelections[chip.tabIndex] as InputSelection).clearSelection(\n          chip.inputIndex\n        )\n      : this.filterSelections[chip.tabIndex].clearSelections();\n    this.apply();\n  }\n\n  createChip(\n    label: string,\n    boldLabel: string,\n    tooltip: string,\n    tabIndex: number,\n    isInputSelection: boolean,\n    inputIndex?: number,\n    cloudProvider?: string\n  ): Chip {\n    return {\n      label: label,\n      boldLabel: boldLabel,\n      tooltip: tooltip,\n      tabIndex: tabIndex,\n      isInputSelection: isInputSelection,\n      inputIndex: inputIndex,\n      cloudProvider: cloudProvider,\n    };\n  }\n\n  createChips() {\n    this.chips = [];\n    this.persistedFilterSelections.forEach((filterSelection, tabIndex) => {\n      if (filterSelection instanceof InputSelection) {\n        filterSelection.inputWrappers.forEach((wrapper, index) => {\n          if (\n            wrapper.selection.value !== null &&\n            wrapper.selection.value !== false\n          ) {\n            const chipText =\n              filterSelection.inputs[index].overrideChipText ??\n              wrapper.selection.value.toString();\n            this.chips.push(\n              this.createChip(\n                wrapper.input.label,\n                chipText,\n                chipText.length > 12 ? chipText : null,\n                tabIndex,\n                true,\n                index\n              )\n            );\n          }\n        });\n      } else if (filterSelection instanceof SingleSelection) {\n        if (filterSelection.selectedOption !== null) {\n          this.chips.push(\n            this.createChip(\n              filterSelection.getLabel(),\n              filterSelection.selectedOption.display,\n              filterSelection.getTooltip(),\n              tabIndex,\n              false\n            )\n          );\n        }\n      } else if (filterSelection instanceof LabelSelection) {\n        if (filterSelection.additionalAction) {\n          this.chips.push(\n            this.createChip(\n              filterSelection.additionalActionName ??\n                filterSelection.additionalActionId,\n              '',\n              null,\n              tabIndex,\n              false\n            )\n          );\n        }\n        if (filterSelection.getSize() > 0) {\n          this.chips.push(\n            this.createChip(\n              filterSelection.getLabel(),\n              filterSelection.getSize().toString(),\n              filterSelection.getTooltip(),\n              tabIndex,\n              false\n            )\n          );\n        }\n      } else {\n        if (\n          filterSelection instanceof MultiselectSelection &&\n          filterSelection.selectedItems.length > 0\n        ) {\n          filterSelection.selectedItems.forEach((it) => {\n            if (\n              this.chips.length > 0 &&\n              this.chips.find((it) => it.tabIndex === tabIndex)\n            ) {\n              const existingChip = this.chips.find(\n                (it) => it.tabIndex === tabIndex\n              );\n\n              if (existingChip) {\n                if (\n                  existingChip.sameOrder &&\n                  !existingChip.sameOrder.find(\n                    (sameOrder) => sameOrder.cloud === it.cloudProvider\n                  )\n                ) {\n                  existingChip.sameOrder.push({\n                    beforeImage: it.img,\n                    label: it.cloudProvider\n                      ? it.cloudProviderName\n                      : filterSelection.getLabel(),\n                    boldLabel: it.cloudProvider\n                      ? filterSelection.selectedItems\n                          .filter(\n                            (item) => item.cloudProvider === it.cloudProvider\n                          )\n                          .length.toString()\n                      : filterSelection.getSize().toString(),\n                    cloud: it.cloudProvider,\n                  });\n                }\n              }\n            } else {\n              const chip = this.createChip(\n                it.cloudProvider\n                  ? it.cloudProviderName\n                  : filterSelection.getLabel(),\n                it.cloudProvider\n                  ? filterSelection.selectedItems\n                      .filter((item) => item.cloudProvider === it.cloudProvider)\n                      .length.toString()\n                  : filterSelection.getSize().toString(),\n                filterSelection.getTooltip(it.cloudProviderName),\n                tabIndex,\n                false,\n                null,\n                it.cloudProvider\n              );\n              if (it.cloudProvider) {\n                chip.sameOrder = [];\n                chip.sameOrder.push({\n                  beforeImage: it.img,\n                  label: it.cloudProviderName,\n                  boldLabel: filterSelection.selectedItems\n                    .filter((item) => item.cloudProvider === it.cloudProvider)\n                    .length.toString(),\n                  cloud: it.cloudProvider,\n                });\n              }\n              this.chips.push(chip);\n            }\n          });\n        } else if (filterSelection.getSize() > 0) {\n          this.chips.push(\n            this.createChip(\n              filterSelection.getLabel(),\n              filterSelection.getSize().toString(),\n              filterSelection.getTooltip(),\n              tabIndex,\n              false\n            )\n          );\n        }\n      }\n    });\n  }\n\n  apply() {\n    // If there are no changes, the selection must not be emitted\n    if (this.hasSelectionChanged()) {\n      this.persistedFilterSelections = this.filterSelections.map(\n        (filterSelection) => {\n          if (filterSelection instanceof LabelSelection) {\n            filterSelection.selectedItems =\n              filterSelection.selectedItemsAsForm.controls\n                .map<Label>((label) => {\n                  return {\n                    label: label.controls.key.value,\n                    labelValues:\n                      label.controls.value.value === '' ||\n                      label.controls.value.value === null\n                        ? null\n                        : [label.controls.value.value],\n                  };\n                })\n                .filter((label) => label.label !== '');\n          } else if (filterSelection instanceof TagSelection) {\n            filterSelection.selectedItems =\n              filterSelection.selectedItemsAsForm.controls\n                .map<Tag>((tag) => {\n                  return {\n                    namespace: tag.controls.namespace.value,\n                    tag: tag.controls.key.value,\n                    tagValues: [tag.controls.value.value],\n                  };\n                })\n                .filter((tag) => tag.namespace !== '' || tag.tag !== '');\n          }\n          return filterSelection.copy();\n        }\n      );\n      this.createChips();\n      this.applyFilter.emit(\n        mapFilterToObject(\n          getOutputObjectWithoutID(this.outputObject),\n          this.persistedFilterSelections\n        )\n      );\n    }\n    this.closeMenu();\n  }\n\n  onSavedGcpFilterApplied(selections: Array<FilterSelection>) {\n    if (selections.length > 0) {\n      this.filterSelections = selections;\n      this.persistedFilterSelections = this.filterSelections.map(\n        (filterSelection) => filterSelection.copy()\n      );\n    } else {\n      this.initFilterSelections();\n    }\n    this.createChips();\n  }\n\n  private hasSelectionChanged(): boolean {\n    for (let i = 0; i < this.persistedFilterSelections.length; i++) {\n      let persistedFilterSelection = this.persistedFilterSelections.at(i);\n      let tempSelection = this.filterSelections.at(i);\n      if (\n        persistedFilterSelection instanceof InputSelection &&\n        tempSelection instanceof InputSelection\n      ) {\n        for (let j = 0; j < persistedFilterSelection.inputs.length; j++) {\n          if (\n            persistedFilterSelection.inputWrappers.at(j).selection.value !==\n            tempSelection.inputWrappers.at(j).selection.value\n          ) {\n            return true;\n          }\n        }\n      } else if (\n        persistedFilterSelection instanceof MultiselectSelection &&\n        tempSelection instanceof MultiselectSelection\n      ) {\n        if (\n          persistedFilterSelection.isIncludeMode != tempSelection.isIncludeMode\n        ) {\n          return true;\n        }\n\n        let itemsSet = new Set(\n          persistedFilterSelection.selectedItems.map((item) => item.value)\n        );\n\n        for (let item of tempSelection.selectedItems) {\n          if (itemsSet.has(item.value)) {\n            itemsSet.delete(item.value);\n          } else {\n            return true;\n          }\n        }\n\n        if (itemsSet.size > 0) {\n          return true;\n        }\n      } else if (\n        persistedFilterSelection instanceof SingleSelection &&\n        tempSelection instanceof SingleSelection\n      ) {\n        if (\n          persistedFilterSelection.selectedOption !==\n          tempSelection.selectedOption\n        ) {\n          return true;\n        }\n      } else if (\n        persistedFilterSelection instanceof LabelSelection &&\n        tempSelection instanceof LabelSelection\n      ) {\n        if (\n          persistedFilterSelection.additionalAction !==\n          tempSelection.additionalAction\n        ) {\n          return true;\n        }\n        if (\n          persistedFilterSelection.logicOperation !=\n          tempSelection.logicOperation\n        ) {\n          return true;\n        }\n        let labelsSet = new Set(\n          persistedFilterSelection.selectedItems\n            .filter((label) => label.label !== '')\n            .map(\n              (label, index) =>\n                index +\n                '-' +\n                label.label +\n                '-' +\n                (label.labelValues\n                  ? label.labelValues.length > 0\n                    ? label.labelValues\n                    : label.labelValues[0]\n                  : '')\n            )\n        );\n\n        for (let label of tempSelection.selectedItemsAsForm.controls\n          .filter((label) => label.controls.key.value !== '')\n          .map((label, index) => {\n            return {\n              index: index,\n              key: label.controls.key.value,\n              value: label.controls.value.value,\n            };\n          })) {\n          let labelAsString = label.index + '-' + label.key + '-' + label.value;\n          if (labelsSet.has(labelAsString)) {\n            labelsSet.delete(labelAsString);\n          } else {\n            return true;\n          }\n        }\n\n        if (labelsSet.size > 0) {\n          return true;\n        }\n      } else if (\n        persistedFilterSelection instanceof TagSelection &&\n        tempSelection instanceof TagSelection\n      ) {\n        if (\n          persistedFilterSelection.logicOperation !=\n          tempSelection.logicOperation\n        ) {\n          return true;\n        }\n        let tagsSet = new Set(\n          persistedFilterSelection.selectedItems\n            .filter((tag) => tag.namespace !== '' || tag.tag !== '')\n            .map(\n              (tag, index) =>\n                index +\n                '-' +\n                tag.namespace +\n                '-' +\n                tag.tag +\n                '-' +\n                tag.tagValues[0]\n            )\n        );\n\n        for (let tag of tempSelection.selectedItemsAsForm.controls\n          .filter(\n            (tag) =>\n              tag.controls.namespace.value !== '' ||\n              tag.controls.key.value !== ''\n          )\n          .map((tag, index) => {\n            return {\n              index: index,\n              namespace: tag.controls.namespace.value,\n              key: tag.controls.key.value,\n              value: tag.controls.value.value,\n            };\n          })) {\n          let tagAsString =\n            tag.index + '-' + tag.namespace + '-' + tag.key + '-' + tag.value;\n          if (tagsSet.has(tagAsString)) {\n            tagsSet.delete(tagAsString);\n          } else {\n            return true;\n          }\n        }\n\n        if (tagsSet.size > 0) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n}\n","<div class=\"container\">\n  <div class=\"row\">\n    <div class=\"col flex-grow-0 m-0 p-0 chip-distance\">\n      <ui-icon-button\n        icon=\"filter_list\"\n        (click)=\"openMenu()\"\n        text=\"Add Filter\"\n        class=\"filter-button\"\n      />\n      <lib-menu\n        [excludeButton]=\"'.filter-button'\"\n        [menuOpen]=\"showMenu\"\n        marginTop=\"2\"\n        (clickedOutside)=\"onClose()\"\n      >\n        <ui-filter-column-view\n          *lazyContent\n          [tabs]=\"options.tabs\"\n          [filterSelections]=\"filterSelections\"\n          [persistedFilterSelections]=\"persistedFilterSelections\"\n          [enrolledClouds]=\"enrolledClouds\"\n          (onClose)=\"onClose()\"\n          (onApply)=\"apply()\"\n        />\n      </lib-menu>\n    </div>\n    <div class=\"chips-container col px-0 flex-row\">\n      <ui-chip\n        *ngFor=\"let chip of chips\"\n        class=\"chip\"\n        [boldText]=\"chip.boldLabel\"\n        [tooltipText]=\"chip.tooltip\"\n        [sameOrderLabel]=\"chip.sameOrder\"\n        (onClose)=\"closeChip(chip)\"\n        >{{ chip.label }}\n      </ui-chip>\n    </div>\n  </div>\n</div>\n<lib-error-and-warning-messages\n  [errorMessages]=\"errorMessages\"\n  [warningMessages]=\"warningMessages\"\n/>\n","import {AfterViewInit, Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild,} from '@angular/core';\nimport {CdkFixedSizeVirtualScroll, CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {LabelDropdownOption} from '../label-dropdown-option';\nimport {MatMenu, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatFormField, MatLabel} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\n\n@Component({\n    selector: 'ui-label-dropdown',\n    templateUrl: './label-dropdown.component.html',\n    styleUrls: ['./label-dropdown.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => LabelDropdownComponent),\n            multi: true,\n        },\n    ],\n    imports: [\n        MatMenuTrigger,\n        NgIf,\n        MatIcon,\n        MatMenu,\n        MatFormField,\n        MatLabel,\n        MatInput,\n        ReactiveFormsModule,\n        CdkVirtualScrollViewport,\n        CdkFixedSizeVirtualScroll,\n        NgFor,\n        MatMenuItem,\n    ]\n})\n// @DestroySubscribers()\nexport class LabelDropdownComponent<T extends LabelDropdownOption>\n  implements OnInit, AfterViewInit, ControlValueAccessor\n{\n  @Input() label: string;\n  @Input() textToDisplay: string;\n  @Input() allOptions: T[];\n  @Input() hideArrow: boolean;\n  @Output() valueSelectedEvent = new EventEmitter<T>();\n  @ViewChild(CdkVirtualScrollViewport)\n  cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n  searchInputFormControl = new FormControl<string>('');\n\n  filteredOptions: T[];\n  chosenValue: T;\n\n  subscribers: any = {};\n\n  constructor() {}\n\n  ngOnInit() {\n    this.filteredOptions = this.allOptions;\n    this.subscribers.inputFormControl =\n      this.searchInputFormControl.valueChanges.subscribe((it) => {\n        this.filterItem(it);\n      });\n  }\n\n  ngAfterViewInit() {\n    if (!this.chosenValue && this.allOptions && this.allOptions.length > 0) {\n      this.setDefaultValue();\n    }\n  }\n\n  setDefaultValue() {\n    this.chosenValue = this.allOptions[0];\n    this.onChange(this.chosenValue.value);\n  }\n\n  onChange: any = () => {};\n  onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    if (value || value === '') {\n      const foundOption = this.allOptions.find(\n        (option) => option.value === value\n      );\n      this.chosenValue = foundOption ? foundOption : null;\n    } else {\n      this.chosenValue = null;\n    }\n    this.onChange(value);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  selectOption(emittedValue: T) {\n    this.chosenValue = emittedValue;\n    this.onChange(emittedValue.value);\n    this.emitChosenValue(emittedValue);\n    this.onTouch();\n  }\n\n  emitChosenValue(selectedValue: T) {\n    this.valueSelectedEvent.emit(selectedValue);\n  }\n\n  //TODO Use the function from HELPERS\n  filterItem(value: string) {\n    this.filteredOptions = this.allOptions.filter((item) => {\n      let valueIndex = 0;\n      const splitItem = item.display\n        .split(/(?=[A-Z])|(-)|(\\.)|(\\s+)|(_)/)\n        .filter(Boolean);\n      for (let word of splitItem) {\n        let wordIndex = 0;\n        word = word.charAt(0).toUpperCase() + word.slice(1);\n\n        if (\n          value.charAt(0).toUpperCase() === word.charAt(0) &&\n          valueIndex === 1\n        ) {\n          valueIndex = 0;\n        }\n\n        while (wordIndex < word.length) {\n          if (\n            valueIndex < value.length &&\n            value[valueIndex].toUpperCase() === word[wordIndex]\n          ) {\n            valueIndex++;\n            wordIndex++;\n            while (\n              valueIndex < value.length &&\n              value[valueIndex].toLowerCase() === word[wordIndex]\n            ) {\n              valueIndex++;\n              wordIndex++;\n            }\n          } else {\n            wordIndex++;\n          }\n        }\n      }\n      return valueIndex === value.length;\n    });\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  onClickOpen() {\n    try {\n      document.getElementById('label-dropdown-input').focus();\n    } catch (error) {}\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  onClickClose() {\n    this.searchInputFormControl.setValue('');\n    this.filteredOptions = this.allOptions;\n    this.onTouch();\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  public trackByFn(index, item) {\n    return item;\n  }\n}\n","<button\n  class=\"ui-label-dropdown\"\n  [matMenuTriggerFor]=\"labelDropdownMenu\"\n  (menuOpened)=\"onClickOpen()\"\n  (menuClosed)=\"onClickClose()\"\n  aria-haspopup=\"true\"\n>\n  <span class=\"label-dropdown__label\" role=\"presentation\">\n    {{ label }}\n  </span>\n  <ng-container *ngIf=\"textToDisplay; else elseBlock\">\n    <mat-icon>filter_list</mat-icon>\n    <span>{{ textToDisplay }}</span>\n  </ng-container>\n  <ng-template #elseBlock class=\"label-dropdown__text\">{{\n    chosenValue?.display\n  }}</ng-template>\n  <mat-icon *ngIf=\"!hideArrow\">arrow_drop_down</mat-icon>\n</button>\n<mat-menu #labelDropdownMenu=\"matMenu\" class=\"label-dropdown-menu\">\n  <mat-form-field\n    appearance=\"outline\"\n    class=\"search-input\"\n    (click)=\"$event.stopPropagation()\"\n  >\n    <mat-label>Search...&nbsp;</mat-label>\n    <input\n      matInput\n      autocomplete=\"off\"\n      id=\"label-dropdown-input\"\n      [formControl]=\"searchInputFormControl\"\n      (keydown)=\"$event.stopPropagation()\"\n    />\n  </mat-form-field>\n  <cdk-virtual-scroll-viewport\n    class=\"label-dropdown-scroll-viewport\"\n    [itemSize]=\"24\"\n    [style.height.px]=\"240\"\n  >\n    <button\n      *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\n      mat-menu-item\n      (click)=\"selectOption(option)\"\n    >\n      {{ option.display }}\n    </button>\n  </cdk-virtual-scroll-viewport>\n</mat-menu>\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges,} from '@angular/core';\nimport {CdkDrag, CdkDropList, moveItemInArray} from '@angular/cdk/drag-drop';\nimport {KeyValue} from '../../../common/KeyValue';\nimport {LabelDropdownOption} from '../../../design-system/dropdowns/label-dropdown-option';\nimport {FilterModifier} from '../filter-modifier';\nimport {GroupingOptions} from '../../model/public/modifier-options';\nimport {getOutputObjectWithoutID, mapGroupingToObject, mapObjectToGroupingSelection,} from '../../mapper';\nimport {NgFor, NgIf} from '@angular/common';\nimport {ChipComponent} from '../../../design-system/buttons/chip/chip.component';\nimport {LabelDropdownComponent} from '../../../design-system/dropdowns/label-dropdown/label-dropdown.component';\nimport {ErrorAndWarningMessagesComponent} from '../error-and-warning-messages/error-and-warning-messages.component';\n\nclass GroupSelectOptionWrapper implements LabelDropdownOption {\n  hierarchyIndex?: number;\n  indexInHierarchy?: number;\n  value: string;\n  display: string;\n}\n\n@Component({\n    selector: 'lib-grouping',\n    templateUrl: './grouping.component.html',\n    styleUrls: ['./grouping.component.scss'],\n    imports: [\n        NgIf,\n        CdkDropList,\n        NgFor,\n        ChipComponent,\n        CdkDrag,\n        LabelDropdownComponent,\n        ErrorAndWarningMessagesComponent,\n    ]\n})\nexport class GroupingComponent<T>\n  extends FilterModifier<T, Array<KeyValue>>\n  implements OnInit, OnChanges\n{\n  @Input()\n  options: GroupingOptions<T>;\n\n  @Input()\n  outputObject: T;\n\n  @Input()\n  savedFilter: any;\n\n  @Output()\n  applyGrouping: EventEmitter<T> = new EventEmitter<T>();\n\n  groupingSelections: Array<GroupSelectOptionWrapper> = [];\n  groupingSelectOptions: Array<GroupSelectOptionWrapper> = [];\n\n  ngOnInit(): void {\n    if (this.options.preApplyValidation) {\n      this.validator = { preApplyValidation: this.options.preApplyValidation };\n    }\n    this.options.items.forEach((option, hierarchyIndex) => {\n      if (Array.isArray(option)) {\n        option.forEach((o, indexInHierarchy) => {\n          this.groupingSelectOptions.push({\n            hierarchyIndex: hierarchyIndex + 1,\n            indexInHierarchy: indexInHierarchy,\n            value: o.value,\n            display: o.display,\n          });\n        });\n      } else {\n        this.groupingSelectOptions.push({\n          value: option.value,\n          display: option.display,\n        });\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['savedFilter'] && changes['savedFilter'].currentValue) {\n      this.onSavedGcpFilterApplied(\n        mapObjectToGroupingSelection(\n          changes['savedFilter'].currentValue,\n          this.options\n        )\n      );\n    }\n  }\n\n  addGrouping(grouping: KeyValue) {\n    if (\n      this.groupingSelections.find((it) => it.value === grouping.value) ===\n      undefined\n    ) {\n      this.groupingSelections.push(grouping);\n      this.apply();\n    }\n  }\n\n  closeGroupingChip(index: number) {\n    this.groupingSelections.splice(index, 1);\n    this.apply();\n  }\n\n  switchGroupingChipsPositions($event) {\n    if ($event.previousIndex !== $event.currentIndex) {\n      moveItemInArray(\n        this.groupingSelections,\n        $event.previousIndex,\n        $event.currentIndex\n      );\n      this.apply();\n    }\n  }\n\n  getGroupingChipPredicate(index: number): string {\n    return index === 0 ? 'Group by' : 'and then by';\n  }\n\n  onSavedGcpFilterApplied(selections: Array<KeyValue>) {\n    this.groupingSelections = [];\n    selections.forEach((selection) => {\n      let selectionWrapper = this.groupingSelectOptions.find(\n        (option) =>\n          selection.display === option.display &&\n          selection.value === option.value\n      );\n      if (selectionWrapper) {\n        this.groupingSelections.push(selectionWrapper);\n      }\n    });\n  }\n\n  /**\n   * Creates an error message when there is a hierarchy error.\n   *\n   * @param hierarchy {@link Array<GroupSelectOptionWrapper>}\n   * @returns The message\n   */\n  getErrorMessage(hierarchy: Array<GroupSelectOptionWrapper>): string {\n    return (\n      'Cannot group by current order. The grouping must follow this hierarchy - ' +\n      hierarchy\n        .sort((a, b) => a.indexInHierarchy - b.indexInHierarchy)\n        .map((option) => option.display)\n        .join(' -> ')\n    );\n  }\n\n  convertGroupingSelectionForEmit(): Array<string> {\n    return this.groupingSelections.map<string>((grouping) => grouping.value);\n  }\n\n  override isValid(selection: T): boolean {\n    this.errorMessages = [];\n\n    // Validating that the hierarchy order is preserved.\n    let hierarchyMap = new Map<number, Array<GroupSelectOptionWrapper>>();\n\n    if (this.groupingSelections.length === 0 && this.outputObject) {\n      this.errorMessages.push('Please select at least one grouping.');\n    } else {\n      // Sorting all selections in their hierarchy if they are part of one.\n      this.groupingSelections.forEach((selection) => {\n        if (selection.hierarchyIndex) {\n          if (hierarchyMap.get(selection.hierarchyIndex)) {\n            hierarchyMap.get(selection.hierarchyIndex).push(selection);\n          } else {\n            hierarchyMap.set(selection.hierarchyIndex, [selection]);\n          }\n        }\n      });\n\n      // Check if the order of selections correspondences to the hierarchy\n      for (let hierarchy of hierarchyMap.values()) {\n        let prevIndexInHierarchy = -1;\n\n        hierarchy.forEach((element) => {\n          if (element.indexInHierarchy < prevIndexInHierarchy) {\n            this.errorMessages.push(this.getErrorMessage(hierarchy));\n          } else {\n            prevIndexInHierarchy = element.indexInHierarchy;\n          }\n        });\n      }\n\n      if (this.validator) {\n        let errorsAndWarnings = this.validator.preApplyValidation(selection);\n        this.errorMessages.push(...errorsAndWarnings.errorMessages);\n        this.warningMessages = errorsAndWarnings.warningMessages;\n      }\n    }\n\n    return this.errorMessages.length === 0;\n  }\n\n  private apply() {\n    this.applyGrouping.emit(\n      mapGroupingToObject(\n        getOutputObjectWithoutID(this.outputObject),\n        this.options.id,\n        this.convertGroupingSelectionForEmit()\n      )\n    );\n  }\n}\n","<div>\n  <div class=\"groupings-container\">\n    <div *ngIf=\"groupingSelections.length > 0\" class=\"grouping-chips\">\n      <div\n        cdkDropList\n        (cdkDropListDropped)=\"switchGroupingChipsPositions($event)\"\n      >\n        <div *ngFor=\"let grouping of groupingSelections; let i = index\">\n          <div class=\"chip\">\n            <ui-chip\n              class=\"ui-chip-wrap\"\n              [iconBefore]=\"'drag_indicator'\"\n              [boldText]=\"grouping.display\"\n              [tooltipText]=\"\n                grouping.display.length > 12 ? grouping.display : undefined\n              \"\n              (onClose)=\"closeGroupingChip(i)\"\n              cdkDrag\n            >\n              {{ getGroupingChipPredicate(i) }}\n            </ui-chip>\n          </div>\n        </div>\n      </div>\n    </div>\n    <ng-container>\n      <ui-label-dropdown\n        [textToDisplay]=\"'Add Grouping'\"\n        [hideArrow]=\"true\"\n        (valueSelectedEvent)=\"addGrouping($event)\"\n        [allOptions]=\"groupingSelectOptions\"\n      />\n    </ng-container>\n  </div>\n  <lib-error-and-warning-messages\n    [errorMessages]=\"errorMessages\"\n    [warningMessages]=\"warningMessages\"\n  />\n</div>\n","export class KeyValue {\n  value: string;\n  display: string;\n\n  constructor(value: string, display: string) {\n    this.value = value;\n    this.display = display;\n  }\n}\n\nexport class KeyValueObject {\n  value: any;\n  display: string;\n\n  constructor(value: any, display: string) {\n    this.value = value;\n    this.display = display;\n  }\n}\n","import {AfterViewInit, Component, EventEmitter, forwardRef, Input, OnInit, Output, ViewChild,} from '@angular/core';\nimport {KeyValue} from '../../common/KeyValue';\nimport {CdkFixedSizeVirtualScroll, CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {MatFormField, MatLabel, MatPrefix} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatIcon} from '@angular/material/icon';\nimport {NgFor} from '@angular/common';\nimport {MatMenuItem} from '@angular/material/menu';\n\n@Component({\n    selector: 'predefined-type-picker',\n    templateUrl: './predefined-type-picker.component.html',\n    styleUrls: ['./predefined-type-picker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => PredefinedTypePickerComponent),\n            multi: true,\n        },\n    ],\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatInput,\n        ReactiveFormsModule,\n        MatIcon,\n        MatPrefix,\n        CdkFixedSizeVirtualScroll,\n        NgFor,\n        MatMenuItem,\n    ]\n})\nexport class PredefinedTypePickerComponent implements OnInit, AfterViewInit, ControlValueAccessor {\n  @Input() label: string;\n  @Input() textToDisplay: string;\n  @Input() allOptions: Array<KeyValue>;\n  @Input() hideArrow: boolean;\n  @Output() valueSelectedEvent = new EventEmitter<string>();\n  @ViewChild(CdkVirtualScrollViewport)\n  cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n  searchInputFormControl = new FormControl<string>('');\n\n  filteredOptions: Array<KeyValue>;\n  chosenValue: KeyValue;\n\n  subscribers: any = {};\n\n  ngOnInit() {\n    this.filteredOptions = this.allOptions;\n    this.subscribers.inputFormControl =\n      this.searchInputFormControl.valueChanges.subscribe((it) => {\n        this.filterItem(it);\n      });\n    document.getElementById('label-dropdown-input').focus();\n  }\n\n  ngAfterViewInit() {\n    if (!this.chosenValue && this.allOptions && this.allOptions.length > 0) {\n      this.setDefaultValue();\n    }\n  }\n\n  setDefaultValue() {\n    this.chosenValue = this.allOptions[0];\n    // Causing ng-pristine to fire an error commented for testing purposes\n    // this.onChange(this.chosenValue.value);\n  }\n\n  onChange: any = () => {};\n  onTouch: any = () => {};\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  writeValue(value: any): void {\n    if (value || value === '') {\n      const foundOption = this.allOptions.find(\n        (option) => option.value === value\n      );\n      this.chosenValue = foundOption ? foundOption : null;\n    } else {\n      this.chosenValue = null;\n    }\n    this.onChange(value);\n  }\n\n  selectOption(emittedValue: KeyValue) {\n    this.chosenValue = emittedValue;\n    this.onChange(emittedValue.value);\n    this.emitChosenValue(emittedValue.value);\n    this.onTouch();\n  }\n\n  emitChosenValue(selectedValue: string) {\n    this.valueSelectedEvent.emit(selectedValue);\n  }\n\n  filterItem(value: string) {\n    this.filteredOptions = this.allOptions.filter((item) => {\n      let valueIndex = 0;\n      const splitItem = item.display\n        .split(/(?=[A-Z])|(-)|(\\.)|(\\s+)|(_)/)\n        .filter(Boolean);\n      for (let word of splitItem) {\n        let wordIndex = 0;\n        word = word.charAt(0).toUpperCase() + word.slice(1);\n        if (\n          value.charAt(0).toUpperCase() === word.charAt(0) &&\n          valueIndex === 1\n        ) {\n          valueIndex = 0;\n        }\n        while (wordIndex < word.length) {\n          if (\n            valueIndex < value.length &&\n            value[valueIndex].toUpperCase() === word[wordIndex]\n          ) {\n            valueIndex++;\n            wordIndex++;\n            while (\n              valueIndex < value.length &&\n              value[valueIndex].toLowerCase() === word[wordIndex]\n            ) {\n              valueIndex++;\n              wordIndex++;\n            }\n          } else {\n            wordIndex++;\n          }\n        }\n      }\n      return valueIndex === value.length;\n    });\n  }\n}\n","<mat-form-field\n  appearance=\"outline\"\n  class=\"search-input\"\n  (click)=\"$event.stopPropagation()\"\n>\n  <mat-label>Search...&nbsp;</mat-label>\n  <input\n    matInput\n    autofocus\n    autocomplete=\"off\"\n    id=\"label-dropdown-input\"\n    [formControl]=\"searchInputFormControl\"\n    (keydown)=\"$event.stopPropagation()\"\n  />\n  <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\n</mat-form-field>\n<div class=\"label-dropdown-menu\">\n  <cdk-virtual-scroll-viewport\n    class=\"label-dropdown-scroll-viewport\"\n    [itemSize]=\"24\"\n    [style.height.px]=\"240\"\n    [style.display]=\"'block'\"\n  >\n    <button\n      *ngFor=\"let option of filteredOptions\"\n      mat-menu-item\n      (click)=\"selectOption(option)\"\n    >\n      {{ option.display }}\n    </button>\n  </cdk-virtual-scroll-viewport>\n</div>\n","import {Component, forwardRef, Input, ViewChild} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {Moment} from 'moment';\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from '@angular/material/datepicker';\nimport {MatSuffix} from '@angular/material/form-field';\n\n@Component({\n    selector: 'ui-datepicker',\n    templateUrl: './datepicker.component.html',\n    styleUrls: ['./datepicker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DatepickerComponent),\n            multi: true,\n        },\n    ],\n    imports: [\n        MatDatepickerInput,\n        MatDatepickerToggle,\n        MatSuffix,\n        MatDatepicker,\n    ]\n})\nexport class DatepickerComponent implements ControlValueAccessor {\n  @Input() label: string;\n  @Input() dateFilter: (date: Moment) => boolean;\n  @ViewChild('picker') picker: MatDatepicker<Moment>;\n  value: Moment;\n\n  registerChange(change: any) {\n    this.value = change.target.value;\n    this.onChange(this.value);\n  }\n\n  onChange: any = () => {};\n\n  onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  openDatePicker() {\n    this.picker.open();\n  }\n}\n","<div>\n  <span class=\"datepicker__label\">{{ label }}</span>\n  <input\n    class=\"ui-datepicker\"\n    [value]=\"value\"\n    (dateChange)=\"registerChange($event)\"\n    [matDatepicker]=\"picker\"\n    [matDatepickerFilter]=\"dateFilter\"\n    (click)=\"openDatePicker()\"\n    readonly\n  />\n  <span class=\"datepicker__icon\">\n    <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n  </span>\n  <mat-datepicker #picker></mat-datepicker>\n</div>\n","import {Component, forwardRef, Input, OnInit, ViewChild} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule} from '@angular/forms';\nimport {KeyValue} from '../../../common/KeyValue';\nimport {CdkFixedSizeVirtualScroll, CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {MatFormField, MatLabel, MatPrefix} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {MatIcon} from '@angular/material/icon';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatMenuItem} from '@angular/material/menu';\nimport {MatCheckbox} from '@angular/material/checkbox';\n\n@Component({\n    selector: 'invoice-month-picker',\n    templateUrl: './invoice-month-picker.component.html',\n    styleUrls: ['./invoice-month-picker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => InvoiceMonthPickerComponent),\n            multi: true,\n        },\n    ],\n    imports: [\n        MatFormField,\n        MatLabel,\n        MatInput,\n        ReactiveFormsModule,\n        MatIcon,\n        MatPrefix,\n        CdkFixedSizeVirtualScroll,\n        NgFor,\n        MatMenuItem,\n        MatCheckbox,\n        NgIf,\n    ]\n})\nexport class InvoiceMonthPickerComponent\n  implements OnInit, ControlValueAccessor\n{\n  @Input()\n  label: string;\n  @Input()\n  allOptions: Array<KeyValue>;\n  @Input()\n  selectedOptions: Array<KeyValue>;\n  @ViewChild(CdkVirtualScrollViewport)\n  cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n  searchInputFormControl = new FormControl<string>('');\n\n  filteredOptions: Array<KeyValue>;\n\n  subscribers: any = {};\n\n  constructor() {}\n\n  ngOnInit() {\n    this.filteredOptions = this.allOptions;\n    this.subscribers.inputFormControl =\n      this.searchInputFormControl.valueChanges.subscribe((it) => {\n        this.filterItem(it);\n      });\n    document.getElementById('label-dropdown-input').focus();\n  }\n\n  onChange: any = () => {};\n  onTouch: any = () => {};\n\n  writeValue(values: any[]): void {\n    if (Array.isArray(values)) {\n      this.selectedOptions = this.allOptions.filter((option) =>\n        values?.includes(option.value)\n      );\n    } else {\n      this.selectedOptions = [];\n    }\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n  }\n\n  isOptionSelected(option: KeyValue): boolean {\n    return this.selectedOptions.some(\n      (selected) => selected.value === option.value\n    );\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  filterItem(value: string) {\n    this.filteredOptions = this.allOptions.filter((item) => {\n      let valueIndex = 0;\n      const splitItem = item.display\n        .split(/(?=[A-Z])|(-)|(\\.)|(\\s+)|(_)/)\n        .filter(Boolean);\n      for (let word of splitItem) {\n        let wordIndex = 0;\n        word = word.charAt(0).toUpperCase() + word.slice(1);\n\n        if (\n          value.charAt(0).toUpperCase() === word.charAt(0) &&\n          valueIndex === 1\n        ) {\n          valueIndex = 0;\n        }\n\n        while (wordIndex < word.length) {\n          if (\n            valueIndex < value.length &&\n            value[valueIndex].toUpperCase() === word[wordIndex]\n          ) {\n            valueIndex++;\n            wordIndex++;\n            while (\n              valueIndex < value.length &&\n              value[valueIndex].toLowerCase() === word[wordIndex]\n            ) {\n              valueIndex++;\n              wordIndex++;\n            }\n          } else {\n            wordIndex++;\n          }\n        }\n      }\n      return valueIndex === value.length;\n    });\n  }\n  selectOption(option: KeyValue): void {\n    this.selectedOptions.push(option);\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n    this.onTouch();\n  }\n\n  deselectOption(option: KeyValue): void {\n    const index = this.selectedOptions.findIndex(\n      (selected) => selected.value === option.value\n    );\n    if (index !== -1) {\n      this.selectedOptions.splice(index, 1);\n    }\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n    this.onTouch();\n  }\n\n  toggleCheckbox(option: KeyValue, event: any): void {\n    event.stopPropagation();\n    if (this.isOptionSelected(option)) {\n      this.deselectOption(option);\n    } else {\n      this.selectOption(option);\n    }\n  }\n\n  public trackByFn(index, item) {\n    return item;\n  }\n}\n","<mat-form-field\n  appearance=\"outline\"\n  class=\"search-input\"\n  (click)=\"$event.stopPropagation()\"\n>\n  <mat-label>Search...&nbsp;</mat-label>\n  <input\n    matInput\n    autofocus\n    autocomplete=\"off\"\n    id=\"label-dropdown-input\"\n    [formControl]=\"searchInputFormControl\"\n    (keydown)=\"$event.stopPropagation()\"\n  />\n  <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\n</mat-form-field>\n<cdk-virtual-scroll-viewport\n  class=\"label-dropdown-scroll-viewport\"\n  [itemSize]=\"24\"\n  [style.height.px]=\"240\"\n>\n  <button\n    mat-menu-item\n    *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\n    (click)=\"toggleCheckbox(option, $event)\"\n  >\n    <mat-checkbox [checked]=\"isOptionSelected(option)\">\n      {{ option.display }}\n    </mat-checkbox>\n  </button>\n  <div *ngIf=\"allOptions.length === 0\" class=\"ml-3\">\n    No invoice months found\n  </div>\n</cdk-virtual-scroll-viewport>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {InvoiceMonth, Period, PeriodType,} from '../../../model/public/modifier-options';\nimport {KeyValue} from '../../../../common/KeyValue';\nimport {FormControl, ReactiveFormsModule, UntypedFormGroup} from '@angular/forms';\nimport moment from 'moment';\nimport {NgIf} from '@angular/common';\nimport {MatButton} from '@angular/material/button';\nimport {MatIcon} from '@angular/material/icon';\nimport {\n  PredefinedTypePickerComponent\n} from '../../../../design-system/predefined-type-picker/predefined-type-picker.component';\nimport {DatepickerComponent} from '../../../../design-system/date/datepicker/datepicker.component';\nimport {\n  InvoiceMonthPickerComponent\n} from '../../../../design-system/date/invoice-month-picker/invoice-month-picker.component';\n\n@Component({\n    selector: 'period-selector-window',\n    templateUrl: './period-selector-window.component.html',\n    styleUrls: ['./period-selector-window.component.scss'],\n    imports: [\n        ReactiveFormsModule,\n        NgIf,\n        MatButton,\n        MatIcon,\n        PredefinedTypePickerComponent,\n        DatepickerComponent,\n        InvoiceMonthPickerComponent,\n    ]\n})\nexport class PeriodSelectorWindowComponent implements OnInit {\n  @Input()\n  invoiceMonths?: InvoiceMonth[];\n  @Input()\n  predefinedPeriods: Array<KeyValue>;\n  @Input()\n  initialFormGroupValues: Period;\n  @Input()\n  hideCustomPeriod: boolean\n  @Output()\n  eventEmitter: EventEmitter<Period> = new EventEmitter<Period>();\n\n  @Output()\n  onClose: EventEmitter<any> = new EventEmitter<any>();\n\n  showPredefinedTypes: boolean = true;\n  showInvoiceMonths: boolean = false;\n  showCustomPeriod: boolean = false;\n  period: UntypedFormGroup = new UntypedFormGroup({\n    fromDate: new FormControl(),\n    toDate: new FormControl(),\n    type: new FormControl<PeriodType>(PeriodType.PREDEFINED),\n    predefinedType: new FormControl(),\n    selectedInvoiceMonths: new FormControl(),\n  });\n  mappedSelectedInvoiceMonths: Array<KeyValue> = [];\n\n  ngOnInit() {\n    if (this.initialFormGroupValues) {\n      this.period\n        .get('selectedInvoiceMonths')\n        .setValue(this.initialFormGroupValues.selectedInvoiceMonths);\n      this.period\n        .get('fromDate')\n        .setValue(this.initialFormGroupValues.fromDate);\n      this.period.get('toDate').setValue(this.initialFormGroupValues.toDate);\n      this.period.get('type').setValue(this.initialFormGroupValues.type);\n      this.period\n        .get('predefinedType')\n        .setValue(this.initialFormGroupValues.predefinedType);\n      this.mappedSelectedInvoiceMonths =\n        this.mapSelectedInvoiceMonthsToDropdownKeyValue();\n    } else {\n      this.setDefaultCustomPeriodDates();\n    }\n    if (this.initialFormGroupValues.type === 'PREDEFINED') {\n      this.changeToPredefinedType();\n    } else if (this.initialFormGroupValues.type === 'INVOICE_MONTH') {\n      this.changeToInvoiceMonth();\n    } else if (this.initialFormGroupValues.type === 'DATE_RANGE') {\n      this.changeToCustomPeriod();\n    }\n  }\n\n  fromDateFilter = (fromDate: moment.Moment): boolean => {\n    return !moment(this.period.get('toDate').value).isBefore(fromDate);\n  };\n\n  toDateFilter = (toDate: moment.Moment): boolean => {\n    return !moment(this.period.get('fromDate').value).isAfter(toDate);\n  };\n\n  changeToPredefinedType() {\n    this.period.get('type').setValue(PeriodType.PREDEFINED);\n    this.showPredefinedTypes = true;\n    this.showInvoiceMonths = false;\n    this.showCustomPeriod = false;\n  }\n\n  changeToCustomPeriod() {\n    this.period.get('type').setValue(PeriodType.DATE_RANGE);\n    this.period.get('predefinedType').setValue('NONE');\n    this.showInvoiceMonths = false;\n    this.showCustomPeriod = true;\n    this.showPredefinedTypes = false;\n  }\n\n  changeToInvoiceMonth() {\n    this.period.get('type').setValue(PeriodType.INVOICE_MONTH);\n    this.period.get('predefinedType').setValue('NONE');\n    this.showInvoiceMonths = true;\n    this.showCustomPeriod = false;\n    this.showPredefinedTypes = false;\n  }\n\n  submitPeriod() {\n    this.eventEmitter.emit(this.period.value);\n  }\n\n  cancelButton() {\n    this.onClose.emit();\n  }\n\n  mapInvoiceMonthsToDropdownKeyValue = () => {\n    return this.invoiceMonths.map(\n      (currentValue) =>\n        new KeyValue(currentValue.bigQueryInvoiceMonth, currentValue.parsedDate)\n    );\n  };\n\n  mapSelectedInvoiceMonthsToDropdownKeyValue = () => {\n    return !this.initialFormGroupValues.selectedInvoiceMonths\n      ? []\n      : this.initialFormGroupValues.selectedInvoiceMonths.map(\n          (currentValue) => {\n            const temp = this.invoiceMonths.find(\n              (it) => it.bigQueryInvoiceMonth === currentValue\n            );\n            return new KeyValue(temp.bigQueryInvoiceMonth, temp.parsedDate);\n          }\n        );\n  };\n\n  setDefaultCustomPeriodDates() {\n    const currentDate = moment().utc(true).startOf('day').subtract(1, 'M');\n    const oneMonthAgo = moment().utc(true).startOf('day');\n    this.period.get('fromDate').setValue(oneMonthAgo);\n    this.period.get('toDate').setValue(currentDate);\n  }\n}\n","<div class=\"period-container\">\n  <div class=\"row no-gutters period-spacing\" [formGroup]=\"period\">\n    <div class=\"left-side flex-column period-selector\">\n      <button\n        mat-button\n        class=\"button-option justify-content-start mr-3\"\n        *ngIf=\"predefinedPeriods\"\n        [class.active]=\"showPredefinedTypes\"\n        (click)=\"changeToPredefinedType()\"\n      >\n        <mat-icon>view_headline</mat-icon>\n        Predefined period\n      </button>\n      <button\n        mat-button\n        class=\"button-option justify-content-start mr-3\"\n        *ngIf=\"!hideCustomPeriod\"\n        [class.active]=\"showCustomPeriod\"\n        (click)=\"changeToCustomPeriod()\"\n      >\n        <mat-icon>date_range</mat-icon>\n        Custom Period\n      </button>\n      <button\n        mat-button\n        class=\"button-option justify-content-start mr-3\"\n        *ngIf=\"invoiceMonths\"\n        [class.active]=\"showInvoiceMonths\"\n        (click)=\"changeToInvoiceMonth()\"\n      >\n        <mat-icon>today</mat-icon>\n        Invoice Month\n      </button>\n    </div>\n    <div class=\"vertical-separator\"></div>\n    <div\n      class=\"right-side flex-column\"\n      *ngIf=\"showInvoiceMonths || showCustomPeriod || showPredefinedTypes\"\n    >\n      <div class=\"period-option\">\n        <div *ngIf=\"showPredefinedTypes\">\n          <predefined-type-picker\n            label=\"Period\"\n            class=\"mb-2\"\n            formControlName=\"predefinedType\"\n            (valueSelectedEvent)=\"submitPeriod()\"\n            [allOptions]=\"predefinedPeriods\"\n          />\n        </div>\n        <div class=\"ml-2 mt-4 date-spacing\" *ngIf=\"showCustomPeriod\">\n          <div class=\"row mb-4\">\n            <div class=\"col-12\">\n              <ui-datepicker\n                label=\"From (inclusive)\"\n                formControlName=\"fromDate\"\n                [dateFilter]=\"fromDateFilter\"\n              />\n            </div>\n          </div>\n          <div class=\"row\">\n            <div class=\"col-12\">\n              <ui-datepicker\n                label=\"To (exclusive)\"\n                formControlName=\"toDate\"\n                [dateFilter]=\"toDateFilter\"\n              />\n            </div>\n          </div>\n        </div>\n        <div *ngIf=\"showInvoiceMonths\">\n          <invoice-month-picker\n            label=\"Billing Month\"\n            class=\"mb-2\"\n            formControlName=\"selectedInvoiceMonths\"\n            [allOptions]=\"mapInvoiceMonthsToDropdownKeyValue()\"\n            [selectedOptions]=\"mappedSelectedInvoiceMonths\"\n          />\n        </div>\n        <div\n          *ngIf=\"\n            (showInvoiceMonths && invoiceMonths.length > 0) || showCustomPeriod\n          \"\n          class=\"d-block text-right button-placement\"\n        >\n          <button\n            mat-button\n            class=\"button non-accent send\"\n            type=\"button\"\n            (click)=\"cancelButton()\"\n          >\n            Cancel\n          </button>\n          <button\n            mat-raised-button\n            #submitButton\n            color=\"primary\"\n            class=\"button non-accent send\"\n            type=\"submit\"\n            (click)=\"submitPeriod()\"\n          >\n            Apply\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  PipeTransform,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {Period, PeriodOptions, PeriodType,} from '../../model/public/modifier-options';\nimport moment from 'moment';\nimport {FilterModifier} from '../filter-modifier';\nimport {MatMenuTrigger} from '@angular/material/menu';\nimport {getOutputObjectWithoutID, mapObjectToPeriod, mapPeriodToObject,} from '../../mapper';\nimport {IconButtonComponent} from '../../../design-system/buttons/icon-button/icon-button.component';\nimport {MenuComponent} from '../../../design-system/menu/menu.component';\nimport {LazyContentDirective} from '../../../design-system/menu/lazy-content.directive';\nimport {PeriodSelectorWindowComponent} from './period-selector-window/period-selector-window.component';\nimport {ErrorAndWarningMessagesComponent} from '../error-and-warning-messages/error-and-warning-messages.component';\n\n@Component({\n  selector: 'ui-period-selector',\n  templateUrl: './period-selector.component.html',\n  styleUrls: ['./period-selector.component.scss'],\n  imports: [\n    IconButtonComponent,\n    MenuComponent,\n    LazyContentDirective,\n    PeriodSelectorWindowComponent,\n    ErrorAndWarningMessagesComponent,\n  ],\n})\nexport class PeriodSelectorComponent<T>\n  extends FilterModifier<T, Period>\n  implements OnInit, OnChanges\n{\n  @Input()\n  options: PeriodOptions<T>;\n\n  @Input()\n  initialPeriod: Period;\n\n  @Input()\n  datePipe: PipeTransform;\n\n  @Input()\n  outputObject: T;\n\n  @Input()\n  savedFilter: any;\n\n  @Output()\n  applyPeriod: EventEmitter<T> = new EventEmitter<T>();\n\n  @ViewChild(MatMenuTrigger)\n  trigger: MatMenuTrigger;\n\n  period = new Period();\n  periodLabel: string;\n  showMenu: boolean = false;\n\n  ngOnInit(): void {\n    if (this.options.preApplyValidation) {\n      this.validator = { preApplyValidation: this.options.preApplyValidation };\n    }\n    if (!this.periodLabel && !this.initialPeriod) {\n      if (this.options.predefinedPeriods) {\n        this.periodLabel = this.options.predefinedPeriods[0].display;\n      }\n    }\n    if (this.initialPeriod) {\n      this.period = this.initialPeriod;\n      this.periodLabel = this.constructPeriodLabel(this.period, this.datePipe);\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['savedFilter'] && changes['savedFilter'].currentValue) {\n      this.onSavedGcpFilterApplied(\n        mapObjectToPeriod(changes['savedFilter'].currentValue, this.options)\n      );\n    }\n  }\n\n  openMenu = () => {\n    this.showMenu = !this.showMenu;\n  };\n\n  closeMenu(event?: PointerEvent) {\n    // Fix for material datepicker bug with clicking outside. GCPCO-11054\n    if (\n      (event &&\n        event.target.toString() !== '[object HTMLSpanElement]' &&\n        event.target.toString() !== '[object HTMLButtonElement]') ||\n      !event\n    ) {\n      this.showMenu = false;\n    }\n  }\n\n  updatePeriod($event: Period) {\n    this.period = $event;\n    this.periodLabel = this.constructPeriodLabel($event, this.datePipe);\n    this.applyPeriod.emit(\n      mapPeriodToObject(\n        getOutputObjectWithoutID(this.outputObject),\n        this.options.id,\n        this.period\n      )\n    );\n    this.closeMenu();\n  }\n\n  resetPeriod() {\n    const resetPeriod = new Period();\n    resetPeriod.type = PeriodType.PREDEFINED;\n    resetPeriod.fromDate = moment();\n    resetPeriod.toDate = moment();\n    resetPeriod.predefinedType = this.options.predefinedPeriods[0].value;\n    this.period = resetPeriod;\n    this.periodLabel = this.options.predefinedPeriods[0].display;\n  }\n\n  onSavedGcpFilterApplied(period: Period): void {\n    if (period) {\n      this.period = period;\n      this.periodLabel = this.constructPeriodLabel(period, this.datePipe);\n    } else {\n      this.resetPeriod();\n    }\n  }\n\n  constructPeriodLabel(filter: Period, datePipe: any) {\n    switch (filter.type) {\n      case PeriodType.PREDEFINED:\n        return this.options.predefinedPeriods.find(\n          (it) => it.value === filter.predefinedType\n        ).display;\n      case PeriodType.DATE_RANGE:\n        return `from ${datePipe.transform(\n          filter.fromDate\n        )} to ${datePipe.transform(filter.toDate)}`;\n      case PeriodType.INVOICE_MONTH:\n        return `Selected invoice months: ${filter.selectedInvoiceMonths.length}`;\n      default:\n        return '';\n    }\n  }\n}\n","<div>\n  <ui-icon-button\n    icon=\"query_builder\"\n    (click)=\"openMenu()\"\n    [text]=\"periodLabel\"\n    class=\"period-button\"\n  />\n  <lib-menu\n    [excludeButton]=\"'.period-button,.cdk-overlay-container'\"\n    [menuOpen]=\"showMenu\"\n    marginTop=\"2\"\n    (clickedOutside)=\"closeMenu($event)\"\n  >\n    <period-selector-window\n      *lazyContent\n      [initialFormGroupValues]=\"period\"\n      [invoiceMonths]=\"options.invoiceMonths\"\n      [predefinedPeriods]=\"options.predefinedPeriods\"\n      [hideCustomPeriod]=\"options.hideCustomPeriod\"\n      (eventEmitter)=\"updatePeriod($event)\"\n      (click)=\"$event.stopPropagation()\"\n      (onClose)=\"closeMenu()\"\n    />\n  </lib-menu>\n  <lib-error-and-warning-messages\n    [errorMessages]=\"errorMessages\"\n    [warningMessages]=\"warningMessages\"\n  />\n</div>\n","import {Component, ElementRef, EventEmitter, Inject, OnInit, Output, ViewChild,} from '@angular/core';\nimport {FormControl, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {\n  MAT_DIALOG_DATA,\n  MatDialogActions,\n  MatDialogContent,\n  MatDialogRef,\n  MatDialogTitle\n} from '@angular/material/dialog';\nimport {Observable} from 'rxjs';\nimport {SavedGcpFilter} from '../model/public/gcp-filter-options';\nimport {MatError, MatFormField, MatLabel} from '@angular/material/form-field';\nimport {MatInput} from '@angular/material/input';\nimport {NgIf} from '@angular/common';\nimport {MatButton} from '@angular/material/button';\n\n@Component({\n    selector: 'lib-save-filter-dialog',\n    templateUrl: './save-filter-dialog.component.html',\n    styleUrls: ['./save-filter-dialog.component.css'],\n  imports: [\n    MatDialogTitle,\n    ReactiveFormsModule,\n    FormsModule,\n    MatDialogContent,\n    MatFormField,\n    MatLabel,\n    MatInput,\n    NgIf,\n    MatError,\n    MatDialogActions,\n    MatButton,\n  ]\n})\nexport class SaveFilterDialogComponent implements OnInit {\n  @Output() onDialogClosed: EventEmitter<string> = new EventEmitter<string>();\n  @ViewChild('inputElement', { static: true }) inputElement: ElementRef;\n\n  filterName: FormControl = new FormControl('', Validators.required);\n\n  constructor(\n    public dialogRef: MatDialogRef<SaveFilterDialogComponent>,\n    @Inject(MAT_DIALOG_DATA)\n    public data: {\n      saveFilter: (\n        filter: SavedGcpFilter<any>\n      ) => Observable<SavedGcpFilter<any>>;\n      filter: any;\n    }\n  ) {}\n\n  ngOnInit() {\n    this.inputElement.nativeElement.select();\n  }\n\n  close(): void {\n    this.dialogRef.close();\n  }\n\n  process() {\n    this.data\n      .saveFilter({\n        id: 0,\n        name: this.filterName.value,\n        filter: this.data.filter,\n      })\n      .subscribe(\n        (result) => {\n          this.dialogRef.close(result);\n        },\n        (error) => {\n          this.filterName.setErrors({ ['genericError']: error.error.message });\n        }\n      );\n  }\n}\n","<h3 mat-dialog-title>Save filter</h3>\n<form (submit)=\"process()\">\n  <div mat-dialog-content>\n    <div class=\"row\">\n      <div class=\"col-md-8 col-lg-6 col-xl-6\">\n        <mat-form-field class=\"full-width\">\n          <mat-label>Filter name</mat-label>\n          <input\n            matInput\n            #inputElement\n            [formControl]=\"filterName\"\n            autocomplete=\"off\"\n          />\n          <mat-error *ngIf=\"filterName.hasError('genericError')\">{{\n            filterName.getError(\"genericError\")\n          }}</mat-error>\n        </mat-form-field>\n      </div>\n    </div>\n  </div>\n  <div mat-dialog-actions align=\"end\">\n    <button mat-raised-button (click)=\"close()\" type=\"button\">Cancel</button>\n    <button mat-raised-button color=\"primary\" type=\"submit\">Save</button>\n  </div>\n</form>\n","import {Component, EventEmitter, Input, NgZone, Output} from '@angular/core';\nimport {SliderWrapper} from '../../../../model/public/modifier-options';\nimport {MatSlider, MatSliderDragEvent, MatSliderThumb} from '@angular/material/slider';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {ReactiveFormsModule} from '@angular/forms';\n\n@Component({\n    selector: 'slider',\n    templateUrl: './slider.component.html',\n    styleUrls: ['./slider.component.scss'],\n    imports: [\n        MatTooltip,\n        MatSlider,\n        MatSliderThumb,\n        ReactiveFormsModule,\n    ]\n})\nexport class SliderComponent {\n  @Input() sliderWrapper: SliderWrapper;\n\n  @Output() onValueChange: EventEmitter<any> = new EventEmitter<any>();\n\n  prevValue: number;\n\n  constructor(private ngZone: NgZone) {}\n\n  onDragEnd(event: MatSliderDragEvent) {\n    /*\n     * For some reason dragEnd is called even if the user clicks on the same spot and the value does not change.\n     * This if filters this phantom change.\n     * */\n    if (this.prevValue != event.value) {\n      /*\n       * I think the draging event is executed outside angular context because when this change triggers a url update\n       * there is a warning message -> Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?\n       */\n      this.ngZone.run(() => {\n        this.prevValue = event.value;\n        this.onValueChange.emit();\n      });\n    }\n  }\n}\n","<div>\n  <div class=\"flex slider-title\">\n    Maximum display results:\n    <b>{{ sliderWrapper.control.value }}</b>\n    <i\n      class=\"material-icons costimize-material-icon info-icon help-material-icon-header\"\n      matTooltip=\"This does not affect groupings by period.\"\n      matTooltipPosition=\"after\"\n      >info</i\n    >\n  </div>\n  <mat-slider\n    [min]=\"sliderWrapper.min\"\n    [max]=\"sliderWrapper.max\"\n    [step]=\"sliderWrapper.step\"\n    class=\"slider\"\n  >\n    <input\n      matSliderThumb\n      [value]=\"sliderWrapper.control.value\"\n      (dragEnd)=\"onDragEnd($event)\"\n      [formControl]=\"sliderWrapper.control\"\n    />\n  </mat-slider>\n</div>\n","import {Component, EventEmitter, Input, Output, ViewChild,} from '@angular/core';\nimport {KeyValue} from '../../../../common/KeyValue';\nimport {MatList, MatListOption, MatSelectionList} from '@angular/material/list';\nimport {SingleSelectChartOptions} from '../../../model/public/modifier-options';\nimport {MatDivider} from '@angular/material/divider';\nimport {NgFor} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'lib-single-select-chart',\n    templateUrl: './single-select-chart.component.html',\n    styleUrls: ['./single-select-chart.component.scss'],\n    imports: [\n        MatDivider,\n        MatList,\n        MatSelectionList,\n        NgFor,\n        MatListOption,\n        MatTooltip,\n    ]\n})\nexport class SingleSelectChartComponent<T> {\n  @Input()\n  options: SingleSelectChartOptions<T>;\n\n  @Input()\n  selectedOption: KeyValue;\n\n  @Input()\n  valid: boolean;\n\n  @Output()\n  apply: EventEmitter<KeyValue> = new EventEmitter();\n\n  @ViewChild('singleSelect')\n  singleSelect!: MatSelectionList;\n\n  onChange = () => {\n    if (\n      this.selectedOption !==\n      this.singleSelect.selectedOptions.selected[0].value\n    ) {\n      this.apply.emit(this.singleSelect.selectedOptions.selected[0].value);\n    }\n  };\n}\n","<div>\n  <p>{{ options.title }}</p>\n  <div class=\"pb-3\">\n    <mat-divider />\n    <mat-list>\n      <mat-selection-list #singleSelect [multiple]=\"false\" (click)=\"onChange()\">\n        <mat-list-option\n          *ngFor=\"let option of options.items\"\n          [togglePosition]=\"'before'\"\n          [value]=\"option\"\n          [selected]=\"selectedOption?.value === option.value\"\n          [matTooltip]=\"option.validation && !valid ? option.tooltip : ''\"\n          disabled=\"{{ option.validation ? !valid : false }}\"\n          class=\"reduce-checkbox-margin\"\n        >\n          <div class=\"option-style\">{{ option.display }}</div>\n        </mat-list-option>\n      </mat-selection-list>\n    </mat-list>\n    <mat-divider />\n  </div>\n</div>\n","import {Component, forwardRef, Input} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR,} from '@angular/forms';\nimport {KeyValueObject} from '../../common/KeyValue';\nimport {NgClass, NgFor, NgIf} from '@angular/common';\n\n@Component({\n  selector: 'lib-toggle-button-group',\n  templateUrl: './toggle-button-group.component.html',\n  styleUrls: ['./toggle-button-group.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ToggleButtonGroupComponent),\n      multi: true,\n    },\n  ],\n  imports: [NgIf, NgClass, NgFor],\n})\nexport class ToggleButtonGroupComponent implements ControlValueAccessor {\n  @Input() title: string;\n  @Input() options: Array<KeyValueObject>;\n\n  formControl: any;\n  disabled = false;\n\n  onChange: (value: any) => void = () => {};\n  onTouched: () => void = () => {};\n\n  selectOption(option: any): void {\n    if (option !== this.formControl && !this.disabled) {\n      this.formControl = option;\n      this.onChange(option);\n      this.onTouched();\n    }\n  }\n\n  writeValue(value: any): void {\n    this.formControl = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n}\n","<div>\n  <p *ngIf=\"title !== ''\">{{ title }}</p>\n  <div class=\"toggle-group\" [ngClass]=\"{ disabled: disabled }\">\n    <div\n      class=\"toggle-option\"\n      [class.active]=\"formControl === option.value\"\n      *ngFor=\"let option of options\"\n      (click)=\"selectOption(option.value)\"\n    >\n      {{ option.display }}\n    </div>\n  </div>\n</div>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {FilterModifier} from '../filter-modifier';\nimport {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n  ChartOptions,\n  SelectableOption,\n  SelectedSingleChartOption,\n  SliderWrapper,\n  ToggleSelectedOption,\n} from '../../model/public/modifier-options';\nimport {ChartSelection} from '../../model/private/FilterSelection';\nimport {KeyValue} from '../../../common/KeyValue';\nimport {copyObject} from '../../mapper';\nimport {IconButtonComponent} from '../../../design-system/buttons/icon-button/icon-button.component';\nimport {MatMenu} from '@angular/material/menu';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {SliderComponent} from './slider/slider/slider.component';\nimport {SingleSelectChartComponent} from './single-select-chart/single-select-chart.component';\nimport {ToggleButtonGroupComponent} from '../../../design-system/toggle-button-group/toggle-button-group.component';\nimport {ErrorAndWarningMessagesComponent} from '../error-and-warning-messages/error-and-warning-messages.component';\n\n@Component({\n    selector: 'chart-settings',\n    templateUrl: './chart-settings.component.html',\n    styleUrls: ['./chart-settings.component.scss'],\n    imports: [\n        IconButtonComponent,\n        MatMenu,\n        NgIf,\n        NgFor,\n        MatCheckbox,\n        ReactiveFormsModule,\n        FormsModule,\n        MatTooltip,\n        SliderComponent,\n        SingleSelectChartComponent,\n        ToggleButtonGroupComponent,\n        ErrorAndWarningMessagesComponent,\n    ]\n})\nexport class ChartSettingsComponent<T>\n  extends FilterModifier<T, ChartSelection>\n  implements OnInit\n{\n  @Input()\n  options: ChartOptions<T>;\n\n  @Input()\n  chartValidation: boolean;\n\n  @Output()\n  onChange: EventEmitter<ChartSelection> = new EventEmitter<ChartSelection>();\n\n  selectableOptions: Array<SelectableOption> = [];\n  selectedToggleOptions: Map<string, FormControl<string>> = new Map<\n    string,\n    FormControl<string>\n  >();\n  sliderWrappers: Array<SliderWrapper> = [];\n  singleSelect: SelectedSingleChartOption;\n\n  // Used as apply blocker when applying saved filter.\n  isApplyingSavedFilter: boolean = false;\n\n  ngOnInit(): void {\n    if (this.options.preApplyValidation) {\n      this.validator = { preApplyValidation: this.options.preApplyValidation };\n    }\n    if (this.options.selectableOptions) {\n      this.options.selectableOptions.forEach((option) => {\n        this.selectableOptions.push(copyObject(option));\n      });\n    }\n    this.initToggles();\n    this.initSliders();\n  }\n\n  initToggles() {\n    if (this.options.togglesContainer) {\n      this.options.togglesContainer.toggles.forEach((toggleGroup) => {\n        let formControl = new FormControl<string>(\n          toggleGroup.toggleOptions[0].value\n        );\n        formControl.valueChanges.subscribe((_) => {\n          if (!this.isApplyingSavedFilter) {\n            this.apply();\n          }\n        });\n        this.selectedToggleOptions.set(toggleGroup.id, formControl);\n      });\n    }\n  }\n\n  initSliders() {\n    if (this.options.sliders) {\n      this.options.sliders.forEach((slider) =>\n        this.sliderWrappers.push({ ...slider, control: new FormControl() })\n      );\n    }\n  }\n\n  override onSavedGcpFilterApplied(selection: ChartSelection): void {\n    //TODO Optimize\n    if (selection.selectableOptions) {\n      this.isApplyingSavedFilter = true;\n      let set = new Set<string>(\n        selection.selectableOptions\n          .filter((opt) => opt.selected)\n          .map((opt) => opt.id)\n      );\n      this.selectableOptions.forEach((selectableOption) => {\n        selectableOption.selected = set.has(selectableOption.id);\n      });\n    }\n    if (selection.selectedToggleOptions) {\n      selection.selectedToggleOptions.selectedToggles.forEach(\n        (toggleSelectOption) => {\n          let toggle = this.options.togglesContainer.toggles.find(\n            (toggle) => toggle.id === toggleSelectOption.type\n          );\n          if (toggle) {\n            const selectedOption = toggle.toggleOptions.find(\n              (it) => it.value === toggleSelectOption.mode\n            ).value;\n            this.selectedToggleOptions\n              .get(toggleSelectOption.type)\n              .setValue(selectedOption);\n          }\n        }\n      );\n    }\n    selection.selectedSliderValues.forEach((selectedSliderValue) => {\n      let slider = this.sliderWrappers.find(\n        (slider) => slider.id === selectedSliderValue.id\n      );\n      if (slider) {\n        slider.control.setValue(selectedSliderValue.value);\n      }\n    });\n    if (selection.selectedSingleSelectValues) {\n      this.singleSelect = selection.selectedSingleSelectValues;\n    }\n    this.isApplyingSavedFilter = false;\n  }\n\n  apply() {\n    this.onChange.emit({\n      chartType: this.options.chartType ? this.options.chartType.value : null,\n      selectableOptions: this.selectableOptions ?? null,\n      selectedToggleOptions: this.options.togglesContainer\n        ? {\n            id: this.options.togglesContainer.id,\n            selectedToggles:\n              this.options.togglesContainer.toggles.map<ToggleSelectedOption>(\n                (toggle) => {\n                  const selectedToggleOption = this.selectedToggleOptions.get(\n                    toggle.id\n                  ).value;\n                  return {\n                    type: toggle.id,\n                    mode: selectedToggleOption,\n                  };\n                }\n              ),\n          }\n        : null,\n      selectedSliderValues: this.sliderWrappers.map((sliderWrapper) => {\n        return {\n          id: sliderWrapper.id,\n          value: sliderWrapper.control.value,\n        };\n      }),\n      selectedSingleSelectValues: this.singleSelect ?? null,\n    });\n  }\n\n  setSingleSelectOption(option: KeyValue) {\n    this.singleSelect.item = option;\n    this.apply();\n  }\n}\n","<div class=\"chart-wrapper\">\n  <ui-icon-button [matMenu]=\"extras\" icon=\"apps\" text=\"Chart Settings\" />\n  <mat-menu #extras=\"matMenu\" class=\"menu\">\n    <div (click)=\"$event.stopPropagation()\" class=\"container\">\n      <ng-container *ngIf=\"options.selectableOptions\">\n        <div\n          *ngFor=\"let option of selectableOptions\"\n          (click)=\"$event.stopPropagation()\"\n          class=\"chart-setting\"\n        >\n          <mat-checkbox\n            color=\"accent\"\n            [(ngModel)]=\"option.selected\"\n            (change)=\"apply()\"\n            class=\"py-2\"\n          >\n            {{ option.label }}\n          </mat-checkbox>\n          <i\n            *ngIf=\"option.tooltip\"\n            class=\"material-icons costimize-material-icon info-icon help-material-icon-header\"\n            [matTooltip]=\"option.tooltip\"\n            [matTooltipPosition]=\"option.tooltipPosition || 'after'\"\n            >info</i\n          >\n        </div>\n      </ng-container>\n      <div *ngIf=\"options.sliders\">\n        <slider\n          *ngFor=\"let sliderWrapper of sliderWrappers\"\n          class=\"py-1 pt-1\"\n          [sliderWrapper]=\"sliderWrapper\"\n          (onValueChange)=\"apply()\"\n        />\n      </div>\n      <div *ngIf=\"options.singleSelectOptions\">\n        <lib-single-select-chart\n          [options]=\"options.singleSelectOptions\"\n          [selectedOption]=\"singleSelect?.item\"\n          [valid]=\"chartValidation\"\n          (apply)=\"setSingleSelectOption($event)\"\n        />\n      </div>\n      <div\n        class=\"pb-3 pt-0\"\n        *ngIf=\"this.options.togglesContainer\"\n        (click)=\"$event.stopPropagation()\"\n      >\n        <lib-toggle-button-group\n          *ngFor=\"let toggle of options.togglesContainer.toggles\"\n          [formControl]=\"selectedToggleOptions.get(toggle.id)\"\n          [title]=\"toggle.title\"\n          [options]=\"toggle.toggleOptions\"\n        />\n      </div>\n    </div>\n  </mat-menu>\n</div>\n<lib-error-and-warning-messages\n  [errorMessages]=\"errorMessages\"\n  [warningMessages]=\"warningMessages\"\n/>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {Helpers} from '../helpers/Helpers';\nimport {KeyValueObject} from '../../common/KeyValue';\nimport {NgFor, NgIf} from '@angular/common';\nimport {InputComponent} from '../inputs/ui-input/input.component';\nimport {MenuItemComponent} from '../menu-item/menu-item.component';\n\n@Component({\n    selector: 'menu-window',\n    templateUrl: './menu-window.component.html',\n    styleUrls: ['./menu-window.component.scss'],\n    imports: [\n        NgIf,\n        InputComponent,\n        NgFor,\n        MenuItemComponent,\n    ]\n})\nexport class MenuWindowComponent implements OnInit {\n  @Input()\n  items: Array<KeyValueObject>;\n  @Output()\n  selectOption: EventEmitter<KeyValueObject> = new EventEmitter();\n\n  filteredItems: Array<KeyValueObject>;\n\n  ngOnInit() {\n    this.filterItems('');\n  }\n\n  selectItem = (option: any) => {\n    this.selectOption.emit(option);\n  };\n\n  filterItems = (searchWord: string) => {\n    this.filteredItems = Helpers.filterList(\n      this.items,\n      searchWord,\n      null,\n      (item: KeyValueObject) => {\n        return item.display;\n      }\n    ).map((it) => it.item);\n  };\n}\n","<div class=\"menu-window\">\n  <ui-input\n    *ngIf=\"items\"\n    placeholder=\"Search...\"\n    (inputChange)=\"filterItems($event)\"\n  ></ui-input>\n  <div *ngIf=\"items\" class=\"items-container\">\n    <menu-item\n      *ngFor=\"let option of filteredItems\"\n      [name]=\"option.display\"\n      (click)=\"selectItem(option)\"\n    />\n  </div>\n</div>\n","import {Component, EventEmitter, Input, Output,} from '@angular/core';\nimport {KeyValueObject} from '../../../common/KeyValue';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {NgClass} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\nimport {MenuComponent} from '../../menu/menu.component';\nimport {LazyContentDirective} from '../../menu/lazy-content.directive';\nimport {MenuWindowComponent} from '../../menu-window/menu-window.component';\n\n@Component({\n    selector: 'ui-dropdown-button',\n    templateUrl: './dropdown-button.component.html',\n    styleUrls: ['./dropdown-button.component.scss'],\n    imports: [\n        MatTooltip,\n        NgClass,\n        MatIcon,\n        MenuComponent,\n        LazyContentDirective,\n        MenuWindowComponent,\n    ]\n})\nexport class DropdownButtonComponent {\n  @Input()\n  itemArray: Array<KeyValueObject>;\n  @Input()\n  disableButton: boolean = false;\n  @Input()\n  title: string;\n  @Output()\n  apply: EventEmitter<any> = new EventEmitter();\n\n  showMenu: boolean = false;\n\n  openDialog = () => {\n    this.showMenu = !this.showMenu;\n  };\n\n  closeMenu = () => {\n    this.showMenu = false;\n  }\n\n  selectOption(option: KeyValueObject): void {\n    this.closeMenu()\n    this.title = option.display;\n    this.apply.emit(option.value);\n  }\n}\n","<button\n  class=\"outlined-button\"\n  [matTooltip]=\"title.length > 46 ? title : undefined\"\n  matTooltipPosition=\"after\"\n  (click)=\"!disableButton ? openDialog() : null\"\n>\n  <div [ngClass]=\"{ 'saved-filter-title': title.length > 46 }\">{{ title }}</div>\n  <mat-icon class=\"arrow\">arrow_drop_down</mat-icon>\n</button>\n<lib-menu [excludeButton]=\"'.outlined-button'\" [menuOpen]=\"showMenu\" (clickedOutside)=\"closeMenu()\">\n  <menu-window\n    *lazyContent\n    [items]=\"itemArray\"\n    (selectOption)=\"selectOption($event)\"\n  />\n</lib-menu>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {ButtonStyle} from \"../../../generic-table/models/ButtonStyles\";\nimport {NgClass, NgIf} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\n\n@Component({\n    selector: 'ui-flat-icon-button',\n    templateUrl: './flat-icon-button.component.html',\n    styleUrls: ['./flat-icon-button.component.scss'],\n    imports: [NgIf, MatIcon, NgClass, MatProgressSpinner]\n})\nexport class FlatIconButtonComponent {\n\n  @Input()\n  icon: string;\n\n  @Input()\n  loading?: boolean = false;\n\n  @Input()\n  disabled?: boolean = false;\n\n  @Input()\n  background: ButtonStyle;\n\n  @Output()\n  clicked: EventEmitter<any> = new EventEmitter<any>;\n\n}\n","<mat-icon *ngIf=\"!loading\" [ngClass]=\"{'disabled-flat-button': disabled, 'icon-flat-button': true}\" [class]=\"background\" (click)=\"clicked.emit()\">{{icon}}</mat-icon>\n<div *ngIf=\"loading\" class=\"vertical-align justify-content-center spinner-width\">\n  <mat-spinner class=\"bottom-aligned spinner-color\" [diameter]=\"25\"></mat-spinner>\n</div>\n\n\n","import {Component, EventEmitter, Input, OnChanges, OnInit, Output} from '@angular/core';\nimport {SavedGcpFilter} from '../../../filter/model/public/gcp-filter-options';\nimport {Observable} from 'rxjs';\nimport {KeyValueObject} from '../../../common/KeyValue';\nimport {DropdownButtonComponent} from '../saved-filter-button/dropdown-button.component';\nimport {NgClass, NgIf} from '@angular/common';\nimport {FlatIconButtonComponent} from '../flat-icon-button/flat-icon-button.component';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'saved-filter-container',\n    templateUrl: './saved-filter-container.component.html',\n    styleUrls: ['./saved-filter-container.component.scss'],\n    imports: [\n        DropdownButtonComponent,\n        NgIf,\n        FlatIconButtonComponent,\n        MatTooltip,\n        NgClass,\n    ]\n})\nexport class SavedFilterContainerComponent implements OnInit, OnChanges {\n  @Input()\n  savedFilters: Array<SavedGcpFilter<any>>;\n  @Input()\n  activeFilter: SavedGcpFilter<any>;\n  @Input()\n  setFilterAsDefault: (filter: SavedGcpFilter<any>) => Observable<any>;\n  @Input()\n  deleteFilter: (id: number) => Observable<any>;\n  @Output()\n  resetFilter: EventEmitter<void> = new EventEmitter();\n  @Output()\n  applySavedFilter: EventEmitter<SavedGcpFilter<any>> = new EventEmitter();\n\n  itemsArray: Array<KeyValueObject>;\n  buttonDisabled: boolean = false;\n\n  ngOnInit() {\n    this.resetFilterCheckTitle();\n  }\n\n  ngOnChanges() {\n    this.itemsArray = this.savedFilters.map((it) => {\n      return new KeyValueObject(it, it.name);\n    });\n  }\n\n  resetFilterCheckTitle = () => {\n    if (!this.activeFilter) {\n      this.activeFilter = {\n        id: null,\n        filter: null,\n        default: false,\n        name: 'New Filter',\n      };\n    }\n    if (this.savedFilters.length === 0) {\n      this.activeFilter.name = 'No Saved Filters';\n      this.buttonDisabled = true;\n    } else {\n      this.activeFilter.name = 'New Filter';\n    }\n  };\n\n  deleteSavedFilter = () => {\n    this.deleteFilter(this.activeFilter.id).subscribe(() => {\n      this.savedFilters.splice(\n        this.savedFilters.findIndex((it) => it.id === this.activeFilter.id),\n        1\n      );\n    });\n    if (this.savedFilters.length === 0) {\n      this.activeFilter.name = 'No Saved Filters';\n      this.buttonDisabled = true;\n    }\n    this.resetFilter.emit();\n  };\n\n  setDefaultFilter() {\n    this.setFilterAsDefault(this.activeFilter).subscribe(() => {\n      let defaultFilter = this.savedFilters.find((filter) => filter.default);\n      if (defaultFilter) {\n        defaultFilter.default = false;\n      }\n      this.activeFilter.default = true;\n    });\n  }\n\n  applyFilter = (filter: SavedGcpFilter<any>) => {\n    this.activeFilter = filter;\n    this.applySavedFilter.emit(filter);\n  };\n\n  getFilterName = () => {\n    if (!this.activeFilter) {\n      this.resetFilterCheckTitle();\n    }\n    return this.activeFilter.name;\n  };\n}\n","<div class=\"saved-filters-container\">\n  <ui-dropdown-button\n    [title]=\"getFilterName()\"\n    [itemArray]=\"itemsArray\"\n    [disableButton]=\"buttonDisabled\"\n    (apply)=\"applyFilter($event)\"\n  />\n  <ng-container *ngIf=\"!buttonDisabled && activeFilter.id\">\n    <ui-flat-icon-button\n      *ngIf=\"!activeFilter.default\"\n      [matTooltip]=\"'Delete saved filter'\"\n      (click)=\"deleteSavedFilter()\"\n      class=\"delete-style\"\n      icon=\"delete\"\n    />\n    <div\n      class=\"star\"\n      [matTooltip]=\"activeFilter.default ? 'Default Filter' : 'Set as default'\"\n      [ngClass]=\"{ 'full-star': activeFilter.default }\"\n      (click)=\"setDefaultFilter()\"\n    >\n      <span class=\"align-star\">\n        {{ activeFilter.default ? \"&starf;\" : \"&star;\" }}\n      </span>\n    </div>\n  </ng-container>\n</div>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'line',\n    templateUrl: './line.component.html',\n    styleUrls: ['./line.component.scss'],\n    standalone: true\n})\nexport class LineComponent {\n\n}\n","<div class=\"line\"></div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {DisabledStatus} from '../../../filter/model/public/gcp-filter-options';\nimport {NgClass} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'ui-primary-button',\n    templateUrl: './primary-button.component.html',\n    styleUrls: ['./primary-button.component.scss'],\n    imports: [NgClass, MatTooltip]\n})\nexport class PrimaryButtonComponent {\n  @Input()\n  noBackground: boolean;\n  @Input()\n  status: DisabledStatus;\n  @Input()\n  isValid: boolean;\n  @Output()\n  buttonClicked: EventEmitter<void> = new EventEmitter<void>();\n\n  onButtonClick() {\n    this.buttonClicked.emit();\n  }\n}\n","<button\n  class=\"ui-primary-button\"\n  [ngClass]=\"{\n    'no-background': noBackground,\n    disable: (status && status.disabled) || !isValid\n  }\"\n  aria-label=\"Primary button\"\n  (click)=\"onButtonClick()\"\n  matTooltip=\"{{\n    (status && status.disabled) || !isValid ? status && status.tooltip : null\n  }}\"\n>\n  <span class=\"ui-primary-button__text\"><ng-content></ng-content></span>\n</button>\n","import {AfterViewInit, ChangeDetectorRef, Component, Input, OnInit, ViewChild,} from '@angular/core';\nimport {MatSnackBar} from '@angular/material/snack-bar';\nimport {Clipboard} from '@angular/cdk/clipboard';\nimport {GcpFilterOptions, SavedGcpFilter,} from './model/public/gcp-filter-options';\nimport {Period, ToggleSelectedOption} from './model/public/modifier-options';\nimport {FilterSelectorComponent} from './modifiers/filter-selector/filter-selector.component';\nimport {GroupingComponent} from './modifiers/grouping/grouping.component';\nimport {PeriodSelectorComponent} from './modifiers/period-selector/period-selector.component';\nimport {MatDialog} from '@angular/material/dialog';\nimport {SaveFilterDialogComponent} from './save-filter-dialog/save-filter-dialog.component';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {FormControl} from '@angular/forms';\nimport {ChartSettingsComponent} from './modifiers/chart-settings/chart-settings.component';\nimport {\n  copyObject,\n  getOutputObjectWithoutID,\n  mapChartToObject,\n  mapObjectToChartSelection,\n  validateMappings,\n} from './mapper';\nimport {debounceTime} from 'rxjs';\nimport {\n  SavedFilterContainerComponent\n} from '../design-system/buttons/saved-filter-container/saved-filter-container.component';\nimport {ChartSelection} from './model/private/FilterSelection';\nimport {NgClass, NgIf} from '@angular/common';\nimport {LineComponent} from '../design-system/basic-elements/line/line.component';\nimport {FlatIconButtonComponent} from '../design-system/buttons/flat-icon-button/flat-icon-button.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger,} from '@angular/material/menu';\nimport {PrimaryButtonComponent} from '../design-system/buttons/primary-button/primary-button.component';\n\n/**\n * This is the main Filter component. It holds all the common functionalities.\n */\n@Component({\n  selector: 'ui-filter',\n  templateUrl: './filter.component.html',\n  styleUrls: ['./filter.component.scss'],\n  imports: [\n    NgIf,\n    SavedFilterContainerComponent,\n    LineComponent,\n    NgClass,\n    PeriodSelectorComponent,\n    FilterSelectorComponent,\n    GroupingComponent,\n    ChartSettingsComponent,\n    FlatIconButtonComponent,\n    MatTooltip,\n    MatMenu,\n    MatMenuContent,\n    MatMenuItem,\n    MatMenuTrigger,\n    PrimaryButtonComponent,\n  ],\n})\nexport class FilterComponent<T> implements AfterViewInit, OnInit {\n  @Input()\n  options: GcpFilterOptions<T>;\n\n  @ViewChild('UIFilterSelectorComponent')\n  filterSelectorComponent: FilterSelectorComponent<T>;\n\n  @ViewChild('groupingComponent')\n  groupingComponent: GroupingComponent<T>;\n\n  @ViewChild('UIPeriodSelectorComponent')\n  periodSelectorComponent: PeriodSelectorComponent<T>;\n\n  @ViewChild('chartComponent')\n  chartComponent: ChartSettingsComponent<T>;\n\n  @ViewChild(SavedFilterContainerComponent)\n  savedFilterComponent: SavedFilterContainerComponent;\n\n  gcpFilterFromURL: string;\n\n  initialOutputObject: T;\n  initialOutputObjectPeriod: Period;\n  outputObject: FormControl<any>;\n  disableFilterFunctions: boolean = false;\n  chartValidation: boolean = true;\n  activeSavedFilterId: number;\n\n  savedPeriodSelection: any;\n  savedFilterSelection: any;\n  savedGroupingSelection: any;\n\n  recursiveBreaker: boolean = false;\n\n  constructor(\n    private clipboard: Clipboard,\n    private snackBar: MatSnackBar,\n    private dialog: MatDialog,\n    private activatedRoute: ActivatedRoute,\n    private router: Router,\n    private cd: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.initialOutputObjectPeriod =\n      this.options.modifiers.outputObject[\n        this.options.modifiers.periodOptions?.id\n      ];\n  }\n\n  ngAfterViewInit(): void {\n    this.initialOutputObject = copyObject(this.options.modifiers.outputObject);\n    this.outputObject = new FormControl();\n    this.outputObject.setValue(this.options.modifiers.outputObject);\n\n    this.outputObject.valueChanges\n      .pipe(debounceTime(400))\n      .subscribe((outputObject) => {\n        if (!this.options.skipURL) {\n          this.updateURL(outputObject);\n        }\n        this.apply();\n      });\n\n    this.outputObject.valueChanges.subscribe(() => {\n      this.validateSelection(this.outputObject.value);\n    });\n\n    if (\n      this.options.modifiers.chartOptions &&\n      this.options.modifiers.chartOptions.chartType\n    ) {\n      this.options.modifiers.chartOptions.chartType.valueChanges.subscribe(\n        (type) => {\n          this.outputObject.setValue(\n            {\n              ...this.outputObject.value,\n              chartType: type,\n            },\n            { emitEvent: false }\n          );\n          if (!this.options.skipURL) {\n            this.updateURL(this.outputObject.value);\n          }\n        }\n      );\n    }\n\n    this.gcpFilterFromURL =\n      this.activatedRoute.snapshot.queryParamMap.get('gcp-filter');\n\n    if (this.gcpFilterFromURL && !this.options.skipURL) {\n      this.applySavedFilter({ filter: JSON.parse(this.gcpFilterFromURL) });\n    } else if (this.options.filterForEdit) {\n      this.applySavedFilter(this.options.filterForEdit);\n    } else {\n      let defaultFilter = this.options.savedFilters.find(\n        (filter) => filter.default\n      );\n      if (defaultFilter) {\n        this.activeSavedFilterId = defaultFilter.id;\n        this.applySavedFilter(defaultFilter);\n      } else {\n        this.applySavedFilter({ id: null, filter: this.outputObject.value });\n      }\n    }\n\n    this.cd.detectChanges();\n  }\n\n  resetFilter() {\n    this.recursiveBreaker = false;\n    const defaultFilter = this.options.savedFilters.find(\n      (filter) => filter.default\n    );\n    if (defaultFilter) {\n      this.activeSavedFilterId = defaultFilter.id;\n    }\n    this.applySavedFilter(\n      defaultFilter\n        ? copyObject(defaultFilter)\n        : copyObject({ id: null, filter: this.initialOutputObject })\n    );\n  }\n\n  saveFilter() {\n    this.dialog\n      .open(SaveFilterDialogComponent, {\n        data: {\n          saveFilter: this.options.saveFilter,\n          filter: copyObject(this.outputObject.value),\n        },\n      })\n      .afterClosed()\n      .subscribe((filter: SavedGcpFilter<any>) => {\n        if (filter) {\n          this.snackBar.open('Filter saved!', 'Close', {\n            duration: 2000,\n            verticalPosition: 'bottom',\n            horizontalPosition: 'center',\n          });\n          this.options.savedFilters.push(filter);\n          if (this.options.savedFiltersMode) {\n            const outputObjectWithID = copyObject(this.outputObject.value);\n            outputObjectWithID.id = filter.id;\n            this.outputObject.setValue(outputObjectWithID);\n          }\n          this.activeSavedFilterId = filter.id;\n        }\n      });\n  }\n\n  exportWidget() {\n    this.options.exportWidget();\n  }\n\n  createIssue() {\n    this.options.createIssue();\n  }\n\n  copyUrlToClipboard() {\n    this.clipboard.copy(window.location.href);\n    this.snackBar.open('Copied to clipboard!', 'Close', {\n      duration: 2000,\n      verticalPosition: 'top',\n      horizontalPosition: 'center',\n    });\n  }\n\n  setOutputObject = (object: T) => {\n    this.activeSavedFilterId = null;\n    this.outputObject.setValue(object);\n  };\n\n  onChartSettingsChanged(chartSelection: ChartSelection) {\n    this.outputObject.setValue(\n      mapChartToObject(\n        getOutputObjectWithoutID(this.outputObject.value),\n        chartSelection\n      )\n    );\n  }\n\n  apply() {\n    this.checkChartValidation();\n    if (this.validateSelection(this.outputObject.value)) {\n      // Deep copy needed to break references between screen fitler and inside filter\n      this.options.onApply(copyObject(this.outputObject.value));\n      if (!this.activeSavedFilterId && !this.options.disableSavedFilters) {\n        this.savedFilterComponent.resetFilterCheckTitle();\n      }\n      this.disableFilterFunctions = false;\n    } else {\n      this.disableFilterFunctions = true;\n    }\n  }\n\n  validateSelection(selection: T): boolean {\n    let isFilterValid = true;\n    let isGroupingValid = true;\n    let isPeriodValid = true;\n    let isChartSettingsValid = true;\n\n    //TODO - Check validation when selection will be T\n    if (this.filterSelectorComponent) {\n      isFilterValid = this.filterSelectorComponent.isValid(selection);\n    }\n\n    if (this.groupingComponent) {\n      isGroupingValid = this.groupingComponent.isValid(selection);\n    }\n\n    if (this.periodSelectorComponent) {\n      isPeriodValid = this.periodSelectorComponent.isValid(selection);\n    }\n\n    if (this.chartComponent) {\n      isChartSettingsValid = this.chartComponent.isValid(selection);\n    }\n\n    return (\n      isFilterValid && isGroupingValid && isPeriodValid && isChartSettingsValid\n    );\n  }\n\n  /**\n   * Loading the state of a saved filter.\n   *\n   * @param savedFilter The selection to be applied.\n   */\n  applySavedFilter(savedFilter: any) {\n    try {\n      validateMappings(savedFilter.filter, this.options.modifiers);\n      this.savedFilterSelection = savedFilter.filter;\n\n      if (this.options.modifiers.groupingOptions) {\n        this.savedGroupingSelection = savedFilter.filter;\n      }\n\n      if (this.options.modifiers.periodOptions) {\n        this.savedPeriodSelection = savedFilter.filter;\n      }\n\n      if (this.options.modifiers.chartOptions) {\n        let chartSelection = mapObjectToChartSelection(\n          savedFilter.filter,\n          this.options.modifiers.chartOptions\n        );\n        this.chartComponent.onSavedGcpFilterApplied(chartSelection);\n        if (this.options.modifiers.chartOptions.chartType) {\n          this.options.modifiers.chartOptions.chartType.setValue(\n            chartSelection.chartType\n          );\n        }\n        if (chartSelection.selectedToggleOptions) {\n          let arrayOfToggleContainerSelections: ToggleSelectedOption[] =\n            chartSelection.selectedToggleOptions.selectedToggles;\n          // Check for properties outside togglesContainer (creditOptions)\n          chartSelection.selectedToggleOptions.selectedToggles.forEach(\n            (toggle, index) => {\n              if (savedFilter.filter[toggle.type]) {\n                arrayOfToggleContainerSelections.splice(index, 1);\n                savedFilter.filter[\n                  this.options.modifiers.chartOptions.togglesContainer.id\n                ] = arrayOfToggleContainerSelections;\n              }\n            }\n          );\n        }\n\n        if (\n          this.options.modifiers.chartOptions.togglesContainer &&\n          !savedFilter.filter[\n            this.options.modifiers.chartOptions.togglesContainer.id\n          ]\n        ) {\n          savedFilter.filter[\n            this.options.modifiers.chartOptions.togglesContainer.id\n          ] = chartSelection.selectedToggleOptions.selectedToggles;\n        }\n      }\n\n      this.activeSavedFilterId = savedFilter.id;\n      this.outputObject.setValue({ id: savedFilter.id, ...savedFilter.filter });\n    } catch (error) {\n      // Error caught using default filter as fallback if it exists\n      console.error(error);\n      if (!this.recursiveBreaker) {\n        this.recursiveBreaker = true;\n        const defaultFilter = this.options.savedFilters.find(\n          (filter) => filter.default\n        );\n        if (defaultFilter) {\n          this.activeSavedFilterId = defaultFilter.id;\n          this.applySavedFilter(defaultFilter);\n        } else {\n          this.applySavedFilter({ id: null, filter: this.outputObject.value });\n        }\n      } else {\n        console.error(\"Recursive error breaker. Check if default filter is correct.\")\n      }\n    }\n  }\n\n  applySavedFilterWithBreakerReset = (savedFilter: any) => {\n    this.recursiveBreaker = false;\n    this.applySavedFilter(savedFilter);\n  }\n\n  /**\n   * Updating the URL query params to match the latest state of the filter.\n   */\n  updateURL(outputObject: any) {\n    let newParams = {\n      ...this.activatedRoute.snapshot.queryParams,\n      'gcp-filter': JSON.stringify(outputObject),\n    };\n    this.router.navigate([], {\n      relativeTo: this.activatedRoute,\n      queryParams: newParams,\n    });\n  }\n\n  deleteSavedFilter = (id: number) => {\n    return this.options.deleteFilter(id);\n  };\n\n  saveWidget() {\n    this.options.saveWidget();\n  }\n\n  checkChartValidation() {\n    if (\n      this.options.modifiers.chartOptions &&\n      this.options.modifiers.chartOptions.singleSelectOptions\n    ) {\n      this.options.modifiers.chartOptions.singleSelectOptions.items.forEach(\n        (it) => {\n          if (it.validation) {\n            this.chartValidation = it.validation(this.outputObject.value);\n          }\n        }\n      );\n    }\n  }\n\n  getSavedFilterByActiveId = () => {\n    return this.options.savedFilters.find(\n      (it) => it.id === this.activeSavedFilterId\n    );\n  };\n}\n","<div id=\"gcp-filter\">\n  <saved-filter-container\n    *ngIf=\"!options.disableSavedFilters\"\n    [activeFilter]=\"getSavedFilterByActiveId()\"\n    [savedFilters]=\"options.savedFilters\"\n    [setFilterAsDefault]=\"options.setFilterAsDefault\"\n    [deleteFilter]=\"deleteSavedFilter\"\n    (resetFilter)=\"resetFilter()\"\n    (applySavedFilter)=\"applySavedFilterWithBreakerReset($event)\"\n  />\n  <line />\n  <div\n    [ngClass]=\"options.disableSavedFilters ? '' : 'distance-to-saved-filters'\"\n    class=\"row filter-options\"\n  >\n    <div class=\"col-6\">\n      <div class=\"row flex-nowrap\">\n        <ui-period-selector\n          class=\"distance-to-filter\"\n          *ngIf=\"options.modifiers.periodOptions\"\n          [options]=\"options.modifiers.periodOptions\"\n          [outputObject]=\"outputObject?.value\"\n          [savedFilter]=\"savedPeriodSelection\"\n          [datePipe]=\"options.datePipe\"\n          [initialPeriod]=\"initialOutputObjectPeriod\"\n          (applyPeriod)=\"setOutputObject($event)\"\n          #UIPeriodSelectorComponent\n        />\n        <ui-filter-selector\n          class=\"filter-margin\"\n          *ngIf=\"options.modifiers.filterOptions\"\n          [options]=\"options.modifiers.filterOptions\"\n          [outputObject]=\"outputObject?.value\"\n          [savedFilter]=\"savedFilterSelection\"\n          [enrolledClouds]=\"options.enrolledClouds\"\n          (applyFilter)=\"setOutputObject($event)\"\n          #UIFilterSelectorComponent\n        />\n      </div>\n    </div>\n    <div class=\"col p-0\">\n      <div class=\"row m-0 justify-content-end\">\n        <lib-grouping\n          class=\"col p-0\"\n          *ngIf=\"options.modifiers.groupingOptions\"\n          [options]=\"options.modifiers.groupingOptions\"\n          [outputObject]=\"outputObject?.value\"\n          [savedFilter]=\"savedGroupingSelection\"\n          (applyGrouping)=\"setOutputObject($event)\"\n          #groupingComponent\n        />\n        <chart-settings\n          class=\"col p-0 flex-grow-0\"\n          *ngIf=\"options.modifiers.chartOptions\"\n          [options]=\"options.modifiers.chartOptions\"\n          [chartValidation]=\"chartValidation\"\n          (onChange)=\"onChartSettingsChanged($event)\"\n          #chartComponent\n        />\n      </div>\n    </div>\n  </div>\n  <div class=\"justify-content-end buttons-wrap\">\n    <ng-container\n      *ngIf=\"\n        !this.options.filterForEdit &&\n        !this.options.savedFiltersMode &&\n        !this.options.disableActionButtons\n      \"\n    >\n      <ui-flat-icon-button\n        matTooltip=\"Save filter\"\n        *ngIf=\"!options.disableSavedFilters && !activeSavedFilterId\"\n        (clicked)=\"saveFilter()\"\n        icon=\"save\"\n        [ngClass]=\"{ disable: disableFilterFunctions }\"\n      />\n      <ui-flat-icon-button\n        matTooltip=\"Reset Filter\"\n        (clicked)=\"resetFilter()\"\n        icon=\"refresh\"\n      />\n      <ui-flat-icon-button\n        matTooltip=\"Share Filter\"\n        (clicked)=\"copyUrlToClipboard()\"\n        icon=\"share\"\n      />\n      <mat-menu #extras=\"matMenu\">\n        <ng-template matMenuContent>\n          <button\n            mat-menu-item\n            (click)=\"exportWidget()\"\n            *ngIf=\"options.exportWidget\"\n            [disabled]=\"disableFilterFunctions\"\n          >\n            Export widget\n          </button>\n          <button\n            mat-menu-item\n            [disabled]=\"!options.canCreateIssue\"\n            (click)=\"createIssue()\"\n          >\n            Create an issue\n          </button>\n        </ng-template>\n      </mat-menu>\n      <ui-flat-icon-button\n        [matMenuTriggerFor]=\"extras\"\n        icon=\"more_vert\"\n      ></ui-flat-icon-button>\n    </ng-container>\n    <ng-container\n      *ngIf=\"this.options.filterForEdit || this.options.savedFiltersMode\"\n    >\n      <ui-primary-button\n        class=\"mb-2\"\n        (buttonClicked)=\"\n          this.options.filterForEdit\n            ? saveWidget()\n            : this.options.savedFiltersMode\n            ? saveFilter()\n            : null\n        \"\n        [status]=\"options.disableEdit\"\n        [isValid]=\"!disableFilterFunctions\"\n      >\n        Save\n      </ui-primary-button>\n    </ng-container>\n  </div>\n</div>\n","import {Column} from \"../edit-table-menu/models/Column\";\nimport {CostimizeSortDirection, Sort} from \"./PageSort\";\n\nexport class TableConfigData{\n  tableId: string;\n  configColumns: Column[];\n  allColumns: Column[];\n  defaultSort: Sort | null;\n  dynamicColumns: string[] | null;\n  handleCaseDisabledColumns: (configColumns: Column[]) => Column[] | null;\n\n\n  constructor(tableId: string,\n              configColumns: Column[],\n              allColumns: Column[],\n              defaultSort: Sort | null = null,\n              dynamicColumns: string[] | null = null,\n              handleCaseDisabledColumns: (configColumns: Column[]) => Column[] | null = null) {\n    this.tableId = tableId;\n    this.configColumns = configColumns;\n    this.allColumns = allColumns;\n    this.defaultSort = defaultSort;\n    this.dynamicColumns = dynamicColumns;\n    this.handleCaseDisabledColumns = handleCaseDisabledColumns;\n  }\n}\n","\nexport class PageSort {\n  page: Page;\n  sort: Sort;\n  table: string\n\n  public static DEFAULT_PAGE_INDEX = 0;\n  public static DEFAULT_PAGE_SIZE  = 10;\n\n  constructor(page?: Page, sort?: Sort, table?: string) {\n    this.page = page;\n    this.sort = sort;\n    this.table = table;\n  }\n\n}\n\nexport class Page {\n  constructor(public size: number, public index: number) {\n\n  }\n\n  toUrl() {\n    return `page.size=${this.size}&page.index=${this.index}`;\n  }\n}\n\nexport class Sort {\n\n  constructor(\n    public column: string,\n    public direction: CostimizeSortDirection) {\n  }\n\n  toUrl() {\n    return `column=${this.column}&direction=${this.direction}`;\n  }\n\n  toUrlWithSort() {\n    return `sort.column=${this.column}&sort.direction=${this.direction}`;\n  }\n\n  static areSortsEqual(firstSort: Sort, secondSort: Sort): boolean {\n    return (firstSort.column == secondSort.column) && (firstSort.direction == secondSort.direction)\n  }\n}\n\nexport enum CostimizeSortDirection {\n  ASC = 'ASC', DESC = 'DESC'\n}\n","import {CellValue} from \"./CellValue\";\nimport {TableAction} from \"./TableAction\";\nimport {Icon} from \"./Icon\";\n\nexport class Row {\n  id: number | string;\n  rowCellValues: Map<string, CellValue>;\n  primaryAction: TableAction;\n  secondaryActions: TableAction[] = [];\n  icons: Icon[]\n\n  constructor(id: number | string, rowCellValues: Map<string, CellValue>, primaryAction: TableAction | null = null , secondaryActions: TableAction[] = [], icons: Icon[] = []) {\n    this.id = id;\n    this.rowCellValues = rowCellValues;\n    this.primaryAction = primaryAction;\n    this.secondaryActions = secondaryActions;\n    this.icons = icons;\n  }\n}\n","import {ColumnGenTable} from \"./ColumnGenTable\";\nimport {Row} from \"./Row\";\nimport {Column} from \"../edit-table-menu/models/Column\";\n\nexport class RowColData {\n  columns: ColumnGenTable[];\n  rows: Row[];\n  allDataCount: number;\n\n  constructor(columns: ColumnGenTable[], rows: Row[], allDataCount: number | null = null) {\n    this.columns = columns;\n    this.rows = rows;\n    this.allDataCount = allDataCount;\n  }\n}\n","import {Observable} from \"rxjs\";\n\nexport class TableAction {\n  icon: string;\n  action: () =>  Observable<any>;\n  name: string | null;\n  disabled: boolean;\n  disabledTooltip: string | null;\n\n  constructor(icon: string, action: () => Observable<any>, name: string = null, disabled: boolean = false, disabledTooltip: string = null) {\n    this.icon = icon;\n    this.action = action;\n    this.name = name;\n    this.disabled = disabled;\n    this.disabledTooltip = disabledTooltip;\n  }\n}\n","export enum CellTextAlignment {\n  Right = 'text-right',\n  Center = 'text-center',\n  Left = 'text-left'\n}\n","import {Icon} from \"./Icon\";\nimport {TableAction} from \"./TableAction\";\n\nexport class CellValue {\n  displayValue: string | string[];\n  sortingValue: any;\n  color: string | null;\n  action: TableAction | null;\n  icon: Icon | null;\n  ableToCopy: boolean;\n  style: 'chip' | null = null;\n\n  constructor(displayValue: string | string[], sortingValue: any, color: string | null = null, action?: TableAction, icon?: Icon, ableToCopy: boolean = false) {\n    this.displayValue = displayValue;\n    this.sortingValue = sortingValue;\n    this.color = color;\n    this.action = action;\n    this.icon = icon;\n    this.ableToCopy = ableToCopy;\n  }\n\n  setStyle(style: 'chip' | null): void {\n    this.style = style;\n  }\n}\n","import {ColumnSizeEnum} from \"./ColumnSizeEnum\";\nimport {CellTextAlignment} from \"./CellTextAlignment\";\n\nexport class ColumnGenTable {\n  id: string;\n  displayName: string;\n  tooltip: string;\n  sortable: boolean;\n  size: ColumnSizeEnum;\n  textAlignment:  CellTextAlignment;\n\n  constructor(id: string, displayName: string, tooltip: string, sortable: boolean, size: ColumnSizeEnum | null = null, textAlignment: CellTextAlignment | null = null) {\n    this.id = id;\n    this.displayName = displayName;\n    this.tooltip = tooltip;\n    this.sortable = sortable;\n    this.size = size;\n    this.textAlignment = textAlignment;\n  }\n\n}\n","export enum ColumnSizeEnum {\n  Small = 'small-column',\n  Medium = 'medium-column',\n  Large = 'large-column',\n  ExtraLarge = 'extra-large-column'\n}\n","export class Icon {\n  name: string;\n  tooltip: string;\n  colour: string;\n\n  constructor(name: string, tooltip: string, colour: string) {\n    this.name = name;\n    this.tooltip = tooltip;\n    this.colour = colour;\n  }\n}\n","export class Column {\n  name: string;\n  displayToggle: boolean;\n  displayName: string;\n  tooltip: string;\n  disabled: boolean;\n\n  constructor(name: string, displayToggle: boolean = true, tooltip: string | null = \"\", disabled: boolean | null = false, displayName: string) {\n    this.name = name;\n    this.displayName = displayName;\n    this.displayToggle = displayToggle;\n    this.tooltip = tooltip;\n    this.disabled = disabled;\n  }\n}\n","import {Column} from \"./Column\";\n\nexport class TableConfig {\n  tableId: string;\n  columns: Column[];\n}\n","import {Column} from \"./Column\";\n\nexport class ConfigAndDisplayColumns {\n  configColumns: Column[];\n  displayedColumns: string[]\n\n  constructor(configColumns: Column[], displayedColumns: string[]) {\n    this.configColumns = configColumns;\n    this.displayedColumns = displayedColumns;\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {NgIf} from '@angular/common';\n\n@Component({\n    selector: 'ui-card',\n    templateUrl: './card.component.html',\n    styleUrls: ['./card.component.scss'],\n    imports: [NgIf]\n})\nexport class CardComponent {\n  @Input() title: string | null;\n}\n","<div *ngIf=\"title\" class=\"ui__card-title\">{{ title }}</div>\n<div class=\"ui__card-content\">\n  <ng-content></ng-content>\n</div>\n\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-card-subtitle',\n    templateUrl: './card-subtitle.component.html',\n    styleUrls: ['./card-subtitle.component.scss'],\n    standalone: true\n})\nexport class CardSubtitleComponent {\n\n}\n","<h4 class=\"ui__card-subtitle\">\n  <ng-content></ng-content>\n</h4>\n","import {Component, EventEmitter, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {Column} from \"../models/Column\";\nimport {CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray} from \"@angular/cdk/drag-drop\";\nimport {\n  AbstractControl,\n  FormArray,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  ReactiveFormsModule,\n  ValidationErrors,\n  ValidatorFn\n} from \"@angular/forms\";\nimport {Subscription} from \"rxjs\";\nimport {CardComponent} from '../../../design-system/card/card.component';\nimport {CardSubtitleComponent} from '../../../design-system/card/card-subtitle/card-subtitle.component';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {MatListOption, MatSelectionList} from '@angular/material/list';\nimport {NgFor, NgIf} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {MatIcon} from '@angular/material/icon';\nimport {MatError} from '@angular/material/form-field';\nimport {MatButton} from '@angular/material/button';\n\n\n@Component({\n    selector: 'table-config-dialog',\n    templateUrl: './table-config-dialog.component.html',\n    styleUrls: ['./table-config-dialog.component.scss'],\n    imports: [\n        ReactiveFormsModule,\n        CardComponent,\n        CardSubtitleComponent,\n        MatCheckbox,\n        MatSelectionList,\n        CdkDropList,\n        NgFor,\n        MatListOption,\n        CdkDrag,\n        MatTooltip,\n        MatIcon,\n        NgIf,\n        MatError,\n        MatButton,\n    ]\n})\n\nexport class TableConfigDialogComponent implements OnInit, OnDestroy {\n\n  @Input() configColumns: Column[];\n  @Output() configColumnsEmitter: EventEmitter<Column[]> = new EventEmitter<Column[]>();\n  @Output() closeMenuEvent: EventEmitter<any> = new EventEmitter<any>;\n\n\n  columnsConfigFormGroup: FormGroup;\n  newColumns: FormArray<FormGroup>;\n  isIndeterminate: boolean = false;\n  allSelected: FormControl;\n  selectAllToggleLabel: string = '';\n  allSelectedChangeSubscription: Subscription;\n  itemDraggingInProgress: boolean = false;\n  itemManuallyDisabledOnDragStart: boolean = false;\n\n\n  constructor(private fb: FormBuilder) {\n    this.columnsConfigFormGroup = this.fb.group({\n      allSelected: this.fb.control(false),\n      newColumns: this.fb.array<FormControl<Column>>([], [this.allDisplayTogglesFalseValidator()])\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.allSelectedChangeSubscription?.unsubscribe();\n  }\n\n  ngOnInit(): void {\n    this.newColumns = this.columnsConfigFormGroup.get('newColumns') as FormArray\n    this.allSelected = this.columnsConfigFormGroup.get('allSelected') as FormControl\n\n    this.configColumns.forEach(column => {\n      this.newColumns.push(this.fb.group({\n        name: column.name,\n        displayName: column.displayName,\n        displayToggle: column.displayToggle,\n        disabled: column.disabled,\n        tooltip: column.tooltip\n      }));\n    });\n    this.updateAllSelectToggle()\n\n    this.allSelectedChangeSubscription = this.allSelected.valueChanges.subscribe(it => {\n      this.newColumns.value.forEach((config: Column) => config.displayToggle = it);\n      this.isIndeterminate = false;\n      this.newColumns.updateValueAndValidity();\n    })\n  }\n\n\n  parseSelectedColumns(): string {\n    const checkedCols: number = this.newColumns.value.filter((config: Column) => config.displayToggle).length;\n    switch (checkedCols) {\n      case 0:\n        return 'Select all';\n      case this.newColumns.value.length:\n        return 'All ' + this.newColumns.value.length + ' selected';\n      default:\n        return (checkedCols + ' of ' + this.newColumns.value.length + ' selected');\n    }\n  }\n\n  drop(item: CdkDragDrop<string[]>): void {\n    moveItemInArray(this.newColumns.controls, item.previousIndex, item.currentIndex);\n    this.newColumns.updateValueAndValidity();\n  }\n\n  closeMenu(): void {\n    this.closeMenuEvent.emit();\n  }\n\n  saveConfigColumns(): void {\n    this.configColumns = Array.from(this.newColumns.value);\n    if (this.columnsConfigFormGroup.valid) {\n      this.configColumnsEmitter.emit(this.newColumns.value);\n      this.closeMenuEvent.emit();\n    }\n  }\n\n  updateAllSelectToggle() {\n    const allToggledOn = this.newColumns.value.every(el => el.displayToggle);\n    const allToggledOff = this.newColumns.value.every(el => !el.displayToggle);\n    if (allToggledOn) {\n      this.allSelected.setValue(true);\n      this.isIndeterminate = false;\n    } else if (allToggledOff) {\n      this.allSelected.setValue(false);\n      this.isIndeterminate = false;\n    } else {\n      this.isIndeterminate = true;\n    }\n    this.newColumns.updateValueAndValidity();\n    this.selectAllToggleLabel = this.parseSelectedColumns();\n  }\n\n\n  allDisplayTogglesFalseValidator(): ValidatorFn {\n    return (formArray: AbstractControl): ValidationErrors | null => {\n      const controls = formArray as FormArray;\n      const allFalse = controls.value.every((control: Column) => control.displayToggle === false);\n      return allFalse ? {allFalse: true} : null;\n    };\n  }\n\n  handleDragStart(control: FormGroup): void {\n    this.itemDraggingInProgress = true;\n    if (!control.value.disabled) {\n      this.itemManuallyDisabledOnDragStart = true;\n      control.get('disabled').setValue(true);\n    }\n  }\n\n  handleDragEnd(control: FormGroup): void {\n    if (this.itemManuallyDisabledOnDragStart) {\n      this.itemManuallyDisabledOnDragStart = false;\n      control.get('disabled').setValue(false);\n    }\n    this.itemDraggingInProgress = false;\n  }\n\n  handleClick(control: FormGroup): void {\n    if (this.itemDraggingInProgress) {\n      return\n    }\n    control.get('displayToggle').setValue(!control.value.displayToggle);\n    control.updateValueAndValidity();\n    this.updateAllSelectToggle();\n  }\n}\n","<form [formGroup]=\"columnsConfigFormGroup\">\n  <ui-card>\n    <ui-card-subtitle><b>Displayed columns</b></ui-card-subtitle>\n    <div class=\"row\">\n      <div class=\"col\">\n        <mat-checkbox formControlName=\"allSelected\"\n                      [indeterminate]=\"isIndeterminate\">\n          {{ selectAllToggleLabel }}\n        </mat-checkbox>\n      </div>\n    </div>\n    <div class=\"horizontal-separator mt-1\"></div>\n    <div class=\"row\">\n      <div class=\"col\">\n        <mat-selection-list formArrayName=\"newColumns\"\n                            cdkDropList\n                            class=\"draggable-list\"\n                            (cdkDropListDropped)=\"drop($event)\">\n          <mat-list-option *ngFor=\"let control of newColumns.controls\"\n                           class=\"draggable-item mt-1\"\n                           cdkDrag\n                           [disableRipple]=\"true\"\n                           [selected]=control.value.displayToggle\n                           [togglePosition]=\"'before'\"\n                           [disabled]=\"control.value.disabled\"\n                           [matTooltip]=\"control.value.tooltip\"\n                           (cdkDragStarted)=\"handleDragStart(control)\"\n                           (cdkDragEnded)=\"handleDragEnd(control)\"\n                           (click)=\"handleClick(control)\">\n            <div class=\"vertical-align\">\n              <mat-icon class=\"draggable-icon\">drag_indicator</mat-icon>\n              <span class=\"column-name\">{{ control.value.displayName }}</span>\n            </div>\n          </mat-list-option>\n        </mat-selection-list>\n      </div>\n    </div>\n    <div class=\"row\">\n      <div class=\"col text-right\">\n        <mat-error *ngIf=\"newColumns.hasError('allFalse')\">Select at least one column</mat-error>\n      </div>\n    </div>\n    <div class=\"row\">\n      <div class=\"col text-right\">\n        <button mat-button color=\"primary\" (click)=\"closeMenu()\">Cancel</button>\n        <button mat-button color=\"primary\" (click)=\"saveConfigColumns()\">Save</button>\n      </div>\n    </div>\n  </ui-card>\n</form>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport {Column} from './models/Column';\nimport {ConfigAndDisplayColumns} from \"./models/ConfigAndDisplayColumns\";\nimport {Observable, Subscription} from \"rxjs\";\nimport {finalize} from \"rxjs/operators\";\nimport {MatMenu, MatMenuContent, MatMenuTrigger} from \"@angular/material/menu\";\nimport {FlatIconButtonComponent} from '../../design-system/buttons/flat-icon-button/flat-icon-button.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {TableConfigDialogComponent} from './table-config-dialog/table-config-dialog.component';\n\n@Component({\n    selector: 'table-config-menu',\n    templateUrl: './table-config.component.html',\n    styleUrls: ['./table-config.component.scss'],\n    imports: [\n        FlatIconButtonComponent,\n        MatMenuTrigger,\n        MatTooltip,\n        MatMenu,\n        MatMenuContent,\n        TableConfigDialogComponent,\n    ]\n})\nexport class TableConfigComponent implements OnInit, OnChanges, OnDestroy {\n\n  @Input() buttonId: string;\n  @Input() targetElement: string;\n  @Input() saveTableConfig: (newColumns: Column[], tableId: string) => Observable<any>;\n  @Input() tableId: string;\n  @Input() configColumns: Column[];\n  @Input() allColumns: Column[];\n  @Input() dynamicColumns: string[] | null = null;\n\n  @Output() configAndDisplayEmitter: EventEmitter<ConfigAndDisplayColumns> = new EventEmitter<ConfigAndDisplayColumns>();\n  @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n\n  saveTableConfigSubscription: Subscription;\n\n  ngOnInit(): void {\n    const configAndDisplay: ConfigAndDisplayColumns = this.dynamicColumns !== null ?\n      this.initDynamicTable(this.configColumns, this.dynamicColumns, this.allColumns) : this.initStaticTable(this.configColumns, this.allColumns);\n\n    this.configColumns = configAndDisplay.configColumns;\n    const displayedColumns: string[] = configAndDisplay.displayedColumns;\n    this.configAndDisplayEmitter.emit(new ConfigAndDisplayColumns(this.configColumns, displayedColumns));\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const currentDynamicColumns = changes['dynamicColumns']?.currentValue;\n    const previousDynamicColumns = changes['dynamicColumns']?.previousValue;\n\n    if (currentDynamicColumns != null && previousDynamicColumns != null) {\n      const configColumnsToDisplay: string[] = this.configColumns.filter(value => value.displayToggle === true).map(value => value.name);\n      const displayedColumns: string[] = currentDynamicColumns.concat(configColumnsToDisplay)\n      this.configAndDisplayEmitter.emit(new ConfigAndDisplayColumns(this.configColumns, displayedColumns));\n    }\n  }\n\n  ngOnDestroy() {\n    this.saveTableConfigSubscription?.unsubscribe();\n  }\n\n  private initDynamicTable(configColumns: Column[] | null, dynamicColumns: string[], allColumns: Column[]): ConfigAndDisplayColumns {\n    let newConfigColumns: Column[];\n    let displayedColumns: string[];\n    if (configColumns === null) {\n      newConfigColumns = allColumns.filter((column: Column) => !dynamicColumns.includes(column.name));\n      displayedColumns = allColumns.map((column: Column) => column.name);\n    } else {\n      newConfigColumns = Array.from(configColumns).map(column => {\n        return new Column(\n          column.name,\n          column.displayToggle,\n          column.tooltip,\n          column.disabled,\n          allColumns.find(allCol => allCol.name == column.name).displayName)\n      });\n      const configColumnsToAdd: string[] = newConfigColumns.filter(value => value.displayToggle === true).map(value => value.name);\n      displayedColumns = dynamicColumns.concat(configColumnsToAdd);\n    }\n    const configColumnsNames = newConfigColumns.map(it => it.name)\n    const disabledColumns = allColumns\n      .filter(column => !dynamicColumns.includes(column.name))\n      .filter(column => !configColumnsNames.includes(column.name))\n      .map(it => new Column(it.name, true, null, null, it.name))\n    return new ConfigAndDisplayColumns(newConfigColumns.concat(disabledColumns), displayedColumns);\n  }\n\n  private initStaticTable(configColumns: Column[] | null, allColumns: Column[]): ConfigAndDisplayColumns {\n    const newConfigColumns: Column[] = configColumns === null ? allColumns : configColumns.map(column => {\n      return new Column(\n        column.name,\n        column.displayToggle,\n        column.tooltip,\n        column.disabled,\n        allColumns.find(allCol => allCol.name == column.name).displayName)\n    });\n\n    const displayedColumns: string[] = newConfigColumns.filter(configColumn => configColumn.displayToggle === true).map(configColumn => configColumn.name);\n    return new ConfigAndDisplayColumns(newConfigColumns, displayedColumns);\n  }\n\n  saveConfigColumns(newConfigColumns: Column[]){\n    this.saveTableConfigSubscription = this.saveTableConfig(newConfigColumns, this.tableId).pipe(finalize((): void => {\n      const configColumnsToDisplay: string[] = newConfigColumns.filter(config => config.displayToggle === true).map(column => column.name);\n      const dynamicColumnsToDisplay: string[] = this.dynamicColumns === null ? [] : Array.from(this.dynamicColumns);\n      this.configColumns = Array.from(newConfigColumns);\n      const displayedColumns: string[] = dynamicColumnsToDisplay.concat(configColumnsToDisplay)\n      this.configAndDisplayEmitter.emit(new ConfigAndDisplayColumns(this.configColumns, displayedColumns));\n    })).subscribe()\n    this.closeMenu()\n  }\n  closeMenu(){\n    this.trigger.closeMenu();\n  }\n\n}\n","<ui-flat-icon-button [matMenuTriggerFor]=\"config\" (menuClosed)=\"closeMenu()\" [matTooltip]=\"'Adjust displayed columns.'\" icon=\"table_chart\"></ui-flat-icon-button>\n<mat-menu #config=\"matMenu\" class=\"table-menu\">\n  <ng-template matMenuContent>\n    <table-config-dialog [configColumns]=\"configColumns\"\n                         (click)=\"$event.stopPropagation()\"\n                         (configColumnsEmitter)=\"saveConfigColumns($event)\"\n                         (closeMenuEvent)=\"closeMenu()\">\n    </table-config-dialog>\n  </ng-template>\n</mat-menu>\n\n","import {Component, Input} from '@angular/core';\nimport {NgClass} from '@angular/common';\n\n@Component({\n    selector: 'ui-card-content-header',\n    templateUrl: './card-content-header.component.html',\n    styleUrls: ['./card-content-header.component.scss'],\n    imports: [NgClass]\n})\nexport class CardContentHeaderComponent {\n  @Input() title: string;\n}\n","<div class=\"ui__card-header\" [ngClass]=\"{'content-padding' : contentWrap.children.length > 0}\">\n  <div class=\"row justify-content-between\">\n    <div class=\"col align-content-center\">\n      <div>\n        <span class=\"title\">{{ title }}</span>\n      </div>\n    </div>\n    <div class=\"col-auto\" #contentWrap>\n      <ng-content/>\n    </div>\n  </div>\n</div>\n","import {Component, forwardRef, Input, OnInit} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {NgIf, NgStyle} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'app-read-more',\n    templateUrl: './read-more.component.html',\n    styleUrls: ['./read-more.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ReadMoreComponent),\n            multi: true,\n        },\n    ],\n    imports: [\n        NgStyle,\n        NgIf,\n        MatTooltip,\n    ]\n})\nexport class ReadMoreComponent implements OnInit {\n\n  @Input() stringToCut: string\n  @Input() properties: ReadMoreRestrictions\n  contentExpanded:boolean = false\n  truncatedString: string\n  showTooltip: boolean = false\n  showToggleButton: boolean;\n\n\n  ngOnInit(): void {\n    const cutString = this.stringToCut?.length > this.properties.symbols + 1;\n    const cutHeight = this.properties.height != null;\n    this.showToggleButton = cutString || cutHeight;\n    if (cutString) {\n      this.showTooltip = true;\n      this.truncatedString = this.stringToCut?.substring(0, this.properties.symbols) + '...';\n    } else {\n      this.truncatedString = this.stringToCut;\n    }\n  }\n\n  get height(): string{\n    return ( this.properties?.height != null && !this.contentExpanded) ? `${this.properties.height}px` : \"auto\"\n  }\n\n  toggleExpansion(more: boolean){\n    this.contentExpanded = more;\n  }\n\n}\n\nexport class ReadMoreRestrictions{ //use height or symbols, never both\n  height: number | null;\n  symbols: number | null;\n  matButtonShowMore: boolean;\n}\n","<div class=\"limit-height\"\n     [ngStyle]=\"{'height': height}\">\n  <ng-content></ng-content>\n</div>\n<div *ngIf=\"properties.matButtonShowMore\">\n  <div *ngIf=\"contentExpanded\"> {{stringToCut}}</div>\n  <div *ngIf=\"!contentExpanded\"> {{truncatedString}}</div>\n<p *ngIf=\"showToggleButton\"\n  class=\"clickable-text\"\n  (click)=\"toggleExpansion(!contentExpanded)\">\n  {{contentExpanded ? '(show less)' : '(show more...)'}}</p>\n</div>\n<div *ngIf=\"!properties.matButtonShowMore\">\n  <div *ngIf=\"showTooltip\"\n       class=\"tooltip-control\"\n       matTooltip=\"{{stringToCut}}\"\n       matTooltipPosition=\"right\">\n    {{truncatedString}}\n  </div>\n  <div *ngIf=\"!showTooltip\">\n    {{truncatedString}}\n  </div>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Pipe,\n  PipeTransform,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow,\n  MatRowDef,\n  MatTable,\n  MatTableDataSource\n} from \"@angular/material/table\";\nimport {MatPaginator, PageEvent} from \"@angular/material/paginator\";\nimport {MatSort, MatSortHeader, SortDirection} from \"@angular/material/sort\";\nimport {Observable, Subscription, take} from \"rxjs\";\nimport {ConfigAndDisplayColumns} from \"./edit-table-menu/models/ConfigAndDisplayColumns\";\nimport {Row} from \"./models/Row\";\nimport {TableAction} from \"./models/TableAction\";\nimport {finalize} from \"rxjs/operators\";\nimport {CostimizeSortDirection, Page, PageSort, Sort} from \"./models/PageSort\";\nimport {TableConfigData} from \"./models/TableConfigData\";\nimport {RowColData} from \"./models/RowColData\";\nimport {ActivatedRoute, Params, Router} from \"@angular/router\";\nimport {Column} from \"./edit-table-menu/models/Column\";\nimport {ButtonConfig} from \"./models/ButtonConfig\";\nimport {Helpers} from '../design-system/helpers/Helpers';\nimport {ColumnGenTable} from \"./models/ColumnGenTable\";\nimport {CardComponent} from '../design-system/card/card.component';\nimport {CardContentHeaderComponent} from '../design-system/card/card-content-header/card-content-header.component';\nimport {TableConfigComponent} from './edit-table-menu/table-config.component';\nimport {NgClass, NgFor, NgIf, NgTemplateOutlet} from '@angular/common';\nimport {FlatIconButtonComponent} from '../design-system/buttons/flat-icon-button/flat-icon-button.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {MatCheckbox} from '@angular/material/checkbox';\nimport {MatBadge} from '@angular/material/badge';\nimport {ReadMoreComponent} from '../design-system/read-more/read-more.component';\nimport {MatButton} from '@angular/material/button';\nimport {MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger} from '@angular/material/menu';\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\nimport {AsPipe} from '../design-system/pipes/as.pipe';\nimport {ChipComponent} from \"../design-system/buttons/chip/chip.component\";\n\n\n@Pipe({\n    name: 'tableActionTooltip',\n    standalone: true\n})\nexport class TableActionTooltipPipe implements PipeTransform {\n  transform(action: any): string {\n    return action?.disabled ? action?.disabledTooltip : action?.name;\n  }\n}\n\n@Component({\n    selector: 'ui-generic-table',\n    templateUrl: './generic-table.component.html',\n    styleUrls: ['./generic-table.component.scss'],\n    imports: [CardComponent, CardContentHeaderComponent, MatPaginator, ChipComponent, TableConfigComponent, NgClass, NgFor, FlatIconButtonComponent, MatTooltip, NgIf, MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCheckbox, MatBadge, MatCellDef, MatCell, MatSortHeader, NgTemplateOutlet, ReadMoreComponent, MatButton, MatMenuTrigger, MatMenu, MatMenuContent, MatMenuItem, MatProgressSpinner, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, AsPipe, TableActionTooltipPipe]\n})\nexport class GenericTableComponent implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n\n  @Input() tableTitle: string = \"\";\n  @Input() rowColData: RowColData = new RowColData([], []);\n  @Input() tableConfigData: TableConfigData\n  @Input() tableButtonsConfig: ButtonConfig[]\n  @Input() saveConfigColumns: (newConfigColumns: Column[], tableId: string) => Observable<any>;\n  @Input() usesPageSortFilter: boolean = false;\n  @Input() usesSelection: boolean = false;\n  @Output() pageSortChangedEmitter: EventEmitter<PageSort> = new EventEmitter<PageSort>();\n  @Output() configAndDisplayEmitter: EventEmitter<ConfigAndDisplayColumns> = new EventEmitter<ConfigAndDisplayColumns>();\n  @Output() selectionEmitter: EventEmitter<Set<string> | null> = new EventEmitter<Set<string> | null>();\n  @ViewChild(MatPaginator) paginator: MatPaginator;\n\n  displayedColumns: string[] = [];\n  displayedGenTableColumns: ColumnGenTable[] = [];\n  dataSource: MatTableDataSource<Row> = new MatTableDataSource<Row>([]);\n  tableButtonProcessing: boolean = false;\n  actionLoading: Map<number | string, boolean> = new Map();\n  funcSubscription: Subscription;\n  tableActionFunctionSubscription: Subscription[] = [];\n  cellActionFunctionSubscription: Subscription[] = [];\n  defaultPage: Page = new Page(PageSort.DEFAULT_PAGE_SIZE, 0);\n  defaultSort: SortDirection = CostimizeSortDirection.ASC.toLowerCase() as SortDirection;\n  pageSort: PageSort = new PageSort(this.defaultPage);\n  selectedIds: Set<string> | null = new Set<string>();\n  allSelected: boolean = false;\n\n  constructor(private router: Router,\n              private route: ActivatedRoute) {\n  }\n\n  ngOnInit(): void {\n    this.throwErrorIfMissingColumns();\n    this.handlePageAndSorting();\n  }\n\n  handlePageAndSorting() {\n    const pageSortFromURL = this.tryDecodePageSort(this.route);\n    const pageSort = pageSortFromURL.find((pageSort: PageSort) => pageSort.table == this.tableConfigData.tableId);\n\n    if (pageSort) {\n      this.pageSort.page = pageSort.page;\n      this.pageSort.sort = pageSort.sort;\n      this.pageSort.table = pageSort.table;\n    } else {\n      this.pageSort = this.initializePageSortWithDefaultColumn(this.tableConfigData);\n    }\n\n    this.pageSortChangedEmitter.emit(this.pageSort);\n\n    if (!this.usesPageSortFilter) {\n      this.onSortData(this.convertSortToMatSort(this.pageSort.sort));\n    }\n  }\n\n  initializePageSortWithDefaultColumn(tableConfigData: TableConfigData): PageSort {\n    let defaultSortColumn = tableConfigData.defaultSort\n      ? this.tableConfigData.defaultSort\n      : new Sort(this.tableConfigData.allColumns.map(column => column.name)[0], CostimizeSortDirection.ASC)\n    return new PageSort(this.defaultPage, defaultSortColumn, this.tableConfigData.tableId);\n  }\n\n  ngOnDestroy() {\n    this.funcSubscription?.unsubscribe();\n    this.tableActionFunctionSubscription?.forEach(subscription => subscription.unsubscribe());\n    this.cellActionFunctionSubscription?.forEach(subscription => subscription.unsubscribe());\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.throwErrorIfMissingColumns()\n    this.generateAdditionalColumns();\n    this.dataSource = this.getNewDataSource(this.rowColData?.rows ?? []);\n    if (changes['tableConfigData'] != null) {\n      this.pageSort = this.initializePageSortWithDefaultColumn(this.tableConfigData);\n      this.sortChange(this.convertSortToMatSort(this.pageSort.sort));\n    }\n    if (this.allSelected) {\n      this.masterToggle(true)\n    }\n  }\n\n  private throwErrorIfMissingColumns() {\n    if (this.rowColData?.rows.length == 0) return\n\n    const columnIds = this.rowColData?.columns.map(column => column.id)\n    const columnIdsInCells = Array.from(this.rowColData?.rows[0].rowCellValues.keys());\n    const missingColumns = columnIdsInCells.filter(element => !columnIds.includes(element))\n\n    if (missingColumns.length == 0) return\n\n    throw new Error(`There are no columns ${missingColumns.join(', ')} in rowColData.columns `)\n  }\n\n  ngAfterViewInit() {\n    if (!this.usesPageSortFilter) {\n      this.dataSource.paginator = this.paginator;\n    }\n  }\n\n\n  private generateAdditionalColumns() {\n    if (this.rowColData.rows.some(r => r.primaryAction != null || r.secondaryActions?.length != 0) && !this.displayedColumns?.includes('actions')) {\n      this.displayedColumns?.push('actions')\n    }\n    if (this.rowColData.rows.some(r => r.icons.length > 0) && !this.displayedColumns?.includes('icons')) {\n      this.displayedColumns?.push('icons')\n    }\n    if (this.usesSelection && !this.displayedColumns?.includes('select')) {\n      this.displayedColumns?.unshift('select')\n    }\n  }\n\n  onSortData($event: MatSort) {\n    let sortDirectionMultiplier = $event.direction === 'desc' ? -1 : 1;\n    this.dataSource.data = this.dataSource.data.sort((a, b) => {\n      let val1 = a.rowCellValues.get($event.active)?.sortingValue;\n      let val2 = b.rowCellValues.get($event.active)?.sortingValue;\n      let comparison = 0;\n      if (val1 > val2) {\n        comparison = 1;\n      } else if (val1 < val2) {\n        comparison = -1;\n      }\n      return sortDirectionMultiplier * comparison;\n    });\n  }\n\n\n  handleFunction(clickedButton: ButtonConfig): void {\n    function disableButtonsDuringObservable(clickedButton: ButtonConfig, tableButtonsConfig: ButtonConfig[]) {\n      let buttonsToBeDisabled = tableButtonsConfig.filter(button => button != clickedButton && !button.disabled);\n      buttonsToBeDisabled.forEach(button => button.disabled = true);\n      return buttonsToBeDisabled\n    }\n\n    function enableButtonsAfterObservable(disabledButtonsDuringObservable: ButtonConfig[]) {\n      disabledButtonsDuringObservable.forEach(button => button.disabled = false);\n    }\n\n    clickedButton.loading = true;\n    this.tableButtonProcessing = true;\n    const disabledButtonsDuringObservable = disableButtonsDuringObservable(clickedButton, this.tableButtonsConfig)\n    this.funcSubscription = clickedButton.func().pipe(finalize(() => {\n      clickedButton.loading = false;\n      this.tableButtonProcessing = false;\n      enableButtonsAfterObservable(disabledButtonsDuringObservable)\n    })).subscribe();\n  }\n\n  executeTableActionMethod(action: TableAction, row: Row) {\n    this.actionLoading.set(row.id, true);\n    this.tableActionFunctionSubscription.push(action.action().pipe(finalize(() => this.actionLoading.set(row.id, false))).subscribe());\n  }\n\n  executeCellActionMethod(action: TableAction) {\n    this.cellActionFunctionSubscription.push(action.action().subscribe());\n  }\n\n  updateColumns(configAndDisplay: ConfigAndDisplayColumns) {\n    this.tableConfigData.configColumns = Array.from(configAndDisplay.configColumns);\n    if (this.tableConfigData.dynamicColumns != null) {\n      if (this.tableConfigData.handleCaseDisabledColumns != null) {\n        this.tableConfigData.configColumns = this.tableConfigData.handleCaseDisabledColumns(this.tableConfigData.configColumns);\n      }\n      this.displayedColumns = this.tableConfigData.dynamicColumns\n        .concat(this.tableConfigData.configColumns\n          .filter(it => it.disabled != true)\n          .filter(it => it.displayToggle == true)\n          .map(it => it.name));\n    } else {\n      this.displayedColumns = configAndDisplay.displayedColumns;\n    }\n    this.generateAdditionalColumns();\n    this.dataSource = this.getNewDataSource(this.rowColData?.rows ?? []);\n    this.displayedGenTableColumns = this.rowColData.columns.filter(it => this.displayedColumns.includes(it.id));\n    this.configAndDisplayEmitter.emit(configAndDisplay);\n  }\n\n  private getNewDataSource(newRows: Row[]): MatTableDataSource<any> {\n    const dataSource = new MatTableDataSource<Row>([]);\n    dataSource.data = newRows;\n    if (this.paginator && !this.usesPageSortFilter) {\n      dataSource.paginator = this.paginator\n    }\n    return dataSource\n  }\n\n  pageChange($event: PageEvent) {\n    this.pageSort.page.index = $event.pageIndex;\n    this.pageSort.page.size = $event.pageSize;\n    this.pushPageAndSortInURL(this.route, this.router, this.pageSort.page, this.pageSort.sort, this.tableConfigData.tableId);\n    this.pageSortChangedEmitter.emit(this.pageSort);\n  }\n\n  sortChange(matSort: any) {\n    const sort = this.convertMatSortToSort(matSort)\n    if (Sort.areSortsEqual(this.pageSort.sort, sort) && this.usesPageSortFilter) {\n      return;\n    }\n    this.pageSort.sort = sort;\n    this.pushPageAndSortInURL(this.route, this.router, this.pageSort.page, this.pageSort.sort, this.tableConfigData.tableId);\n    this.pageSortChangedEmitter.emit(this.pageSort);\n    if (!this.usesPageSortFilter) {\n      this.onSortData(matSort);\n    }\n  }\n\n  emitSelectedIds($event) {\n    if ($event.checked == true) {\n      this.selectedIds.add($event.source.id);\n      if (this.selectedIds.size == this.rowColData.allDataCount) {\n        this.allSelected = true;\n        this.selectionEmitter.emit(null);\n      } else {\n        this.selectionEmitter.emit(this.selectedIds);\n      }\n    } else {\n      this.selectedIds.delete($event.source.id);\n      this.allSelected = false;\n      this.selectionEmitter.emit(this.selectedIds);\n    }\n  }\n\n  masterToggle($event) {\n    this.allSelected = $event;\n    this.selectedIds = new Set<string>();\n    if (this.allSelected) {\n      this.rowColData.rows.forEach(row => {\n        this.selectedIds.add(row.id.toString());\n      })\n    } else {\n      this.rowColData.rows.forEach(row => {\n        this.selectedIds.delete(row.id.toString());\n      })\n    }\n    let valueToBeEmitted = this.allSelected ? null : new Set<string>();\n    this.selectionEmitter.emit(valueToBeEmitted);\n  }\n\n  convertMatSortToSort(matSort: MatSort): Sort {\n    let sort: Sort = new Sort('', CostimizeSortDirection.ASC);\n    sort.column = matSort.active;\n    sort.direction = matSort.direction === 'desc' ? CostimizeSortDirection.DESC : CostimizeSortDirection.ASC;\n    return sort;\n  }\n\n  convertSortToMatSort(sort: Sort): MatSort {\n    let matSort: MatSort = new MatSort();\n    matSort.active = sort.column;\n    matSort.direction = sort.direction === CostimizeSortDirection.ASC ? 'asc' : 'desc';\n    return matSort;\n  }\n\n  pushPageAndSortInURL(route: ActivatedRoute, router: Router, page: Page, sort: Sort, table: string) {\n    route.queryParams\n      .pipe(take(1))\n      .subscribe((params: Params) => {\n        const currentParams = this.tryDecodePageSort(route);\n        let tableFound = false;\n        const newParams = currentParams.map(entry => {\n          if (entry.table === table) {\n            tableFound = true;\n            return {...entry, page: page, sort: sort};\n          }\n          return entry;\n        });\n        if (!tableFound) {\n          newParams.push(new PageSort(page, sort, table))\n        }\n        const modifiedParams = {\n          ...params, ...{\n            pageSort: encodeURIComponent(JSON.stringify(newParams)),\n          }\n        };\n\n        router.navigate([], {\n          queryParams: modifiedParams,\n          relativeTo: route,\n          replaceUrl: true\n        });\n      });\n  }\n\n  tryDecodePageSort(route: ActivatedRoute): PageSort[] {\n    const pageSortParam = route.snapshot.queryParamMap.get('pageSort');\n    if (pageSortParam) {\n      try {\n        return JSON.parse(decodeURIComponent(pageSortParam));\n      } catch (error) {\n        console.error('Error decoding pageSort:', error);\n        return [];\n      }\n    }\n    return [];\n  }\n\n  copyToClipboard(val: string) {\n    Helpers.copyToClipboard(val);\n  }\n\n  protected readonly SortDirection: SortDirection\n}\n","<ui-card>\n  <ui-card-content-header [title]=\"tableTitle\">\n    <div class=\"row\">\n      <div class=\"col-auto\">\n        <div>\n          <mat-paginator\n            [length]=\"\n              rowColData.allDataCount\n                ? rowColData.allDataCount\n                : rowColData.rows.length\n            \"\n            [pageIndex]=\"this.pageSort.page.index\"\n            [pageSize]=\"this.pageSort.page.size\"\n            [pageSizeOptions]=\"[10, 25, 50, 100]\"\n            (page)=\"pageChange($event)\"\n            showFirstLastButtons=\"{{ true }}\"\n          ></mat-paginator>\n        </div>\n      </div>\n      <div class=\"col align-self-center buttons-wrapper\">\n        <table-config-menu\n          [ngClass]=\"{ 'disabled-flat-button': tableButtonProcessing }\"\n          [tableId]=\"tableConfigData.tableId\"\n          [configColumns]=\"tableConfigData.configColumns\"\n          [allColumns]=\"tableConfigData.allColumns\"\n          [dynamicColumns]=\"tableConfigData.dynamicColumns\"\n          [saveTableConfig]=\"saveConfigColumns\"\n          (configAndDisplayEmitter)=\"updateColumns($event)\"\n        />\n\n        <div *ngFor=\"let buttonConfig of tableButtonsConfig\">\n          <ng-container>\n            <ui-flat-icon-button\n              [icon]=\"buttonConfig.icon\"\n              [loading]=\"buttonConfig.loading\"\n              [disabled]=\"buttonConfig.disabled\"\n              [background]=\"buttonConfig.style\"\n              matTooltip=\"{{ buttonConfig.tooltip }}\"\n              (clicked)=\"handleFunction(buttonConfig)\"\n            />\n          </ng-container>\n        </div>\n      </div>\n    </div>\n  </ui-card-content-header>\n  <h3 class=\"text-center\" *ngIf=\"dataSource.data.length == 0\">\n    No data available.\n  </h3>\n  <table\n    *ngIf=\"\n      rowColData && rowColData.columns.length != 0 && dataSource.data.length > 0\n    \"\n    mat-table\n    matSort\n    [matSortActive]=\"pageSort.sort?.column\"\n    [matSortDirection]=\"\n      pageSort.sort?.direction?.toString()?.toLowerCase()\n        | as : SortDirection ?? defaultSort\n    \"\n    (matSortChange)=\"sortChange($event)\"\n    [dataSource]=\"dataSource\"\n  >\n    <ng-container matColumnDef=\"select\" *ngIf=\"usesSelection\">\n      <th mat-header-cell *matHeaderCellDef class=\"checkbox-column\">\n        <mat-checkbox\n          (change)=\"masterToggle($event.checked)\"\n          class=\"badge-checkbox\"\n          [matBadge]=\"rowColData.allDataCount\"\n          matBadgePosition=\"above after\"\n          [checked]=\"allSelected\"\n        ></mat-checkbox>\n      </th>\n      <td mat-cell *matCellDef=\"let resource\">\n        <mat-checkbox\n          [id]=\"resource.id\"\n          [checked]=\"selectedIds?.has(resource.id) || allSelected\"\n          (change)=\"emitSelectedIds($event)\"\n        >\n        </mat-checkbox>\n      </td>\n    </ng-container>\n    <ng-container\n      *ngFor=\"let column of displayedGenTableColumns\"\n      [matColumnDef]=\"column.id\"\n    >\n      <ng-container *ngIf=\"column.sortable == true\">\n        <th\n          mat-header-cell\n          [ngClass]=\"column.size\"\n          *matHeaderCellDef\n          mat-sort-header\n        >\n          {{ column.displayName }}\n          <ng-container\n            *ngTemplateOutlet=\"tooltipIcon; context: { $implicit: column }\"\n          ></ng-container>\n        </th>\n      </ng-container>\n      <ng-container *ngIf=\"column.sortable == false\">\n        <th mat-header-cell [ngClass]=\"column.size\" *matHeaderCellDef>\n          {{ column.displayName }}\n          <ng-container\n            *ngTemplateOutlet=\"tooltipIcon; context: { $implicit: column }\"\n          ></ng-container>\n        </th>\n      </ng-container>\n      <td\n        mat-cell\n        *matCellDef=\"let resource;\"\n          [ngClass]=\"resource.rowCellValues.get(column.id)?.color + ' ' + column.textAlignment\">\n        <div class=\"d-flex align-items-center chip-column\">\n          <ng-container *ngIf=\"resource.rowCellValues.get(column.id)?.style != 'chip'; else chipCell\">\n            <ng-container *ngIf=\"resource.rowCellValues.get(column.id)?.ableToCopy; else withoutClickToCopy\">\n              <app-read-more\n                class=\"d-inline-flex preserve-lines cursor-pointer\"\n                [properties]=\"{height: null ,matButtonShowMore:true, symbols: 100\n                }\"[stringToCut]=\"resource.rowCellValues.get(column.id)?.displayValue\"\n                (click)=\"copyToClipboard(resource.rowCellValues.get(column.id)?.displayValue)\"\n                [matTooltip]=\"'Click to copy'\">\n              </app-read-more>\n            </ng-container>\n            <i\n            *ngIf=\"resource.rowCellValues.get(column.id)?.icon\"\n            [ngClass]=\"resource.rowCellValues.get(column.id)?.icon.colour\"\n            [matTooltip]=\"resource.rowCellValues.get(column.id)?.icon.tooltip\"\n            matTooltipPosition=\"below\"\n            class=\"material-icons\"\n            >{{ resource.rowCellValues.get(column.id)?.icon.name }}\n          </i>\n          <ng-template #withoutClickToCopy>\n              <app-read-more\n                class=\"d-inline-flex preserve-lines\"\n                [properties]=\"{height: null ,matButtonShowMore:true, symbols: 100\n                }\"[stringToCut]=\"resource.rowCellValues.get(column.id)?.displayValue\">\n              </app-read-more>\n            </ng-template>\n          </ng-container>\n          <ng-template #chipCell>\n            <ng-container>\n                <ui-chip\n                [isTableChip]=\"true\"\n                [cursor]=\"'unset'\"\n                [deleteOption]=\"false\"\n                [tooltipText]=\"resource.rowCellValues.get(column.id)?.displayValue\"\n                [boldText]=\"resource.rowCellValues.get(column.id)?.displayValue\">\n                </ui-chip>\n            </ng-container>\n          </ng-template>\n          <i *ngIf=\"resource.rowCellValues.get(column.id)?.action\"\n            class=\"material-icons mat-icon-button costimize-material-icon mat-primary\"\n            (click)=\"executeCellActionMethod(resource.rowCellValues.get(column.id)?.action)\"\n            matTooltip=\"{{resource.rowCellValues.get(column.id)?.action.name}}\"\n            matTooltipPosition=\"above\">\n            {{ resource.rowCellValues.get(column.id)?.action.icon }}\n          </i>\n        </div>\n      </td>\n    </ng-container>\n    <ng-container matColumnDef=\"actions\">\n      <th mat-header-cell *matHeaderCellDef class=\"medium-column\">Actions</th>\n      <td mat-cell *matCellDef=\"let resource\">\n        <div\n          *ngIf=\"!actionLoading.get(resource.id); else loading\"\n          class=\"d-flex flex-row justify-content-start\"\n        >\n          <button\n            *ngIf=\"resource.primaryAction != null\"\n            mat-button\n            class=\"material-icons mat-icon-button costimize-material-icon mat-primary\"\n            [disabled]=\"resource.primaryAction.disabled\"\n            [matTooltip]=\"resource.primaryAction | tableActionTooltip\"\n            matTooltipPosition=\"above\"\n            (click)=\"executeTableActionMethod(resource.primaryAction, resource)\"\n          >\n            <i\n              class=\"material-symbols-outlined material-icons costimize-material-icon help-material-icon-header\"\n            >\n              {{ resource.primaryAction.icon }}\n            </i>\n          </button>\n          <ui-flat-icon-button\n            *ngIf=\"resource.secondaryActions?.length > 0\"\n            [matMenuTriggerFor]=\"extras\"\n            [icon]=\"'more_vert'\"\n          ></ui-flat-icon-button>\n          <mat-menu #extras=\"matMenu\">\n            <ng-template matMenuContent>\n              <ng-container *ngFor=\"let action of resource.secondaryActions\">\n                <button\n                  mat-menu-item\n                  [disabled]=\"action.disabled\"\n                  [matTooltip]=\"action.disabledTooltip\"\n                  (click)=\"executeTableActionMethod(action, resource)\"\n                >\n                  <span>{{ action.name }}</span>\n                </button>\n              </ng-container>\n            </ng-template>\n          </mat-menu>\n        </div>\n        <ng-template #loading>\n          <div class=\"vertical-align spinner-width\">\n            <mat-spinner\n              class=\"bottom-aligned\"\n              color=\"primary\"\n              [diameter]=\"25\"\n            ></mat-spinner>\n          </div>\n        </ng-template>\n      </td>\n    </ng-container>\n    <ng-container matColumnDef=\"icons\">\n      <th mat-header-cell *matHeaderCellDef class=\"small-column\"></th>\n      <td mat-cell *matCellDef=\"let resource\">\n        <ng-container *ngFor=\"let icon of resource.icons\">\n          <i\n            *ngIf=\"icon\"\n            ngClass=\"{{ icon.colour }}\"\n            matTooltip=\"{{ icon.tooltip }}\"\n            matTooltipPosition=\"above\"\n            class=\"material-icons costimize-material-icon mat-icon-button\"\n            >{{ icon.name }}</i\n          >\n        </ng-container>\n      </td>\n    </ng-container>\n    <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n    <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n  </table>\n</ui-card>\n\n<ng-template #tooltipIcon let-column>\n  <i\n    *ngIf=\"column.tooltip\"\n    class=\"material-icons costimize-material-icon help-material-icon-header\"\n    matTooltip=\"{{ column.tooltip }}\"\n    matTooltipPosition=\"right\"\n    >help\n  </i>\n</ng-template>\n","export enum ButtonStyle {\n  PRIMARY = \"primary\", ACCENT = \"accent\", REGULAR = \"regular\"\n}\n\n","import {Observable} from \"rxjs\";\nimport {ButtonStyle} from \"./ButtonStyles\";\n\nexport class ButtonConfig {\n  style: ButtonStyle;\n  tooltip: string;\n  icon: string;\n  func: () => Observable<any>;\n  loading: boolean;\n  disabled: boolean;\n\n  constructor(style: ButtonStyle, tooltip: string, icon: string, func: () => Observable<any>, loading: boolean = false, disabled: boolean = false) {\n    this.style = style;\n    this.tooltip = tooltip;\n    this.icon = icon;\n    this.loading = loading;\n    this.disabled = disabled;\n    this.func = func;\n  }\n}\n","import {Chart} from \"chart.js\";\n\nexport const ChartBackground = {\n  id: 'chartBackground',\n  afterDraw(chart: Chart): boolean | void {\n    if (chart.data.labels.length === 0) return\n\n    const ctx = chart.ctx;\n    // @ts-ignore\n    const predictedDatasetAvailable = chart.getSortedVisibleDatasetMetas().map(dataset => dataset._dataset.id).includes('predictedDataSet')\n    const metaStart = chart.getDatasetMeta(0).data.length > 0 ? chart.getDatasetMeta(0) : chart.getDatasetMeta(1)\n    const metaEnd = predictedDatasetAvailable ? chart.getDatasetMeta(1) : chart.getDatasetMeta(0)\n\n    const pointStart = (metaStart.data[0] as any).getCenterPoint()\n    const pointEnd = (metaEnd.data[metaEnd.data.length - 1] as any).getCenterPoint()\n\n    // Calculate differences\n    const dx = pointEnd.x - pointStart.x;\n    const dy = pointEnd.y - pointStart.y;\n\n    // Perpendicular vector (rotate 90 degrees)\n    const perpVector = {x: -dy, y: dx};\n\n    // Decide on the length of the gradient effect\n    const length = Math.sqrt(perpVector.x ** 2 + perpVector.y ** 2);\n    const gradientFactor = chart.ctx.canvas.height / 2\n\n    // Create gradient\n    const gradientGrey = ctx.createLinearGradient(\n      pointStart.x - (perpVector.x / length) * gradientFactor,\n      pointStart.y - (perpVector.y / length) * gradientFactor,\n      pointStart.x + (perpVector.x / length) * gradientFactor,\n      pointStart.y + (perpVector.y / length) * gradientFactor\n    );\n\n    const gradientBlue = ctx.createLinearGradient(\n      pointStart.x - (perpVector.x / length) * gradientFactor,\n      pointStart.y - (perpVector.y / length) * gradientFactor,\n      pointStart.x + (perpVector.x / length) * gradientFactor,\n      pointStart.y + (perpVector.y / length) * gradientFactor\n    );\n\n    gradientGrey.addColorStop(1, '#B8BFC900');\n    gradientGrey.addColorStop(0, '#B8BFC960');\n\n    gradientBlue.addColorStop(0, '#0077B635');\n    gradientBlue.addColorStop(1, '#0077B600');\n\n    // @ts-ignore\n    chart.data.datasets[0].backgroundColor = gradientBlue\n    if (predictedDatasetAvailable) {\n      //   @ts-ignore\n      chart.data.datasets[1].backgroundColor = gradientGrey\n    }\n  }\n}\n","export class Constants{\n  public static MONTH_FORMAT = \"MMM YYYY\";\n  public static USAGE_NUMBER_FORMAT = \"1.0-2\"\n}\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {NgIf} from '@angular/common';\nimport {NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\n\n@Component({\n    selector: 'line-chart-skeleton-loader',\n    templateUrl: './line-chart-skeleton-loader.component.html',\n    styleUrls: ['./line-chart-skeleton-loader.component.scss'],\n    imports: [NgIf, NgxSkeletonLoaderModule]\n})\nexport class LineChartSkeletonLoaderComponent implements OnInit {\n\n  @Input() showData: boolean;\n  @Input() lgWide: boolean;\n  @Input() lgHeight?: boolean = false;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div class=\"content-height\" >\n  <ng-container *ngIf=\"showData\">\n    <ng-content></ng-content>\n  </ng-container>\n  <div class=\"row align-items-end h-100\" *ngIf=\"!showData\">\n    <div class=\"col\">\n      <ngx-skeleton-loader count=\"1\" appearance=\"line\" [theme]=\"{width: '100%', height: '20px'}\"\n                          *ngIf=\"showData == false && !lgWide && !lgHeight\"></ngx-skeleton-loader>\n      <ngx-skeleton-loader count=\"1\" appearance=\"line\" [theme]=\"{width: '100%', height: '150px'}\"\n                          *ngIf=\"showData == false && lgWide && !lgHeight\"></ngx-skeleton-loader>\n      <ngx-skeleton-loader appearance=\"line\" [theme]=\"{width: '100%', height: '200px'}\" count=\"1\"\n                          *ngIf=\"showData == false && lgHeight\"></ngx-skeleton-loader>\n    </div>\n  </div>\n</div>","import {AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild,} from '@angular/core';\nimport {LineChartData} from './LineChartData';\nimport {ChartDataset, ChartOptions} from 'chart.js';\nimport {BaseChartDirective, NgChartsModule} from 'ng2-charts';\nimport {ChartBackground} from './ChartBackground';\nimport moment from \"moment\";\nimport {Helpers} from \"../../design-system/helpers/Helpers\";\nimport {uniq} from 'lodash-es';\nimport {DateFormat} from \"../model/DateFormat\";\nimport {Constants} from \"../../design-system/helpers/Constants\";\nimport {\n  LineChartSkeletonLoaderComponent\n} from '../../design-system/data-skeleton-loader/line-chart-skeleton-loader/line-chart-skeleton-loader.component';\n\n@Component({\n    selector: 'lib-line-chart',\n    templateUrl: './line-chart.component.html',\n    styleUrls: ['./line-chart.component.scss'],\n    imports: [LineChartSkeletonLoaderComponent, NgChartsModule]\n})\nexport class LineChartComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild(BaseChartDirective) chart: BaseChartDirective;\n  @Input() currentData: LineChartData;\n  @Input() predictedData: LineChartData;\n  @Input() additionalDatasets: LineChartData[];\n  @Input() isMonthlyChart?: boolean = false;\n  @Input() valuePipe?: any;\n  @Input() dateFormatSource: DateFormat;\n  @Input() plugins: any[] = [];\n  @Input() lineShadows: boolean = false;\n  @Input() arbitraryLines?: moment.Moment[];\n  @Input() beginAtZero: boolean = true;\n  @Input() isLoading: boolean = false;\n  options: ChartOptions;\n  chartDataSets: ChartDataset[];\n  chartLabels: (Date | string | number)[];\n\n  ngAfterViewInit(): void {\n    setTimeout(() => {\n      this.chart.update();\n    });\n  }\n  ngOnInit(): void {\n    if (this.lineShadows) {\n      this.plugins.push(ChartBackground);\n    }\n    this.chartOptions(\n      this.currentData,\n      this.predictedData,\n      this.additionalDatasets,\n      this.valuePipe,\n    );\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.chartOptions(\n      this.currentData,\n      this.predictedData,\n      this.additionalDatasets,\n      this.valuePipe,\n    );\n  }\n\n  chartOptions = (\n    currentData: LineChartData,\n    predictedData: LineChartData,\n    additionalDatasets: LineChartData[],\n    valuePipe: any,\n  ) => {\n    this.options = {\n      animation: false,\n      maintainAspectRatio: false,\n      scales: {\n        x: {\n          grid: {\n            color: '#EEEEEE',\n            display: false,\n          },\n          ticks: {\n            color: '#bbbbbb',\n            maxRotation: 0,\n          },\n        },\n        y: {\n          ticks: {\n            maxTicksLimit: 10,\n            stepSize: 1,\n            color: '#bbbbbb',\n            callback: function (value): string {\n              return valuePipe\n                ? valuePipe.transform(Number(value))\n                : value.toString();\n            },\n          },\n          ...(this.beginAtZero ? { min: 0 } : {}),\n          grid: {\n            color: '#EEEEEE',\n          },\n        },\n      },\n      interaction: {\n        intersect: false,\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          display: false,\n        },\n        tooltip: {\n          mode: 'index', // Change this to 'nearest' or 'point'\n          intersect: false,\n          callbacks: {\n            label(tooltipItem: any): string | string[] {\n              if(tooltipItem.dataset.id == \"predictedDataSet\" && !isNaN(tooltipItem.raw) && isNaN(tooltipItem.dataset.data[tooltipItem.dataIndex-1])){\n                return []\n              }\n              if (valuePipe && tooltipItem.raw != null) {\n                const elementIndex = tooltipItem.dataIndex\n                if (tooltipItem.dataset.tooltipLabels) {\n                  return tooltipItem.dataset.tooltipLabels[elementIndex] + ': ' + valuePipe.transform(tooltipItem.raw)\n                }\n                return tooltipItem.dataset.label + ': ' + valuePipe.transform(tooltipItem.raw)\n              } else if (tooltipItem.raw != null) {\n                return tooltipItem.dataset.label + ': ' + tooltipItem.formattedValue\n              }\n              return []\n            }\n          },\n        },\n        arbitraryLines: this.arbitraryLines\n      }\n    };\n    if (this.dateFormatSource) {\n      this.options = this.options || {};\n      this.options.scales = {\n        ...this.options.scales,\n        x: {\n          ...this.options.scales?.['x'],\n          type: 'time',\n          time: {\n            displayFormats: {\n              day: this.dateFormatSource.pattern?.toLocaleUpperCase(),\n            },\n            tooltipFormat: this.isMonthlyChart ? Constants.MONTH_FORMAT : this.dateFormatSource.pattern?.toLocaleUpperCase(),\n            unit: this.isMonthlyChart ? 'month' : 'day',\n          },\n        },\n      };\n    }\n    if (currentData || predictedData || additionalDatasets) {\n      this.initChart(currentData, predictedData, additionalDatasets);\n      this.isLoading = false;\n    } else {\n      this.chartDataSets = [];\n    }\n  };\n\n  initChart(\n    currentSpend?: LineChartData,\n    predictedSpend?: LineChartData,\n    additionalDatasets?: LineChartData[]\n  ) {\n    let additional: ChartDataset[] = [];\n    if (currentSpend) {\n      this.chartLabels = currentSpend.data.map((it) => it.label);\n    }\n    if (predictedSpend) {\n      this.chartLabels = this.chartLabels.concat(\n        predictedSpend.data.map((it) => it.label)\n      );\n    }\n    if (!currentSpend && !predictedSpend) {\n      this.chartLabels = uniq(additionalDatasets\n        .flatMap(dataset => dataset.data.map(it => it.label))).sort(\n        (a, b) => new Date(a).getTime() - new Date(b).getTime());\n    }\n    if (additionalDatasets) {\n      additional = additionalDatasets.map((inputData) => {\n        let data = inputData.data.map((it) => it.value);\n\n        let dataSet: any = {\n          label: inputData.label,\n          data: data,\n          borderColor: inputData.color,\n          pointBackgroundColor: inputData.color,\n          pointBorderColor: inputData.color,\n          backgroundColor: \"transparent\",\n          id: 'additionalDataSet',\n          tooltipLabels: inputData.data.some(it => it.tooltipLabel === null)\n            ? null\n            : inputData.data.map(it => it.tooltipLabel),\n        };\n\n        if (inputData.type === 'LINE') {\n          dataSet = {\n            ...dataSet,\n            fill: true,\n            pointRadius: 0,\n            borderWidth: 1.5,\n          };\n        }\n\n        if (inputData.type === 'DASHED-LINE') {\n          dataSet = {\n            ...dataSet,\n            borderColor: inputData.color,\n            fill: true,\n            pointRadius: 0,\n            borderWidth: 2,\n            borderDash: [3, 4],\n            spanGaps: false,\n          };\n        }\n\n        if (inputData.type === 'BAR') {\n          dataSet = {\n            ...dataSet,\n            type: 'bar',\n            borderWidth: 1,\n            pointRadius: 0,\n            fill: true\n          };\n        }\n\n        if (inputData.type === 'AREA') {\n          dataSet = {\n            ...dataSet,\n            fill: true,\n            pointRadius: 0,\n            borderWidth: 1.5,\n            pointBackgroundColor: Helpers.addOpacityToRgbColor(inputData.color, 0.4),\n            backgroundColor: Helpers.addOpacityToRgbColor(inputData.color, 0.4)\n          };\n        }\n\n        return dataSet;\n      });\n    }\n    let dataset\n    if (currentSpend) {\n      let currentData = currentSpend.data.map((it) => it.value);\n\n      dataset = {\n        label: currentSpend.label,\n        data: currentData,\n        borderColor: currentSpend.color,\n        pointBackgroundColor: currentSpend.color,\n        pointBorderColor: currentSpend.color,\n        backgroundColor: \"transparent\",\n        fill: true,\n        pointRadius: 0,\n        tension: 0.1,\n        borderWidth: 3.5,\n        id: 'currentDataSet',\n      };\n    }\n\n    let predictedDataSet;\n    if (predictedSpend) {\n      const fillerData =\n        currentSpend.data.length >= 1\n          ? new Array(currentSpend.data.length - 1)\n            .fill(NaN)\n            .concat(currentSpend.data[currentSpend.data.length - 1].value)\n          : [];\n      const predictedData = predictedSpend.data.map((it) => it.value);\n      predictedDataSet = {\n        label: predictedSpend.label,\n        data: fillerData.concat(predictedData),\n        borderColor: predictedSpend.color,\n        pointBackgroundColor: predictedSpend.color,\n        pointBorderColor: predictedSpend.color,\n        backgroundColor: \"transparent\",\n        fill: true,\n        pointRadius: 0,\n        tension: 0.1,\n        borderWidth: 3.5,\n        id: 'predictedDataSet',\n      };\n    }\n\n    this.chartDataSets = [];\n    if (currentSpend) {\n      this.chartDataSets.push(dataset);\n    }\n    if (predictedDataSet) {\n      this.chartDataSets.push(predictedDataSet);\n    }\n    if (additionalDatasets) {\n      additional.map((it) => this.chartDataSets.push(it))\n    }\n  }\n}\n","<line-chart-skeleton-loader [showData]=\"!isLoading\" [lgHeight]=\"true\" [lgWide]=\"true\">\n    <canvas\n      baseChart\n      [datasets]=\"chartDataSets\"\n      [labels]=\"chartLabels\"\n      type=\"line\"\n      [options]=\"options\"\n      [plugins]=\"plugins\"\n      class=\"w-100\"\n    >\n    </canvas>\n</line-chart-skeleton-loader>","export class ChartColors {\n  primaryColor: string;\n  drillDownPrimaryColor: string;\n  drillDownPrimaryColorTransparent: string;\n  accentColor: string;\n  errorColor: string;\n  successColor: string;\n  lightBorderColor: string;\n  backgroundColor: string;\n  warnColor: string;\n  weakTextColor: string;\n  neonColor: string;\n  lineChartCurrentColor: string;\n  lineChartPredictionColor: string;\n  otherColor: string;\n  pieChartColors: string[];\n  fillerColors: string[];\n  grayShadesColors: string[];\n  doughnutColors: string[];\n\n  constructor(\n    primaryColor: string,\n    drillDownPrimaryColor: string,\n    drillDownPrimaryColorTransparent: string,\n    accentColor: string,\n    errorColor: string,\n    successColor: string,\n    lightBorderColor: string,\n    backgroundColor: string,\n    warnColor: string,\n    weakTextColor: string,\n    neonColor: string,\n    lineChartCurrentColor: string,\n    lineChartPredictionColor: string,\n    pieChartColors: string[],\n    fillerColors: string[],\n    grayShadesColors: string[],\n    doughnutColors: string[]\n  ) {\n    this.primaryColor = primaryColor;\n    this.drillDownPrimaryColor = drillDownPrimaryColor;\n    this.drillDownPrimaryColorTransparent = drillDownPrimaryColorTransparent;\n    this.accentColor = accentColor;\n    this.errorColor = errorColor;\n    this.successColor = successColor;\n    this.lightBorderColor = lightBorderColor;\n    this.backgroundColor = backgroundColor;\n    this.warnColor = warnColor;\n    this.weakTextColor = weakTextColor;\n    this.neonColor = neonColor;\n    this.lineChartCurrentColor = lineChartCurrentColor;\n    this.lineChartPredictionColor = lineChartPredictionColor;\n    this.otherColor = lineChartPredictionColor;\n    this.pieChartColors = pieChartColors;\n    this.fillerColors = fillerColors;\n    this.grayShadesColors = grayShadesColors;\n    this.doughnutColors = doughnutColors;\n  }\n}\n\nexport const chartColors = new ChartColors(\n  'rgb(58,119,176)',\n  '#0077B6',\n  '#0077b61a',\n  '#00b4d8',\n  '#E6283B',\n  '#6FB122',\n  'white',\n  'purple',\n  '#FDA83F',\n  'blue',\n  'gray',\n  '#0077B6',\n  '#B8BFC9',\n  [\n    '#FFCD21',\n    '#FF5848',\n    '#F43A50',\n    '#E6283B',\n    '#3F6082',\n    '#3A77B0',\n    '#21D2E8',\n    '#CBEB5F',\n    '#34EFE0',\n    '#30C4E1',\n    '#FDA83F',\n    '#FE3C25',\n    '#147383',\n    '#6FB122',\n  ],\n  // [ '#FFCD21',\n  //   '#FF5848',\n  //   '#F43A50',\n  //   '#E6283B',\n  //   '#3F6082',\n  //   '#3A77B0',\n  //   '#21D2E8',\n  //   '#CBEB5F',\n  //   '#34EFE0',\n  //   '#30C4E1',\n  //   '#FDA83F',\n  //   '#FE3C25',\n  //   '#147383',\n  //   '#6FB122'],\n  [\n    // '#5485FB',\n    // '#31D8C6',\n    // '#FFE037',\n    // '#FEA14C',\n    // '#FF656E',\n    // '#B766F7',\n    // '#8EE3AB',\n    // '#DA70D6',\n    // '#F08080',\n    // '#FFD700',\n    // '#00BFFF',\n    // '#007FFF',\n    // '#6A5ACD',\n\n    '#0077B6',\n    '#90E0EF',\n    '#00B4D8',\n    '#00C35D',\n    '#8DE6B9',\n    // '#008A58',\n    '#49B400',\n    '#B1E090',\n    // '#0E8500',\n    // '#C49000',\n    '#E7D08D',\n    // '#6C6C00',\n    '#FF6D49',\n    // '#FFC0B1',\n    // '#C44D0E',\n    // '#FF5EC4',\n    '#FFBAE7',\n    '#E33B6C',\n    '#D86CFF',\n    // '#EFC0FF',\n    // '#B63FC4',\n    '#5D90FF',\n    // '#B9D0FF',\n    // '#5858E3'\n  ],\n  [\n    // '#647ED6',\n    // '#64C5B9',\n    // '#E8D55F',\n    // '#DC9F61',\n    // '#D56D70',\n    // '#A269D3',\n    // '#9AD2AA',\n    // '#BD74BD',\n    // '#CE8280',\n    // '#E5CC48',\n    // '#56B0E0',\n\n    '#9DDDE9',\n    '#1473A5',\n    '#1DADCA',\n    '#429A6C',\n    '#9DC5B0',\n    '#306E57',\n    '#629241',\n    '#AEC29E',\n    '#32682C',\n    '#998241',\n    '#C6BB9D',\n    '#5E5E2D',\n    '#B06F5E',\n    '#CFB2AC',\n    '#844E32',\n    '#AF6795',\n    '#CEAFC3',\n    '#93475D',\n    '#A170B2',\n    '#C9B3D0',\n    '#7E4884',\n    '#6981B2',\n    '#B0BAD0',\n    '#545493',\n  ],\n  ['#0077B6', '#90E0EF', '#00B4D8']\n);\n","export class ChartDot {\n  label: Date | string | number\n  value: number\n  tooltipLabel: string\n\n  constructor(label: Date | string | number, value: number, tooltipLabel: string = null) {\n    this.label = label\n    this.value = value\n    this.tooltipLabel = tooltipLabel\n  }\n}\n\nexport class PieChartPoint {\n  label: string\n  number: number\n\n  constructor(label: string, number: number) {\n    this.label = label\n    this.number = number\n  }\n\n}\n\nexport class ChartKeyValue {\n  key: string;\n  value: number;\n\n  constructor(key: string, value: number) {\n    this.key = key;\n    this.value = value;\n  }\n}\n","import {AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild} from '@angular/core';\nimport {ChartDataset, ChartOptions} from 'chart.js';\nimport {BaseChartDirective, NgChartsModule} from \"ng2-charts\";\nimport {Helpers} from \"../../design-system/helpers/Helpers\";\nimport {chartColors} from \"../../design-system/ChartColors\";\nimport {DateFormat} from \"../model/DateFormat\";\nimport {BarChartData} from \"./BarChartData\";\nimport {Constants} from \"../../design-system/helpers/Constants\";\nimport moment from \"moment\";\nimport {ChartDot} from '../model/ChartDot';\n\n@Component({\n    selector: 'lib-bar-chart',\n    templateUrl: './bar-chart.component.html',\n    styleUrls: ['./bar-chart.component.scss'],\n    imports: [NgChartsModule]\n})\nexport class BarChartComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild(BaseChartDirective) chart: BaseChartDirective\n  @Input() barChartData?: BarChartData[]\n  @Input() disableAnimations: boolean = false\n  @Input() xTitle: string = ''\n  @Input() yTitle: string = ''\n  @Input() yMaxTicks: number = 10\n  @Input() valuePipe?: any\n  @Input() isStacked: boolean = true\n  @Input() dateFormat?: DateFormat\n  @Input() isMonthlyChart?: boolean\n  @Input() disableLegendOnClick: boolean = false\n  @Input() displayLegend: boolean = false\n  @Input() isSmallChart: boolean = false\n  @Input() shouldSortDatasets: boolean = false\n  @Input() arbitraryLines?: moment.Moment[]\n  @Input() plugins: any [] = []\n  @Input() height: number\n  chartLabels: (Date | string | number | moment.Moment)[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n  chartColorIndex: number = 0;\n\n  ngOnInit(): void {\n    this.chartOptions(this.barChartData, this.valuePipe, this.arbitraryLines)\n  }\n\n  ngAfterViewInit(): void {\n    this.chart.chart.update()\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.chartOptions(this.barChartData, this.valuePipe, this.arbitraryLines)\n  }\n\n  chartOptions = (barChartData?: BarChartData[], valuePipe?: any, arbitraryLines?: moment.Moment[]) => {\n    this.options = {\n      responsive: true,\n      maintainAspectRatio: false,\n      scales: {\n        x: {\n          stacked: this.isStacked,\n          title: {\n            display: true,\n            text: this.xTitle\n          },\n          grid: {\n            display: false\n          },\n          ticks: {\n            color: '#bbbbbb',\n            maxRotation: 0\n          },\n\n        },\n        y: {\n          grid: {\n            color: '#EEEEEE'\n          },\n          grace: '5%',\n          stacked: this.isStacked,\n          title: {\n            display: true,\n            text: this.yTitle\n          },\n          ticks: {\n            color: '#bbbbbb',\n            autoSkip: true,\n            maxTicksLimit: this.yMaxTicks,\n            callback: function (value): string {\n              return valuePipe ? valuePipe.transform(Number(value)) : value.toString()\n            }\n          },\n          beginAtZero: true,\n        }\n      },\n      interaction: {\n        mode: 'nearest', // Change this to 'nearest' or 'point'\n        intersect: false\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          display: this.displayLegend,\n        },\n        tooltip: {\n          mode: 'nearest', // Change this to 'nearest' or 'point'\n          intersect: false,\n          callbacks: {\n            label(tooltipItem: any): string | string[] {\n              if (valuePipe && tooltipItem.raw != null) {\n                return tooltipItem.dataset.label + ': ' + valuePipe.transform(tooltipItem.raw)\n              } else if (tooltipItem.raw != null) {\n                return tooltipItem.formattedValue\n              }\n              return []\n            }\n          },\n          filter: (t) => t.raw != null && !isNaN(+t.raw),\n        },\n        arbitraryLines: arbitraryLines\n      }\n    };\n    if (this.dateFormat) {\n      this.options = this.options || {};\n      this.options.scales = {\n        ...this.options.scales,\n        x: {\n          display: 'auto',\n          ...this.options.scales?.['x'],\n          type: 'time',\n          time: {\n            displayFormats: {\n              day: this.dateFormat.pattern?.toLocaleUpperCase(),\n            },\n            tooltipFormat: this.isMonthlyChart ? Constants.MONTH_FORMAT : this.dateFormat.pattern?.toLocaleUpperCase(),\n            unit: this.isMonthlyChart ? 'month' : 'day',\n          },\n        },\n      };\n    }\n\n    if (this.disableLegendOnClick) {\n      this.options.plugins.legend.onClick = function () {\n      }\n    }\n\n    if (this.disableAnimations) {\n      this.options = Helpers.disableChartAnimations(this.options);\n    }\n\n    if (this.isSmallChart) {\n      this.options = this.getSmallChartOptions(this.options)\n    }\n\n    if (barChartData) {\n      this.initChart(barChartData, this.isMonthlyChart, this.shouldSortDatasets)\n    } else {\n      this.chartLabels = []\n      this.chartDataSets = []\n    }\n  }\n\n  public initChart(barChartData: BarChartData[], isMonthlyChart?: boolean, shouldSortDatasets?: boolean) {\n\n    const chartContainsLines = (barChartData.find(it => it.type === 'LINE' || it.type === 'DASHED-LINE'))\n\n    const extendedChartData = chartContainsLines && barChartData[0]?.data[0] ?\n      this.generateExtendedHorizontalLine(barChartData, isMonthlyChart) : barChartData\n\n    this.chartLabels = extendedChartData[0].data.map(it => it.label)\n\n    if (chartContainsLines) {\n      this.options.scales = {\n        ...this.options.scales,\n        x: {\n          ...this.options.scales['x'],\n          min: this.chartLabels[1],\n          max: this.chartLabels[this.chartLabels.length - 2]\n        }\n      } as any\n    }\n\n    this.chartDataSets = extendedChartData.map(inputData => {\n      let data = inputData.data.map(it => it.value)\n\n      let dataSet: any = {\n        data: data,\n        pointBackgroundColor: inputData.color,\n        label: inputData.label,\n        stack: inputData.stack\n      }\n\n      if (inputData.type === 'LINE') {\n        dataSet = {\n          ...dataSet,\n          pointBackgroundColor: inputData.color,\n          type: 'line',\n          pointRadius: 0,\n          borderDash: [10]\n        }\n      }\n\n      if (inputData.type === 'DASHED-LINE') {\n        dataSet = {\n          ...dataSet,\n          pointBackgroundColor: inputData.color,\n          type: \"line\",\n          pointRadius: 0,\n          borderDash: [10],\n          spanGaps: false\n        }\n      }\n\n      return dataSet\n    })\n\n    if (shouldSortDatasets) {\n      this.chartDataSets = BarChartComponent.sortStackedBarDataSets(this.chartDataSets)\n    }\n    this.chartDataSets.forEach(it => {\n\n      if (it.type != 'line' && (it as ChartDataset & { pointBackgroundColor: string }).pointBackgroundColor == null) {\n        const color = chartColors.fillerColors[this.chartColorIndex++ % chartColors.fillerColors.length]\n        it.backgroundColor = color\n        it.borderColor = color\n        it.hoverBorderColor = color\n        it.hoverBackgroundColor = color\n      } else {\n        const backgroundColor = (it as ChartDataset & { pointBackgroundColor: string }).pointBackgroundColor\n        it.backgroundColor = backgroundColor\n        it.borderColor = backgroundColor\n        it.hoverBorderColor = backgroundColor\n        it.hoverBackgroundColor = backgroundColor\n      }\n    })\n  }\n\n  generateExtendedHorizontalLine(barChartData: BarChartData[], isMonthlyChart?: boolean): BarChartData[] {\n    let barData = barChartData.filter(it => it.type === \"BAR\")\n\n    let lineData = barChartData.filter(it => it.type === \"LINE\" || it.type === \"DASHED-LINE\")\n    lineData.forEach(it => {\n      it.data.unshift(this.generateExtendedDots(it.data, 'before', isMonthlyChart))\n      it.data = it.data.concat(this.generateExtendedDots(it.data, 'after', isMonthlyChart))\n    })\n\n    barData.forEach(it => {\n      it.data.unshift(new ChartDot(Helpers.getPreviousDate(it.data, isMonthlyChart), NaN))\n      it.data = it.data.concat(new ChartDot(Helpers.getBarChartNextDate(it.data, isMonthlyChart), NaN))\n    })\n\n    return barData.concat(lineData)\n  }\n\n  generateExtendedDots(chartDots: ChartDot[], period: string, isMonthlyChart?: boolean): ChartDot {\n    if (period == 'before') {\n      const firstDate = chartDots[0]\n      return new ChartDot(Helpers.getPreviousDate(chartDots, isMonthlyChart), firstDate.value)\n    } else {\n      const lastDate = chartDots[chartDots.length - 1]\n      return new ChartDot(Helpers.getBarChartNextDate(chartDots, isMonthlyChart), lastDate.value)\n    }\n  }\n\n  static sortStackedBarDataSets(chartDataSets: ChartDataset[]): ChartDataset[] {\n    return chartDataSets.sort((a, b) => {\n      const bSum = b.data.length != 0 ? b.data.reduce((accumulator: number, curr: number) => accumulator + curr) : 0\n      const aSum = a.data.length != 0 ? a.data.reduce((accumulator: number, curr: number) => accumulator + curr) : 0\n      return Math.abs(bSum as number) - Math.abs(aSum as number)\n    })\n  }\n\n  private getSmallChartOptions(options: ChartOptions): ChartOptions {\n    options.plugins.legend.display = false;\n    options.plugins.tooltip.enabled = false;\n    options.scales['y'].display = false\n\n    options.scales['x'].display = false\n    return options\n  }\n\n}\n","<canvas\n  baseChart\n  [datasets]=\"chartDataSets\"\n  [labels]=\"chartLabels\"\n  type=\"bar\"\n  [options]=\"options\"\n  [plugins]=\"plugins\"\n  class=\"w-100\"\n>\n</canvas>\n","import { ChartDot } from \"../model/ChartDot\"\n\nexport class BarChartData {\n  data: ChartDot[]\n  color: string\n  label: string\n  type: 'BAR' | 'LINE' | 'DASHED-LINE'\n  stack: string\n\n  constructor(data: ChartDot[], color: string, label: string, type: 'BAR' | 'LINE' | 'DASHED-LINE' = 'BAR', stack?: string) {\n    this.data = data\n    this.color = color\n    this.label = label\n    this.type = type\n    this.stack = stack\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  PipeTransform,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {ChartDataset, ChartOptions} from 'chart.js';\nimport {BaseChartDirective, NgChartsModule} from 'ng2-charts';\nimport {chartColors} from '../../design-system/ChartColors';\nimport {ChartDot} from '../model/ChartDot';\n\n@Component({\n    selector: 'lib-pie-chart',\n    templateUrl: './pie-chart.component.html',\n    styleUrls: ['./pie-chart.component.scss'],\n    imports: [NgChartsModule]\n})\nexport class PieChartComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild(BaseChartDirective) chart: BaseChartDirective;\n  totalAmount: number;\n  @Input() pieChartData: ChartDot[] = [];\n  @Input() other: ChartDot;\n  @Input() tooltipValuePipe: PipeTransform;\n  @Input() tooltipTransformArgs: string[] = [];\n  @Input() disableAnimations: boolean = false;\n  @Input() displayLegend: boolean = false;\n  @Output() onChartClick: EventEmitter<any> = new EventEmitter();\n  chartLabels: (Date | string | number)[];\n  chartDataSets: ChartDataset[] = [];\n  options: ChartOptions;\n\n  ngOnInit(): void {\n    this.chartOptions(this.pieChartData, this.other, this.tooltipValuePipe);\n  }\n\n  ngAfterViewInit(): void {\n    this.chart.chart.update();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.chartOptions(this.pieChartData, this.other, this.tooltipValuePipe);\n  }\n\n  chartOptions = (\n    data?: ChartDot[],\n    other?: ChartDot,\n    valuePipe?: PipeTransform\n  ) => {\n    this.options = {\n      responsive: true,\n      maintainAspectRatio: true,\n      interaction: {\n        mode: 'point', // Change this to 'nearest' or 'point'\n        intersect: false,\n      },\n      onClick: (event: any, element: any) => {\n        if (element.length) {\n          this.onChartClick.emit(element);\n        }\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          position: 'left',\n        },\n        tooltip: {\n          callbacks: {\n            label: (tooltipItem) => {\n              const chartDot =\n                this.pieChartData[tooltipItem.dataIndex] == undefined\n                  ? this.other\n                  : this.pieChartData[tooltipItem.dataIndex];\n\n              const value = valuePipe\n                ? valuePipe.transform(\n                    tooltipItem.raw.toString(),\n                    ...this.tooltipTransformArgs\n                  )\n                : tooltipItem.raw.toString();\n\n              const displayValue = chartDot.tooltipLabel\n                ? `${chartDot.tooltipLabel}`\n                : '';\n\n              return `${\n                tooltipItem.label\n              }: ${value} ${displayValue} (${this.labelValue(\n                tooltipItem.raw\n              )}%)`;\n            },\n          },\n        },\n      },\n    };\n    if (this.disableAnimations) {\n      this.options.animation = { duration: 0 };\n    }\n    if (!data) {\n      this.chartLabels = [];\n      this.chartDataSets = [\n        {\n          data: [],\n          label: '',\n        },\n      ];\n      return;\n    }\n    this.initChart(data, other);\n  };\n\n  private initChart(data: ChartDot[], other: ChartDot = null) {\n    this.pieChartData = data;\n    const sortedData = other\n      ? data.sort((a, b) => b.value - a.value).concat(other)\n      : data.sort((a, b) => b.value - a.value);\n\n    this.chartLabels = sortedData\n      .filter((it) => it.label)\n      .map((it) => it.label);\n    const finalColors = sortedData.map((item) =>\n      item === other\n        ? chartColors.otherColor\n        : chartColors.pieChartColors[sortedData.indexOf(item)]\n    );\n    this.chartDataSets = [\n      {\n        label: 'Pie chart label',\n        data: sortedData.map((it) => it.value),\n        backgroundColor: finalColors,\n        hoverBorderColor: finalColors,\n        hoverBackgroundColor: finalColors,\n        borderColor: 'white',\n        borderWidth: [0, 3],\n        fill: true,\n        hoverOffset: 4,\n      },\n    ];\n    this.totalAmount = sortedData.reduce(\n      (sum, current) => sum + current.value,\n      0\n    );\n  }\n\n  labelValue(value: any): string {\n    return ((100 * value) / this.totalAmount).toFixed(2);\n  }\n}\n","<canvas baseChart \n        [datasets]=\"chartDataSets\"\n        [labels]=\"chartLabels\"\n        [options]=\"options\"\n        type=\"pie\">\n</canvas>\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  PipeTransform,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport {ChartDataset, ChartOptions} from 'chart.js';\nimport {chartColors} from '../../design-system/ChartColors';\nimport {BaseChartDirective, NgChartsModule} from 'ng2-charts';\nimport {ChartDot} from '../model/ChartDot';\n\n@Component({\n    selector: 'lib-doughnut-chart',\n    templateUrl: './doughnut-chart.component.html',\n    styleUrls: ['./doughnut-chart.component.scss'],\n    imports: [NgChartsModule]\n})\nexport class DoughnutChartComponent\n  implements OnInit, AfterViewInit, OnChanges\n{\n  @ViewChild(BaseChartDirective) chart: BaseChartDirective;\n  totalAmount: number;\n  @Input() pieChartData: ChartDot[];\n  @Input() other: ChartDot;\n  @Input() tooltipValuePipe: PipeTransform;\n  @Input() tooltipTransformArgs: string[] = [];\n  @Input() disableAnimations: boolean = false;\n  @Input() displayLegend: boolean = false;\n  @Input() monochrome: boolean = false;\n  @Output() onChartClick: EventEmitter<any> = new EventEmitter();\n  chartLabels: (Date | string | number)[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n\n  ngOnInit(): void {\n    this.chartOptions(this.pieChartData, this.other, this.tooltipValuePipe);\n  }\n\n  ngAfterViewInit(): void {\n    this.chart.chart.update();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.chartOptions(this.pieChartData, this.other, this.tooltipValuePipe);\n  }\n\n  chartOptions = (\n    data?: ChartDot[],\n    other?: ChartDot,\n    valuePipe?: PipeTransform\n  ) => {\n    this.options = {\n      responsive: true,\n      cutout: '50%',\n      maintainAspectRatio: false,\n      onClick: (event: any, element: any) => {\n        if (element.length) {\n          this.onChartClick.emit(element); // Only emit if there are chart elements clicked\n        }\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          position: 'left',\n        },\n        tooltip: {\n          callbacks: {\n            label: (tooltipItem) => {\n              const chartDot =\n                this.pieChartData[tooltipItem.dataIndex] == undefined\n                  ? this.other\n                  : this.pieChartData[tooltipItem.dataIndex];\n\n              const value = valuePipe\n                ? valuePipe.transform(\n                    tooltipItem.raw.toString(),\n                    ...this.tooltipTransformArgs\n                  )\n                : tooltipItem.raw.toString();\n\n              const displayValue = chartDot.tooltipLabel\n                ? `${chartDot.tooltipLabel}`\n                : '';\n\n              return `${\n                tooltipItem.label\n              }: ${value} ${displayValue} (${this.labelValue(\n                tooltipItem.raw\n              )}%)`;\n            },\n          },\n        },\n      },\n    };\n    if (!data) {\n      this.chartLabels = [];\n      this.chartDataSets = [\n        {\n          data: [],\n          label: '',\n        },\n      ];\n      return;\n    }\n    this.initChart(data, other);\n  };\n\n  public initChart(data: ChartDot[], other: ChartDot = null) {\n    this.pieChartData = data;\n    const sortedData = other\n      ? data.sort((a, b) => b.value - a.value).concat(other)\n      : data.sort((a, b) => b.value - a.value);\n\n    this.chartLabels = sortedData.map((data) => data.label);\n    const finalColors = sortedData.map((item) =>\n      item === other\n        ? chartColors.otherColor\n        : this.monochrome\n        ? chartColors.doughnutColors[sortedData.indexOf(item)]\n        : chartColors.fillerColors[sortedData.indexOf(item)]\n    );\n\n    this.chartDataSets = [\n      {\n        data: sortedData.map((data) => data.value),\n        backgroundColor: finalColors,\n        hoverBorderColor: finalColors,\n        hoverBackgroundColor: finalColors,\n        borderColor: 'white',\n        borderWidth: 5,\n        borderRadius: 8,\n      },\n    ];\n    this.totalAmount = sortedData.reduce(\n      (sum, current) => sum + current.value,\n      0\n    );\n  }\n\n  labelValue(value: any): string {\n    return ((100 * value) / this.totalAmount).toFixed(2);\n  }\n}\n","<canvas\n  baseChart\n  [datasets]=\"chartDataSets\"\n  [labels]=\"chartLabels\"\n  [options]=\"options\"\n  type=\"pie\"\n>\n</canvas>\n","import { ChartDot } from '../model/ChartDot';\n\nexport class LineChartData {\n  data: ChartDot[];\n  color: string;\n  label: string;\n  type: 'BAR' | 'LINE' | 'DASHED-LINE' | 'AREA';\n\n  constructor(\n    data: ChartDot[],\n    color: string,\n    label: string,\n    type: 'BAR' | 'LINE' | 'DASHED-LINE' | 'AREA' = 'LINE',\n  ) {\n    this.data = data;\n    this.color = color;\n    this.label = label;\n    this.type = type;\n  }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-button',\n    templateUrl: './button.component.html',\n    styleUrls: ['./button.component.scss'],\n    standalone: true\n})\nexport class ButtonComponent {\n\n}\n","<button class=\"ui-button\" aria-label=\"Button\">\n  <span class=\"ui-button__text\"><ng-content></ng-content></span>\n</button>\n","import {Component, Input} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n    selector: 'ui-small-icon',\n    templateUrl: './small-icon.component.html',\n    styleUrls: ['./small-icon.component.scss'],\n    imports: [NgClass, MatIcon]\n})\nexport class SmallIconComponent {\n\n  @Input()\n  icon: string;\n  @Input()\n  active: boolean;\n  @Input()\n  filled: boolean = false;\n}\n","<button class=\"ui-small-icon\" [ngClass]=\"{'active': active, 'filled': filled}\">\n  <mat-icon>{{icon}}</mat-icon>\n</button>\n","import {Component, forwardRef, Input, ViewChild} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport moment, {Moment} from 'moment';\nimport {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from '@angular/material/datepicker';\nimport {MatSuffix} from '@angular/material/form-field';\nimport {MAT_DATE_FORMATS} from '@angular/material/core';\n\nconst MONTH_PICKER_FORMATS = {\n  parse: {\n    dateInput: 'YYYY-MM',\n  },\n  display: {\n    dateInput: 'YYYY-MM',\n    monthYearLabel: 'MMM YYYY',\n    dateA11yLabel: 'LL',\n    monthYearA11yLabel: 'MMMM YYYY',\n  },\n};\n\n@Component({\n    selector: 'ui-monthpicker',\n    standalone: true,\n    templateUrl: './monthpicker.component.html',\n    styleUrls: ['./monthpicker.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => MonthpickerComponent),\n            multi: true,\n        },\n        {\n            provide: MAT_DATE_FORMATS,\n            useValue: MONTH_PICKER_FORMATS,\n        },\n    ],\n    imports: [\n        MatDatepickerInput,\n        MatDatepickerToggle,\n        MatSuffix,\n        MatDatepicker,\n    ]\n})\nexport class MonthpickerComponent implements ControlValueAccessor {\n  @Input() label: string;\n  @Input() dateFilter: (date: Moment) => boolean;\n  @ViewChild('picker') picker: MatDatepicker<Moment>;\n  value: Moment;\n\n  get displayValue(): string {\n    if (!this.value) {\n      return '';\n    }\n    const m = moment.isMoment(this.value) ? this.value : moment(this.value);\n    return m.isValid() ? m.format(MONTH_PICKER_FORMATS.display.dateInput) : '';\n  }\n\n  onChange: any = () => {};\n\n  onTouch: any = () => {};\n\n  writeValue(value: any): void {\n    if (value !== undefined) {\n      this.value = value;\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  openDatePicker() {\n    this.picker.open();\n  }\n\n  monthSelected(date: Moment, picker: MatDatepicker<Moment>) {\n    this.value = date;\n    this.onChange(this.value);\n    this.onTouch();\n    picker.close();\n  }\n}\n","<div class=\"monthpicker-container\">\n  <span class=\"monthpicker__label\">{{ label }}</span>\n  <input\n    class=\"ui-monthpicker\"\n    [value]=\"displayValue\"\n    (click)=\"openDatePicker()\"\n    readonly\n  />\n  <input\n    class=\"monthpicker-hidden-input\"\n    [matDatepicker]=\"picker\"\n    [matDatepickerFilter]=\"dateFilter\"\n  />\n  <span class=\"monthpicker__icon\">\n    <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n  </span>\n  <mat-datepicker #picker startView=\"multi-year\" (monthSelected)=\"monthSelected($event, picker)\"></mat-datepicker>\n</div>\n","import {Component, forwardRef, Input, OnInit, ViewChild} from '@angular/core';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR,} from '@angular/forms';\nimport {MatCheckboxChange} from '@angular/material/checkbox';\nimport {KeyValue} from '../../../common/KeyValue';\n\n@Component({\n    selector: 'ui-label-dropdown-multiselect',\n    templateUrl: './label-dropdown-multiselect.component.html',\n    styleUrls: ['./label-dropdown-multiselect.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => LabelDropdownMultiselectComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n})\n\nexport class LabelDropdownMultiselectComponent\n  implements OnInit, ControlValueAccessor\n{\n  @Input() label: string;\n  @Input() allOptions: Array<KeyValue>;\n  @ViewChild(CdkVirtualScrollViewport)\n  cdkVirtualScrollViewPort: CdkVirtualScrollViewport;\n\n  searchInputFormControl = new FormControl<string>('');\n\n  filteredOptions: Array<KeyValue>;\n  selectedOptions: Array<KeyValue> = [];\n\n  subscribers: any = {};\n\n  constructor() {}\n\n  ngOnInit() {\n    this.filteredOptions = this.allOptions;\n    this.subscribers.inputFormControl =\n      this.searchInputFormControl.valueChanges.subscribe((it) => {\n        this.filterItem(it);\n      });\n  }\n\n  getSelectionText(): string {\n    return `${this.selectedOptions.length} / ${this.allOptions.length}`;\n  }\n\n  onChange: any = () => {};\n  onTouch: any = () => {};\n\n  writeValue(values: any[]): void {\n    if (Array.isArray(values)) {\n      this.selectedOptions = this.allOptions.filter((option) =>\n        values?.includes(option.value)\n      );\n    } else {\n      this.selectedOptions = [];\n    }\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n  }\n\n  isOptionSelected(option: KeyValue): boolean {\n    return this.selectedOptions.some(\n      (selected) => selected.value === option.value\n    );\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  filterItem(value: string) {\n    this.filteredOptions = this.allOptions.filter((item) => {\n      let valueIndex = 0;\n      const splitItem = item.display\n        .split(/(?=[A-Z])|(-)|(\\.)|(\\s+)|(_)/)\n        .filter(Boolean);\n      for (let word of splitItem) {\n        let wordIndex = 0;\n        word = word.charAt(0).toUpperCase() + word.slice(1);\n\n        if (\n          value.charAt(0).toUpperCase() === word.charAt(0) &&\n          valueIndex === 1\n        ) {\n          valueIndex = 0;\n        }\n\n        while (wordIndex < word.length) {\n          if (\n            valueIndex < value.length &&\n            value[valueIndex].toUpperCase() === word[wordIndex]\n          ) {\n            valueIndex++;\n            wordIndex++;\n            while (\n              valueIndex < value.length &&\n              value[valueIndex].toLowerCase() === word[wordIndex]\n            ) {\n              valueIndex++;\n              wordIndex++;\n            }\n          } else {\n            wordIndex++;\n          }\n        }\n      }\n      return valueIndex === value.length;\n    });\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  onClickOpen() {\n    try {\n      document.getElementById('label-dropdown-input').focus();\n    } catch (error) {}\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  onClickClose() {\n    this.searchInputFormControl.setValue('');\n    this.filteredOptions = this.allOptions;\n    this.onTouch();\n    this.cdkVirtualScrollViewPort.scrollToIndex(0);\n    this.cdkVirtualScrollViewPort.checkViewportSize();\n  }\n\n  onCheckboxChange(option: KeyValue, event: MatCheckboxChange): void {\n    if (event.checked) {\n      this.selectOption(option);\n    } else {\n      this.deselectOption(option);\n    }\n  }\n\n  selectOption(option: KeyValue): void {\n    this.selectedOptions.push(option);\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n    this.onTouch();\n  }\n\n  deselectOption(option: KeyValue): void {\n    const index = this.selectedOptions.findIndex(\n      (selected) => selected.value === option.value\n    );\n    if (index !== -1) {\n      this.selectedOptions.splice(index, 1);\n    }\n    this.onChange(this.selectedOptions.map((selected) => selected.value));\n    this.onTouch();\n  }\n\n  toggleCheckbox(option: KeyValue, event: any): void {\n    event.stopPropagation();\n    if (this.isOptionSelected(option)) {\n      this.deselectOption(option);\n    } else {\n      this.selectOption(option);\n    }\n  }\n\n  public trackByFn(index, item) {\n    return item;\n  }\n}\n","<!-- <button class=\"ui-label-dropdown\" [matMenuTriggerFor]=\"labelDropdownMenu\" (menuOpened)=\"onClickOpen()\"\n        (menuClosed)=\"onClickClose()\" aria-haspopup=\"true\">\n  <span class=\"label-dropdown__label\" role=\"presentation\">\n    {{label}}\n  </span>\n  <span class=\"label-dropdown__text\">{{getSelectionText()}}</span>\n  <mat-icon>arrow_drop_down</mat-icon>\n</button>\n<mat-menu #labelDropdownMenu=\"matMenu\" class=\"label-dropdown-menu\">\n  <mat-form-field appearance=\"outline\" class=\"search-input\" (click)=\"$event.stopPropagation()\">\n    <mat-label>Search &nbsp;</mat-label>\n    <input matInput id=\"label-dropdown-input\" [formControl]=\"searchInputFormControl\" (keydown)=\"$event.stopPropagation()\">\n  </mat-form-field>\n  <cdk-virtual-scroll-viewport class=\"label-dropdown-scroll-viewport\" [itemSize]=\"24\" [style.height.px]=\"240\">\n    <button mat-menu-item *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\n            (click)=\"toggleCheckbox(option, $event)\">\n      <mat-checkbox [checked]=\"isOptionSelected(option)\">\n        {{option.display}}\n      </mat-checkbox>\n    </button>\n  </cdk-virtual-scroll-viewport>\n</mat-menu> -->\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-layout',\n    templateUrl: './app-layout.component.html',\n    styleUrls: ['./app-layout.component.scss'],\n    standalone: true\n})\nexport class AppLayoutComponent {\n\n}\n","<div class=\"layout-container\">\n  <div class=\"top-section-wrap\">\n    <ng-content select=\"ui-top-section\"></ng-content>\n  </div>\n  <div class=\"page-wrap\">\n    <div class=\"side-menu-wrap\">\n      <ng-content select=\"ui-side-menu\"></ng-content>\n    </div>\n    <div class=\"page-contents-wrap\">\n      <ng-content select=\"ui-page-contents\"></ng-content>\n    </div>\n  </div>\n</div>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-page-contents',\n    templateUrl: './page-contents.component.html',\n    styleUrls: ['./page-contents.component.scss'],\n    standalone: true\n})\nexport class PageContentsComponent {\n\n}\n","<ng-content></ng-content>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-side-menu',\n    templateUrl: './side-menu.component.html',\n    styleUrls: ['./side-menu.component.scss'],\n    standalone: true\n})\nexport class SideMenuComponent {\n\n}\n","<ng-content></ng-content>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-top-section',\n    templateUrl: './top-section.component.html',\n    styleUrls: ['./top-section.component.scss'],\n    standalone: true\n})\nexport class TopSectionComponent {\n\n}\n","<ng-content></ng-content>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-flat-card',\n    templateUrl: './flat-card.component.html',\n    styleUrls: ['./flat-card.component.scss'],\n    standalone: true\n})\nexport class FlatCardComponent {\n\n}\n","<div class=\"ui__flat-card\">\n  <ng-content></ng-content>\n</div>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-flat-card-header',\n    templateUrl: './flat-card-header.component.html',\n    styleUrls: ['./flat-card-header.component.scss'],\n    standalone: true\n})\nexport class FlatCardHeaderComponent {\n\n}\n","<div class=\"row justify-content-between ui__flat-card-header\">\n  <ng-content></ng-content>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NgIf} from '@angular/common';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'ui-chart-card-title',\n    templateUrl: './chart-card-title.component.html',\n    styleUrls: ['./chart-card-title.component.scss'],\n    imports: [NgIf, MatTooltip]\n})\nexport class ChartCardTitleComponent {\n  @Input() tooltip: string;\n}\n","<span class=\"card-title-content\">\n  <h4 class=\"ui__card-secondary-heading\">\n  <ng-content></ng-content>\n    <i class=\"material-icons-outlined info-icon\"\n       *ngIf=\"!!tooltip\"\n       [matTooltip]=\"tooltip\"\n       matTooltipPosition=\"right\">info</i>\n</h4>\n</span>\n\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-big-number',\n    templateUrl: './big-number.component.html',\n    styleUrls: ['./big-number.component.scss'],\n    standalone: true\n})\nexport class BigNumberComponent {\n\n}\n","<span class=\"ui__big-number\">\n  <ng-content></ng-content>\n</span>\n","export enum SkeletonType {\n  CURRENT_PROJECTED_NUMBERS_LOADER,\n  PIE_NUMBERS_LOADER,\n  BAR_NUMBERS_LOADER,\n  BAR_CHART_LOADER,\n  NUMBER_AND_TEXT,\n  CURRENT_PROJECTED_CHART_LOADER,\n  DOUGHNUT_NUMBERS_LOADER,\n  DOUGHNUT_CHART_LOADER\n}\n\nexport class SkeletonDimensions {\n  width: string\n  height: string\n}\n\nexport const SkeletonConfig: { [key in SkeletonType]: SkeletonDimensions } = {\n  [SkeletonType.CURRENT_PROJECTED_CHART_LOADER]: {width: '300px', height: '150px'},\n  [SkeletonType.DOUGHNUT_CHART_LOADER]: {width: '400px', height: '150px'},\n  [SkeletonType.CURRENT_PROJECTED_NUMBERS_LOADER]: {width: '300px', height: '40px'},\n  [SkeletonType.DOUGHNUT_NUMBERS_LOADER]: {width: '80px', height: '40px'},\n  [SkeletonType.PIE_NUMBERS_LOADER]: {width: '36px', height: '36px'},\n  [SkeletonType.BAR_NUMBERS_LOADER]: {width: '100px', height: '36px'},\n  [SkeletonType.BAR_CHART_LOADER]: {width: '300px', height: '150px'},\n  [SkeletonType.NUMBER_AND_TEXT]: {width: '50px', height: '36px'},\n}\n","import {Component, Input} from '@angular/core';\nimport {SkeletonConfig, SkeletonType} from \"../SkeletonLoaderConfig\";\nimport {NgIf} from '@angular/common';\nimport {NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\n\n@Component({\n    selector: 'ui-skeleton-loader',\n    templateUrl: './data-skeleton-loader.component.html',\n    styleUrls: ['./data-skeleton-loader.component.scss'],\n    imports: [NgIf, NgxSkeletonLoaderModule]\n})\nexport class DataSkeletonLoaderComponent {\n\n  @Input() showData: boolean;\n  @Input() type: SkeletonType;\n\n  skeletonConfig = SkeletonConfig\n\n  constructor() { }\n\n\n}\n","<div>\n  <ng-content *ngIf=\"showData\"></ng-content>\n</div>\n<ngx-skeleton-loader [theme]=\"{width: skeletonConfig[type].width, height: skeletonConfig[type].height}\" appearance=\"line\"\n                     *ngIf=\"!showData\"></ngx-skeleton-loader>\n","import {ChartDataset, ChartOptions} from \"chart.js\";\nimport {ChartDot} from \"../../../chart/model/ChartDot\";\nimport {chartColors} from \"../../ChartColors\";\n\nexport class OverviewLineChartContext {\n  chartLabels: (Date | string | number)[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n\n  constructor(currentData?: ChartDot[], predictedData?: ChartDot[], chartLabels?: string[], valuePipe?: any) {\n    this.options = {\n      responsive: true,\n      maintainAspectRatio: false,\n      scales: {\n        x: {\n          display: false,\n          grid: {\n            color: '#EEEEEE',\n            display: false\n          },\n          ticks: {\n            color: '#bbbbbb'\n          }\n        },\n        y: {\n          display: false,\n          ticks: {\n            stepSize: 1,\n          },\n          beginAtZero: true,\n          grid: {\n            display: false\n          }\n        }\n      },\n      interaction: {\n        mode: 'nearest', // Change this to 'nearest' or 'point'\n        intersect: false\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          display: false\n        },\n        tooltip: {\n          mode: 'index', // Change this to 'nearest' or 'point'\n          intersect: false,\n          callbacks: {\n            label(tooltipItem: any): string | string[] {\n              if (tooltipItem.dataIndex < currentData.length && chartLabels && valuePipe) {\n                return chartLabels[0] + ': ' + valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              else if(tooltipItem.dataIndex >= currentData.length && chartLabels && valuePipe) {\n                return chartLabels[1] + ': ' + valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              else if(chartLabels) {\n                return chartLabels[0] + ': ' + tooltipItem.formattedValue\n              }\n              else if(valuePipe) {\n                return valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              return tooltipItem.formattedValue\n            }\n          }\n        }\n      }\n    };\n\n    if(!currentData){\n      this.chartDataSets = []\n    }\n    else {\n      this.initChart(currentData, predictedData)\n    }\n  }\n\n  initChart(currentSpend: ChartDot[], predictedSpend?: ChartDot[]) {\n    this.chartLabels = currentSpend.map(it => it.label);\n    let data = currentSpend.map(it => it.value)\n\n    if (predictedSpend) {\n      data = data.concat(predictedSpend.map(it => it.value))\n      this.chartLabels = this.chartLabels.concat(predictedSpend.map(it => it.label))\n    }\n\n    let dataset: any =\n      {\n        data: data,\n        borderColor: chartColors.drillDownPrimaryColor,\n        pointBackgroundColor: '#FFFFFF',\n        pointBorderColor: chartColors.drillDownPrimaryColor,\n        backgroundColor: chartColors.drillDownPrimaryColorTransparent,\n        fill: true,\n        pointRadius: 0,\n      }\n\n    if (predictedSpend) {\n      dataset = {\n        ...dataset,\n        segment: {\n          borderDash: ctx => ctx.p0DataIndex < currentSpend.length ? [] : [5, 2],\n          backgroundColor: ctx => ctx.p0DataIndex < currentSpend.length ? chartColors.drillDownPrimaryColorTransparent : 'transparent',\n          borderWidth: ctx => ctx.p0DataIndex < currentSpend.length ? 2.5 : 2,\n        },\n      }\n    }\n    this.chartDataSets = [dataset]\n  }\n}\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ChartDot} from \"../../../../chart/model/ChartDot\";\nimport {OverviewLineChartContext} from \"../../Contexts/OverviewLineChartContext\";\nimport {NgIf} from '@angular/common';\nimport {NgChartsModule} from 'ng2-charts';\n\n@Component({\n    selector: 'ui-overview-line-chart-wrapper',\n    templateUrl: './overview-line-chart-wrapper.component.html',\n    styleUrls: ['./overview-line-chart-wrapper.component.scss'],\n    imports: [NgIf, NgChartsModule]\n})\nexport class OverviewLineChartWrapperComponent implements OnInit{\n\n  @Input() currentSpendChartData: ChartDot[];\n  @Input() projectedSpendChartData: ChartDot[];\n  @Input() valuePipe?: any\n  @Input() chartLabels?: string[]\n\n  chartData: OverviewLineChartContext = null;\n\n  ngOnInit(): void {\n    this.chartData = new OverviewLineChartContext(this.currentSpendChartData, this.projectedSpendChartData, this.chartLabels, this.valuePipe)\n  }\n}\n","<div class=\"chart-container\">\n  <canvas baseChart *ngIf=\"chartData !== null\"\n          [datasets]=\"chartData.chartDataSets\"\n          [labels]=\"chartData.chartLabels\"\n          type=\"line\"\n          [options]=\"chartData.options\"\n          class=\"w-100\">\n  </canvas>\n</div>\n\n","import {Pipe} from '@angular/core';\nimport {CurrencyPipe} from \"@angular/common\";\n\n@Pipe({\n    name: 'UiShortCurrencyPipe',\n    standalone: true\n})\nexport class UiShortCurrencyPipe extends CurrencyPipe {\n  static ONE_MILLION = 1000000;\n  static NEGATIVE_ONE_MILLION = -1000000;\n  static ONE_THOUSAND = 1000;\n  static NEGATIVE_ONE_THOUSAND = -1000;\n\n  override transform(value: number, currencyCode?: string, display?: string | boolean, digitsInfo?: string, locale?: string): any {\n    if (value == null) {\n      return null\n    } else if(value >= UiShortCurrencyPipe.ONE_MILLION || value <= UiShortCurrencyPipe.NEGATIVE_ONE_MILLION){\n      return super.transform(value / UiShortCurrencyPipe.ONE_MILLION, currencyCode, 'symbol', '1.1-1', 'en-US') + \"M\";\n    } else if (value >= UiShortCurrencyPipe.ONE_THOUSAND || value <= UiShortCurrencyPipe.NEGATIVE_ONE_THOUSAND) {\n      return super.transform(value / UiShortCurrencyPipe.ONE_THOUSAND, currencyCode, 'symbol', '1.1-1', 'en-US') + \"K\";\n    } else {\n      return super.transform(value, currencyCode, 'symbol', '1.0-0', 'en-US');\n    }\n  }\n}\n","import {Pipe} from '@angular/core';\nimport {CurrencyPipe} from '@angular/common';\n\n@Pipe({\n    name: 'CostimizeCurrency',\n    standalone: true\n})\nexport class CostimizeCurrencyPipe extends CurrencyPipe {\n  static ONE_MILLION = 1000000;\n  static NEGATIVE_ONE_MILLION = -1000000;\n\n  override transform(\n    value: number | string | null | undefined,\n    currencyCode: string = 'USD',\n    digitsInfo: string = '1.2-2'\n  ): any {\n    if (\n      (value as number) >= CostimizeCurrencyPipe.ONE_MILLION ||\n      (value as number) <= CostimizeCurrencyPipe.NEGATIVE_ONE_MILLION\n    ) {\n      return super.transform(value, currencyCode, 'symbol', '1.0-0', 'en-US');\n    }\n    if (value != null) {\n      return super.transform(\n        value,\n        currencyCode,\n        'symbol',\n        digitsInfo,\n        'en-US'\n      );\n    } else {\n      return null;\n    }\n  }\n}\n","import {Component, Input} from '@angular/core';\nimport {SkeletonType} from \"../../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {ChartDot} from \"../../../chart/model/ChartDot\";\nimport {CardComponent} from '../../card/card.component';\nimport {ChartCardTitleComponent} from '../chart-card-title/chart-card-title.component';\nimport {\n  DataSkeletonLoaderComponent\n} from '../../data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nimport {BigNumberComponent} from '../../big-number/big-number.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {NgIf} from '@angular/common';\nimport {OverviewLineChartWrapperComponent} from './overview-line-chart-wrapper/overview-line-chart-wrapper.component';\nimport {UiShortCurrencyPipe} from '../../pipes/UiShortCurrencyPipe';\nimport {CostimizeCurrencyPipe} from '../../pipes/CostimizeCurrencyPipe';\n\n\n@Component({\n    selector: 'ui-overview-line-chart',\n    templateUrl: './overview-line-chart.component.html',\n    styleUrls: ['./overview-line-chart.component.scss', '../card-charts.scss'],\n    imports: [\n        CardComponent,\n        ChartCardTitleComponent,\n        DataSkeletonLoaderComponent,\n        BigNumberComponent,\n        MatTooltip,\n        NgIf,\n        OverviewLineChartWrapperComponent,\n        UiShortCurrencyPipe,\n        CostimizeCurrencyPipe,\n    ]\n})\nexport class OverviewLineChartComponent {\n  @Input() title: string;\n  @Input() tooltip: string;\n  @Input() currentNumber: number;\n  @Input() projectedNumber: number;\n  @Input() currentChartData: ChartDot[];\n  @Input() projectedChartData: ChartDot[];\n  @Input() firstSubtitle: string;\n  @Input() secondSubtitle: string\n  @Input() chartLabels: string[]\n  @Input() valuePipe: any\n\n  protected readonly SkeletonType = SkeletonType;\n}\n","<ui-card class=\"current-projected-container\">\n  <div class=\"chart-card-container\">\n    <ui-chart-card-title tooltip=\"{{tooltip}}\">{{ title }}</ui-chart-card-title>\n    <ui-skeleton-loader [type]=\"SkeletonType.CURRENT_PROJECTED_NUMBERS_LOADER\" [showData]=\"currentNumber !== null\">\n      <div class=\"card-content\">\n        <ui-big-number\n          matTooltip=\"{{currentNumber | CostimizeCurrency}}\">{{ currentNumber | UiShortCurrencyPipe }}\n        </ui-big-number>\n        {{ firstSubtitle }}\n        <span class=\"slash\"> / </span>\n        <ui-big-number\n          matTooltip=\"{{projectedNumber | CostimizeCurrency}}\">{{ projectedNumber | UiShortCurrencyPipe }}\n        </ui-big-number>\n        {{ secondSubtitle }}\n      </div>\n    </ui-skeleton-loader>\n    <ui-skeleton-loader [showData]=\"currentChartData !== null\"\n                        [type]=\"SkeletonType.CURRENT_PROJECTED_CHART_LOADER\">\n      <ui-overview-line-chart-wrapper *ngIf=\"currentChartData\"\n                                      [currentSpendChartData]=\"currentChartData\"\n                                      [projectedSpendChartData]=\"projectedChartData\"\n                                      [valuePipe]=\"valuePipe\"\n                                      [chartLabels]=\"chartLabels\"/>\n    </ui-skeleton-loader>\n\n  </div>\n</ui-card>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {NgIf} from '@angular/common';\nimport {NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\n\n@Component({\n    selector: 'data-circle-skeleton-loader',\n    templateUrl: './data-circle-skeleton-loader.component.html',\n    styleUrls: ['./data-circle-skeleton-loader.component.scss'],\n    imports: [NgIf, NgxSkeletonLoaderModule]\n})\nexport class DataCircleSkeletonLoaderComponent implements OnInit {\n  @Input() lg = false;\n  @Input() showData: boolean;\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div>\n  <ng-content></ng-content>\n</div>\n<ngx-skeleton-loader [theme]=\"{width: '60px', height: '60px'}\" appearance=\"circle\"\n                     *ngIf=\"showData == false && !lg\"></ngx-skeleton-loader>\n<ngx-skeleton-loader [theme]=\"{width: '80px', height: '80px'}\" appearance=\"circle\"\n                     *ngIf=\"showData == false && lg\"></ngx-skeleton-loader>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {NgIf} from '@angular/common';\nimport {NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\n\n@Component({\n    selector: 'app-chart-cart-skeleton-loader',\n    templateUrl: './chart-cart-skeleton-loader.component.html',\n    styleUrls: ['./chart-cart-skeleton-loader.component.scss'],\n    imports: [NgIf, NgxSkeletonLoaderModule]\n})\nexport class ChartCartSkeletonLoaderComponent implements OnInit {\n\n  @Input() showData: boolean;\n  reducedHeight: number\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<ng-container *ngIf=\"showData == true\">\n  <ng-content></ng-content>\n</ng-container>\n<div *ngIf=\"showData == false\" class=\"skeleton-loader-loading\">\n  <ngx-skeleton-loader [theme]=\"{height: '100%'}\" appearance=\"line\" count=\"1\"></ngx-skeleton-loader>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {SkeletonConfig, SkeletonType} from \"../SkeletonLoaderConfig\";\nimport {NgIf} from '@angular/common';\nimport {NgxSkeletonLoaderModule} from 'ngx-skeleton-loader';\n\n@Component({\n    selector: 'ui-number-skeleton-loader',\n    templateUrl: './number-skeleton-loader.component.html',\n    styleUrls: ['./number-skeleton-loader.component.scss'],\n    imports: [NgIf, NgxSkeletonLoaderModule]\n})\nexport class NumberSkeletonLoaderComponent implements OnInit{\n\n  @Input() showData: boolean;\n  @Input() type: SkeletonType;\n\n  skeletonConfig = SkeletonConfig\n\n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<div>\n  <ng-content *ngIf=\"showData\"></ng-content>\n</div>\n<ngx-skeleton-loader [theme]=\"{width: skeletonConfig[type].width, height: skeletonConfig[type].height}\" appearance=\"line\"\n                     *ngIf=\"!showData\"></ngx-skeleton-loader>\n","import {ActiveElement, Chart, ChartDataset, ChartEvent, ChartOptions} from \"chart.js\";\nimport {PieChartPoint} from \"../../../chart/model/ChartDot\";\nimport {chartColors} from \"../../ChartColors\";\n\nexport class OverviewPieChartContext {\n  chartLabels: string[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n\n  constructor(data: PieChartPoint[]) {\n    this.initChart(data)\n    this.initOptions() // should be initialized after the data in order to determine if labels should be displayed\n  }\n\n  private initOptions() {\n    this.options = {\n      responsive: true,\n      maintainAspectRatio: true,\n      scales: {\n        x: {\n          display: false,\n          grid: {\n            color: '#EEEEEE',\n            display: false\n          },\n          ticks: {\n            color: '#bbbbbb'\n          }\n        },\n        y: {\n          display: false,\n          ticks: {\n            stepSize: 1,\n          },\n          beginAtZero: true,\n          grid: {\n            display: false\n          }\n        }\n      },\n      interaction: {\n        mode: 'nearest', // Change this to 'nearest' or 'point'\n        intersect: false\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          display: false\n        },\n        tooltip: {\n          enabled: false\n        },\n      },\n      onHover: (event: ChartEvent, activeElements: ActiveElement[], chart: Chart): any => {\n        if (activeElements[0]) {\n          const event = new CustomEvent('customHoverEvent', {detail: this.chartLabels[activeElements[0].index]});\n          chart.canvas.dispatchEvent(event);\n        }\n      }\n    };\n  }\n\n  private checkTooltipEnabled(): any { //TODO delete\n    if (!this.chartLabels || this.chartLabels.length < 1) {\n      return { enabled: false }\n    } else {\n      return {\n        mode: 'index', // Change this to 'nearest' or 'point'\n        intersect: false,\n        callbacks: {\n          label(tooltipItem: any): string | string[] {\n            return tooltipItem.label\n          }\n        },\n        displayColors: false\n      }\n    }\n  }\n\n  public initChart(data: PieChartPoint[]) {\n\n    this.chartLabels = data.map(it => it.label)\n\n    this.chartDataSets = [\n      {\n        data: data.map(it => it.number),\n        backgroundColor: [chartColors.drillDownPrimaryColor, chartColors.drillDownPrimaryColorTransparent],\n        borderColor: 'white',\n        borderWidth: [0,3],\n        fill: true\n      }]\n  }\n\n}\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {PieChartPoint} from \"../../../../chart/model/ChartDot\";\nimport {OverviewPieChartContext} from \"../../Contexts/OverviewPieChartContext\";\nimport {NgIf} from '@angular/common';\nimport {NgChartsModule} from 'ng2-charts';\nimport {MatTooltip} from '@angular/material/tooltip';\n\n@Component({\n    selector: 'ui-overview-pie-chart-wrapper',\n    templateUrl: './overview-pie-chart-wrapper.component.html',\n    styleUrls: ['./overview-pie-chart-wrapper.component.scss'],\n    imports: [NgIf, NgChartsModule, MatTooltip]\n})\nexport class OverviewPieChartWrapperComponent implements OnInit {\n\n  @Input() data: PieChartPoint[] = null\n\n  tooltipLabel: string = ''\n\n  chartData: OverviewPieChartContext = null;\n\n  ngOnInit() {\n    this.chartData = new OverviewPieChartContext(this.data)\n\n    this.tooltipLabel =  this.chartData?.chartLabels[0] as string;\n  }\n\n  setTooltipLabel(e) {\n    this.tooltipLabel = e.detail;\n  }\n\n}\n","<div class=\"chart-container\">\n  <canvas baseChart\n          *ngIf=\"chartData\"\n          [matTooltip]=\"this.tooltipLabel\"\n          matTooltipPosition=\"above\"\n          (customHoverEvent)=\"setTooltipLabel($event)\"\n          [datasets]=\"chartData?.chartDataSets\"\n          [labels]=\"chartData?.chartLabels\"\n          type=\"pie\"\n          [options]=\"chartData?.options\"\n          class=\"full-width\">\n  </canvas>\n</div>\n\n","import {Component, Input} from '@angular/core';\nimport {OverviewPieChartContext} from \"../Contexts/OverviewPieChartContext\";\nimport {SkeletonType} from \"../../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {PieChartPoint} from \"../../../chart/model/ChartDot\";\nimport {CardComponent} from '../../card/card.component';\nimport {\n  DataSkeletonLoaderComponent\n} from '../../data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nimport {BigNumberComponent} from '../../big-number/big-number.component';\nimport {ChartCardTitleComponent} from '../chart-card-title/chart-card-title.component';\nimport {DataCircleSkeletonLoaderComponent} from '../../data-skeleton-loader/data-circle-skeleton-loader.component';\nimport {NgIf} from '@angular/common';\nimport {OverviewPieChartWrapperComponent} from './overview-pie-chart-wrapper/overview-pie-chart-wrapper.component';\n\n@Component({\n    selector: 'ui-overview-pie-chart',\n    templateUrl: './overview-pie-chart.component.html',\n    styleUrls: ['./overview-pie-chart.component.scss', '../card-charts.scss'],\n    imports: [CardComponent, DataSkeletonLoaderComponent, BigNumberComponent, ChartCardTitleComponent, DataCircleSkeletonLoaderComponent, NgIf, OverviewPieChartWrapperComponent]\n})\nexport class OverviewPieChartComponent {\n\n\n  @Input() title: string\n  @Input() tooltip: string;\n  @Input() displayString: string\n  @Input() data: PieChartPoint[] = null\n\n\n  chartData: OverviewPieChartContext = null;\n\n\n  protected readonly SkeletonType = SkeletonType;\n\n}\n","<ui-card>\n  <div #chartCardContainer class=\"chart-card-container pie-chart-container\">\n    <ui-skeleton-loader [type]=\"SkeletonType.PIE_NUMBERS_LOADER\" [showData]=\"displayString !== null\">\n      <ui-big-number>{{ displayString }}</ui-big-number>\n    </ui-skeleton-loader>\n    <ui-chart-card-title tooltip=\"{{tooltip}}\">{{ title }}</ui-chart-card-title>\n    <div>\n      <data-circle-skeleton-loader [showData]=\"data !== null\" [lg]=\"true\">\n        <ui-overview-pie-chart-wrapper *ngIf=\"data\"\n                                       [data]=\"data\"/>\n      </data-circle-skeleton-loader>\n    </div>\n  </div>\n</ui-card>\n","import {Component, Input} from '@angular/core';\nimport {SkeletonType} from \"../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {CardComponent} from '../card/card.component';\nimport {\n  NumberSkeletonLoaderComponent\n} from '../data-skeleton-loader/number-skeleton-loader/number-skeleton-loader.component';\nimport {BigNumberComponent} from '../big-number/big-number.component';\nimport {ChartCardTitleComponent} from '../overview-cards/chart-card-title/chart-card-title.component';\n\n@Component({\n    selector: 'ui-number-and-text-card',\n    templateUrl: './number-and-text-card.component.html',\n    styleUrls: ['./number-and-text-card.component.scss'],\n    imports: [CardComponent, NumberSkeletonLoaderComponent, BigNumberComponent, ChartCardTitleComponent]\n})\nexport class NumberAndTextCardComponent {\n  @Input() title: string\n  @Input() displayString: string\n\n  protected readonly SkeletonType = SkeletonType;\n}\n\n","<ui-card>\n  <div class=\"card-container\">\n    <ui-number-skeleton-loader [type]=\"SkeletonType.NUMBER_AND_TEXT\" [showData]=\"displayString !== null\">\n      <ui-big-number>{{displayString}}</ui-big-number>\n    </ui-number-skeleton-loader>\n    <ui-chart-card-title>{{title}}</ui-chart-card-title>\n  </div>\n</ui-card>\n","import {Pipe} from \"@angular/core\";\n\n@Pipe({\n    name: 'PercentPipe',\n    standalone: true\n})\nexport class PercentPipe {\n\n  transform(value: number | string | null | undefined, currencyCode: string = 'USD', digitsInfo: string = '1.2-2'): any {\n    if(value === null) {\n      return null\n    }\n    else {\n      return value + '%'\n    }\n  }\n}\n","import {Component, ElementRef, forwardRef, Input, ViewChild,} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {KeyValue} from '../../common/KeyValue';\nimport {NgClass} from '@angular/common';\n\n@Component({\n    selector: 'ui-toggle',\n    templateUrl: './toggle.component.html',\n    styleUrls: ['./toggle.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => ToggleComponent),\n            multi: true,\n        },\n    ],\n    imports: [NgClass]\n})\nexport class ToggleComponent implements ControlValueAccessor {\n  @Input()\n  leftOption: KeyValue;\n\n  @Input()\n  rightOption: KeyValue;\n\n  @ViewChild('leftToggle') leftToggle: ElementRef;\n  @ViewChild('rightToggle') rightToggle: ElementRef;\n\n  activeIndex: number = 0;\n\n  constructor() {}\n\n  setValue(index: 0 | 1) {\n    this.activeIndex = index;\n    this.propagateChange(index === 0 ? this.leftOption : this.rightOption);\n  }\n\n  propagateChange = (_: any) => {};\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {}\n\n  setDisabledState(isDisabled: boolean): void {}\n\n  writeValue(obj: KeyValue): void {\n    if (obj) {\n      const idx = [this.leftOption, this.rightOption].findIndex(\n        (it) => it.value === obj.value\n      );\n      this.activeIndex = idx > -1 ? idx : 0;\n    }\n  }\n}\n","<div class=\"toggle-wrap\" [ngClass]=\"{ active: activeIndex == 1 }\">\n  <div class=\"toggle-track\">\n    <div class=\"toggle-bg\"></div>\n    <div class=\"toggle-left\" #leftToggle (click)=\"setValue(0)\">\n      {{ leftOption.display }}\n    </div>\n    <div class=\"toggle-right\" #rightToggle (click)=\"setValue(1)\">\n      {{ rightOption.display }}\n    </div>\n  </div>\n</div>\n","import {Component} from '@angular/core';\n\n@Component({\n    selector: 'ui-card-title',\n    templateUrl: './card-title.component.html',\n    styleUrls: ['./card-title.component.scss'],\n    standalone: true\n})\nexport class CardTitleComponent {\n\n}\n","<h4 class=\"ui__card-title\">\n  <ng-content></ng-content>\n</h4>\n","import {ChartDataset, ChartOptions} from \"chart.js\";\nimport {chartColors} from \"../ChartColors\";\nimport {ChartKeyValue} from \"../../chart/model/ChartDot\";\n\nexport class DoughnutChartContext {\n  chartLabels: string[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n  totalAmount: number;\n  colors: string[];\n\n  chartColors = chartColors\n\n  constructor(data?: ChartKeyValue[], onClick?: (elements: any) => void, valuePipe?: any, colors?: string[]) {\n    this.options = {\n      maintainAspectRatio: false,\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          position: 'left'\n        },\n        tooltip: {\n          callbacks: {\n            label: (t) => {\n              return `${t.label}: ${valuePipe.transform(t.raw.toString())} (${this.labelValue(t.raw)}%)`;\n            }\n          }\n        }\n      },\n      responsive: true,\n      cutout: '60%'\n    };\n\n    if(onClick) {\n      this.options = {\n        ...this.options,\n        onClick: (e, elements: any) => onClick(elements)\n      }\n    }\n\n    if (!data) {\n      this.chartLabels = [];\n      this.chartDataSets = [{\n        data: [],\n        label: ''\n      }];\n      return;\n    }\n    this.colors = colors;\n    this.initChart(data);\n  }\n\n  public initChart(data: ChartKeyValue[]) {\n\n    const sortedData = data.sort((a,b) => b.value - a.value)\n\n    this.chartLabels = sortedData.map(data => data.key);\n\n    this.chartDataSets = [{\n      data: sortedData.map(data => data.value),\n      backgroundColor: this.colors ? this.colors : chartColors.fillerColors,\n      hoverBorderColor: this.colors ? this.colors : chartColors.fillerColors,\n      hoverBackgroundColor: this.colors ? this.colors : chartColors.fillerColors,\n      borderColor: 'white',\n      borderWidth: 5,\n      borderRadius: 8\n    }];\n    this.totalAmount = sortedData.reduce((sum, current) => sum + current.value, 0);\n  }\n\n  labelValue(value: any): string {\n    return (100 * value / this.totalAmount).toFixed(2);\n  }\n}\n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ChartKeyValue} from \"../../../../chart/model/ChartDot\";\nimport {CostimizeCurrencyPipe} from \"../../../pipes/CostimizeCurrencyPipe\";\nimport {chartColors} from \"../../../ChartColors\";\nimport {DoughnutChartContext} from \"../../../charts/DoughnutChartCotnext\";\nimport {NgIf} from '@angular/common';\nimport {NgChartsModule} from 'ng2-charts';\n\n@Component({\n    selector: 'ui-doughnut-chart-wrapper',\n    templateUrl: './doughnut-chart-wrapper.component.html',\n    styleUrls: ['./doughnut-chart-wrapper.component.scss'],\n    imports: [NgIf, NgChartsModule]\n})\nexport class DoughnutChartWrapperComponent implements OnInit{\n  @Input() data: ChartKeyValue[];\n\n  doughnutChartContext: DoughnutChartContext = null;\n\n  ngOnInit() {\n    this.doughnutChartContext = new DoughnutChartContext(this.data, null, new CostimizeCurrencyPipe(''), chartColors.doughnutColors)\n  }\n}\n","<div class=\"chart-container\">\n  <canvas baseChart\n          *ngIf=\"doughnutChartContext\"\n          [datasets]=\"doughnutChartContext.chartDataSets\"\n          [labels]=\"doughnutChartContext.chartLabels\"\n          [type]=\"'doughnut'\"\n          [options]=\"doughnutChartContext.options\"\n          class=\"w-100\"\n          [legend]=\"false\"></canvas>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {SkeletonType} from \"../../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {ChartKeyValue} from \"../../../chart/model/ChartDot\";\nimport {CardComponent} from '../../card/card.component';\nimport {ChartCardTitleComponent} from '../chart-card-title/chart-card-title.component';\nimport {\n  DataSkeletonLoaderComponent\n} from '../../data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nimport {BigNumberComponent} from '../../big-number/big-number.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {NgIf} from '@angular/common';\nimport {DoughnutChartWrapperComponent} from './doughnut-chart-wrapper/doughnut-chart-wrapper.component';\nimport {UiShortCurrencyPipe} from '../../pipes/UiShortCurrencyPipe';\nimport {CostimizeCurrencyPipe} from '../../pipes/CostimizeCurrencyPipe';\n\n@Component({\n    selector: 'ui-promotions-and-discounts',\n    templateUrl: './promotions-and-discounts.component.html',\n    styleUrls: ['./promotions-and-discounts.component.scss'],\n    imports: [CardComponent, ChartCardTitleComponent, DataSkeletonLoaderComponent, BigNumberComponent, MatTooltip, NgIf, DoughnutChartWrapperComponent, UiShortCurrencyPipe, CostimizeCurrencyPipe]\n})\nexport class PromotionsAndDiscountsComponent {\n  @Input() spend: number;\n  @Input() promotions: number;\n  @Input() discounts: number;\n\n  protected readonly SkeletonType = SkeletonType;\n  protected readonly TOTAL_AMOUNT_LABEL = \"Total amount\";\n  protected readonly ACTUAL_SPEND_LABEL = \"Actual spend\";\n  protected readonly DISCOUNTS_LABEL = \"Discounts\";\n  protected readonly PROMOTIONS_LABEL = \"Promotions\";\n\n  get totalAmount() {\n    return this.spend + this.discounts + this.promotions;\n  }\n\n  get chartData() {\n    return [\n      new ChartKeyValue(this.ACTUAL_SPEND_LABEL, this.spend),\n      new ChartKeyValue(this.DISCOUNTS_LABEL, this.discounts),\n      new ChartKeyValue(this.PROMOTIONS_LABEL, this.promotions)\n    ]\n  }\n}\n","<ui-card>\n  <div class=\"chart-card-container\">\n    <div class=\"card-content\">\n      <div class=\"row header\">\n        <div class=\"col\">\n          <ui-chart-card-title>{{ TOTAL_AMOUNT_LABEL }}</ui-chart-card-title>\n          <ui-skeleton-loader [type]=\"SkeletonType.DOUGHNUT_NUMBERS_LOADER\" [showData]=\"spend !== null && discounts !== null && promotions !== null\">\n            <ui-big-number\n              matTooltip=\"{{totalAmount | CostimizeCurrency}}\">\n              {{ totalAmount | UiShortCurrencyPipe }}\n            </ui-big-number>\n          </ui-skeleton-loader>\n        </div>\n        <div class=\"vertical-separator\"></div>\n        <div class=\"col\">\n          <ui-chart-card-title>{{ ACTUAL_SPEND_LABEL }}</ui-chart-card-title>\n          <ui-skeleton-loader [type]=\"SkeletonType.DOUGHNUT_NUMBERS_LOADER\" [showData]=\"spend !== null\">\n            <ui-big-number\n              matTooltip=\"{{spend | CostimizeCurrency}}\">\n              {{ spend | UiShortCurrencyPipe }}\n            </ui-big-number>\n          </ui-skeleton-loader>\n        </div>\n        <div class=\"vertical-separator\"></div>\n        <div class=\"col\">\n          <ui-chart-card-title>{{ DISCOUNTS_LABEL }}</ui-chart-card-title>\n          <ui-skeleton-loader [type]=\"SkeletonType.DOUGHNUT_NUMBERS_LOADER\" [showData]=\"discounts !== null\">\n            <ui-big-number\n              matTooltip=\"{{discounts | CostimizeCurrency}}\">\n              {{ discounts | UiShortCurrencyPipe }}\n            </ui-big-number>\n          </ui-skeleton-loader>\n        </div>\n        <div class=\"vertical-separator\"></div>\n        <div class=\"col\">\n          <ui-chart-card-title>{{ PROMOTIONS_LABEL }}</ui-chart-card-title>\n          <ui-skeleton-loader [type]=\"SkeletonType.DOUGHNUT_NUMBERS_LOADER\" [showData]=\"promotions !== null\">\n            <ui-big-number\n              matTooltip=\"{{promotions | CostimizeCurrency}}\">\n              {{ promotions | UiShortCurrencyPipe }}\n            </ui-big-number>\n          </ui-skeleton-loader>\n        </div>\n      </div>\n    </div>\n    <ui-skeleton-loader [showData]=\"spend !== null && promotions !== null && discounts !== null\"\n                        [type]=\"SkeletonType.DOUGHNUT_CHART_LOADER\">\n      <ui-doughnut-chart-wrapper *ngIf=\"spend !== null && promotions !== null && discounts !== null\"\n                                  [data]=\"chartData\"/>\n    </ui-skeleton-loader>\n  </div>\n</ui-card>\n","import {ChartDataset, ChartOptions} from \"chart.js\";\nimport {ChartDot} from \"../../../chart/model/ChartDot\";\nimport {chartColors} from \"../../ChartColors\";\n\nexport class OverviewBarChartContext {\n  chartLabels: (Date | string | number)[];\n  chartDataSets: ChartDataset[];\n  options: ChartOptions;\n\n  constructor(currentChartData: ChartDot[], projectedChartData?: ChartDot[], valuePipe?: any, chartLabels?: string[]) {\n    this.options = {\n      responsive: true,\n      maintainAspectRatio: false,\n      scales: {\n        x: {\n          display: false,\n          grid: {\n            color: '#EEEEEE',\n            display: false\n          },\n          ticks: {\n            color: '#bbbbbb'\n          }\n        },\n        y: {\n          display: false,\n          grace: '100%',\n          ticks: {\n            stepSize: 1,\n          },\n          beginAtZero: true,\n          grid: {\n            display: false\n          }\n        }\n      },\n      interaction: {\n        mode: 'nearest', // Change this to 'nearest' or 'point'\n        intersect: false\n      },\n      plugins: {\n        // @ts-ignore\n        crosshair: false,\n        legend: {\n          display: false\n        },\n        tooltip: {\n          mode: 'index', // Change this to 'nearest' or 'point'\n          intersect: false,\n          callbacks: {\n            label(tooltipItem: any): string | string[] {\n              if (tooltipItem.dataIndex < currentChartData.length && chartLabels && valuePipe) {\n                return chartLabels[0] + ': ' + valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              else if(tooltipItem.dataIndex >= currentChartData.length && chartLabels && valuePipe) {\n                return chartLabels[1] + ': ' + valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              else if(chartLabels) {\n                return chartLabels[0] + ': ' + tooltipItem.formattedValue\n              }\n              else if(valuePipe) {\n                return valuePipe.transform(tooltipItem.raw ? tooltipItem.raw : 0)\n              }\n              return tooltipItem.formattedValue\n            }\n          }\n        }\n      }\n    };\n\n    this.initChart(currentChartData, projectedChartData)\n  }\n\n  public initChart(currentChartData: ChartDot[], projectedChartData?: ChartDot[]) {\n    this.chartLabels = currentChartData.map(it => it.label);\n    let data = currentChartData.map(it => it.value)\n\n    if (projectedChartData) {\n      data = data.concat(projectedChartData.map(it => it.value))\n      this.chartLabels = this.chartLabels.concat(projectedChartData.map(it => it.label))\n    }\n    let dataset: ChartDataset =\n      {\n        data: data,\n        backgroundColor: chartColors.drillDownPrimaryColor,\n        borderRadius: {\n          topLeft: 4,\n          topRight: 4,\n          bottomLeft: 0,\n          bottomRight: 0\n        },\n\n      }\n\n    if (projectedChartData) {\n      dataset = {\n        ...dataset,\n        backgroundColor: ctx => ctx.dataIndex < currentChartData.length ? chartColors.drillDownPrimaryColor : chartColors.drillDownPrimaryColorTransparent\n      }\n    }\n\n    this.chartDataSets = [dataset]\n  }\n\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ChartDot} from \"../../../../chart/model/ChartDot\";\nimport {OverviewBarChartContext} from \"../../Contexts/OverviewBarChartContext\";\nimport {NgIf} from '@angular/common';\nimport {NgChartsModule} from 'ng2-charts';\n\n@Component({\n    selector: 'ui-overview-bar-chart-wrapper',\n    templateUrl: './overview-bar-chart-wrapper.component.html',\n    styleUrls: ['./overview-bar-chart-wrapper.component.scss'],\n    imports: [NgIf, NgChartsModule]\n})\nexport class OverviewBarChartWrapperComponent implements OnInit{\n  @Input() currentBarChartData: ChartDot[];\n  @Input() projectedBarChartData?: ChartDot[] = null;\n  @Input() valuePipe?: any\n  @Input() chartLabels?: string[]\n\n  chartContext: OverviewBarChartContext = null;\n\n  ngOnInit(): void {\n    this.chartContext = new OverviewBarChartContext(this.currentBarChartData, this.projectedBarChartData,this.valuePipe, this.chartLabels)\n  }\n}\n","<div class=\"chart-container\">\n  <canvas baseChart\n          *ngIf=\"chartContext\"\n          [datasets]=\"chartContext?.chartDataSets\"\n          [labels]=\"chartContext?.chartLabels\"\n          type=\"bar\"\n          [options]=\"chartContext?.options\"\n          class=\"full-width\">\n  </canvas>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {ChartDot} from \"../../../chart/model/ChartDot\";\nimport {SkeletonType} from \"../../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {CardComponent} from '../../card/card.component';\nimport {ChartCardTitleComponent} from '../chart-card-title/chart-card-title.component';\nimport {\n  DataSkeletonLoaderComponent\n} from '../../data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nimport {BigNumberComponent} from '../../big-number/big-number.component';\nimport {MatTooltip} from '@angular/material/tooltip';\nimport {NgIf} from '@angular/common';\nimport {OverviewBarChartWrapperComponent} from './overview-bar-chart-wrapper/overview-bar-chart-wrapper.component';\nimport {UiShortCurrencyPipe} from '../../pipes/UiShortCurrencyPipe';\nimport {CostimizeCurrencyPipe} from '../../pipes/CostimizeCurrencyPipe';\n\n@Component({\n    selector: 'ui-current-projected-overview-bar-chart',\n    templateUrl: './current-projected-bar-chart.component.html',\n    styleUrls: ['./current-projected-bar-chart.component.scss', '../card-charts.scss'],\n    imports: [CardComponent, ChartCardTitleComponent, DataSkeletonLoaderComponent, BigNumberComponent, MatTooltip, NgIf, OverviewBarChartWrapperComponent, UiShortCurrencyPipe, CostimizeCurrencyPipe]\n})\nexport class CurrentProjectedBarChartComponent {\n  @Input() title: string;\n  @Input() tooltip: string;\n  @Input() currentNumber: number;\n  @Input() projectedNumber: number;\n  @Input() currentChartData: ChartDot[];\n  @Input() projectedChartData: ChartDot[];\n  @Input() firstSubtitle: string;\n  @Input() secondSubtitle: string\n  @Input() chartLabels: string[]\n  @Input() valuePipe: any\n\n\n  protected readonly SkeletonType = SkeletonType;\n}\n","<ui-card class=\"current-projected-container\">\n  <div class=\"chart-card-container\">\n    <ui-chart-card-title tooltip=\"{{tooltip}}\">{{title}}</ui-chart-card-title>\n    <ui-skeleton-loader [type]=\"SkeletonType.CURRENT_PROJECTED_NUMBERS_LOADER\" [showData]=\"currentNumber !== null\">\n      <div class=\"card-content\">\n        <ui-big-number\n          matTooltip=\"{{currentNumber | CostimizeCurrency}}\">{{currentNumber | UiShortCurrencyPipe}} </ui-big-number>\n        {{ firstSubtitle }}\n        <span class=\"slash\"> / </span>\n        <ui-big-number\n          matTooltip=\"{{projectedNumber | CostimizeCurrency}}\">{{projectedNumber | UiShortCurrencyPipe}} </ui-big-number>\n        {{ secondSubtitle }}\n      </div>\n    </ui-skeleton-loader>\n    <div class=\"chart-container\">\n      <ui-skeleton-loader [showData]=\"currentChartData !== null\" [type]=\"SkeletonType.CURRENT_PROJECTED_CHART_LOADER\">\n        <ui-overview-bar-chart-wrapper *ngIf=\"currentChartData\"\n                                       [currentBarChartData]=\"currentChartData\"\n                                       [projectedBarChartData]=\"projectedChartData\"\n                                       [valuePipe]=\"valuePipe\"\n                                       [chartLabels]=\"chartLabels\"\n        />\n      </ui-skeleton-loader>\n    </div>\n  </div>\n</ui-card>\n","import {Component, Input} from '@angular/core';\nimport {ChartDot} from \"../../../chart/model/ChartDot\";\nimport {SkeletonType} from \"../../data-skeleton-loader/SkeletonLoaderConfig\";\nimport {CardComponent} from '../../card/card.component';\nimport {ChartCardTitleComponent} from '../chart-card-title/chart-card-title.component';\nimport {\n  DataSkeletonLoaderComponent\n} from '../../data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nimport {BigNumberComponent} from '../../big-number/big-number.component';\nimport {NgIf} from '@angular/common';\nimport {\n  OverviewBarChartWrapperComponent\n} from '../current-projected-bar-chart/overview-bar-chart-wrapper/overview-bar-chart-wrapper.component';\n\n@Component({\n    selector: 'ui-overview-bar-chart',\n    templateUrl: './overview-bar-chart.component.html',\n    styleUrls: ['./overview-bar-chart.component.scss', '../card-charts.scss'],\n    imports: [CardComponent, ChartCardTitleComponent, DataSkeletonLoaderComponent, BigNumberComponent, NgIf, OverviewBarChartWrapperComponent]\n})\nexport class OverviewBarChartComponent {\n  @Input() title: string;\n  @Input() tooltip: string;\n  @Input() displayString: string;\n  @Input() barchartData : ChartDot[];\n  @Input() chartLabels: string[]\n  @Input() valuePipe: any\n\n  protected readonly SkeletonType = SkeletonType;\n}\n","<ui-card>\n    <div class=\"chart-card-container\">\n        <ui-chart-card-title tooltip=\"{{tooltip}}\">{{ title }}</ui-chart-card-title>\n        <div class=\"card-content\">\n            <ui-skeleton-loader [type]=\"SkeletonType.BAR_NUMBERS_LOADER\" [showData]=\"displayString !== null\">\n                <ui-big-number>{{ displayString }}</ui-big-number>\n            </ui-skeleton-loader>\n        </div>\n        <div class=\"chart-container\">\n            <ui-skeleton-loader [type]=\"SkeletonType.BAR_CHART_LOADER\" [showData]=\"barchartData !== null\">\n                <ui-overview-bar-chart-wrapper *ngIf=\"barchartData\"\n                                               [currentBarChartData]=\"barchartData\"\n                                               [chartLabels]=\"chartLabels\"\n                                               [valuePipe]=\"valuePipe\"/>\n            </ui-skeleton-loader>\n        </div>\n    </div>\n</ui-card>\n","/*\n * Public API Surface of costimize-ui-lib\n */\n\n/*\n * GCP Filter\n */\n\n\nexport * from './lib/filter/filter.component';\nexport * from './lib/filter/model/public/gcp-filter-options';\nexport * from './lib/filter/model/public/modifier-options';\nexport * from './lib/filter/interfaces/pre-apply-validator.interface';\nexport * from './lib/filter/modifiers/filter-selector/filter-selector.component';\nexport * from './lib/filter/modifiers/grouping/grouping.component';\nexport * from './lib/filter/modifiers/period-selector/period-selector.component';\n\n/*\n * Generic table\n */\n\nexport * from './lib/generic-table/models/TableConfigData';\nexport * from './lib/generic-table/models/PageSort';\nexport * from './lib/generic-table/models/Row';\nexport * from './lib/generic-table/models/RowColData';\nexport * from './lib/generic-table/models/TableAction';\nexport * from './lib/generic-table/models/CellTextAlignment';\nexport * from './lib/generic-table/models/CellValue';\nexport * from './lib/generic-table/models/ColumnGenTable';\nexport * from './lib/generic-table/models/ColumnSizeEnum';\nexport * from './lib/generic-table/models/Icon';\nexport * from './lib/generic-table/edit-table-menu/models/Column';\nexport * from './lib/generic-table/edit-table-menu/models/TableConfig';\nexport * from './lib/generic-table/edit-table-menu/models/ConfigAndDisplayColumns';\nexport * from './lib/generic-table/edit-table-menu/table-config.component';\nexport * from './lib/generic-table/generic-table.component';\nexport * from './lib/generic-table/edit-table-menu/table-config-dialog/table-config-dialog.component';\n\nexport * from './lib/generic-table/models/ButtonStyles';\nexport * from './lib/generic-table/models/ButtonConfig';\n\n/*\n * Charts\n */\nexport * from './lib/chart/line-chart/line-chart.component';\n\nexport * from './lib/chart/bar-chart/bar-chart.component';\nexport * from './lib/chart/bar-chart/BarChartData';\nexport * from './lib/chart/pie-chart/pie-chart.component';\nexport * from './lib/chart/doughnut-chart/doughnut-chart.component';\nexport * from './lib/chart/model/chart-options';\nexport * from './lib/chart/line-chart/LineChartData';\n\n/*\n * Design System\n */\n\nexport * from './lib/design-system/buttons/button/button.component';\nexport * from './lib/design-system/buttons/chip/chip.component';\nexport * from './lib/design-system/buttons/flat-icon-button/flat-icon-button.component';\nexport * from './lib/design-system/buttons/icon-button/icon-button.component';\nexport * from './lib/design-system/buttons/primary-button/primary-button.component';\nexport * from './lib/design-system/buttons/small-icon/small-icon.component';\nexport * from './lib/design-system/buttons/text-button/text-button.component';\nexport * from './lib/design-system/buttons/saved-filter-button/dropdown-button.component';\nexport * from './lib/design-system/buttons/saved-filter-container/saved-filter-container.component';\nexport * from './lib/design-system/menu-item/menu-item.component';\nexport * from './lib/design-system/date/datepicker/datepicker.component';\nexport * from './lib/design-system/date/monthpicker/monthpicker.component';\nexport * from './lib/design-system/date/invoice-month-picker/invoice-month-picker.component';\nexport * from './lib/design-system/dropdowns/label-dropdown/label-dropdown.component';\nexport * from './lib/design-system/dropdowns/label-dropdown-multiselect/label-dropdown-multiselect.component';\nexport * from './lib/design-system/layout/app-layout/app-layout.component';\nexport * from './lib/design-system/layout/page-contents/page-contents.component';\nexport * from './lib/design-system/layout/side-menu/side-menu.component';\nexport * from './lib/design-system/layout/top-section/top-section.component';\n\nexport * from './lib/design-system/card/card.component';\nexport * from './lib/design-system/flat-card/flat-card.component';\nexport * from './lib/design-system/flat-card/flat-card-header/flat-card-header.component';\nexport * from './lib/design-system/overview-cards/chart-card-title/chart-card-title.component';\nexport * from './lib/design-system/big-number/big-number.component';\nexport * from './lib/design-system/overview-cards/current-projected-line-chart/overview-line-chart.component';\nexport * from './lib/design-system/data-skeleton-loader/data-circle-skeleton-loader.component';\nexport * from './lib/design-system/data-skeleton-loader/data-skeleton-loader/data-skeleton-loader.component';\nexport * from './lib/design-system/data-skeleton-loader/chart-cart-skeleton-loader/chart-cart-skeleton-loader.component';\nexport * from './lib/design-system/data-skeleton-loader/number-skeleton-loader/number-skeleton-loader.component';\nexport * from './lib/design-system/data-skeleton-loader/line-chart-skeleton-loader/line-chart-skeleton-loader.component';\nexport * from './lib/design-system/overview-cards/overview-pie-chart/overview-pie-chart.component';\nexport * from './lib/design-system/number-and-text-card/number-and-text-card.component';\nexport * from './lib/design-system/pipes/PercentPipe';\nexport * from './lib/design-system/toggle/toggle.component';\nexport * from './lib/design-system/card/card-title/card-title.component';\nexport * from './lib/design-system/card/card-subtitle/card-subtitle.component';\nexport * from './lib/design-system/card/card-content-header/card-content-header.component';\nexport * from './lib/design-system/overview-cards/promotions-and-discounts/promotions-and-discounts.component';\nexport * from './lib/design-system/overview-cards/current-projected-bar-chart/current-projected-bar-chart.component';\nexport * from './lib/chart/model/ChartDot';\nexport * from './lib/design-system/overview-cards/overview-bar-chart/overview-bar-chart.component';\nexport * from './lib/design-system/toggle-button-group/toggle-button-group.component';\nexport * from './lib/design-system/read-more/read-more.component';\nexport * from './lib/design-system/pipes/as.pipe';\nexport * from './lib/design-system/menu-window/menu-window.component';\nexport * from './lib/design-system/menu/menu.component';\nexport * from './lib/design-system/menu/lazy-content.directive';\nexport * from './lib/design-system/inputs/ui-input/input.component';\nexport * from './lib/design-system/basic-elements/line/line.component';\nexport * from './lib/design-system/tooltip/toolip.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3"],"mappings":"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"}