{"version":3,"file":"uipath-angular-components-ui-grid.mjs","sources":["../../../projects/angular/components/ui-grid/src/components/ui-grid-search/ui-grid-custom-search.directive.ts","../../../projects/angular/components/ui-grid/src/ui-grid.intl.ts","../../../projects/angular/components/ui-grid/src/filters/ui-grid-filter.ts","../../../projects/angular/components/ui-grid/src/filters/ui-grid-dropdown-filter.directive.ts","../../../projects/angular/components/ui-grid/src/filters/ui-grid-search-filter.directive.ts","../../../projects/angular/components/ui-grid/src/managers/sort-manager.ts","../../../projects/angular/components/ui-grid/src/managers/data-manager.ts","../../../projects/angular/components/ui-grid/src/managers/filter-manager.ts","../../../projects/angular/components/ui-grid/src/managers/selection-manager.ts","../../../projects/angular/components/ui-grid/src/managers/resize/resize-manager.constants.ts","../../../projects/angular/components/ui-grid/src/managers/resize/types/resizeDirection.ts","../../../projects/angular/components/ui-grid/src/managers/resize/types/resizeStrategy.ts","../../../projects/angular/components/ui-grid/src/managers/resize/types/resizableGrid.ts","../../../projects/angular/components/ui-grid/src/managers/resize/resize-manager.ts","../../../projects/angular/components/ui-grid/src/managers/resize/strategies/immediate-neighbour-halt-resizer.ts","../../../projects/angular/components/ui-grid/src/managers/resize/strategies/aggresive-neighbour-push-resizer.ts","../../../projects/angular/components/ui-grid/src/managers/resize/strategies/scrollable-grid-resizer.ts","../../../projects/angular/components/ui-grid/src/managers/resize/resize-manager.factory.ts","../../../projects/angular/components/ui-grid/src/managers/performance.ts","../../../projects/angular/components/ui-grid/src/managers/live-announcer-manager.ts","../../../projects/angular/components/ui-grid/src/managers/visibility-manager.ts","../../../projects/angular/components/ui-grid/src/managers/resize-strategy-token.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-column.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-expanded-row.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-loading.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-no-content.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-row-action.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-row-card-view.directive.ts","../../../projects/angular/components/ui-grid/src/body/ui-grid-row-config.directive.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-custom-paginator/ui-grid-custom-paginator.component.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-custom-paginator/ui-grid-custom-paginator.component.html","../../../projects/angular/components/ui-grid/src/components/ui-grid-custom-paginator/ui-grid-custom-paginator.module.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-search/ui-grid-search.component.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-search/ui-grid-search.component.html","../../../projects/angular/components/ui-grid/src/components/ui-grid-search/ui-grid-search.module.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-toggle-columns/ui-grid-toggle-columns.component.ts","../../../projects/angular/components/ui-grid/src/components/ui-grid-toggle-columns/ui-grid-toggle-columns.component.html","../../../projects/angular/components/ui-grid/src/components/ui-grid-toggle-columns/ui-grid-toggle-columns.module.ts","../../../projects/angular/components/ui-grid/src/footer/ui-grid-footer.directive.ts","../../../projects/angular/components/ui-grid/src/header/ui-grid-header-button.directive.ts","../../../projects/angular/components/ui-grid/src/header/ui-grid-header.directive.ts","../../../projects/angular/components/ui-grid/src/ui-grid.component.ts","../../../projects/angular/components/ui-grid/src/ui-grid.component.html","../../../projects/angular/components/ui-grid/src/ui-grid.module.ts","../../../projects/angular/components/ui-grid/src/uipath-angular-components-ui-grid.ts"],"sourcesContent":["import {\n    ContentChild,\n    Directive,\n    TemplateRef,\n} from '@angular/core';\n\n@Directive({\n    selector: '[uiGridCustomSearch], ui-grid-custom-search',\n})\nexport class UiGridCustomSearchDirective {\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import { Subject } from 'rxjs';\n\nimport {\n    Injectable,\n    OnDestroy,\n} from '@angular/core';\n\nimport { IDropdownOption } from './filters/ui-grid-dropdown-filter.directive';\n\n/**\n * Internationalization service definition for `UiGrid`.\n *\n * @export\n */\n@Injectable()\nexport class UiGridIntl implements OnDestroy {\n    /**\n     * Notify if changes have occured that require that the labels be updated.\n     *\n     */\n    // eslint-disable-next-line rxjs/finnish\n    changes = new Subject<void>();\n\n    /**\n     * Live announcer refresh message.\n     *\n     */\n    pageRefreshing = 'Page refreshing';\n\n    /**\n     * Refresh button tooltip.\n     *\n     */\n    refreshTooltip = 'Refresh';\n    /**\n     * Search tooltip.\n     *\n     */\n    searchTooltip = 'Search';\n    /**\n     * Clear search tooltip.\n     *\n     */\n    clearTooltip = 'Clear';\n    /**\n     * Clear multi-page selection tooltip.\n     *\n     */\n    clearSelectionTooltip = 'Clear Selection';\n    /**\n     * Multi-page selection information tootlip.\n     *\n     */\n    multiPageSelectionInfoTooltip = 'Multi-page selection is enabled.';\n\n    /**\n     * No active filter placeholder.\n     *\n     */\n    noFilterPlaceholder = 'All';\n    /**\n     * Search placeholder.\n     *\n     */\n    searchPlaceholder = 'Search';\n    /**\n     * Tooltip for toggle columns select dropdown\n     *\n     */\n    toggleTooltip = 'Toggle column visibility';\n    /**\n     * Tooltip for resetting to column defaults\n     *\n     */\n    toggleResetToDefaults = 'Reset';\n    /**\n     * Main title for visible columns displayed within the dropdown\n     *\n     */\n    toggleTitle = 'Visible Columns';\n    /**\n     * Text displayed next to icon for dropdown\n     *\n     */\n    togglePlaceholderTitle = 'Columns';\n    /**\n     * No data row message.\n     *\n     */\n    noDataMessage = 'No data is available.';\n    /**\n     * No selection text (for multi-page selection).\n     *\n     */\n    noSelectionMessage = 'No items currently selected.';\n    /**\n     * Ascending `aria-sort` text.\n     *\n     */\n    ascending = 'ascending';\n    /**\n     * Descending `aria-sort` text.\n     *\n     */\n    descending = 'descending';\n    /**\n     * Live announced text when new action buttons are revealed on selection\n     *\n     */\n    gridHeaderActionsNotice = 'Grid header actions updated. Press Shift + Alt + Arrow Up to move there.';\n    /**\n     * A message to let the users know when they've focused a sortable column.\n     * This is an optional property\n     */\n     sortableMessage: string | undefined;\n    /**\n     * Message for the button that clears the applied custom filter.\n     *\n     */\n    clearCustomFilter = 'Clear custom filter';\n    /**\n     * Menu expanded message for live announcer.\n     *\n     */\n    menuExpanded = 'expanded';\n    /**\n     * Single selection message for selected row.\n     *\n     */\n    radioButtonSelectedRowMessage = 'The row is selected';\n    /**\n     * Warning message displayed when the maximum number of selected filters has been reached.\n     *\n     */\n    maxSelectedFilterValuesWarning = 'The maximum number of selected filters has been reached.';\n    /**\n     * Filter item tooltip displayed when maximum number of options were selected.\n     *\n     */\n    filterItemWarningTooltip = 'Current combination of filters does not allow selecting additional filters.';\n    /**\n     * No data row message alternative function.\n     *\n     */\n    noDataMessageAlternative = (searchValue?: string, activeFilters?: number | null) =>\n        `No data is available${searchValue ? ` for ${searchValue}` : ''}${activeFilters ? ' for applied filters' : ''}.`;\n    /**\n     * Determines the `checkbox` `matToolTip`.\n     *\n     * @param [rowIndex] The rowIndex for which the label is computed.\n     */\n    checkboxTooltip(selected: boolean, rowIndex?: number): string {\n        if (rowIndex == null) {\n            return `${selected ? 'Deselect' : 'Select'} all`;\n        }\n        return `${selected ? 'Deselect' : 'Select'} row ${rowIndex}`;\n    }\n\n    /**\n     * Generates a selection label for the given count.\n     *\n     * @param count The total selection count.\n     */\n    translateMultiPageSelectionCount =\n        (count: number) => `You have selected ${count} items.`;\n\n    /**\n     * Live announcer page loaded state notification.\n     *\n     * @param page The current loaded page number.\n     * @param renderedItemCount The number of rendered items.\n     * @param total The total number of items available.\n     */\n    loadedPage = (page: number, renderedItemCount: number, total?: number | null) => {\n        if (total == null || isNaN(total)) {\n            return `Loaded page number ${page} containing ${renderedItemCount} items`;\n        }\n\n        return `Loaded page number ${page} containing ${renderedItemCount} out of ${total} items`;\n    };\n\n    /**\n     * Live announcer page loading state notification.\n     *\n     * @param page The current loaded page number.\n     */\n    loadingPage = (page: number) =>\n        `Loading page number ${page}`;\n\n    filters = (filtersCount?: number | null) =>\n        (filtersCount && filtersCount > 0)\n            ? `Filters (${filtersCount})`\n            : 'Filters';\n\n    /**\n     * Handles dropdown label transaltions.\n     *\n     * @param option The current dropdown option.\n     */\n    translateDropdownOption =\n        (option: IDropdownOption) => option.label;\n\n    translateMultiDropdownOptions = (label: string, count: number) => `${label} ` + (count <= 1\n        ? ''\n        : count === 2\n            ? '(+1 other)'\n            : `(+${count - 1} others)`);\n\n    /**\n     * Live announcer sort ascending notification.\n     *\n     * @param columnTitle The sorted column title.\n     */\n    columnSortedAscending = (columnTitle: string) =>\n        `Column ${columnTitle} sorted ` + this.ascending;\n\n    /**\n     * Live announcer sort descending notification.\n     *\n     * @param columnTitle The sorted column title.\n     */\n    columnSortedDescending = (columnTitle: string) =>\n        `Column ${columnTitle} sorted ` + this.descending;\n\n    /**\n     * Live announcer sort unsorted notification.\n     *\n     * @param columnTitle The sorted column title.\n     */\n    columnUnsorted = (columnTtile: string) =>\n        `Column ${columnTtile} unsorted`;\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.changes.complete();\n    }\n}\n","import {\n    Directive,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Output,\n} from '@angular/core';\n\nimport { IFilterModel } from '../models';\n\n/**\n * Filter definition directive.\n *\n * @export\n * @internal\n * @ignore\n */\n@Directive()\nexport abstract class UiGridFilterDirective<T> implements OnDestroy {\n    @Input()\n    disabled?: boolean;\n\n    @Input()\n    method?: string;\n\n    @Output()\n    filterChange = new EventEmitter<IFilterModel<T> | null>();\n\n    ngOnDestroy() {\n        this.filterChange.complete();\n    }\n}\n","import {\n    isArray,\n    isEqual,\n} from 'lodash-es';\nimport {\n    BehaviorSubject,\n    Subject,\n    takeUntil,\n} from 'rxjs';\n\nimport {\n    Directive,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n} from '@angular/core';\nimport { ISuggestValueData } from '@uipath/angular/components/ui-suggest';\n\nimport { UiGridIntl } from '../ui-grid.intl';\nimport { UiGridFilterDirective } from './ui-grid-filter';\n\n/**\n * Dropdown option schema.\n *\n * @export\n */\nexport interface IDropdownOption {\n    /**\n     * The current dropdown value.\n     *\n     */\n    value: string | number | boolean;\n    /**\n     * The dropdown option label.\n     *\n     */\n    label: string;\n    /**\n     * The dropdown translation key, used by the `intl` service.\n     *\n     */\n    translationKey?: string;\n}\n\nexport type FilterDropdownPossibleOption = IDropdownOption | IDropdownOption[] | undefined;\nexport type ISuggestDropdownValueData = ISuggestValueData<IDropdownOption['value']>;\n\n/**\n * The dropdown filter definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridDropdownFilter], ui-grid-dropdown-filter',\n})\nexport class UiGridDropdownFilterDirective<T> extends UiGridFilterDirective<T> implements OnDestroy, OnInit {\n    /**\n     * The dropdown items.\n     *\n     */\n    @Input()\n    set items(value: IDropdownOption[] | null) {\n        this._items = value ?? [];\n        this.suggestItems = this._items.map((item, idx) => ({\n            id: idx + 1,\n            text: this.intl.translateDropdownOption(item),\n            data: item.value,\n        }));\n        this._addNoFilterOption();\n    }\n    get items() { return this._items!; }\n\n    /**\n     * If true multiple values can be selected in the dropdown filter.\n     *\n     */\n    @Input()\n    set multi(value: boolean) {\n        this._multi = value;\n        this.updateValue(this.value);\n    }\n    get multi() {\n        return this._multi;\n    }\n\n    /**\n     * If it should display the `All` option.\n     *\n     */\n    @Input()\n    showAllOption = true;\n\n    /**\n     * The current dropdown option.\n     *\n     */\n    @Input()\n    set value(v: FilterDropdownPossibleOption) {\n        this.updateValue(v);\n    }\n    get value() {\n        return this._value!;\n    }\n\n    /**\n     * The empty dropdown state.\n     *\n     */\n    @Input()\n    emptyStateValue?: IDropdownOption['value'];\n    /**\n     * Wether the filter should be rendered in the grid.\n     *\n     */\n    @Input()\n    get visible() { return this.visible$.value; }\n    set visible(visible: boolean) { this.visible$.next(visible); }\n\n    /**\n     * @ignore\n     */\n    visible$ = new BehaviorSubject(true);\n    intl = inject(UiGridIntl, { optional: true }) ?? new UiGridIntl();\n    suggestValue: ISuggestDropdownValueData[] = [];\n\n    /**\n     * Dropdown items expressed as ISuggestDropdownValueData\n     */\n    suggestItems: ISuggestDropdownValueData[] = [];\n\n    private _items: IDropdownOption[] = [];\n    private _value: FilterDropdownPossibleOption;\n    private _multi = false;\n    private _destroy$ = new Subject<void>();\n\n    ngOnInit() {\n        this._addNoFilterOption();\n\n        this.intl.changes.pipe(\n            takeUntil(this._destroy$),\n        ).subscribe(() => {\n            this.items = this._items;\n            this.suggestValue = this.suggestValue.map(suggestValue => ({\n                ...suggestValue,\n                text: this.intl.translateDropdownOption(this.findDropDownOptionBySuggestValue(suggestValue)!),\n            }));\n        });\n    }\n\n    /**\n     * Updates the dropdown value.\n     *\n     */\n    updateValue(value?: FilterDropdownPossibleOption) {\n        if (this.multi && !isArray(value) && !!value) {\n            value = [value];\n        }\n\n        this._value = value;\n        this.updateSuggestValue(value);\n    }\n\n    updateSuggestValue(value?: FilterDropdownPossibleOption) {\n        if (value == null) {\n            this.suggestValue = [];\n            return;\n        }\n\n        this.suggestValue = this.suggestItems.filter(item => isArray(value) && value.some(s => s.value === item?.data)\n            || (!isArray(value) && value.value === item?.data));\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        this.filterChange.complete();\n        this._destroy$.complete();\n        this._destroy$.next();\n    }\n\n    findDropDownOptionBySuggestValue(suggestValue: ISuggestDropdownValueData) {\n        return this._items.find(item => isEqual(item.value, suggestValue.data));\n    }\n\n    get hasValue() {\n        return this.value != null && ((!isArray(this.value) && this.value?.value !== undefined) ||\n            (isArray(this.value) && this.value.length));\n    }\n\n    private _addNoFilterOption() {\n        const allOption = {\n            id: -1,\n            text: this.intl.noFilterPlaceholder,\n        };\n        if (!this.multi && this.showAllOption) {\n            if (this.suggestItems[0]?.id !== allOption.id) {\n                this.suggestItems = [allOption, ...this.suggestItems];\n            }\n        } else {\n            this.suggestItems = this.suggestItems.filter(item => item.id !== allOption.id);\n        }\n    }\n}\n","import {\n    BehaviorSubject,\n    Observable,\n} from 'rxjs';\n\nimport {\n    Directive,\n    Input,\n    OnDestroy,\n} from '@angular/core';\nimport {\n    ISuggestValue,\n    ISuggestValues,\n} from '@uipath/angular/components/ui-suggest';\n\nimport { UiGridFilterDirective } from './ui-grid-filter';\n\n/**\n * The searchable dropdown definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridSearchFilter], ui-grid-search-filter',\n})\nexport class UiGridSearchFilterDirective<T> extends UiGridFilterDirective<T> implements OnDestroy {\n    /**\n     * The property associated to the dropdown search fetch strategy.\n     *\n     */\n    @Input()\n    fetchStrategy?: 'eager' | 'onOpen';\n\n    /**\n     * The property associated to the dropdown search.\n     *\n     */\n    @Input()\n    property?: string;\n\n    /**\n     * The no selection placeholder.\n     *\n     */\n    @Input()\n    noFilterPlaceholder?: string;\n\n    /**\n     * Allow filter drill down\n     *\n     */\n    @Input()\n    drillDown = false;\n\n    /**\n     * Stream factory, used to resolve a stream for the provided options.\n     *\n     * @param searchTerm The current searched term.\n     * @param fetchSize The next chunk size that needs to be loaded.\n     */\n    @Input()\n    searchSourceFactory?: (searchTerm?: string, fetchSize?: number) => Observable<ISuggestValues<any>>;\n\n    /**\n     * The current dropdown options.\n     *\n     */\n    @Input()\n    value?: ISuggestValue | ISuggestValue[];\n\n    /**\n     * Wether the filter should be rendered in the grid.\n     *\n     */\n    @Input()\n    get visible() { return this.visible$.value; }\n    set visible(visible: boolean) { this.visible$.next(visible); }\n\n    /**\n     * Allow multiple selection\n     *\n     */\n    @Input()\n    multiple = false;\n\n    /**\n     * Configure the minimum number of characters that triggers the searchSourceFactory call\n     * This will have priority over the fetch strategy if set.\n     *\n     */\n    @Input()\n    minChars = 0;\n\n    /**\n     * The maximum number of items rendered in the viewport.\n     *\n     */\n    @Input()\n    displayCount = 10;\n\n    /**\n     * @ignore\n     */\n    visible$ = new BehaviorSubject(true);\n\n    /**\n     * Updates the dropdown option.\n     *\n     */\n    updateValue(value?: ISuggestValue, isSelected?: boolean) {\n        if (this.multiple) {\n            this.handleMultiple(value, isSelected);\n        } else {\n            this.value = value;\n        }\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        this.filterChange.complete();\n    }\n\n    get hasValue() {\n        return this.multiple\n            ? (this.value as ISuggestValue[] ?? []).length > 0\n            : this.value != null;\n    }\n\n    private checkAlreadyExisting(value: ISuggestValue, isSelected?: boolean) {\n        if (this.multiple) {\n            return (isSelected && (this.value as ISuggestValue[] ?? []).find(item => item.id === value.id));\n        }\n\n        return false;\n    }\n\n    private handleMultiple(value?: ISuggestValue, isSelected?: boolean) {\n        if (!value) {\n            this.value = [];\n            return;\n        }\n\n        if (this.checkAlreadyExisting(value, isSelected)) {\n            return;\n        }\n\n        if (!this.value) {\n            this.value = [];\n        }\n\n        if (isSelected) {\n            (this.value as ISuggestValue[]).push(value);\n        } else {\n            this.removeElement(value);\n        }\n    }\n\n    private removeElement(value: ISuggestValue) {\n        this.value = this.value as ISuggestValue[];\n\n        const index = this.value.findIndex(item => item.id === value.id);\n        if (index > -1) {\n            this.value.splice(index, 1);\n        }\n    }\n}\n","import isEqual from 'lodash-es/isEqual';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { SortDirection } from '@angular/material/sort';\n\nimport { UiGridColumnDirective } from '../body/ui-grid-column.directive';\nimport { ISortModel } from '../models';\n\n/**\n * @internal\n * @ignore\n */\nconst SORT_CYCLE_MAP: Record<SortDirection, SortDirection> = {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    '': 'asc',\n    asc: 'desc',\n    desc: '',\n};\n\n/**\n * Handles the sort state of every grid column.\n *\n * @export\n * @ignore\n * @internal\n */\nexport class SortManager<T> {\n    sort$ = new BehaviorSubject<ISortModel<T>>({} as ISortModel<T>);\n\n    constructor(\n        private _columns: UiGridColumnDirective<T>[] = [],\n    ) { }\n\n    get columns() {\n        return this._columns;\n    }\n\n    set columns(columns: UiGridColumnDirective<T>[]) {\n        this._columns = columns;\n\n        const sortedColumn = columns.find(column => column.sort !== '');\n\n        if (!sortedColumn) {\n            if (!isEqual(this.sort$.getValue(), {})) {\n                this.sort$.next({} as ISortModel<T>);\n            }\n            return;\n        }\n\n        this._emitSort(sortedColumn);\n    }\n    /**\n     * Sort based on user action on column header\n     */\n    changeSort(column: UiGridColumnDirective<T>) {\n        if (!column.sortable) { return; }\n\n        this._columns\n            .filter(c => c.sortable && c.property !== column.property)\n            .forEach(c => c.sort = '');\n\n        column.sort = SORT_CYCLE_MAP[column.sort];\n\n        this._emitSort(column, true);\n    }\n\n    clear() {\n        this._columns\n            .filter(c => c.sortable)\n            .forEach(c => c.sort = '');\n    }\n\n    destroy() {\n        this.sort$.complete();\n    }\n\n    private _emitSort(column: UiGridColumnDirective<T>, userEvent = false) {\n        const updatedSort = {\n            direction: column.sort,\n            field: column.queryProperty ?? column.property,\n            title: column.title,\n            userEvent,\n        } as ISortModel<T>;\n\n        if (isEqual(this.sort$.getValue(), updatedSort)) { return; }\n\n        this.sort$.next(updatedSort);\n    }\n}\n","import assignWith from 'lodash-es/assignWith';\nimport cloneDeep from 'lodash-es/cloneDeep';\nimport difference from 'lodash-es/difference';\nimport get from 'lodash-es/get';\nimport isArray from 'lodash-es/isArray';\nimport isDate from 'lodash-es/isDate';\nimport isObject from 'lodash-es/isObject';\nimport objectHash from 'object-hash';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { isDevMode } from '@angular/core';\n\nimport {\n    GridOptions,\n    IGridDataEntry,\n} from '../models';\n\n/**\n * @ignore\n * @internal\n */\nconst customPatch = (left: any, right: any): any => {\n    if (\n        !isArray(left) && !isArray(right) &&\n        !isDate(left) && !isDate(right) &&\n        isObject(left) && isObject(right)\n    ) {\n        return assignWith(left, right, customPatch);\n    }\n};\n\n/**\n * @ignore\n * @internal\n */\ntype PropertyMap<T> = { [Key in keyof T]?: PropertyMap<T[Key]> };\n\ntype StringOrNumberKeyOf<T> = keyof T & (string | number);\n\n/**\n * The data manager increases rendering performance drastically updating the dataset.\n * By updating the references directly (when having set useCache: true – default: false)\n * * the renderer will update the invidivual cells rather than redraw the entire row\n * * increasing / decreasing data count will result in less node insertion / removal\n *\n * @export\n * @ignore\n * @internal\n */\nexport class DataManager<T extends IGridDataEntry, K extends StringOrNumberKeyOf<T> = StringOrNumberKeyOf<T>> {\n\n    useCache: boolean;\n    idProperty: K;\n\n    get length() {\n        return this.data$.value.length;\n    }\n\n    pristine = true;\n\n    data$ = new BehaviorSubject<T[]>([]);\n\n    getProperty = get;\n\n    private _hashMap = new Map<string, string>();\n\n    constructor(options?: GridOptions<T>) {\n        this.useCache = options?.useCache ?? false;\n        this.idProperty = options?.idProperty as unknown as K ?? 'id';\n    }\n\n    forEach = (callbackfn: (value: T, index: number, array: T[]) => void) =>\n        this.data$.value.forEach(callbackfn);\n\n    some = (callbackfn: (value: T, index: number, array: T[]) => boolean) =>\n        this.data$.value.some(callbackfn);\n\n    every = (callbackfn: (value: T, index: number, array: T[]) => boolean) =>\n        this.data$.value.every(callbackfn);\n\n    indexOf(entry: T) {\n        return this.data$.value.indexOf(entry);\n    }\n\n    find = <R extends T[K]>(entryId: R) =>\n        this.data$.value.find(e => e[this.idProperty] === entryId);\n\n    get = (index: number) =>\n        this.data$.value[index];\n\n    patchRow(id: T[K], patch: PropertyMap<T>) {\n        const entry = this.data$.value.find(e => e[this.idProperty] === id);\n        if (!entry) {\n            if (isDevMode()) {\n                console.warn(`Could not patch entity ${this.idProperty}. Skipping patch...`);\n            }\n            return;\n        }\n\n        if (!this.useCache) {\n            const data = this.data$.value.slice(0);\n            const index = data.indexOf(entry);\n\n            assignWith(entry, patch, customPatch);\n            data.splice(index, 1, { ...entry });\n            this.data$.next(data);\n\n            return;\n        }\n\n        assignWith(entry, patch, customPatch);\n\n        this._hash(entry);\n        this._emit();\n    }\n\n    update(data: T[] | null) {\n        this.pristine = this.pristine &&\n            data == null;\n\n        data = cloneDeep(data ?? []);\n\n        if (!this.useCache) {\n            this._emit(data);\n            return;\n        }\n\n        if (data.some(e => e[this.idProperty] == null)) {\n            throw new Error(`The '${this.idProperty}' property is a missing in: ${JSON.stringify(data, null, 4)}`);\n        }\n\n        const cache = this.data$.value;\n\n        this._hashMap.clear();\n        data.forEach(entry => this._hash(entry));\n\n        if (!cache.length) {\n            this._emit(data);\n            return;\n        }\n\n        if (data.length < cache.length) {\n            cache.splice(data.length);\n        }\n\n        data.forEach((entry: T, idx: number) => {\n            if (idx < cache.length) {\n                difference<string>(\n                    Object.keys(cache[idx]),\n                    Object.keys(entry),\n                ).forEach(prop => {\n                    const key = prop as keyof T;\n                    delete cache[idx][key];\n                });\n\n                Object.assign(cache[idx], entry);\n            } else {\n                cache.push(entry);\n            }\n        });\n\n        this._emit();\n    }\n\n    destroy() {\n        this._hashMap.clear();\n        this.data$.complete();\n    }\n\n    hashTrack = (_: number | undefined | null, entry: T) =>\n        this.useCache\n            ? this._hashMap.get(`${entry[this.idProperty]}`)\n            : entry[this.idProperty];\n\n    private _hash = (entry: T) =>\n        this._hashMap.set(`${entry[this.idProperty]}`, objectHash(entry, {\n            algorithm: 'md5',\n            ignoreUnknown: true,\n        }));\n\n    private _emit(data?: T[]) {\n        this.data$.next([...(data ?? this.data$.value)]);\n    }\n}\n","import { isArray } from 'lodash-es';\nimport isEqual from 'lodash-es/isEqual';\nimport {\n    BehaviorSubject,\n    combineLatest,\n} from 'rxjs';\nimport {\n    distinctUntilChanged,\n    map,\n} from 'rxjs/operators';\n\nimport { ISuggestValue } from '@uipath/angular/components/ui-suggest';\n\nimport { UiGridColumnDirective } from '../body/ui-grid-column.directive';\nimport {\n    FilterDropdownPossibleOption,\n    ISuggestDropdownValueData,\n} from '../filters/ui-grid-dropdown-filter.directive';\nimport { UiGridFooterDirective } from '../footer/ui-grid-footer.directive';\nimport { UiGridHeaderDirective } from '../header/ui-grid-header.directive';\nimport { IFilterModel } from '../models';\n\n/**\n * Handles and aggregates all filters with the latest values.\n *\n * @export\n * @ignore\n * @internal\n */\nexport class FilterManager<T> {\n    hasCustomFilter$ = new BehaviorSubject(false);\n    customFilters?: IFilterModel<T>[];\n\n    filter$ = new BehaviorSubject<IFilterModel<T>[]>([]);\n    defaultValueDropdownFilters: IFilterModel<T>[] = [];\n\n    dirty$ = this.filter$.pipe(\n        map(filters =>\n            !!this._initialFilters\n            && !isEqual(\n                this._sortByProperty(filters),\n                this._sortByProperty(this._initialFilters),\n            ),\n        ),\n        distinctUntilChanged(),\n    );\n\n    activeCount$ = combineLatest([\n        this.filter$,\n        this.dirty$,\n    ]).pipe(\n        map(([filters, dirty]) => {\n            if (!dirty) {\n                return 0;\n            }\n\n            return filters.filter(current =>\n                !this._initialFilters?.find(initial => isEqual(initial, current)),\n            ).length;\n        }),\n        distinctUntilChanged(),\n    );\n\n    activeFilterValueCount$ = combineLatest([\n        this.activeCount$,\n        this.filter$,\n    ]).pipe(\n        map(([activeCount, filters]) => {\n            const activeFilterValueCount = activeCount + filters.reduce((acc, filterModel) => {\n                const filterValue = filterModel?.value;\n                if (isArray(filterValue) && filterValue.length > 1) {\n                    return acc + filterValue.length - 1;\n                }\n                return acc;\n            }, 0);\n\n            return activeFilterValueCount;\n        }),\n    );\n\n    private _initialFilters: IFilterModel<T>[] | null = null;\n\n    constructor(\n        private _columns: UiGridColumnDirective<T>[] = [],\n    ) { }\n\n    get columns() {\n        return this._columns;\n    }\n\n    set columns(columns: UiGridColumnDirective<T>[]) {\n        this._columns = columns;\n        this._emitFilterOptions();\n    }\n\n    destroy() {\n        this.filter$.complete();\n    }\n\n    selectFilters(column: UiGridColumnDirective<T>, selection?: ISuggestDropdownValueData) {\n        if (selection?.data === undefined) { return this.dropdownUpdate(column, undefined); }\n\n        const selectedDropdownOption = column.dropdown!.findDropDownOptionBySuggestValue(selection);\n        if (!selectedDropdownOption) { return; }\n\n        const currentValue = column.dropdown?.value;\n\n        if (isArray(currentValue)) {\n            const valueAlreadySelected = currentValue.some(v => v.value === selectedDropdownOption.value);\n            const filterSelection = (valueAlreadySelected\n                ? currentValue.filter(v => v.value !== selectedDropdownOption?.value)\n                : [...currentValue, selectedDropdownOption]);\n\n            this.dropdownUpdate(column, filterSelection);\n            return;\n        }\n\n        this.dropdownUpdate(column, selectedDropdownOption);\n    }\n\n    searchableDropdownUpdate = (column?: UiGridColumnDirective<T>, value?: ISuggestValue | ISuggestValue[], selected?: boolean) => {\n        if (isArray(value)) {\n            if (column?.searchableDropdown) {\n                value.forEach(filterValue => {\n                    column!.searchableDropdown!.updateValue(filterValue, true);\n                });\n                this._emitFilterOptions();\n            }\n            return;\n        }\n\n        this._updateFilterValue(column, value, selected, this._mapSearchableDropdownItem);\n    };\n\n    dropdownUpdate = (column?: UiGridColumnDirective<T>, dropdownOption?: FilterDropdownPossibleOption) =>\n        this._updateFilterValue(column, dropdownOption, false, this._mapDropdownItem);\n\n    searchChange(term: string | undefined, header: UiGridHeaderDirective<T>, footer?: UiGridFooterDirective) {\n        if (term === header.searchValue) { return; }\n        const searchFilterCollection: IFilterModel<T>[] = term ?\n            this._columns\n                .filter(column => column.searchable)\n                .map(column => ({\n                    property: column.queryProperty ?? column.property,\n                    value: term,\n                    method: column.method,\n                })) as IFilterModel<T>[] :\n            [];\n\n        header.searchValue = term;\n        header.searchTerm.emit(term);\n        header.searchFilter.emit(searchFilterCollection);\n        if (footer?.state.pageIndex) {\n            footer.pageChange.emit({\n                pageIndex: 0,\n                pageSize: footer.state.pageSize,\n            });\n        }\n    }\n\n    updateCustomFilters(customValue: IFilterModel<T>[]) {\n        this.customFilters = customValue;\n        this.hasCustomFilter$.next(true);\n        this.filter$.next(customValue);\n    }\n\n    clearCustomFilters() {\n        this.hasCustomFilter$.next(false);\n        this._emitFilterOptions();\n    }\n\n    clear() {\n        this._columns.forEach(column => {\n            const dropdown = column.dropdown ?? column.searchableDropdown;\n\n            if (!dropdown) { return; }\n            dropdown.value = undefined;\n        });\n        this.filter$.next([]);\n    }\n\n    private _updateFilterValue = (\n        column: UiGridColumnDirective<T> | undefined,\n        value: ISuggestValue | FilterDropdownPossibleOption | undefined,\n        selected: boolean | undefined,\n        mapper: (column: UiGridColumnDirective<T>) => IFilterModel<T>,\n    ): void => {\n        if (!column) { return; }\n\n        const dropdown = column.dropdown ?? column.searchableDropdown;\n\n        if (!dropdown) { return; }\n\n        (dropdown as {\n            updateValue: (value: ISuggestValue | FilterDropdownPossibleOption | undefined, selected: boolean | undefined) => void;\n        }).updateValue(value, selected);\n        dropdown.filterChange.emit(value ? mapper(column) : null);\n\n        this._emitFilterOptions();\n    };\n\n    private _emitFilterOptions = () => {\n        this.defaultValueDropdownFilters = this._columns\n            .filter(({ dropdown }) => dropdown?.hasValue)\n            .map(this._mapDropdownItem);\n\n        const emptyStateDropdownFilters = this._columns\n            .filter(col => col.dropdown?.emptyStateValue)\n            .map(this._mapDropdownEmptyStateItem);\n        const searchableFilters = this._columns\n            .filter(({ searchableDropdown }) => searchableDropdown?.hasValue)\n            .map(this._mapSearchableDropdownItem);\n\n        const updatedFilters = [...this.defaultValueDropdownFilters, ...searchableFilters];\n        this._initialFilters = emptyStateDropdownFilters.length\n            ? emptyStateDropdownFilters\n            : [];\n        if (isEqual(this.filter$.getValue(), updatedFilters)) { return; }\n\n        this.filter$.next(\n            this.hasCustomFilter$.value\n                ? this.customFilters!\n                : updatedFilters,\n        );\n    };\n\n    private _mapDropdownItem = (column: UiGridColumnDirective<T>) => ({\n        method: column.dropdown!.method,\n        property: column.property,\n        value: isArray(column.dropdown!.value)\n            ? column.dropdown!.value\n            : column.dropdown!.value!.value,\n    }) as IFilterModel<T>;\n\n    private _mapDropdownEmptyStateItem = (column: UiGridColumnDirective<T>) => ({\n        method: column.dropdown!.method,\n        property: column.property,\n        value: column.dropdown!.emptyStateValue,\n    }) as IFilterModel<T>;\n\n    private _mapSearchableDropdownItem(column: UiGridColumnDirective<T>): IFilterModel<T> {\n        return {\n            method: column.searchableDropdown!.method,\n            property: column.searchableDropdown!.property ?? column.property,\n            value: column.searchableDropdown!.multiple ?\n                (column.searchableDropdown!.value! as ISuggestValue[]).map(value => value.id)\n                : (column.searchableDropdown!.value! as ISuggestValue).id,\n            meta: column.searchableDropdown!.value,\n        } as IFilterModel<T>;\n    }\n\n    private _sortByProperty(filters: IFilterModel<T>[]): any {\n        return filters.sort((a, b) => ((a.property as string) > (b.property as string)) ? 1 : -1);\n    }\n}\n","import cloneDeep from 'lodash-es/cloneDeep';\nimport differenceBy from 'lodash-es/differenceBy';\nimport {\n    BehaviorSubject,\n    Subject,\n} from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport {\n    SelectionChange,\n    SelectionModel,\n} from '@angular/cdk/collections';\n\nimport {\n    IGridDataEntry,\n    ISelectionDiff,\n} from '../models';\n\n/**\n * @internal\n * @ignore\n */\nexport class SelectionManager<T extends IGridDataEntry> {\n    get selected(): T[] {\n        return Array.from(this._selection.values());\n    }\n\n    get selectionSnapshot(): T[] {\n        return Array.from(this._selectionSnapshot.values());\n    }\n\n    get difference(): ISelectionDiff<T> {\n        return {\n            add: differenceBy(this.selected, this.selectionSnapshot, 'id'),\n            remove: differenceBy(this.selectionSnapshot, this.selected, 'id'),\n        };\n    }\n\n    set disableSelectionByEntry(disableFunc: (entry: T) => null | string) {\n        this._disableSelectionByEntry = disableFunc;\n    }\n    get disableSelectionByEntry() {\n        return this._disableSelectionByEntry;\n    }\n\n    changed$ = new Subject<SelectionChange<T>>();\n\n    private _hasValue$ = new BehaviorSubject(false);\n\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    hasValue$ = this._hasValue$.pipe(distinctUntilChanged());\n\n    private _selection = new Map<number | string, T>();\n    private _indeterminate = new Map<number | string, T>();\n\n    private _selectionSnapshot = new Map<number | string, T>();\n    private _indeterminateSnapshot = new Map<number | string, T>();\n\n    private _deselectedToEmit: T[] = [];\n\n    private _selectedToEmit: T[] = [];\n\n    private _indeterminateToEmit: T[] = [];\n\n    private _disableSelectionByEntry!: (entry: T) => null | string;\n\n    constructor(\n        initiallySelectedValues?: T[],\n        private _emitChanges = true,\n    ) {\n\n        if (initiallySelectedValues?.length) {\n            initiallySelectedValues.forEach(value => this._markSelected(value));\n            this._selectedToEmit.length = 0;\n        }\n    }\n\n    select = (...values: T[]): void =>\n        this._updateState(this._markSelected, values);\n\n    deselect = (...values: T[]): void =>\n        this._updateState(this._unmarkSelected, values);\n\n    setIndeterminate = (...values: T[]): void =>\n        this._updateState(this._markIndeterminate, values);\n\n    toggle(value: T): void {\n        // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n        this.isSelected(value) ? this.deselect(value) : this.select(value);\n    }\n\n    clear(): void {\n        this._selection.forEach(v => this._unmarkSelected(v));\n        this._selection.clear();\n        this._indeterminate.clear();\n        this._emitChangeEvent();\n    }\n\n    isSelected(value: T): boolean {\n        return this._selection.has(value.id);\n    }\n\n    isIndeterminate(value: T): boolean {\n        return this._indeterminate.has(value.id);\n    }\n\n    isEmpty(): boolean {\n        return this._selection.size === 0;\n    }\n\n    hasValue(): boolean {\n        return !this.isEmpty();\n    }\n\n    snapshot() {\n        this._selectionSnapshot = cloneDeep(this._selection);\n        this._indeterminateSnapshot = cloneDeep(this._indeterminate);\n    }\n\n    destroy() {\n        this._selection.clear();\n        this._selectionSnapshot.clear();\n        this._indeterminate.clear();\n        this._indeterminateSnapshot.clear();\n        this._hasValue$.next(false);\n    }\n\n    private _updateState = (predicate: (value: T) => void, values: T[]) => {\n        (this.disableSelectionByEntry\n            ? values.filter(value => !this.disableSelectionByEntry(value))\n            : values\n        ).forEach(predicate);\n        this._emitChangeEvent();\n    };\n\n    private _emitChangeEvent() {\n        this._hasValue$.next(this.hasValue());\n        if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n            this.changed$.next({\n                source: {} as SelectionModel<T>,\n                added: this._selectedToEmit,\n                removed: this._deselectedToEmit,\n                indeterminate: this._indeterminateToEmit,\n            } as SelectionChange<T>);\n\n            this._deselectedToEmit = [];\n            this._selectedToEmit = [];\n            this._indeterminateToEmit = [];\n        }\n    }\n\n    private _markSelected = (value: T) => {\n        if (!this.isSelected(value)) {\n            this._selection.set(value.id, cloneDeep(value));\n\n            if (this._emitChanges) {\n                this._selectedToEmit.push(value);\n            }\n        }\n    };\n\n    private _unmarkSelected = (value: T) => {\n        if (this.isSelected(value)) {\n            this._selection.delete(value.id);\n            this._indeterminate.delete(value.id);\n\n            if (this._emitChanges) {\n                this._deselectedToEmit.push(value);\n            }\n        }\n    };\n\n    private _markIndeterminate = (value: T) => {\n        if (!this.isIndeterminate(value)) {\n            this._indeterminate.set(value.id, cloneDeep(value));\n\n            if (this._emitChanges) {\n                this._indeterminateToEmit.push(value);\n            }\n        }\n    };\n}\n","import {\n    IResizeEvent,\n    IResizeInfo,\n} from './types';\n\n/**\n * @ignore\n */\nexport const HEADER_DATA_KEY = 'identifier';\n\n/**\n * Determines if the style has reached it's minimum width.\n *\n * @export\n * @param entry The verified entry.\n * @returns If the entry has reached it's minimum width.\n * @internal\n * @ignore\n */\nexport function isMinWidth<T>(entry?: IResizeInfo<T>) {\n    return !!entry && parseInt(entry.element.style.width!, 10) === entry.column.minWidth;\n}\n\n/**\n * Detects if the resize direction has changed compared to it's previous state.\n *\n * @export\n * @param state The resize state that needs to be checked.\n * @returns If the resize direction has changed.\n * @internal\n * @ignore\n */\nexport function isDirectionChanged<T>(state: IResizeEvent<T>) {\n    return state.previous.direction != null &&\n        state.previous.direction !== state.current.direction;\n}\n\n/**\n * Clamps the offset value in a safe range.\n *\n * @export\n * @param entry The entry that needs to be clamped.\n * @param offset The current `offset`.\n * @returns The clamped `offset` for the provided entry\n * @internal\n * @ignore\n */\nexport function clampOffset<T>(entry: IResizeInfo<T> | undefined, offset: number) {\n    if (!entry) { return offset; }\n\n    return clampColumnOffset(Number(entry.column.width), entry.column.minWidth, offset);\n}\n\nexport function clampColumnOffset(width: number, minWidth: number, offset: number) {\n    if (width + offset < minWidth) {\n        return minWidth - width;\n    }\n\n    return offset;\n}\n\n/**\n * Filters events if no dragging actually occured.\n *\n * @param state The current resize state.\n * @returns If the current resize event should be filtered.\n * @internal\n * @ignore\n */\nexport const resizeFilter = <T>(state: IResizeEvent<T>) => {\n    const isDragging = Math.abs(state.current.offsetPx) !== state.current.resized.dragInitX;\n\n    const isSameOffset = state.current.offsetPx === state.previous.offsetPx ||\n        state.current.offsetPercent === state.previous.offsetPercent ||\n        !state.current.offsetPercent;\n\n    // if no actual drag occured skip\n    if (\n        !isDragging ||\n        isSameOffset\n    ) { return false; }\n\n    return true;\n};\n\n/**\n *  Returns the query selector for cell elements.\n *\n * @param value The data value.\n * @returns The selector for the requested value.\n * @internal\n * @ignore\n */\nexport const cellSelector = (value: string) => `.ui-grid-cell[data-${HEADER_DATA_KEY}='${value}']`;\n\n/**\n *  Scales the width value accordingly.\n *\n * @param value The value that needs to be formatted as a percentage.\n * @returns The formatted value\n * @internal\n * @ignore\n */\nexport const toPercentageStyle = (value: number) => `${value}%`;\n\n/**\n * Searches for the header index associated to the requested data property.\n *\n * @param headers The header list.\n * @param value The header identifier value.\n * @internal\n * @ignore\n */\nexport const findHeaderIndexFor = (headers: HTMLDivElement[], value: string) =>\n    headers.findIndex(h => h.dataset[HEADER_DATA_KEY] === value);\n\n/**\n * Gets the data property value for the current element.\n *\n * @param element The element on which to search for the identifier.\n * @returns The identifier value.\n * @internal\n * @ignore\n */\nexport const getProperty = (element: HTMLDivElement) =>\n    element.dataset[HEADER_DATA_KEY]!;\n\n/**\n * @param element The element which should be checked if it's sticky\n */\nexport const isSticky = (element?: HTMLDivElement) =>\n    element?.classList.contains('ui-grid-sticky-element');\n\n/**\n * @param element Returns the exact element width\n */\nexport const elementWidth = (selector: string, root?: HTMLElement) =>\n    (root ?? document).querySelector(selector)?.getBoundingClientRect().width ?? 0;\n","/**\n * @internal\n * @ignore\n */\nexport enum ResizeDirection {\n    Left = -1,\n    Right = 1,\n}\n","/**\n * @internal\n * @ignore\n */\nexport enum ResizeStrategy {\n    AggresiveNeighbourPush = 0,\n    PassiveNeighbourPush,\n    ImmediateNeighbourHalt,\n    ScrollableGrid\n}\n","import type {\n    Observable,\n    Subject,\n} from 'rxjs';\n\nimport type {\n    ChangeDetectorRef,\n    ElementRef,\n    EventEmitter,\n    QueryList,\n    SimpleChanges,\n} from '@angular/core';\n\nimport type { UiGridColumnDirective } from '../../../body/ui-grid-column.directive';\n\n/**\n * @internal\n * @ignore\n */\nexport abstract class ResizableGrid<T> {\n    abstract columns: QueryList<UiGridColumnDirective<T>>;\n    abstract rendered: EventEmitter<void>;\n    abstract toggleColumns: boolean;\n\n    protected abstract _ref: ElementRef;\n    protected abstract _cd: ChangeDetectorRef;\n\n    protected abstract _destroyed$: Subject<void>;\n    protected abstract _columnChanges$: Observable<SimpleChanges>;\n}\n\nexport type ResizeEmission = Record<string, { initialValue: number; finalValue: number }>;\n","import toArray from 'lodash-es/toArray';\nimport {\n    animationFrameScheduler,\n    fromEvent,\n    interval,\n    merge,\n    Subject,\n} from 'rxjs';\nimport {\n    debounceTime,\n    distinctUntilChanged,\n    filter,\n    map,\n    take,\n    takeUntil,\n    tap,\n    throttleTime,\n} from 'rxjs/operators';\n\nimport { UiGridColumnDirective } from '../../body/ui-grid-column.directive';\nimport { IGridDataEntry } from '../../models';\nimport {\n    cellSelector,\n    findHeaderIndexFor,\n    getProperty,\n    resizeFilter,\n    toPercentageStyle,\n} from './resize-manager.constants';\nimport {\n    IResizeEvent,\n    IResizeInfo,\n    IResizeState,\n    ResizableGrid,\n    ResizeDirection,\n    ResizeEmission,\n} from './types';\n\nconst MINIMUM_WIDTH_CHANGE = 3;\n\n/**\n * @internal\n * @ignore\n */\nexport abstract class ResizeManager<T extends IGridDataEntry> {\n    isResizing = false;\n    current?: IResizeInfo<T>;\n    resizeEnd$ = new Subject<IResizeInfo<T> | undefined>();\n    resizeStart$ = new Subject<{ columnIndex: number; mouseEvent?: MouseEvent; direction?: 'left' | 'right' }>();\n    resize$ = new Subject<void>();\n    previousClientX = 0;\n    resizeEmissions$ = new Subject<ResizeEmission>();\n\n    protected set _resizeEvent(ev: MouseEvent) {\n        if (!this.current) { return; }\n\n        const value = ev.clientX - this.current.dragInitX!;\n        if (!this.previousClientX) {\n            // TODO: move this to startResize\n            this.previousClientX = ev.clientX;\n        }\n        // compute the current direction and determine if it has changed\n        const direction = value > this._previous!.offsetPx ? ResizeDirection.Right : ResizeDirection.Left;\n        const isDirectionChanged = this._direction !== direction;\n\n        // if a direction change occured\n        // get the next neighbour\n        if (isDirectionChanged) {\n            this._direction = direction;\n            this._neighbourIndexOffset = 0;\n        }\n\n        const pixelsToPercentRatio = this._computePixelsToPercentRatio();\n        const offsetPercent = value * pixelsToPercentRatio;\n\n        const nextEvent: IResizeEvent<T> = {\n            previous: this._previous!,\n            current: {\n                resized: this.current,\n                neighbour: this._getResizedPairAt(this.current.index + direction + this._neighbourIndexOffset),\n                oppositeNeighbour: this._getResizedPairAt(this.current.index + -direction),\n                offsetPx: value,\n                offsetPercent,\n                direction,\n                event: ev,\n            },\n            deltaPx: ev.clientX - this.previousClientX,\n        };\n        this._resize$.next(nextEvent);\n        this.resize$.next();\n        this.previousClientX = ev.clientX;\n    }\n\n    protected abstract _stateFilter: (state: IResizeEvent<T>) => boolean;\n    protected abstract _resizeLeftFilter: (state: IResizeEvent<T>) => boolean;\n    protected abstract _resizeRightFilter: (state: IResizeEvent<T>) => boolean;\n    protected abstract _stateUpdate: (state: IResizeEvent<T>) => void;\n\n    protected _neighbourIndexOffset = 0;\n\n    protected _headers?: HTMLDivElement[];\n    protected _table?: HTMLTableElement | null;\n    protected _definitions?: UiGridColumnDirective<T>[];\n    protected _gridElement: HTMLDivElement;\n    protected _gridResizeObserver?: ResizeObserver;\n    protected _widthMap = new Map<string, number>();\n    protected _previous?: IResizeState<T> = {} as IResizeState<T>;\n\n    private _direction?: ResizeDirection;\n    private _resize$ = new Subject<IResizeEvent<T>>();\n    private _stopped$ = new Subject<void>();\n    private _widthChange$: Subject<number> = new Subject();\n\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    widthChange$ = this._widthChange$.pipe(\n        debounceTime(50),\n        distinctUntilChanged((prev, curr) => Math.abs(prev - curr) < MINIMUM_WIDTH_CHANGE),\n    );\n\n    constructor(\n        protected _grid: ResizableGrid<T>,\n    ) {\n        // eslint-disable-next-line no-underscore-dangle\n        this._gridElement = (_grid as any)._ref.nativeElement;\n\n        merge(\n            _grid.rendered,\n            // eslint-disable-next-line no-underscore-dangle\n            (_grid as any)._columnChanges$,\n        ).pipe(\n            map(() => {\n                this._table = this._gridElement.querySelector<HTMLTableElement>('.ui-grid-container');\n                this._definitions = _grid.columns.filter(c => c.resizeable && c.visible);\n\n                return this._headers = toArray<HTMLDivElement>(this._gridElement.querySelectorAll('.ui-grid-resizeable'));\n            }),\n            map((headers, i) => {\n                if (_grid.toggleColumns || i > 0) { return; }\n\n                const headerWidth = headers.reduce(\n                    (acc, curr) => acc + (parseInt(curr.style.width!, 10) || 0),\n                    0,\n                ) / 10;\n\n                if (\n                    headerWidth < 100 &&\n                    !!headers.length\n                ) {\n                    console.warn(`Table header sum is currently ${headerWidth} ( < 100 ) please update column definitions.`);\n                }\n            }),\n            // eslint-disable-next-line no-underscore-dangle\n            takeUntil((_grid as any)._destroyed$),\n        ).subscribe();\n\n        this._gridResizeObserver = new ResizeObserver(entries => {\n            if (entries.length) {\n                this._widthChange$.next(entries[0].contentRect.width);\n            }\n        });\n\n        this._gridResizeObserver.observe(this._gridElement);\n    }\n\n    handleResize = (ev: MouseEvent) => this._resizeEvent = ev;\n\n    startResize(ev: MouseEvent, column: UiGridColumnDirective<T>, columnIndex: number) {\n        this.resizeStart$.next({\n            mouseEvent: ev,\n            columnIndex,\n        });\n        this.isResizing = true;\n        // hook events\n        this.setupState(ev, column);\n\n        const defaultView = this._gridElement.ownerDocument!.defaultView!;\n\n        const mouseUp$ = fromEvent(defaultView, 'mouseup')\n            .pipe(\n                take(1),\n                takeUntil(this._stopped$),\n            );\n\n        mouseUp$.subscribe(() => this.stop());\n\n        fromEvent<MouseEvent>(defaultView, 'mousemove')\n            .pipe(\n                throttleTime(16, animationFrameScheduler),\n                takeUntil(this._stopped$),\n            )\n            .subscribe(moveEv => this.handleResize(moveEv));\n\n        // detection is required in order to update cell resize state\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.detectChanges();\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.detach();\n    }\n\n    startKeyboardResize(direction: 'left' | 'right', column: UiGridColumnDirective<T>, columnIndex: number) {\n        if (this.isResizing) { return; }\n        this.resizeStart$.next({\n            columnIndex,\n            direction,\n        });\n        const columnElement = document.querySelector(`[data-property=\"${column.property as string}\"]`);\n        const { x, width } = columnElement!.getBoundingClientRect()!;\n        let currentX = x + width;\n        const maxSpeed = 50;\n        const directionFactor = direction === 'left' ? -1 : 1;\n        const eventFrequency = 16;\n        const step = 0.5;\n        let speed = 1;\n\n        this.isResizing = true;\n        // hook events\n        this.setupState({ clientX: currentX } as any, column);\n\n        const defaultView = this._gridElement.ownerDocument!.defaultView!;\n\n        const keyUp$ = fromEvent(defaultView, 'keyup')\n            .pipe(\n                take(1),\n                takeUntil(this._stopped$),\n            );\n\n        keyUp$.subscribe(() => this.stop());\n\n        interval(eventFrequency)\n            .pipe(\n                takeUntil(this._stopped$),\n            )\n            .subscribe(() => {\n                speed = Math.min(speed + step, maxSpeed);\n                currentX += speed * directionFactor;\n                this.handleResize({ clientX: currentX } as MouseEvent);\n            });\n\n        // detection is required in order to update cell resize state\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.detectChanges();\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.detach();\n    }\n\n    stop() {\n        this._stopped$.next();\n        const current = this.current;\n        this.endResize();\n        this.isResizing = false;\n        // it's added after the `endResize` call to ensure new width values upon emission\n        this.resizeEnd$.next(current);\n\n        // detection is required in order to update cell resize state\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.reattach();\n        // eslint-disable-next-line no-underscore-dangle\n        (this._grid as any)._cd.markForCheck();\n    }\n\n    setupState(ev: MouseEvent, column: UiGridColumnDirective<T>) {\n        this.current = {} as IResizeInfo<T>;\n        this.current.index = findHeaderIndexFor(this._headers!, column.identifier);\n        this.current = Object.assign(this.current, {\n            column,\n            element: this._headers![this.current.index],\n            cells: this._getCellsFor(column.identifier),\n        });\n\n        this._startResizeCommon(ev);\n\n        this._resize$\n            .pipe(\n                filter(resizeFilter),\n                tap((state: IResizeEvent<T>) => {\n                    // after filtering non-events\n                    // records previous states for event consistency\n                    this._previous = state.current;\n                }),\n                filter(this._stateFilter),\n                filter(this._resizeRightFilter),\n                filter(this._resizeLeftFilter),\n                takeUntil(this._stopped$),\n            )\n            .subscribe(this._stateUpdate);\n    }\n\n    endResize() {\n        const entries = [this.current!, this._previous!.neighbour, this._previous!.oppositeNeighbour];\n        this._emitNewColumnPercentages(entries.filter(e => e != null && !!e.column) as IResizeInfo<T>[]);\n        this._endResizeCommon(...entries);\n\n        this.current = undefined;\n        this._direction = NaN;\n    }\n\n    destroy() {\n        this._gridResizeObserver?.disconnect();\n        this._stopped$.complete();\n        this._resize$.complete();\n        this._widthMap.clear();\n\n        this.current = undefined;\n\n        this._previous = undefined;\n        this._headers = undefined;\n        this._table = undefined;\n        this._definitions = undefined;\n    }\n\n    protected _getResizedPairAt(index: number): IResizeInfo<T> | undefined {\n        const element = this._headers![index];\n\n        if (!element) { return; }\n\n        const property = getProperty(element);\n\n        const column = this._definitions!.find(d => d.identifier === property)!;\n\n        return {\n            element,\n            column,\n            index,\n            cells: this._getCellsFor(property),\n        };\n    }\n\n    protected _simulateStopFor(ev: MouseEvent | undefined, ...neighbours: (IResizeInfo<T> | undefined)[]) {\n        this._endResizeCommon(...neighbours);\n        this._startResizeCommon(ev);\n    }\n\n    protected _applyOffsetFor(entry: IResizeInfo<T> | undefined, offset: number) {\n        if (!entry?.column?.identifier) { return; }\n\n        const width = entry.column.width as number + offset;\n        this._widthMap.set(entry.column.identifier, width);\n        entry.element.style.width = toPercentageStyle(width);\n        entry.cells.forEach(cell => cell.style.width = toPercentageStyle(width));\n    }\n\n    protected _computePixelsToPercentRatio() {\n        if (!this._definitions?.length) {\n            return 0;\n        }\n        const totalColumnWidths = this._definitions.reduce((acc, curr) => acc + Number(curr.width), 0);\n        const totalHeaderWidths = this._headers!.reduce((acc, curr) => acc + curr.getBoundingClientRect().width, 0) || 1;\n\n        return totalColumnWidths / totalHeaderWidths;\n    }\n\n    protected _endResizeCommon(...entries: (IResizeInfo<T> | undefined)[]) {\n        entries.forEach(entry => {\n            if (!entry?.column?.identifier) { return; }\n\n            const width = this._widthMap.get(entry.column.identifier)!;\n            entry.column.width = width / 10;\n        });\n\n        this.previousClientX = 0;\n        this._previous = {} as IResizeState<T>;\n    }\n\n    protected _emitNewColumnPercentages(entries: IResizeInfo<T>[]) {\n        const resizeEmissions = entries.reduce((acc, curr) => {\n            acc[(curr.column?.property ?? '').toString()] = {\n                initialValue: Number(curr.column.width) / 10,\n                finalValue: Number(this._widthMap.get(curr.column.identifier)) / 10,\n            };\n            return acc;\n        }, {} as ResizeEmission);\n        this.resizeEmissions$.next(resizeEmissions);\n    }\n\n    private _getCellsFor = (property: string) => toArray<HTMLDivElement>(\n        this._gridElement\n            .querySelectorAll(cellSelector(property)),\n    );\n\n    private _startResizeCommon(ev?: MouseEvent) {\n        if (!ev) { return; }\n        if (!this._previous) { return; }\n\n        this._previous = Object.assign(this._previous, {\n            offsetPx: 0,\n        });\n        this.current!.dragInitX = ev.clientX;\n    }\n\n}\n","import { IGridDataEntry } from '../../../models';\nimport { ResizeManager } from '../resize-manager';\nimport {\n    clampOffset,\n    isDirectionChanged,\n    isMinWidth,\n} from '../resize-manager.constants';\nimport {\n    IResizeEvent,\n    ResizeDirection,\n} from '../types';\n\n/**\n * @internal\n * @ignore\n */\nexport class ImmediateNeighbourHaltResizer<T extends IGridDataEntry> extends ResizeManager<T> {\n    protected _stateFilter = (state: IResizeEvent<T>) => {\n        if (isDirectionChanged(state)) {\n            // if the direction has changed while actively resizing\n            // simulate a stop/start to reset the stored offset\n            this._simulateStopFor(state.current.event, state.current.resized, state.previous.neighbour, state.previous.oppositeNeighbour);\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _resizeLeftFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Left) { return true; }\n\n        // if the resize limit is reached simulate a stop\n        if (isMinWidth(state.current.resized)) {\n            this._simulateStopFor(state.current.event, state.current.resized, state.current.oppositeNeighbour);\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _resizeRightFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Right) { return true; }\n\n        if (\n            isMinWidth(state.current.neighbour) ||\n            !state.current.neighbour\n        ) {\n            this._simulateStopFor(state.current.event, state.current.resized, state.current.neighbour);\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _stateUpdate = (state: IResizeEvent<T>) => {\n        if (state.current.direction === ResizeDirection.Left) {\n            const offset = clampOffset(state.current.resized, state.current.offsetPercent);\n            // reduce the current column width\n            // or the left neighbour width\n            this._applyOffsetFor(state.current.resized, offset);\n            // if resize is possible add to the right neighbour's width\n            // in order to preserve the total width\n            this._applyOffsetFor(state.current.oppositeNeighbour, -offset);\n        }\n\n        if (state.current.direction === ResizeDirection.Right) {\n            const offset = -clampOffset(state.current.neighbour, -state.current.offsetPercent);\n            // reduce width of the right neighbour\n            this._applyOffsetFor(state.current.neighbour, -offset);\n            // add the stolen width to the actively resized column\n            this._applyOffsetFor(state.current.resized, offset);\n        }\n    };\n}\n","import { UiGridColumnDirective } from '../../../body/ui-grid-column.directive';\nimport { IGridDataEntry } from '../../../models';\nimport { ResizeManager } from '../resize-manager';\nimport {\n    clampOffset,\n    isDirectionChanged,\n    isMinWidth,\n} from '../resize-manager.constants';\nimport {\n    IResizeEvent,\n    ResizeDirection,\n} from '../types';\n\n/**\n * @internal\n * @ignore\n */\nexport class AggresiveNeighbourPushResizer<T extends IGridDataEntry> extends ResizeManager<T> {\n    private _isWidthLimitReached = false;\n\n    setupState(ev: MouseEvent, column: UiGridColumnDirective<T>) {\n        super.setupState(ev, column);\n        this._isWidthLimitReached = false;\n    }\n\n    protected _stateFilter = (state: IResizeEvent<T>) => {\n        if (isDirectionChanged(state)) {\n            // if the direction has changed while actively resizing\n            // simulate a stop/start to reset the stored offset\n            this._simulateStopFor(\n                state.current.event!,\n                state.current.resized,\n                state.previous.neighbour!,\n                state.previous.oppositeNeighbour!,\n            );\n            return false;\n        }\n\n        if (isMinWidth(state.current.neighbour)) {\n            // if the current pushed column has reached its width limit\n            // simulate a stop/start to reset the stored offset\n            this._simulateStopFor(state.current.event, state.current.resized, state.current.neighbour, state.current.oppositeNeighbour);\n\n            // update the neighbour offset\n            this._neighbourIndexOffset += state.current.direction;\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _resizeLeftFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Left) { return true; }\n\n        // if the current column reached the minimum\n        // and there are no more neighbours left, skip\n        if (\n            isMinWidth(state.current.resized) &&\n            !state.current.neighbour ||\n            isMinWidth(state.current.neighbour)\n        ) { return false; }\n\n        // if the resize limit is reached, then mark it\n        // and simulate a stop\n        if (\n            !this._isWidthLimitReached &&\n            isMinWidth(state.current.resized)\n        ) {\n            this._simulateStopFor(state.current.event!, state.current.resized, state.current.oppositeNeighbour!);\n            this._isWidthLimitReached = true;\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _resizeRightFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Right) { return true; }\n\n        // reset width limit flag\n        this._isWidthLimitReached = false;\n\n        if (\n            isMinWidth(state.current.neighbour) ||\n            !state.current.neighbour\n        ) {\n            this._simulateStopFor(state.current.event!, state.current.resized, state.current.neighbour);\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _stateUpdate = (state: IResizeEvent<T>) => {\n        if (state.current.direction === ResizeDirection.Left) {\n            // determine reduced column\n            const active = isMinWidth(state.current.resized) ?\n                state.current.neighbour! :\n                state.current.resized!;\n\n            const offset = clampOffset(active, state.current.offsetPercent);\n            // reduce the current column width\n            // or the left neighbour width\n            this._applyOffsetFor(active, offset);\n            // if resize is possible add to the right neighbours width\n            // in order to preserve the total width\n            this._applyOffsetFor(state.current.oppositeNeighbour, -offset);\n        }\n\n        if (state.current.direction === ResizeDirection.Right) {\n            const offset = -clampOffset(state.current.neighbour, -state.current.offsetPercent);\n            // reduce width of the right neighbour\n            this._applyOffsetFor(state.current.neighbour, -offset);\n            // add the stolen width to the actively resized column\n            this._applyOffsetFor(state.current.resized, offset);\n        }\n    };\n}\n","import { UiGridColumnDirective } from '../../../body/ui-grid-column.directive';\nimport { IGridDataEntry } from '../../../models';\nimport {\n    IResizeInfo,\n    IResizeState,\n    ResizeEmission,\n} from '../../resize/types';\nimport { ResizeDirection } from '../../resize/types/resizeDirection';\nimport { IResizeEvent } from '../../resize/types/resizeEvent';\nimport { clampColumnOffset } from '../resize-manager.constants';\nimport { ImmediateNeighbourHaltResizer } from './immediate-neighbour-halt-resizer';\n\nexport const MAXIMUM_STICKY_COVERAGE = 0.7;\nexport const MAX_COLUMN_WIDTH = 800;\nexport const MINIMUM_COLUMN_WIDTH = 50;\n\nexport class ScrollableGridResizer<T extends IGridDataEntry> extends ImmediateNeighbourHaltResizer<T> {\n    limitStickyWidthCoverage(tableContainerWidth: number) {\n        const stickyColumnsWidthSum = this._getStickyColumnsWidthSum();\n\n        if (!tableContainerWidth || !stickyColumnsWidthSum) { return; }\n        const exceedingStickyCoverageLimit = stickyColumnsWidthSum / tableContainerWidth > MAXIMUM_STICKY_COVERAGE;\n\n        if (exceedingStickyCoverageLimit) {\n            const scalingFactor = (tableContainerWidth / stickyColumnsWidthSum) * MAXIMUM_STICKY_COVERAGE;\n            this._grid.columns.filter(c => c.isSticky).forEach(column => {\n                column.width = column.widthPx$.value * scalingFactor;\n            });\n            this.resize$.next();\n        }\n    }\n\n    protected _resizeLeftFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Left) { return true; }\n        const columnMinWidth = state.current.resized.column.minWidth;\n        if (state.current.resized.column.widthPx$.value <= columnMinWidth) {\n            this._simulateStopFor(state.current.event, state.current.resized, state.current.oppositeNeighbour);\n            return false;\n        }\n\n        return true;\n    };\n\n    protected _resizeRightFilter = (state: IResizeEvent<T>) => {\n        if (state.current.direction !== ResizeDirection.Right) { return true; }\n\n        const exceedingStickyCoverageLimit = this._isLastStickyColumn(state) && this._isExceedingStickyCoverageLimit();\n        const isColumnTooLarge = state.current.resized.column.widthPx$.value >= MAX_COLUMN_WIDTH;\n        if (exceedingStickyCoverageLimit || isColumnTooLarge) {\n            this._simulateStopFor(state.current.event, state.current.resized, state.current.neighbour);\n            return false;\n        }\n        return true;\n    };\n\n    protected _stateUpdate = (state: IResizeEvent<T>) => {\n        const deltaPx = clampColumnOffset(\n            state.current.resized.column.widthPx$.value,\n            state.current.resized.column.minWidth,\n            state.deltaPx,\n        );\n        this._applyOffsetFor(state.current.resized, deltaPx);\n    };\n\n    protected _applyOffsetFor(entry: IResizeInfo<T> | undefined, offset: number) {\n        if (!entry) { return; }\n        const clamped = this._clampOffsetForLastStickyColumn(offset, entry.column);\n        const widthPx = entry.column.widthPx$.value + clamped;\n        entry.column.widthPx$.next(Math.max(MINIMUM_COLUMN_WIDTH, Math.min(widthPx, MAX_COLUMN_WIDTH)));\n    }\n\n    protected _emitNewColumnPercentages(entries: (IResizeInfo<T>)[]) {\n        const resizeEmissions: ResizeEmission = {};\n        entries.forEach(entry => {\n            const columnWidth = entry.column.widthPx$.value;\n            const initialValue = +entry!.column.width;\n            const finalValue = columnWidth;\n\n            if (initialValue !== finalValue) {\n                resizeEmissions[(entry.column?.property ?? '').toString()] = {\n                    initialValue,\n                    finalValue,\n                };\n            }\n\n            entry!.column.width = columnWidth;\n        });\n        this.resizeEmissions$.next(resizeEmissions);\n    }\n\n    protected _endResizeCommon(..._entries: (IResizeInfo<T> | undefined)[]) {\n        this.previousClientX = 0;\n        this._previous = {} as IResizeState<T>;\n    }\n\n    private _isLastStickyColumn(state: IResizeEvent<T>) {\n        return state.current.resized.element.classList.contains('ui-grid-sticky-element') &&\n            !state.current.neighbour?.element.classList.contains('ui-grid-sticky-element');\n    }\n\n    private _isExceedingStickyCoverageLimit() {\n        const stickyContainerWidth = this._getStickyColumnsWidthSum();\n        const tableContainerWidth = this._table!.getBoundingClientRect().width;\n\n        return (stickyContainerWidth / tableContainerWidth) > MAXIMUM_STICKY_COVERAGE;\n    }\n\n    private _getStickyColumnsWidthSum() {\n        return this._grid.columns.filter(c => c.isSticky).reduce((acc, curr) => acc + curr.widthPx$.value, 0);\n    }\n\n    private _clampOffsetForLastStickyColumn(offset: number, column: UiGridColumnDirective<T>) {\n        if (!column.isSticky) { return offset; }\n        const stickyColumnsWidthSum = this._getStickyColumnsWidthSum();\n        const tableContainerWidth = this._table!.getBoundingClientRect().width;\n        const stickyCoverage = (stickyColumnsWidthSum + offset) / tableContainerWidth;\n        if (stickyCoverage > MAXIMUM_STICKY_COVERAGE) {\n            return Math.max(0, tableContainerWidth * MAXIMUM_STICKY_COVERAGE - stickyColumnsWidthSum);\n        }\n        return offset;\n    }\n}\n\n","import { IGridDataEntry } from '../../models';\nimport { ResizeManager } from './resize-manager';\nimport {\n    AggresiveNeighbourPushResizer,\n    ImmediateNeighbourHaltResizer,\n} from './strategies';\nimport { ScrollableGridResizer } from './strategies/scrollable-grid-resizer';\nimport {\n    ResizableGrid,\n    ResizeStrategy,\n} from './types';\n\n/**\n * @internal\n * @ignore\n */\nexport const ResizeManagerFactory =\n    <T extends IGridDataEntry>(type: ResizeStrategy, grid: ResizableGrid<T>): ResizeManager<T> => {\n        switch (type) {\n            case ResizeStrategy.PassiveNeighbourPush:\n                console.warn(`The ${ResizeStrategy[type]\n                    } strategy is not yet supported. It will default to ${ResizeStrategy[ResizeStrategy.AggresiveNeighbourPush]\n                    }`);\n                return new AggresiveNeighbourPushResizer(grid);\n            case ResizeStrategy.AggresiveNeighbourPush:\n                return new AggresiveNeighbourPushResizer(grid);\n            case ResizeStrategy.ImmediateNeighbourHalt:\n                return new ImmediateNeighbourHaltResizer(grid);\n            case ResizeStrategy.ScrollableGrid:\n                return new ScrollableGridResizer(grid);\n        }\n    };\n","import { Subject } from 'rxjs';\n\nimport { isDevMode } from '@angular/core';\n\n/**\n * @internal\n * @ignore\n */\nexport class PerformanceMonitor {\n    paintTime$ = new Subject<string>();\n\n    get enabled() {\n        return isDevMode();\n    }\n\n    private _timestamp?: number;\n    private _obsever?: MutationObserver;\n\n    constructor(element: Element) {\n        if (!this.enabled) { return; }\n\n        this._obsever = new MutationObserver(this._onPaint);\n        this._obsever.observe(element, {\n            childList: true,\n            subtree: true,\n        });\n    }\n\n    reset() {\n        if (!this.enabled) { return; }\n\n        this._timestamp = performance.now();\n    }\n\n    destroy() {\n        this.paintTime$.complete();\n\n        if (!this.enabled) { return; }\n\n        this._obsever!.disconnect();\n    }\n\n    private _onPaint = (record: MutationRecord[]) => {\n        const isRowPaint = record\n            .some(r =>\n                this._isRow(r.target) ||\n                [\n                    ...Array.from(r.addedNodes),\n                    ...Array.from(r.removedNodes),\n                ].some(this._isRow),\n            );\n\n        if (!isRowPaint) { return; }\n\n        this.paintTime$.next((performance.now() - this._timestamp!).toFixed(2));\n    };\n\n    private _isRow = (element: Node) =>\n        !!(element as Element).classList &&\n        (element as Element)\n            .classList\n            .contains('ui-grid-row');\n}\n","import {\n    NEVER,\n    Observable,\n    Subject,\n} from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PageChangeEvent } from '../events/page-change-event';\nimport { ISortModel } from '../models';\nimport { UiGridIntl } from '../ui-grid.intl';\n\n/**\n * @internal\n * @ignore\n */\nexport class LiveAnnouncerManager<T> {\n    private _destroyed$ = new Subject<void>();\n\n    constructor(\n        private _announce: (message: string) => void,\n        intl: UiGridIntl,\n        data$: Observable<T[]>,\n        sort$: Observable<ISortModel<T>>,\n        refresh$: Observable<void>,\n        pageChange$: Observable<PageChangeEvent> = NEVER,\n    ) {\n\n        this._bindAnnouncement(\n            pageChange$,\n            pageChangeEvent => intl.loadingPage(pageChangeEvent.pageIndex + 1),\n        );\n\n        this._bindAnnouncement(\n            refresh$,\n            _ => intl.pageRefreshing,\n        );\n\n        let latestPageChangeEvent: PageChangeEvent;\n\n        this._untilDestroyed(pageChange$)\n            .subscribe(e => latestPageChangeEvent = e);\n\n        this._bindAnnouncement(data$, items =>\n            latestPageChangeEvent &&\n            intl.loadedPage(\n                latestPageChangeEvent.pageIndex + 1,\n                items.length,\n                latestPageChangeEvent.length,\n            ),\n        );\n\n        this._bindAnnouncement(\n            sort$,\n            sortEvent => sortEvent.direction === 'asc'\n                ? intl.columnSortedAscending(sortEvent.title)\n                : sortEvent.direction === 'desc'\n                    ? intl.columnSortedDescending(sortEvent.title)\n                    : intl.columnUnsorted(sortEvent.title),\n        );\n    }\n\n    destroy() {\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    private _bindAnnouncement<U>(source: Observable<U> | undefined, announcementBuilder: (data: U) => string) {\n        return this._untilDestroyed(source).subscribe(\n            data => this._announce(announcementBuilder(data)),\n        );\n    }\n\n    private _untilDestroyed<U>(source?: Observable<U>) {\n        if (source) {\n            return source.pipe(takeUntil(this._destroyed$));\n        }\n        return NEVER;\n    }\n}\n","import isEqual from 'lodash-es/isEqual';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n    filter,\n    map,\n} from 'rxjs/operators';\n\nimport { isDevMode } from '@angular/core';\n\nimport { UiGridColumnDirective } from '../body/ui-grid-column.directive';\nimport {\n    IGridDataEntry,\n    IVisibleModel,\n} from '../models';\n\ninterface IVisibleDiff {\n    property: string;\n    checked: boolean;\n}\n/**\n * @internal\n * @ignore\n */\nexport class VisibilityManger<T extends IGridDataEntry> {\n    private _columns$ = new BehaviorSubject<UiGridColumnDirective<T>[]>([]);\n    private _initial?: IVisibleDiff[];\n\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    columns$ = this._columns$.pipe(\n        map(cols => cols.filter(c => !!c.visible)),\n    );\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    options$ = this._columns$.pipe(\n        map(cols => this._mapToRenderedOptions(cols)),\n    );\n    // eslint-disable-next-line @typescript-eslint/member-ordering\n    isDirty$ = this.options$.pipe(\n        filter(() => !!this._initial),\n        map(o => ([o.map(this._mapToVisibleDiff), this._initial])),\n        map(([current, initial]) => !isEqual(current?.filter(v => v.checked), initial?.filter(v => v.checked))),\n    );\n\n    set columns(columns: UiGridColumnDirective<T>[]) {\n        if (!this._initial) {\n            this._initial = this._mapInitial(columns);\n        }\n\n        this._columns$.next(columns);\n    }\n\n    destroy() {\n        this._columns$.complete();\n    }\n\n    reset() {\n        if (!this._initial) { return; }\n\n        this.update(\n            this._initial\n                .filter(o => o.checked)\n                .map(o => o.property),\n        );\n    }\n\n    update(visibleColumnsByProps: (string | keyof T)[]) {\n        // changing the visible attribute will trigger a SimpleChange Emission\n        this._columns$.getValue()\n            .forEach(c => c.visible = visibleColumnsByProps.includes(c.property!));\n    }\n\n    private _mapColumnOption = (column: UiGridColumnDirective<T>) => ({\n        property: column.property!,\n        label: column.title,\n        checked: column.visible,\n        disabled: column.disableToggle,\n    }) as IVisibleModel<T>;\n\n    private _mapToVisibleDiff = ({ checked, property }: IVisibleModel<T>) => ({\n        property,\n        checked,\n    } as IVisibleDiff);\n\n    private _mapInitial = (columns: UiGridColumnDirective<T>[]) =>\n        this._mapOptions(columns).map(this._mapToVisibleDiff);\n\n    private _mapOptions = (columns: UiGridColumnDirective<T>[]) =>\n        columns\n            .filter(c => c.property\n                // discard locked and hidden columns from toggle-able options\n                && (!c.disableToggle || c.visible),\n            )\n            .map(this._mapColumnOption);\n\n    private _mapToRenderedOptions = (columns: UiGridColumnDirective<T>[]) => {\n        const columnOptions = this._mapOptions(columns);\n\n        const visibleOptions = columnOptions.filter(o => o.checked);\n\n        // ensure at least one column is locked as visible\n        if (visibleOptions.length && !visibleOptions.find(o => o.disabled)) {\n            const firstColumn = columns.find(c => c.property === visibleOptions[0].property)!;\n\n            if (isDevMode()) {\n                console.warn(`Did not find column with [disableToggle]=\"true\", locking '${firstColumn.property as string}' column`);\n            }\n\n            firstColumn.disableToggle = true;\n            visibleOptions[0].disabled = true;\n        }\n\n        return columnOptions;\n    };\n}\n","import { BehaviorSubject } from 'rxjs';\n\nimport { InjectionToken } from '@angular/core';\n\nimport { ResizeStrategy } from './resize/types/resizeStrategy';\n\nexport const UI_GRID_RESIZE_STRATEGY_STREAM = new InjectionToken<BehaviorSubject<ResizeStrategy>>('resize-strategy-stream');\n","import {\n    BehaviorSubject,\n    Subject,\n} from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\n\nimport {\n    ContentChild,\n    Directive,\n    inject,\n    Input,\n    isDevMode,\n    OnChanges,\n    OnDestroy,\n    SimpleChange,\n    SimpleChanges,\n    TemplateRef,\n} from '@angular/core';\nimport { SortDirection } from '@angular/material/sort';\nimport { identifier } from '@uipath/angular/utilities';\n\nimport { UiGridDropdownFilterDirective } from '../filters/ui-grid-dropdown-filter.directive';\nimport { UiGridSearchFilterDirective } from '../filters/ui-grid-search-filter.directive';\nimport {\n    ResizeStrategy,\n    UI_GRID_RESIZE_STRATEGY_STREAM,\n} from '../managers';\n\n/**\n * @ignore\n */\nconst ARIA_SORT_MAP: Record<SortDirection, string> = {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    '': 'none',\n    asc: 'ascending',\n    desc: 'descending',\n};\n\n/**\n * @ignore\n */\nconst REACTIVE_INPUT_LIST: (keyof UiGridColumnDirective<Record<string, unknown>>)[]\n    = ['sort', 'visible', 'title', 'primary'];\n\n/**\n * The grid column definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridColumn], ui-grid-column',\n})\nexport class UiGridColumnDirective<T> implements OnChanges, OnDestroy {\n    /**\n     * Set the column width, in `%`.\n     *\n     */\n    @Input()\n    set width(value: number | string) {\n        this._validateUnits(value);\n\n        const width = typeof value === 'string' ? Number(parseFloat(value).toFixed(1)) : value;\n        if (isNaN(width)) { return; }\n        if (this._resizeStrategyStream$.value === ResizeStrategy.ScrollableGrid) {\n            // preserving compatibility with previous implementation where width was expressed in %\n            this._width = typeof value === 'string' ? width * 10 : width;\n            this.widthPx$.next(this._width);\n            return;\n        }\n\n        this._width = width * 10;\n    }\n\n    /**\n     * Returns the column width, in `%`.\n     *\n     */\n    get width() {\n        return this._width;\n    }\n\n    /**\n     * Returns the `aria-sort` associated to the current sort.\n     *\n     */\n    get ariaSort() {\n        return ARIA_SORT_MAP[this.sort];\n    }\n\n    /**\n     * The string identifier for the column.\n     *\n     * (used for resize identification)\n     *\n     */\n    identifier = identifier();\n\n    /**\n     * Configure if the column is sortable.\n     *\n     */\n    @Input()\n    sortable = false;\n\n    /**\n     * Configure if the column should be included in the search.\n     *\n     */\n    @Input()\n    searchable = false;\n\n    /**\n     * Configure if the column is resizeable or not.\n     *\n     */\n    @Input()\n    resizeable = true;\n\n    /**\n     * The column title.\n     *\n     */\n    @Input()\n    title?: string;\n\n    /**\n     * The property that should be loaded in the associated row cell.\n     *\n     */\n    @Input()\n    property?: keyof T | string; // nested property\n\n    /**\n     * If defined, this will be used for sorting and filtering\n     *\n     */\n    @Input()\n    queryProperty?: keyof T | string; // nested property\n\n    /**\n     * The method metadata used for searches.\n     *\n     */\n    @Input()\n    method?: string;\n\n    /**\n     * The current sort of the column.\n     *\n     */\n    @Input()\n    sort: SortDirection = '';\n\n    /**\n     * If true and ui-grid has scrollable resize strategy, then the column will be placed in sticky mode\n     *\n     */\n    @Input()\n    set isSticky(value: boolean) {\n        this._isSticky = value;\n        this.disableToggle = this.disableToggle || value;\n        if (value) {\n            this.visible = true;\n        }\n    }\n    get isSticky() {\n        return this._isSticky;\n    }\n\n    /**\n     * If the column should be styled as primary.\n     *\n     */\n    @Input()\n    get primary() {\n        return this._primary;\n    }\n    set primary(primary: boolean) {\n        if (primary === this._primary) { return; }\n        this._primary = !!primary;\n\n        this.change$.next({\n            primary: new SimpleChange(!primary, primary, false),\n        });\n    }\n\n    /**\n     * If the column can have visibility toggled.\n     *\n     */\n    @Input()\n    set disableToggle(value: boolean) {\n        this._disableToggle = value;\n    }\n    get disableToggle() {\n        return this._disableToggle;\n    }\n\n    /**\n     * If the column should be rendered, used as default state if toggle columns is turned on.\n     *\n     */\n    @Input()\n    get visible() {\n        return this._visible;\n    }\n    set visible(visible: boolean) {\n        if (visible === this._visible) { return; }\n        this._visible = !!visible;\n\n        this.change$.next({\n            visible: new SimpleChange(!visible, visible, false),\n        });\n    }\n\n    /**\n     * The minimum width percentage that the column should have when resizing.\n     *\n     */\n    @Input()\n    minWidth = 30;\n\n    /**\n     * If the searchable dropdown associated to the column should trigger a data fetch when opened.\n     *\n     */\n    @Input()\n    refetch = false;\n\n    /**\n     * Determines the message which appears in the tooltip of an info icon inside the column header.\n     *\n     */\n    @Input()\n    description = '';\n\n    /**\n     * The searchable dropdown directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridSearchFilterDirective, {\n        static: true,\n    })\n    searchableDropdown?: UiGridSearchFilterDirective<T>;\n\n    /**\n     * The dropdown directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridDropdownFilterDirective, {\n        static: true,\n    })\n    dropdown?: UiGridDropdownFilterDirective<T>;\n\n    /**\n     * The view template associated to the row cell.\n     *\n     * @ignore\n     */\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n\n    /**\n     * Emits when reactive properties change.\n     *\n     */\n    change$ = new Subject<SimpleChanges>();\n\n    /**\n     * Source of truth for column's width expressed in pixels when grid has Scrollable resize strategy.\n     *\n     */\n    widthPx$ = new BehaviorSubject(0);\n\n    private _width = NaN;\n    private _visible = true;\n    private _primary = false;\n    private _isSticky = false;\n    private _disableToggle = false;\n\n    private _resizeStrategyStream$ = inject(UI_GRID_RESIZE_STRATEGY_STREAM, { host: false });\n    constructor() {\n        this._resizeStrategyStream$.pipe(\n            distinctUntilChanged(),\n        ).subscribe(resizeStrategy => {\n            this.width = this._width / 10;\n            if (resizeStrategy !== ResizeStrategy.ScrollableGrid) {\n                this.widthPx$.next(0);\n            }\n        });\n    }\n    /**\n     * @ignore\n     */\n    ngOnChanges(changes: SimpleChanges) {\n        const isAnyPropertyChanged = Object.keys(changes)\n            .filter(property => REACTIVE_INPUT_LIST.includes(property as keyof UiGridColumnDirective<T>))\n            .map(property => changes[property])\n            .some(change => !change.firstChange &&\n                change.currentValue !== change.previousValue,\n            );\n\n        if (!isAnyPropertyChanged) { return; }\n\n        this.change$.next(changes);\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.change$.complete();\n    }\n\n    private _validateUnits(value: string | number) {\n        if (\n            isDevMode() &&\n            typeof value === 'string' &&\n            !value.endsWith('%')\n        ) {\n            console.error(`Width should be percentual for '${this.title}' column.`);\n        }\n    }\n}\n","import {\n    ContentChild,\n    Directive,\n    TemplateRef,\n} from '@angular/core';\n\n/**\n * Expanded row definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridExpandedRow], ui-grid-expanded-row',\n})\nexport class UiGridExpandedRowDirective {\n    /**\n     * @internal\n     * @ignore\n     */\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import {\n    ContentChild,\n    Directive,\n    TemplateRef,\n} from '@angular/core';\n\n@Directive({\n    selector: '[uiGridLoading], ui-grid-loading',\n})\nexport class UiGridLoadingDirective {\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import {\n    ContentChild,\n    Directive,\n    TemplateRef,\n} from '@angular/core';\n\n@Directive({\n    selector: '[uiGridNoContent], ui-grid-no-content',\n})\nexport class UiGridNoContentDirective {\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import {\n    ContentChild,\n    Directive,\n    TemplateRef,\n} from '@angular/core';\n\n/**\n * The row action definition directive.\n *\n */\n@Directive({\n    selector: '[uiGridRowAction], ui-grid-row-action',\n})\nexport class UiGridRowActionDirective {\n    /**\n     * @ignore\n     */\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import {\n    ContentChild,\n Directive, TemplateRef,\n} from '@angular/core';\n\nexport interface IGridRowCardViewContext<T> {\n    index: number;\n    last: boolean;\n    data: T;\n}\n\n@Directive({ selector: '[uiGridRowCardView], ui-grid-row-card-view' })\nexport class UiGridRowCardViewDirective<T> {\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<IGridRowCardViewContext<T>>;\n}\n","import {\n    Directive,\n    Input,\n} from '@angular/core';\n\nimport { IGridDataEntry } from '../models';\n\n/**\n * Row configuration directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridRowConfig], ui-grid-row-config',\n})\nexport class UiGridRowConfigDirective<T extends IGridDataEntry> {\n    /**\n     * Class function factory, used to apply `ngClass` on rows.\n     *\n     */\n    @Input()\n    ngClassFn: (entry: T) => Record<string, boolean> = (_) => ({} as Record<string, boolean>);\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    HostBinding,\n    Inject,\n    Injectable,\n    Input,\n    Optional,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport {\n    MatPaginatorDefaultOptions,\n    MatPaginatorIntl,\n    MAT_PAGINATOR_DEFAULT_OPTIONS,\n    _MatPaginatorBase,\n} from '@angular/material/paginator';\n\n@Injectable()\nexport class UiMatPaginatorIntl extends MatPaginatorIntl {\n    pageSelectLabel = 'Select page';\n\n    getPageLabel(currentPage: number, pageCount?: number): string {\n        if (!pageCount) {\n            return `Page ${currentPage}`;\n        }\n        return `Page ${currentPage} / ${pageCount}`;\n    }\n\n    getPageOnlyLabel(): string {\n        return 'Page';\n    }\n\n    getTotalPages(pageCount: number): string {\n        return `/ ${pageCount}`;\n    }\n}\n\n@Component({\n    selector: 'ui-grid-custom-paginator',\n    templateUrl: './ui-grid-custom-paginator.component.html',\n    styleUrls: ['./ui-grid-custom-paginator.component.scss'],\n    // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n    inputs: ['disabled'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class UiGridCustomPaginatorComponent extends _MatPaginatorBase<MatPaginatorDefaultOptions> {\n    // eslint-disable-next-line\n    public _formFieldAppearance?: MatFormFieldAppearance;\n    // eslint-disable-next-line\n    public _intl!: UiMatPaginatorIntl;\n\n    /**\n     * Whether to show total count in custom paginator\n     *\n     */\n    @Input() hideTotalCount = false;\n\n    /**\n     * Whether to be able to select the page index\n     */\n    @Input() selectablePageIndex = false;\n\n    @HostBinding('class')\n    hostClass = 'mat-mdc-paginator';\n\n    get pageCount(): number {\n        return Math.ceil(this.length / this.pageSize);\n    }\n\n    get totalCount(): number {\n        return Math.min(this.length, (this.pageIndex + 1) * this.pageSize);\n    }\n\n    set pageSize(value: number) {\n        super.pageSize = value;\n\n        this._generatePossiblePages();\n    }\n    get pageSize(): number {\n        return super.pageSize;\n    }\n\n    set length(value: number) {\n        super.length = value;\n\n        this._generatePossiblePages();\n    }\n    get length() {\n        return super.length;\n    }\n\n    possiblePages: { label: number; value: number }[] = [];\n\n    constructor(\n        changeDetectorRef: ChangeDetectorRef,\n        @Optional()\n        intl?: UiMatPaginatorIntl,\n        @Optional()\n        @Inject(MAT_PAGINATOR_DEFAULT_OPTIONS)\n        defaults?: MatPaginatorDefaultOptions,\n    ) {\n        super(intl ?? new UiMatPaginatorIntl(), changeDetectorRef, defaults);\n\n        if (defaults?.formFieldAppearance != null) {\n            this._formFieldAppearance = defaults.formFieldAppearance;\n        }\n    }\n\n    changePage(pageIndex: number) {\n        const prevIndex = this.pageIndex;\n\n        this.pageIndex = pageIndex;\n\n        this.page.emit({\n            pageIndex,\n            previousPageIndex: prevIndex,\n            pageSize: this.pageSize,\n            length: this.length,\n        });\n    }\n\n    private _generatePossiblePages() {\n        this.possiblePages = Array.from({ length: this.pageCount }, (_, i) => ({\n            label: i + 1,\n            value: i,\n        }));\n    }\n}\n","<div class=\"mat-mdc-paginator-outer-container\">\n    <div class=\"mat-mdc-paginator-container\">\n        <div class=\"mat-mdc-paginator-range-label\">\n            <ng-container *ngIf=\"!hideTotalCount\">\n                {{_intl.getRangeLabel(pageIndex, pageSize, length)}}\n            </ng-container>\n            <ng-container *ngIf=\"hideTotalCount\">\n                {{ (pageIndex * pageSize + 1) + ' - ' + totalCount }}\n            </ng-container>\n        </div>\n\n        <div class=\"mat-mdc-paginator-range-actions\">\n            <button *ngIf=\"showFirstLastButtons\"\n                    [attr.aria-label]=\"_intl.firstPageLabel\"\n                    [matTooltip]=\"_intl.firstPageLabel\"\n                    [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n                    [matTooltipPosition]=\"'above'\"\n                    [disabled]=\"_previousButtonsDisabled()\"\n                    (click)=\"firstPage()\"\n                    mat-icon-button\n                    type=\"button\"\n                    class=\"mat-mdc-paginator-navigation-first\">\n                <svg class=\"mat-mdc-paginator-icon\"\n                     viewBox=\"0 0 24 24\"\n                     focusable=\"false\">\n                    <path d=\"M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z\" />\n                </svg>\n            </button>\n            <button [attr.aria-label]=\"_intl.previousPageLabel\"\n                    [matTooltip]=\"_intl.previousPageLabel\"\n                    [matTooltipDisabled]=\"_previousButtonsDisabled()\"\n                    [matTooltipPosition]=\"'above'\"\n                    [disabled]=\"_previousButtonsDisabled()\"\n                    (click)=\"previousPage()\"\n                    mat-icon-button\n                    type=\"button\"\n                    class=\"mat-mdc-paginator-navigation-previous\">\n                <svg class=\"mat-mdc-paginator-icon\"\n                     viewBox=\"0 0 24 24\"\n                     focusable=\"false\">\n                    <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" />\n                </svg>\n            </button>\n            <div [class.mat-mdc-paginator-page-size]=\"selectablePageIndex && pageCount > 1\"\n                 class=\"mat-mdc-paginator-page-label\">\n                <ng-container *ngIf=\"!hideTotalCount\">\n                    <ng-container *ngIf=\"selectablePageIndex && pageCount > 1; else defaultPageLabel\">\n                        {{ _intl.getPageOnlyLabel() }}\n                        <mat-form-field [appearance]=\"_formFieldAppearance!\"\n                                        [color]=\"color ?? 'primary'\"\n                                        class=\"mat-mdc-paginator-page-size-select\">\n                            <mat-select (selectionChange)=\"changePage($event.value)\"\n                                        [value]=\"pageIndex\"\n                                        [aria-label]=\"_intl.pageSelectLabel\"\n                                        data-cy=\"page-index-select\">\n                                <mat-option *ngFor=\"let possiblePage of possiblePages\"\n                                            [value]=\"possiblePage.value\">\n                                    {{ possiblePage.label }}\n                                </mat-option>\n                            </mat-select>\n                        </mat-form-field>\n                        {{ _intl.getTotalPages(pageCount) }}\n                    </ng-container>\n\n                    <ng-template #defaultPageLabel>\n                        {{_intl.getPageLabel(pageIndex+1, pageCount)}}\n                    </ng-template>\n                </ng-container>\n                <ng-container *ngIf=\"hideTotalCount\">\n                    {{ pageIndex + 1 }}\n                </ng-container>\n            </div>\n            <button [attr.aria-label]=\"_intl.nextPageLabel\"\n                    [matTooltip]=\"_intl.nextPageLabel\"\n                    [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n                    [matTooltipPosition]=\"'above'\"\n                    [disabled]=\"_nextButtonsDisabled()\"\n                    (click)=\"nextPage()\"\n                    mat-icon-button\n                    type=\"button\"\n                    class=\"mat-mdc-paginator-navigation-next\">\n                <svg class=\"mat-mdc-paginator-icon\"\n                     viewBox=\"0 0 24 24\"\n                     focusable=\"false\">\n                    <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n                </svg>\n            </button>\n            <button *ngIf=\"showFirstLastButtons\"\n                    [attr.aria-label]=\"_intl.lastPageLabel\"\n                    [matTooltip]=\"_intl.lastPageLabel\"\n                    [matTooltipDisabled]=\"_nextButtonsDisabled()\"\n                    [matTooltipPosition]=\"'above'\"\n                    [disabled]=\"_nextButtonsDisabled()\"\n                    (click)=\"lastPage()\"\n                    mat-icon-button\n                    type=\"button\"\n                    class=\"mat-mdc-paginator-navigation-last\">\n                <svg class=\"mat-mdc-paginator-icon\"\n                     viewBox=\"0 0 24 24\"\n                     focusable=\"false\">\n                    <path d=\"M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z\" />\n                </svg>\n            </button>\n        </div>\n\n        <div *ngIf=\"!hidePageSize\"\n             class=\"mat-mdc-paginator-page-size\">\n            <div class=\"mat-mdc-paginator-page-size-label\">\n                {{_intl.itemsPerPageLabel}}\n            </div>\n\n            <mat-form-field *ngIf=\"_displayedPageSizeOptions.length > 1\"\n                            [appearance]=\"_formFieldAppearance!\"\n                            [color]=\"color ?? 'primary'\"\n                            class=\"mat-mdc-paginator-page-size-select\">\n                <mat-select (selectionChange)=\"_changePageSize($event.value)\"\n                            [value]=\"pageSize\"\n                            [disabled]=\"disabled\"\n                            [aria-label]=\"_intl.itemsPerPageLabel\">\n                    <mat-option *ngFor=\"let pageSizeOption of _displayedPageSizeOptions\"\n                                [value]=\"pageSizeOption\">\n                        {{ pageSizeOption }}\n                    </mat-option>\n                </mat-select>\n            </mat-form-field>\n\n            <div *ngIf=\"_displayedPageSizeOptions.length <= 1\"\n                 class=\"mat-mdc-paginator-page-size-value\">{{pageSize}}</div>\n        </div>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { UiGridCustomPaginatorComponent } from './ui-grid-custom-paginator.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatSelectModule,\n        MatButtonModule,\n        MatTooltipModule,\n    ],\n    declarations: [UiGridCustomPaginatorComponent],\n    exports: [UiGridCustomPaginatorComponent],\n})\nexport class UiGridCustomPaginatorModule { }\n","import { Subject } from 'rxjs';\nimport {\n    debounceTime,\n    distinctUntilChanged,\n    map,\n    takeUntil,\n} from 'rxjs/operators';\n\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\n\n/**\n * The grid search component.\n *\n * @export\n */\n@Component({\n    selector: 'ui-grid-search',\n    templateUrl: './ui-grid-search.component.html',\n    styleUrls: ['./ui-grid-search.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiGridSearchComponent implements OnInit, OnDestroy {\n    /**\n     * The search debounce time (ms).\n     *\n     */\n    @Input()\n    debounce = 0;\n    /**\n     * The search input placeholder.\n     *\n     */\n    @Input()\n    placeholder?: string;\n    /**\n     * The max-length allowed in the search input.\n     *\n     */\n    @Input()\n    maxLength?: number;\n    /**\n     * The search tooltip text.\n     *\n     */\n    @Input()\n    searchTooltip?: string;\n    /**\n     * The clear search tooltip text.\n     *\n     */\n    @Input()\n    clearTooltip?: string;\n    /**\n     * Configure if the search tooltip is disabled.\n     *\n     */\n    @Input()\n    tooltipDisabled?: boolean;\n\n    /**\n     * The search value.\n     *\n     */\n    @Input()\n    get value() {\n        return this.search.value;\n    }\n    set value(value: string) {\n        this.search.setValue(value);\n    }\n\n    /**\n     * @ignore\n     */\n    search = new UntypedFormControl('');\n\n    /**\n     * The search event.\n     *\n     */\n    @Output()\n    searchChange = new EventEmitter<string>();\n\n    private _destroyed$ = new Subject<void>();\n\n    /**\n     * @ignore\n     */\n    ngOnInit() {\n        this.search.valueChanges.pipe(\n            debounceTime(this.debounce),\n            map(value => value.trim()),\n            distinctUntilChanged(),\n            takeUntil(this._destroyed$),\n        ).subscribe(value => this.searchChange.emit(value));\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.searchChange.complete();\n\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    /**\n     * Clears the search input value.\n     *\n     */\n    clear() {\n        this.search.setValue('');\n    }\n}\n","﻿<mat-form-field>\n    <input [formControl]=\"search\"\n           [placeholder]=\"placeholder ?? ''\"\n           [attr.maxlength]=\"maxLength\"\n           matInput\n           type=\"search\"\n           autocomplete=\"off\" />\n    <div (click)=\"clear()\"\n         (keyup.enter)=\"clear()\"\n         (keyup.space)=\"clear()\"\n         [hidden]=\"!search.value\"\n         [matTooltip]=\"clearTooltip ?? ''\"\n         [matTooltipDisabled]=\"tooltipDisabled\"\n         [attr.aria-label]=\"clearTooltip\"\n         role=\"button\"\n         matSuffix\n         class=\"ui-grid-search-cancel\"\n         tabindex=\"0\">\n        <mat-icon>\n            <svg width=\"100%\"\n                 height=\"100%\"\n                 viewBox=\"0 0 20 20\"\n                 style=\"color:currentColor;fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.5;\">\n                <path d=\"M6.505 13.498l7-7M13.505 13.5l-7-7\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2.0011213\" />\n            </svg>\n        </mat-icon>\n    </div>\n    <mat-icon [matTooltip]=\"searchTooltip ?? ''\"\n              [matTooltipDisabled]=\"tooltipDisabled\"\n              matPrefix\n              class=\"svg-icon\">\n        <svg width=\"100%\"\n             height=\"100%\"\n             viewBox=\"0 0 30 30\"\n             version=\"1.1\"\n             xmlns=\"http://www.w3.org/2000/svg\"\n             xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n             xml:space=\"preserve\"\n             style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;\">\n            <g transform=\"matrix(1.46299,0,0,1.46299,-3.8521,-4.123)\">\n                <path\n                      d=\"M15.456,14.365L14.882,14.365L14.678,14.169C15.415,13.313 15.821,12.221 15.82,11.091C15.82,8.497 13.685,6.362 11.091,6.362C8.497,6.362 6.362,8.497 6.362,11.091C6.362,13.685 8.497,15.82 11.091,15.82C12.263,15.82 13.339,15.391 14.169,14.678L14.365,14.882L14.365,15.456L18.003,19.087L19.087,18.003L15.456,14.365ZM11.091,14.365C9.28,14.365 7.817,12.903 7.817,11.091C7.817,9.28 9.28,7.817 11.091,7.817C12.903,7.817 14.365,9.28 14.365,11.091C14.365,12.903 12.903,14.365 11.091,14.365Z\" />\n            </g>\n        </svg>\n    </mat-icon>\n</mat-form-field>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { UiGridSearchComponent } from './ui-grid-search.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatIconModule,\n        MatFormFieldModule,\n        MatButtonModule,\n        MatInputModule,\n        MatTooltipModule,\n        ReactiveFormsModule,\n    ],\n    declarations: [UiGridSearchComponent],\n    exports: [UiGridSearchComponent],\n})\nexport class UiGridSearchModule { }\n","import isEqual from 'lodash-es/isEqual';\nimport {\n    fromEvent,\n    Subject,\n} from 'rxjs';\nimport {\n    filter,\n    takeUntil,\n} from 'rxjs/operators';\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport type { MatAnchor } from '@angular/material/button';\nimport {\n    MatSelect,\n    MatSelectChange,\n} from '@angular/material/select';\n\nimport {\n    IGridDataEntry,\n    IVisibleModel,\n} from '../../models';\n\nconst COMPONENT_SELECTOR = 'ui-grid-toggle-columns';\n\n@Component({\n    selector: COMPONENT_SELECTOR,\n    templateUrl: './ui-grid-toggle-columns.component.html',\n    styleUrls: ['./ui-grid-toggle-columns.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiGridToggleColumnsComponent<T extends IGridDataEntry> implements AfterViewInit, OnDestroy {\n    @HostBinding('class')\n    hostClass = COMPONENT_SELECTOR;\n\n    @HostBinding(`class.${COMPONENT_SELECTOR}-dirty`)\n    @Input()\n    dirty = false;\n\n    @Input()\n    showDivider = false;\n\n    @Input()\n    set options(options: IVisibleModel<T>[] | null) {\n        if (!options || isEqual(this._options, options)) { return; }\n\n        this._options = options;\n        this._selected = options\n            .filter(({ checked }) => checked)\n            .map(o => o.property);\n    }\n    get options() {\n        return this._options;\n    }\n\n    @Input()\n    toggleTooltip?: string;\n\n    @Input()\n    toggleTitle?: string;\n\n    @Input()\n    resetToDefaults?: string;\n\n    @Input()\n    togglePlaceholderTitle?: string;\n\n    @Output()\n    visibleColumns = new EventEmitter<(string | keyof T)[]>();\n\n    @Output()\n    resetColumns = new EventEmitter<void>();\n\n    @Output()\n    visibleColumnsToggled = new EventEmitter<boolean>();\n\n    @ViewChild(MatSelect, { static: false })\n    selectColumns?: MatSelect;\n\n    @ViewChild('resetBtn', { static: false })\n    resetBtn?: MatAnchor;\n\n    get selected() {\n        return this._selected;\n    }\n\n    private get _currentIndex() {\n        if (!this.selectColumns) { return null; }\n        // eslint-disable-next-line no-underscore-dangle\n        return this.selectColumns._keyManager.activeItemIndex;\n    }\n\n    private set _currentIndex(i: number | null) {\n        if (i == null || !this.selectColumns) { return; }\n        // eslint-disable-next-line no-underscore-dangle\n        this.selectColumns._keyManager.setActiveItem(i);\n    }\n\n    private get _isFirstValidIndex() {\n        return !this._isResetIndex &&\n            this._currentIndex === this._options.findIndex(o => !o.disabled);\n    }\n\n    private get _isResetIndex() {\n        return this._currentIndex === -1;\n    }\n\n    private _selected: (string | keyof T)[] = [];\n    private _options: IVisibleModel<T>[] = [];\n    private _destroyed$ = new Subject<void>();\n\n    constructor(\n        private _elementRef: ElementRef<HTMLElement>,\n        private _cd: ChangeDetectorRef,\n    ) { }\n\n    ngAfterViewInit() {\n        fromEvent<KeyboardEvent>(\n            this._elementRef.nativeElement,\n            'keydown',\n            { capture: true },\n        ).pipe(\n            filter(_ => this.dirty),\n            takeUntil(this._destroyed$),\n        ).subscribe(this._onKeyDown);\n\n        this.selectColumns!.openedChange\n            .pipe(\n                takeUntil(this._destroyed$),\n            )\n            .subscribe((open) => {\n                this.visibleColumnsToggled.emit(open);\n            });\n    }\n\n    ngOnDestroy() {\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    selectionChange({ value }: MatSelectChange) {\n        this._selected = value;\n        this._options\n            .forEach(c => c.checked = value.includes(c.property));\n\n        this.visibleColumns.emit(value);\n    }\n\n    reset() {\n        this.resetColumns.emit();\n        this.selectColumns!.close();\n        this.selectColumns!.focus();\n    }\n\n    resetKeyDown(e: KeyboardEvent) {\n        if (this._isArrowUp(e)) {\n            e.stopImmediatePropagation();\n            return;\n        }\n\n        if (this._isArrowDown(e)) {\n            this.selectColumns?.focus();\n        }\n    }\n\n    private _onKeyDown = (e: KeyboardEvent) => {\n        if (\n            this._isResetIndex &&\n            this._isArrowDown(e)\n        ) {\n            e.preventDefault();\n            e.stopImmediatePropagation();\n\n            this.selectColumns?.focus();\n            // eslint-disable-next-line no-underscore-dangle\n            this.selectColumns?._keyManager.setFirstItemActive();\n            this._cd.detectChanges();\n        }\n\n        if (\n            this._isArrowUp(e) &&\n            this._isFirstValidIndex\n        ) {\n            e.stopPropagation();\n            this._focusOnReset();\n        }\n    };\n\n    private _isArrowUp(e: KeyboardEvent) {\n        return ['Up', 'ArrowUp'].includes(e.key);\n    }\n\n    private _isArrowDown(e: KeyboardEvent) {\n        return ['Down', 'ArrowDown'].includes(e.key);\n    }\n\n    private _focusOnReset() {\n        this._currentIndex = -1;\n        this.resetBtn?.focus('keyboard');\n        this._cd.detectChanges();\n    }\n}\n","<ng-container *ngIf=\"options!.length\">\n    <button [color]=\"dirty ? 'primary' : undefined\"\n            (click)=\"selectColumns!.open(); selectColumns!.focus()\"\n            type=\"button\"\n            mat-button>\n        <mat-icon class=\"material-icons-outlined\">table_chart</mat-icon>\n        <span>{{togglePlaceholderTitle}}</span>\n        <mat-icon class=\"material-icons-outlined\"\n                  iconPositionEnd>keyboard_arrow_down</mat-icon>\n    </button>\n\n    <mat-select [value]=\"selected\"\n                [aria-label]=\"togglePlaceholderTitle ?? ''\"\n                [disableOptionCentering]=\"true\"\n                (selectionChange)=\"selectionChange($event)\"\n                panelClass=\"ui-grid-toggle-panel\"\n                class=\"use-alternate\"\n                tabIndex=\"-1\"\n                multiple>\n        <mat-optgroup>\n            <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n            <span *ngIf=\"toggleTitle\"\n                  [matTooltip]=\"toggleTitle\"\n                  class=\"ui-grid-toggle-title\">{{ toggleTitle }}</span>\n\n            <button #resetBtn\n                    *ngIf=\"dirty\"\n                    [matTooltip]=\"resetToDefaults ?? ''\"\n                    (click)=\"reset()\"\n                    (keydown.enter)=\"reset()\"\n                    (keydown.space)=\"reset()\"\n                    (keydown)=\"resetKeyDown($event)\"\n                    mat-button\n                    type=\"button\"\n                    class=\"ui-grid-toggle-reset\"\n                    role=\"button\"\n                    color=\"primary\"\n                    tabindex=\"-1\">\n                {{resetToDefaults}}\n            </button>\n\n            <mat-option *ngFor=\"let o of options\"\n                        [matTooltip]=\"o.label\"\n                        [disabled]=\"o.disabled\"\n                        [value]=\"o.property\">{{ o.label }}</mat-option>\n        </mat-optgroup>\n    </mat-select>\n\n    <mat-divider *ngIf=\"showDivider\"\n                 [vertical]=\"true\"></mat-divider>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { UiAutoAccessibleLabelModule } from '@uipath/angular/a11y';\n\nimport { UiGridToggleColumnsComponent } from './ui-grid-toggle-columns.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatIconModule,\n        MatSelectModule,\n        MatButtonModule,\n        MatTooltipModule,\n        MatDividerModule,\n        UiAutoAccessibleLabelModule,\n    ],\n    declarations: [UiGridToggleColumnsComponent],\n    exports: [UiGridToggleColumnsComponent],\n})\nexport class UiGridToggleColumnsModule { }\n","import { tap } from 'rxjs/operators';\n\nimport {\n    Directive,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n} from '@angular/core';\n\nimport { PageChangeEvent } from '../events/page-change-event';\n\n/**\n * Footer definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridFooter], ui-grid-footer',\n})\nexport class UiGridFooterDirective implements OnDestroy, OnInit {\n    /**\n     * The total item length.\n     *\n     */\n    @Input()\n    length = 0;\n\n    /**\n     * The active page size.\n     *\n     */\n    @Input()\n    set pageSize(value: number) {\n        this._state.pageSize = value;\n    }\n\n    /**\n     * The active page index\n     *\n     */\n    @Input()\n    set pageIndex(value: number) {\n        this._state.pageIndex = value;\n    }\n\n    /**\n     * The available page size options.\n     *\n     */\n    @Input()\n    pageSizes: number[] = [];\n\n    /**\n     * If the page size options should be hidden.\n     *\n     */\n    @Input()\n    hidePageSize = false;\n\n    /**\n     * Whether to show the first/last buttons UI to the user.\n     *\n     */\n    @Input()\n    showFirstLastButtons = true;\n\n    /*\n    * Support hiding footer even if it's defined.\n    */\n    @Input()\n    hidden = false;\n\n    /**\n     * Whether to show total count in custom paginator\n     *\n     */\n    @Input()\n    hideTotalCount = false;\n\n    /**\n     * Emits when the page is changed.\n     *\n     */\n    @Output()\n    pageChange = new EventEmitter<PageChangeEvent>();\n\n    /**\n     * The current footer state.\n     *\n     */\n    get state() {\n        return this._state;\n    }\n\n    private _state: PageChangeEvent = {\n        length: NaN,\n        pageIndex: 0,\n        pageSize: NaN,\n        previousPageIndex: NaN,\n    };\n\n    /**\n     * @ignore\n     */\n    constructor() {\n        this.pageChange.pipe(\n            tap(ev => this._state = ev),\n        ).subscribe();\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnInit() {\n        this._state = {\n            ...this._state,\n            length: this.length,\n        };\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.pageChange.complete();\n    }\n}\n","import {\n    ContentChild,\n    Directive,\n    Input,\n    TemplateRef,\n} from '@angular/core';\n\n/**\n * Header button definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiHeaderButton], ui-header-button',\n})\nexport class UiGridHeaderButtonDirective {\n    /**\n     * Configure if the button is the grid main action, or a selection action.\n     *\n     */\n    @Input()\n    type?: 'action' | 'main' | 'inline';\n\n    /**\n     * Configure if the button is visible or not.\n     *\n     */\n    @Input()\n    visible = true;\n\n    /**\n     * @internal\n     * @ignore\n     */\n    @ContentChild(TemplateRef, {\n        static: true,\n    })\n    html?: TemplateRef<any>;\n}\n","import type { QueryList } from '@angular/core';\nimport {\n    AfterViewInit,\n    ContentChildren,\n    Directive,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Output,\n} from '@angular/core';\n\nimport { IFilterModel } from '../models';\nimport { UiGridHeaderButtonDirective } from './ui-grid-header-button.directive';\n\n/**\n * Grid header definition directive.\n *\n * @export\n */\n@Directive({\n    selector: '[uiGridHeader], ui-grid-header',\n})\nexport class UiGridHeaderDirective<T> implements AfterViewInit, OnDestroy {\n    /**\n     * If the search input is available.\n     *\n     */\n    @Input()\n    search = false;\n\n    /**\n     * The active search value.\n     *\n     */\n    @Input()\n    searchValue?: string;\n\n    /**\n     * The search debounce time (ms).\n     *\n     */\n    @Input()\n    searchDebounce = 500;\n\n    /**\n     * The search max length.\n     *\n     */\n    @Input()\n    searchMaxLength = 64;\n\n    /**\n     * Emits a filter model event when the search changes.\n     *\n     */\n    @Output()\n    searchFilter = new EventEmitter<IFilterModel<T>[]>();\n\n    /**\n     * Emits the search term when the search changes.\n     *\n     */\n    @Output()\n    searchTerm = new EventEmitter<string>();\n\n    /**\n     * @internal\n     * @ignore\n     */\n    mainButtons?: UiGridHeaderButtonDirective[];\n\n    /**\n     * @internal\n     * @ignore\n     */\n    actionButtons?: UiGridHeaderButtonDirective[];\n\n    /**\n     * @internal\n     * @ignore\n     */\n    inlineButtons?: UiGridHeaderButtonDirective[];\n\n    @ContentChildren(UiGridHeaderButtonDirective)\n    private _buttons!: QueryList<UiGridHeaderButtonDirective>;\n\n    /**\n     * @internal\n     * @ignore\n     */\n    ngAfterViewInit() {\n        this.mainButtons = this._buttons.filter(b => b.type === 'main');\n        this.actionButtons = this._buttons.filter(b => b.type === 'action');\n        this.inlineButtons = this._buttons.filter(b => b.type === 'inline');\n    }\n\n    /**\n     * @internal\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.searchFilter.complete();\n        this.searchTerm.complete();\n    }\n}\n","import isArray from 'lodash-es/isArray';\nimport range from 'lodash-es/range';\nimport {\n    animationFrameScheduler,\n    BehaviorSubject,\n    combineLatest,\n    defer,\n    fromEvent,\n    iif,\n    merge,\n    Observable,\n    of,\n    ReplaySubject,\n    Subject,\n    Subscription,\n} from 'rxjs';\nimport {\n    debounceTime,\n    distinctUntilChanged,\n    filter,\n    map,\n    observeOn,\n    share,\n    shareReplay,\n    startWith,\n    switchMap,\n    take,\n    takeUntil,\n    tap,\n    throttleTime,\n} from 'rxjs/operators';\n\nimport {\n    animate,\n    style,\n    transition,\n    trigger,\n} from '@angular/animations';\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Inject,\n    InjectionToken,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {\n    MatCheckbox,\n    MatCheckboxChange,\n} from '@angular/material/checkbox';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { QueuedAnnouncer } from '@uipath/angular/a11y';\nimport { ISuggestValue } from '@uipath/angular/components/ui-suggest';\n\nimport { UiGridColumnDirective } from './body/ui-grid-column.directive';\nimport { UiGridExpandedRowDirective } from './body/ui-grid-expanded-row.directive';\nimport { UiGridLoadingDirective } from './body/ui-grid-loading.directive';\nimport { UiGridNoContentDirective } from './body/ui-grid-no-content.directive';\nimport { UiGridRowActionDirective } from './body/ui-grid-row-action.directive';\nimport { UiGridRowCardViewDirective } from './body/ui-grid-row-card-view.directive';\nimport { UiGridRowConfigDirective } from './body/ui-grid-row-config.directive';\nimport { UiGridCustomSearchDirective } from './components/ui-grid-search/ui-grid-custom-search.directive';\nimport { UiGridSearchFilterDirective } from './filters/ui-grid-search-filter.directive';\nimport { UiGridFooterDirective } from './footer/ui-grid-footer.directive';\nimport { UiGridHeaderDirective } from './header/ui-grid-header.directive';\nimport {\n    DataManager,\n    FilterManager,\n    LiveAnnouncerManager,\n    PerformanceMonitor,\n    ResizeManager,\n    ResizeManagerFactory,\n    ResizeStrategy,\n    SelectionManager,\n    SortManager,\n    UI_GRID_RESIZE_STRATEGY_STREAM,\n    VisibilityManger,\n} from './managers';\nimport { ScrollableGridResizer } from './managers/resize/strategies/scrollable-grid-resizer';\nimport {\n    ResizableGrid,\n    ResizeEmission,\n} from './managers/resize/types';\nimport {\n    GridOptions,\n    IFilterModel,\n    IGridDataEntry,\n    ISortModel,\n} from './models';\nimport { UiGridIntl } from './ui-grid.intl';\n\nexport const UI_GRID_OPTIONS = new InjectionToken<GridOptions<unknown>>('UiGrid DataManager options.');\nconst FOCUSABLE_ELEMENTS_QUERY = 'a, button:not([hidden]), input:not([hidden]), textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\nconst EXCLUDED_ROW_SELECTION_ELEMENTS = ['a', 'button', 'input', 'textarea', 'select'];\nconst REFRESH_WIDTH = 50;\nconst DEFAULT_VIRTUAL_SCROLL_ITEM_SIZE = 48;\nconst DEFAULT_VIRTUAL_SCROLL_HIGH_DENSITY_ITEM_SIZE = 32;\nconst SCROLL_LIMIT_FOR_DISPLAYING_SHADOW = 10;\n\n@Component({\n    selector: 'ui-grid',\n    templateUrl: './ui-grid.component.html',\n    styleUrls: [\n        './ui-grid.component.scss',\n    ],\n    animations: [\n        trigger('filters-container', [\n            transition(':enter', [\n                style({\n                    minHeight: '0',\n                    height: '0',\n                    opacity: '0',\n                }),\n                animate('0.15s ease-in', style({\n                    opacity: '*',\n                    minHeight: '*',\n                    height: '*',\n                    display: '*',\n                })),\n            ]),\n            transition(':leave', [\n                style({\n                    minHeight: '*',\n                    height: '*',\n                }),\n                animate('0.15s ease-in', style({\n                    opacity: '0',\n                    minHeight: '0',\n                    height: '0',\n                })),\n            ]),\n        ]),\n    ],\n    providers: [\n        {\n            provide: UI_GRID_RESIZE_STRATEGY_STREAM,\n            useFactory: () => new BehaviorSubject(ResizeStrategy.ImmediateNeighbourHalt),\n        },\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n})\nexport class UiGridComponent<T extends IGridDataEntry>\n    extends ResizableGrid<T>\n    implements AfterContentInit, OnChanges, OnDestroy, OnInit {\n    /**\n     * The data list that needs to be rendered within the grid.\n     *\n     * NOTE: to have access to all functionality, we recommend that entities display in the grid implement the IGridDataEntry interface.\n     *\n     * @param value The list that needs to rendered.\n     */\n    @Input()\n    set data(value: T[] | null) {\n        this._performanceMonitor.reset();\n        this.dataManager.update(value);\n    }\n\n    /**\n     * Marks the grid resizing state.\n     *\n     */\n    @HostBinding('class.ui-grid-state-resizing')\n    @Input()\n    get isResizing() {\n        return this.resizeManager.isResizing;\n    }\n\n    /**\n     * Marks the grid projected state.\n     *\n     */\n    @HostBinding('class.ui-grid-state-projected')\n    @Input()\n    isProjected: boolean;\n\n    /**\n     * Set the grid in high density state.\n     *\n     */\n    @HostBinding('class.ui-grid-state-high-density')\n    @Input()\n    hasHighDensity = false;\n\n    /**\n     * Determines if all of the items are currently checked.\n     *\n     */\n    get isEveryVisibleRowChecked() {\n        return !!this.dataManager.length &&\n            this.dataManager.every(row => this.selectionManager.isSelected(row!));\n    }\n\n    /**\n     * Determines if there's a value selected within the currently rendered items (used for multi-page selection).\n     *\n     */\n    get hasValueOnVisiblePage() {\n        return this.dataManager.some(row => this.selectionManager.isSelected(row!));\n    }\n\n    /**\n     * The desired resize strategy.\n     *\n     * FIXME: Currently only `ImmediateNeighbourHalt` is stable.\n     *\n     */\n    @Input()\n    set resizeStrategy(value: ResizeStrategy | null) {\n        if (value === this._resizeStrategy) { return; }\n\n        if (value != null) {\n            this._resizeStrategy = value;\n\n            this._resizeStrategyStream$.next(value);\n            if (this._resizeStrategy != null) {\n                this.resizeManager.destroy();\n            }\n            this._initResizeManager();\n        }\n    }\n    get resizeStrategy() {\n        return this._resizeStrategy;\n    }\n\n    /**\n     * Marks the grid loading state.\n     *\n     */\n    @HostBinding('class.ui-grid-state-loading')\n    @Input()\n    loading = false;\n\n    /**\n     * Marks the grid enabled state.\n     *\n     */\n    @HostBinding('class.ui-grid-state-disabled')\n    @Input()\n    disabled = false;\n\n    /**\n     * Configure if the grid search filters are eager or on open.\n     *\n     */\n    @Input()\n    set collapseFiltersCount(count: number) {\n        if (count === this._collapseFiltersCount$.value) { return; }\n        this._collapseFiltersCount$.next(count);\n    }\n    get collapseFiltersCount() {\n        return this._collapseFiltersCount$.value;\n    }\n\n    /**\n     * Configure if the grid search filters are eager or on open.\n     *\n     */\n    @Input()\n    set fetchStrategy(fetchStrategy: 'eager' | 'onOpen') {\n        if (fetchStrategy === this.fetchStrategy) { return; }\n        this._fetchStrategy = fetchStrategy;\n    }\n    get fetchStrategy() {\n        return this._fetchStrategy;\n    }\n\n    /**\n     * Configure if the grid allows item selection.\n     *\n     */\n    @Input()\n    selectable = true;\n\n    /**\n     * Configure if the grid allows radio button selection for its items.\n     *\n     */\n    @Input()\n    singleSelectable = false;\n\n    /**\n     * Configure if the grid selects entity on row click.\n     *\n     */\n    @Input()\n    shouldSelectOnRowClick = false;\n\n    /**\n     * Option to have collapsible filters.\n     *\n     * @deprecated - use `[collapseFiltersCount]=\"0\" to render collapsed or leave out to always render inline`\n     */\n    @Input()\n    set collapsibleFilters(collapse: boolean) {\n        this._collapseFiltersCount$.next(collapse ? 0 : Number.POSITIVE_INFINITY);\n    }\n    get collapsibleFilters() {\n        return !this._collapseFiltersCount$.value;\n    }\n\n    /**\n     * Configure if the grid allows to toggle column visibility.\n     *\n     */\n    @Input()\n    toggleColumns = false;\n\n    /**\n     * Configure if the grid allows multi-page selection.\n     *\n     */\n    @HostBinding('class.ui-grid-mode-multi-select')\n    @Input()\n    multiPageSelect = false;\n\n    /**\n     * Configure if the grid is refreshable.\n     *\n     */\n    @Input()\n    refreshable = true;\n\n    /**\n     * Configure if `virtualScroll` is enabled. Incompatible with scrollable resize strategy.\n     *\n     */\n    @Input()\n    set virtualScroll(value: boolean) {\n        this._virtualScroll = value;\n    }\n    get virtualScroll() {\n        return this._virtualScroll;\n    }\n\n    /**\n     * Configure the row item size for virtualScroll\n     *\n     */\n    @Input()\n    rowSize: number;\n\n    /**\n     * Show paint time stats\n     *\n     */\n    @Input()\n    showPaintTime = false;\n\n    /**\n     * Provide a custom `noDataMessage`.\n     *\n     */\n    @Input()\n    noDataMessage?: string;\n\n    /**\n     * Set the expanded entry.\n     *\n     * @deprecated Use `expandedEntries` instead.\n     */\n    @Input()\n    set expandedEntry(entry: T | undefined) {\n        this.expandedEntries = entry;\n    }\n    get expandedEntry() {\n        return this._expandedEntries[0];\n    }\n\n    /**\n     * Set the expanded entry / entries.\n     *\n     */\n    @Input()\n    set expandedEntries(entry: T | T[] | undefined) {\n        if (!entry) {\n            this._expandedEntries = [];\n            return;\n        }\n        this._expandedEntries = Array.isArray(entry) ? entry : [entry];\n    }\n    get expandedEntries() {\n        return this._expandedEntries;\n    }\n\n    /**\n     * Configure if the expanded entry should replace the active row, or add a new row with the expanded view.\n     *\n     */\n    @Input()\n    expandMode: 'preserve' | 'collapse' = 'collapse';\n\n    /**\n     * Configure if ui-grid-header-row should be visible, by default it is visible\n     *\n     */\n    @Input()\n    showHeaderRow = true;\n\n    /**\n     * Configure a function that receives the whole grid row, and returns\n     * disabled message if the row should not be selectable\n     *\n     */\n    @Input()\n    disableSelectionByEntry: (entry: T) => null | string;\n\n    @Input()\n    set customFilterValue(customValue: IFilterModel<T>[]) {\n        if (!Array.isArray(customValue) || !customValue.length) { return; }\n        this.filterManager.updateCustomFilters(customValue);\n    }\n\n    /**\n     * Configure if Card view should be used\n     *\n     */\n    @Input()\n    useCardView = false;\n\n    /**\n     * If the grid allows highlighting of a row\n     *\n     */\n    @Input()\n    allowHighlight = false;\n\n    /**\n     * Id of the entity that should be highlighted\n     *\n     */\n    @Input()\n    set highlightedEntityId(value: string | null) {\n        if (value != null) {\n            this.highlightedEntityId$.next(value);\n        }\n    }\n\n    /**\n     * Maximum number of active filter values before the filter selection is disabled\n     *\n     */\n    @Input()\n    set maxSelectedFilterValues(value: number) {\n        this.maxSelectedFilterValues$.next(value);\n    }\n    /**\n     * Configure if the pagination should be selectable\n     *\n     */\n    @Input()\n    selectablePageIndex: boolean;\n\n    /**\n     * Configure if the filter containers should be swapped\n     *\n     */\n    @Input()\n    swapFilterContainers = false;\n\n    /**\n     * Emits an event with the sort model when a column sort changes.\n     *\n     */\n    @Output()\n    sortChange = new EventEmitter<ISortModel<T>>();\n\n    /**\n     * Emits an event when user click the refresh button.\n     *\n     */\n    @Output()\n    refresh = new EventEmitter<void>();\n\n    /**\n     * Emits an event once the grid has been rendered.\n     *\n     */\n    @Output()\n    rendered = new EventEmitter<void>();\n\n    /**\n     * Emits an event once the grid has been rendered.\n     *\n     */\n    @Output()\n    resizeEnd = new EventEmitter<void>();\n\n    @Output()\n    removeCustomFilter = new EventEmitter<void>();\n\n    /**\n     * Emits an event when a row is clicked.\n     *\n     */\n    @Output()\n    rowClick = new EventEmitter<{ event: Event; row: T }>();\n\n    /**\n     * Emits the resize initial & final percentage widths of the resized columns\n     *\n     */\n    @Output()\n    resizeEmissions = new EventEmitter<ResizeEmission>();\n\n    /**\n     * Emits the column definitions when their definition changes.\n     *\n     */\n    columns$ = new BehaviorSubject<UiGridColumnDirective<T>[]>([]);\n\n    /**\n     * Row configuration directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridRowConfigDirective, {\n        static: true,\n    })\n    rowConfig?: UiGridRowConfigDirective<T>;\n\n    /**\n     * Row action directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridRowActionDirective, {\n        static: true,\n    })\n    actions?: UiGridRowActionDirective;\n\n    /**\n     * Footer directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridFooterDirective, {\n        static: true,\n    })\n    footer?: UiGridFooterDirective;\n\n    /**\n     * Header directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridHeaderDirective, {\n        static: true,\n    })\n    header?: UiGridHeaderDirective<T>;\n\n    /**\n     * Custom search directive reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridCustomSearchDirective, {\n        static: true,\n    })\n    search?: UiGridCustomSearchDirective;\n\n    /**\n     * Column directive reference list.\n     *\n     * @ignore\n     */\n    @ContentChildren(UiGridColumnDirective)\n    get columns() {\n        return this._columns;\n    }\n    set columns(value: QueryList<UiGridColumnDirective<T>>) {\n        this._columns = value;\n\n        if (this.isScrollable) {\n            const stickyColumns = value.filter(c => c.isSticky);\n            const freeColumns = value.filter(c => !c.isSticky);\n            this._columns.reset([...stickyColumns, ...freeColumns]);\n        }\n    }\n\n    /**\n     * Expanded row template reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridExpandedRowDirective, {\n        static: true,\n    })\n    expandedRow?: UiGridExpandedRowDirective;\n\n    /**\n     * No content custom template reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridNoContentDirective, {\n        static: true,\n    })\n    noContent?: UiGridNoContentDirective;\n\n    /**\n     * Custom loading template reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridLoadingDirective, {\n        static: true,\n    })\n    loadingState?: UiGridLoadingDirective;\n\n    /**\n     * Custom card view template reference.\n     *\n     * @ignore\n     */\n    @ContentChild(UiGridRowCardViewDirective, {\n        static: true,\n    })\n    cardTemplate?: UiGridRowCardViewDirective<T>;\n    /**\n     * Reference to the grid action buttons container\n     *\n     * @ignore\n     */\n    @ViewChild('gridActionButtons')\n    gridActionButtons!: ElementRef;\n\n    /**\n     * Reference to select all available rows checkbox\n     *\n     * @ignore\n     */\n    @ViewChild('selectAvailableRowsCheckbox')\n    selectAvailableRowsCheckbox?: MatCheckbox;\n\n    /**\n     * Toggle filters row display state\n     *\n     */\n    showFilters = false;\n\n    /**\n     * Live announcer manager, used to emit notification via `aria-live`.\n     *\n     */\n    liveAnnouncerManager?: LiveAnnouncerManager<T>;\n\n    /**\n     * Selection manager, used to manage grid selection states.\n     *\n     */\n    selectionManager = new SelectionManager<T>();\n\n    /**\n     * Data manager, used to optimize row rendering.\n     *\n     */\n    dataManager = new DataManager<T>(this._gridOptions);\n\n    /**\n     * Filter manager, used to manage filter state changes.\n     *\n     */\n    filterManager = new FilterManager<T>();\n\n    /**\n     * Visibility manager, used to manage visibility of columns.\n     *\n     */\n    visibilityManager = new VisibilityManger<T>();\n\n    /**\n     * Sort manager, used to manage sort state changes.\n     *\n     */\n    sortManager = new SortManager<T>();\n\n    /**\n     * Resize manager, used to compute resized column states.\n     *\n     */\n    resizeManager!: ResizeManager<T>;\n\n    /**\n     * @ignore\n     */\n    paintTime$: Observable<string>;\n\n    /**\n     * Emits with information whether filters are defined.\n     *\n     */\n    isAnyFilterDefined$ = new BehaviorSubject<boolean>(false);\n\n    /**\n     * Emits with information whether any filter is visible.\n     *\n     */\n    hasAnyFiltersVisible$: Observable<boolean>;\n\n    /**\n     * Emits with information whether the dvider for toggle columns should be displayed\n     *\n     */\n    displayToggleColumnsDivider$?: Observable<boolean>;\n\n    /**\n     * Emits the visible column definitions when their definition changes.\n     *\n     */\n    visible$ = this.visibilityManager.columns$;\n\n    /**\n     * Emits when the visible columns menu has been opened or closed\n     *\n     */\n    visibleColumnsToggle$ = new BehaviorSubject<boolean>(false);\n\n    /**\n     * Returns the scroll size, in order to compensate for the scrollbar.\n     *\n     * @deprecated\n     */\n    scrollCompensationWidth = 0;\n\n    /**\n     * Whether column header is focused.\n     *\n     */\n    focusedColumnHeader = false;\n\n    /**\n     * Whether the grid allows horizontal scroll or not.\n     *\n     */\n    get isScrollable() {\n        return this.resizeStrategy === ResizeStrategy.ScrollableGrid && !this.virtualScroll;\n    }\n\n    /**\n     * The width of selectable column.\n     *\n     */\n    selectionColumnWidth = 50;\n\n    /**\n     * Visibile columns emissions partitioned in sticky and free columns.\n     *\n     */\n    partitionedVisibleColumns$ = this.visible$.pipe(\n        map(columns => {\n            const free = columns.filter(c => !c.isSticky || !this.isScrollable);\n            const sticky = columns.filter(c => c.isSticky && this.isScrollable);\n            return ({\n                stickyColumns: free.length ? sticky : [],\n                freeColumns: free.length ? free : sticky,\n            });\n        }),\n    );\n\n    /**\n     * Emits current max selected filter values count\n     *\n     */\n    maxSelectedFilterValues$ = new BehaviorSubject(Infinity);\n\n    /**\n     * Emits the id of the entity that should be highlighted.\n     *\n     */\n    highlightedEntityId$ = new ReplaySubject<string | number>(1);\n\n    /**\n     * @internal\n     * @ignore\n     */\n    scrollCompensationWidth$ = this.dataManager.data$.pipe(\n        map(data => data.length),\n        distinctUntilChanged(),\n        observeOn(animationFrameScheduler),\n        debounceTime(0),\n        map(() => this._ref.nativeElement.querySelector('.ui-grid-viewport')),\n        map(view => view ? view.offsetWidth - view.clientWidth : 0),\n        // eslint-disable-next-line import/no-deprecated\n        tap(compensationWidth => this.scrollCompensationWidth = compensationWidth),\n    );\n\n    hasSelection$ = this.selectionManager.hasValue$.pipe(\n        tap(hasSelection => {\n            if (hasSelection && !!this.header?.actionButtons?.length) {\n                this._announceGridHeaderActions();\n            }\n        }),\n        share(),\n    );\n\n    renderedColumns$ = this.visible$.pipe(\n        map(columns => {\n            const firstIndex = columns.findIndex(c => c.primary);\n            const rowHeaderIndex = firstIndex > -1 ? firstIndex : 0;\n\n            const mappedColumns = columns.map((directive, index) => ({\n                directive,\n                role: index === rowHeaderIndex ? 'rowheader' : 'gridcell',\n            }));\n\n            const free = mappedColumns.filter(c => !c.directive.isSticky || !this.isScrollable);\n            const sticky = mappedColumns.filter(c => c.directive.isSticky && this.isScrollable);\n            return ({\n                stickyColumns: free.length ? sticky : [],\n                freeColumns: free.length ? free : sticky,\n            });\n        }),\n    );\n\n    stickyColumnsSum$ = this.visible$.pipe(\n        switchMap(columns => combineLatest(columns.filter(c => c.isSticky).map(c => c.widthPx$)).pipe(\n            map(widths => widths.reduce((acc, curr) => acc + curr, 0)),\n        )),\n        shareReplay(1),\n    );\n\n    shouldDisplayContainerShadow$ = defer(() => merge(\n        fromEvent(this._ref.nativeElement.querySelector('.ui-grid-table-container')!, 'scroll').pipe(\n            throttleTime(50, undefined, { trailing: true }),\n            map((event: any) => {\n                const { scrollWidth, scrollLeft, clientWidth } = event.target;\n                return Math.abs(scrollWidth - clientWidth - scrollLeft) >= SCROLL_LIMIT_FOR_DISPLAYING_SHADOW;\n            }),\n        ),\n        this.isOverflown$,\n    )).pipe(\n        distinctUntilChanged(),\n        shareReplay(),\n    );\n\n    areFilersCollapsed$: Observable<boolean>;\n\n    /**\n     * Determines if the multi-page selection row should be displayed.\n     *\n     */\n    get showMultiPageSelectionInfo() {\n        return this.multiPageSelect &&\n            !this.dataManager.pristine &&\n            (\n                this.dataManager.length ||\n                this.selectionManager.selected.length\n            );\n    }\n\n    deficit$ = new BehaviorSubject(0);\n    containerWidth = 0;\n\n    minWidth$ = defer(() => merge(\n        this.visible$,\n        this.resizeManager.widthChange$,\n        this.resizeManager.resize$.pipe(\n            tap(() => queueMicrotask(() => this._cd.detectChanges())),\n        ),\n    ).pipe(\n        map(() => this._computeMinWidth()),\n        tap(minWidth => {\n            this.containerWidth = this._ref.nativeElement.getBoundingClientRect().width;\n            this.deficit$.next(Math.round(Math.max(0, this.containerWidth - minWidth)));\n        }),\n        tap(() => { this._cd.detectChanges(); }),\n    )).pipe(\n        shareReplay(1),\n    );\n\n    isOverflown$ = iif(() => this.isScrollable, this.minWidth$.pipe(\n        map(minWidth => this._isOverflown(minWidth)),\n        distinctUntilChanged(),\n        shareReplay(1),\n    ), of(false));\n\n    tableOverflowStyle$ = this.isOverflown$.pipe(\n        map(value => value ? 'visible' : 'hidden'),\n    );\n\n    disableFilterSelection$ = defer(() => this.filterManager.activeFilterValueCount$.pipe(\n        switchMap(count => this.maxSelectedFilterValues$\n            .pipe(\n                map(max => count >= max),\n        )),\n        distinctUntilChanged(),\n    )).pipe(shareReplay(1));\n\n    readonly Infinity = Infinity;\n    protected _destroyed$ = new Subject<void>();\n    protected _columnChanges$: Observable<SimpleChanges>;\n\n    private _fetchStrategy!: 'eager' | 'onOpen';\n    private _collapseFiltersCount$!: BehaviorSubject<number>;\n    private _resizeStrategy = ResizeStrategy.ImmediateNeighbourHalt;\n    private _performanceMonitor: PerformanceMonitor;\n    private _configure$ = new Subject<void>();\n    private _isShiftPressed = false;\n    private _lastCheckboxIdx = 0;\n    private _resizeSubscription$: null | Subscription = null;\n    private _containerWidthChangeSubscription$: null | Subscription = null;\n    private _expandedEntries: T[] = [];\n    private _columns!: QueryList<UiGridColumnDirective<T>>;\n    private _virtualScroll = false;\n\n    /**\n     * @ignore\n     */\n    constructor(\n        @Optional()\n        public intl: UiGridIntl,\n        protected _ref: ElementRef,\n        protected _cd: ChangeDetectorRef,\n        private _zone: NgZone,\n        private _queuedAnnouncer: QueuedAnnouncer,\n        @Inject(UI_GRID_RESIZE_STRATEGY_STREAM)\n        private _resizeStrategyStream$: BehaviorSubject<ResizeStrategy>,\n        @Inject(UI_GRID_OPTIONS)\n        @Optional()\n        private _gridOptions?: GridOptions<T>,\n    ) {\n        super();\n\n        this.disableSelectionByEntry = () => null;\n        this._fetchStrategy = _gridOptions?.fetchStrategy ?? 'onOpen';\n        this.rowSize = _gridOptions?.rowSize ?? -1;\n        this.hasHighDensity = this._gridOptions?.hasHighDensity ?? false;\n        this._collapseFiltersCount$ = new BehaviorSubject(\n            _gridOptions?.collapseFiltersCount ?? (_gridOptions?.collapsibleFilters === true ? 0 : Number.POSITIVE_INFINITY),\n        );\n        this.selectablePageIndex = _gridOptions?.selectablePageIndex ?? false;\n\n        this.isProjected = this._ref.nativeElement.classList.contains('ui-grid-state-responsive');\n\n        this.intl = intl || new UiGridIntl();\n\n        this._columnChanges$ =\n            this.rendered.pipe(\n                switchMap(() => merge(\n                    ...this.columns.map(column =>\n                        column.change$,\n                    )),\n                ),\n                debounceTime(10),\n                tap(() => this.isResizing && this.resizeManager.stop()),\n            );\n\n        const visibleFilterCount$ = this.rendered.pipe(\n            switchMap(() => this.columns.changes),\n            startWith('Initial emission'),\n            switchMap(() =>\n                combineLatest(this.columns.map((column: UiGridColumnDirective<T>) =>\n                    column.dropdown?.visible$ ?? column.searchableDropdown?.visible$ ?? of(false),\n                )),\n            ),\n            map(areVisible => areVisible.filter(visible => visible).length),\n            distinctUntilChanged(),\n            shareReplay(),\n        );\n\n        this.hasAnyFiltersVisible$ = visibleFilterCount$.pipe(\n            map(Boolean),\n            distinctUntilChanged(),\n        );\n\n        this.areFilersCollapsed$ = combineLatest([\n            visibleFilterCount$,\n            this._collapseFiltersCount$,\n        ]).pipe(\n            map(([visible, minCollapse]) => visible > minCollapse),\n            distinctUntilChanged(),\n        );\n\n        const sort$ = this.sortManager\n            .sort$\n            .pipe(\n                tap(ev => this.sortChange.emit(ev)),\n            );\n\n        const inputChanges$ = merge(\n            this.intl.changes,\n            this._configure$,\n            this._columnChanges$,\n        ).pipe(\n            map(() => this.columns.toArray()),\n            tap(columns => this.filterManager.columns = columns),\n            tap(columns => this.sortManager.columns = columns),\n            tap(columns => this.visibilityManager.columns = columns),\n            tap(columns => this.columns$.next(columns)),\n            tap(columns => this.isAnyFilterDefined$.next(\n                columns.some(c => !!c.dropdown || !!c.searchableDropdown),\n            )),\n        );\n\n        const data$ = this.dataManager.data$.pipe(\n            tap(_ => this._lastCheckboxIdx = 0),\n        );\n\n        const selection$ = this.selectionManager.changed$.pipe(\n            tap(_ => this._cd.markForCheck()),\n        );\n\n        merge(\n            sort$,\n            inputChanges$,\n            data$,\n            selection$,\n        ).pipe(\n            takeUntil(this._destroyed$),\n        ).subscribe();\n\n        this._initResizeManager();\n        this.resizeStrategy = _gridOptions?.resizeStrategy ?? ResizeStrategy.ImmediateNeighbourHalt;\n        this._performanceMonitor = new PerformanceMonitor(_ref.nativeElement);\n        this.paintTime$ = this._performanceMonitor.paintTime$;\n\n        this.selectionManager.hasValue$.pipe(\n            filter(hasValue => !hasValue && this.selectAvailableRowsCheckbox?.checked === true),\n            takeUntil(this._destroyed$),\n        ).subscribe(() => this.selectAvailableRowsCheckbox!.checked = false);\n\n        this._initDisplayToggleColumnsDivider();\n    }\n\n    /**\n     * Clear search term, filters and sorting and emits true after.\n     */\n    @Input()\n    reset: () => Observable<boolean> = () => {\n        if (this.header) {\n            this.header.searchValue = '';\n        }\n        this.sortManager.clear();\n        this.filterManager.clear();\n        return of(true);\n    };\n\n    ngOnInit(): void {\n        this._setInitialRowSize();\n    }\n\n    /**\n     * @ignore\n     */\n    ngAfterContentInit() {\n        this.selectionManager.disableSelectionByEntry = this.disableSelectionByEntry;\n\n        this.liveAnnouncerManager = new LiveAnnouncerManager(\n            msg => this._queuedAnnouncer.enqueue(msg),\n            this.intl,\n            this.dataManager.data$,\n            this.sortManager.sort$.pipe(\n                filter(({ userEvent }) => !!userEvent),\n            ),\n            this.refresh,\n            this.footer?.pageChange,\n        );\n\n        this._configure$.next();\n\n        this._zone.onStable.pipe(\n            take(1),\n        ).subscribe(() => {\n            // ensure everything is painted once initial rendering is done\n            // a lot of templates loaded lazily, this is required\n            // to ensure everything is drawn once the grid is initialized\n            this._cd.markForCheck();\n\n            this.rendered.next();\n        });\n\n        this.columns.changes\n            .pipe(\n                takeUntil(this._destroyed$),\n            ).subscribe(\n                () => this._configure$.next(),\n            );\n\n        this.resizeManager.resizeEmissions$.pipe(\n            takeUntil(this._destroyed$),\n        ).subscribe(resizeEmissions => this.resizeEmissions.next(resizeEmissions));\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnChanges(changes: SimpleChanges) {\n        const selectableChange = changes.selectable;\n        if (\n            selectableChange &&\n            !selectableChange.firstChange &&\n            selectableChange.previousValue !== selectableChange.currentValue\n        ) {\n            this.selectionManager.clear();\n            this._configure$.next();\n        }\n\n        const dataChange = changes.data;\n        if (\n            dataChange &&\n            !dataChange.firstChange &&\n            !this.multiPageSelect\n        ) {\n            this._performanceMonitor.reset();\n            this.selectionManager.clear();\n        }\n    }\n\n    /**\n     * @ignore\n     */\n    ngOnDestroy() {\n        this.sortChange.complete();\n        this.rendered.complete();\n        this.columns$.complete();\n        this.isAnyFilterDefined$.complete();\n\n        this.dataManager.destroy();\n        this.resizeManager.destroy();\n        this.sortManager.destroy();\n        this.selectionManager.destroy();\n        this.filterManager.destroy();\n        this.visibilityManager.destroy();\n\n        if (this.liveAnnouncerManager) {\n            this.liveAnnouncerManager.destroy();\n        }\n\n        this._performanceMonitor.destroy();\n\n        this._destroyed$.next();\n        this._destroyed$.complete();\n        this._configure$.complete();\n    }\n\n    /**\n     * Marks if the `Shift` key is pressed.\n     */\n    @HostListener('document:keydown', ['$event'])\n    handleKeyDown(event: KeyboardEvent): void {\n        this._isShiftPressed = event.shiftKey;\n    }\n\n    @HostListener('document:keyup', ['$event'])\n    handleKeyUp(event: KeyboardEvent): void {\n        this._isShiftPressed = event.shiftKey;\n    }\n\n    /**\n     * Handles row selection, and reacts if the `Shift` key is pressed.\n     *\n     * @param idx The clicked row index.\n     * @param entry The entry associated to the selected row.\n     */\n    handleSelection(idx: number, entry: T) {\n        if (!this._isShiftPressed) {\n            this._lastCheckboxIdx = idx;\n            this.selectionManager.toggle(entry);\n            return;\n        }\n\n        const min = Math.min(this._lastCheckboxIdx, idx);\n        const max = Math.max(idx, this._lastCheckboxIdx);\n\n        const rowsForSelection = range(min, max + 1)\n            .map(this.dataManager.get);\n        const rowsForDeselection = this.dataManager.data$.getValue()\n            .filter(row => !rowsForSelection.find(rowForSelection => rowForSelection.id === row.id));\n\n        /**\n         * To be consistent with the browser, if we click on a row\n         * that was already selected, we unselect it, sync with DOM (detectChanges),\n         * then we select it again (it's included in rowsForSelection).\n         */\n        if (this.selectionManager.isSelected(entry)) {\n            this.selectionManager.deselect(entry);\n            this._cd.detectChanges();\n        }\n\n        this.selectionManager.select(...rowsForSelection.filter(row => !this.selectionManager.isSelected(row)));\n        this.selectionManager.deselect(...rowsForDeselection.filter(row => this.selectionManager.isSelected(row)));\n\n        this._cd.detectChanges();\n    }\n\n    /**\n     * Toggles the row selection state.\n     *\n     */\n    toggle(ev: MatCheckboxChange) {\n        if (ev.checked) {\n            this.dataManager.forEach(row => this.selectionManager.select(row!));\n        } else {\n            this._lastCheckboxIdx = 0;\n            this.dataManager.forEach(row => this.selectionManager.deselect(row!));\n        }\n    }\n\n    /**\n     * Determines the `checkbox` `matToolTip`.\n     *\n     * @param [row] The row for which the label is computed.\n     */\n    checkboxTooltip(row?: T): string {\n        if (!row) {\n            return this.intl.checkboxTooltip(this.isEveryVisibleRowChecked);\n        }\n        if (this.singleSelectable && this.selectionManager.isSelected(row)) { return this.intl.radioButtonSelectedRowMessage; }\n\n        return this.intl.checkboxTooltip(this.selectionManager.isSelected(row), this.dataManager.indexOf(row));\n    }\n\n    /**\n     * Determines the `checkbox` aria-label`.\n     * **DEPRECATED**\n     *\n     * @param [row] The row for which the label is computed.\n     */\n    checkboxLabel(row?: T): string {\n        if (!row) {\n            return `${this.isEveryVisibleRowChecked ? 'select' : 'deselect'} all`;\n        }\n        return `${this.selectionManager.isSelected(row) ? 'deselect' : 'select'} row ${this.dataManager.indexOf(row)}`;\n    }\n\n    focusRowHeader() {\n        this.gridActionButtons?.nativeElement.querySelector(FOCUSABLE_ELEMENTS_QUERY)?.focus();\n    }\n\n    clearCustomFilter() {\n        this.removeCustomFilter.emit();\n        this.filterManager.clearCustomFilters();\n    }\n\n    isRowExpanded(rowId?: IGridDataEntry['id']) {\n        if (rowId == null) {\n            return false;\n        }\n\n        return this._expandedEntries.some(el => el.id === rowId);\n    }\n\n    onRowClick(event: Event, row: T) {\n        if (this._isNonInteractiveElementClick(event)) {\n            this.highlightedEntityId$.next(row.id);\n            this._selectRowOnClick(row);\n        }\n\n        this.rowClick.emit({\n            event,\n            row,\n        });\n    }\n\n    checkIndeterminateState(indeterminateState: boolean) {\n        // If the grid has disabled rows the indeterminate can be set to false and still not have all the rows selected,\n        // in that case we set the indeterminate to true\n        if (\n            !indeterminateState &&\n            this.selectAvailableRowsCheckbox &&\n            this.hasValueOnVisiblePage &&\n            !this.isEveryVisibleRowChecked\n        ) {\n            this.selectAvailableRowsCheckbox.indeterminate = true;\n        }\n    }\n\n    searchableDropdownValue(searchableDropdown: UiGridSearchFilterDirective<T>): ISuggestValue[] {\n        if (searchableDropdown.value) {\n            if (searchableDropdown.multiple) {\n                return searchableDropdown.value as ISuggestValue[];\n            }\n            return [searchableDropdown.value as ISuggestValue];\n        }\n        return [];\n    }\n\n    getColumnName(column: UiGridColumnDirective<T>, prefix = 'ui-grid-dropdown-filter') {\n        return prefix + '-' + ((column.property as string) ?? 'na');\n    }\n\n    isFilterApplied(column: UiGridColumnDirective<T>) {\n        const searchableHasValue = column.searchableDropdown?.value != null &&\n            (!column.searchableDropdown.multiple || (column.searchableDropdown.value as []).length > 0);\n\n        const dropdownHasValue = column.dropdown?.value != null && column.dropdown.hasValue &&\n            (isArray(column.dropdown.value) || column.dropdown!.value.value !== column.dropdown.emptyStateValue);\n\n        return dropdownHasValue || searchableHasValue;\n    }\n\n    triggerColumnHeaderTooltip(event: FocusOrigin, tooltip: MatTooltip) {\n        if (event === 'keyboard') {\n            this.focusedColumnHeader = true;\n            tooltip.show();\n        }\n    }\n\n    hideColumnHeaderTooltip(tooltip: MatTooltip) {\n        tooltip.hide();\n        this.focusedColumnHeader = false;\n    }\n\n    rowSelected(row: T) {\n        this.selectionManager.clear();\n        this.selectionManager.select(row);\n    }\n\n    private _announceGridHeaderActions() {\n        this._queuedAnnouncer.enqueue(this.intl.gridHeaderActionsNotice);\n    }\n\n    private _initResizeManager() {\n        this._resizeSubscription$?.unsubscribe();\n        this._containerWidthChangeSubscription$?.unsubscribe();\n        this.resizeManager = ResizeManagerFactory(this._resizeStrategy, this);\n        this._resizeSubscription$ = this.resizeManager.resizeEnd$.subscribe((resizeInfo) => {\n            if (resizeInfo) {\n                const gridHeaderCellElement = resizeInfo.element;\n                gridHeaderCellElement.focus();\n            }\n\n            this.resizeEnd.emit();\n        });\n\n        if (this.isScrollable) {\n            this._containerWidthChangeSubscription$ = this.resizeManager.widthChange$.pipe(\n                distinctUntilChanged(),\n                tap(width => {\n                    (this.resizeManager as ScrollableGridResizer<T>).limitStickyWidthCoverage(width);\n                }),\n                takeUntil(this._destroyed$),\n            ).subscribe();\n        }\n    }\n\n    private _initDisplayToggleColumnsDivider() {\n        this.displayToggleColumnsDivider$ = combineLatest([this.hasAnyFiltersVisible$, this.filterManager.hasCustomFilter$]).pipe(\n            map(([hasAnyFilterVisible, hasCustomFilters]) => hasAnyFilterVisible || hasCustomFilters),\n        );\n    }\n\n    private _computeMinWidth(columns?: UiGridColumnDirective<T>[]) {\n        const cols = (columns ?? this.columns?.toArray() ?? []).filter(c => c.visible);\n\n        const widthsPxSum = cols.reduce((acc, column) => {\n            acc += column.widthPx$.value;\n            return acc;\n        }, 0);\n\n        return widthsPxSum + this._otherActionsWidth;\n    }\n\n    private get _otherActionsWidth() {\n        return (this.selectable || this.singleSelectable\n            ? this.selectionColumnWidth\n            : 0) + REFRESH_WIDTH;\n    }\n\n    private _isOverflown(minWidth: number) {\n        const gridWidth = this._ref.nativeElement.getBoundingClientRect().width;\n        return minWidth > gridWidth;\n    }\n\n    private _isNonInteractiveElementClick(event: Event) {\n        return (event.target instanceof Element) &&\n            !EXCLUDED_ROW_SELECTION_ELEMENTS.find(el => (event.target as Element).closest(el));\n    }\n\n    private _selectRowOnClick(row: T) {\n        if (this.shouldSelectOnRowClick) {\n            if (this.singleSelectable) {\n                this.rowSelected(row);\n            } else {\n                this.selectionManager.toggle(row);\n            }\n        }\n    }\n\n    private _setInitialRowSize() {\n        if (this.rowSize === -1) {\n            this.rowSize = this.hasHighDensity ?\n                DEFAULT_VIRTUAL_SCROLL_HIGH_DENSITY_ITEM_SIZE :\n                DEFAULT_VIRTUAL_SCROLL_ITEM_SIZE;\n        }\n    }\n}\n","<ng-container *ngIf=\"showPaintTime && (paintTime$ | async) as paintTime\">\n    <div class=\"ui-grid-debug-information\">\n        Painted {{ dataManager.length }} rows in {{ paintTime }}ms\n    </div>\n</ng-container>\n<div *ngIf=\"toggleColumns ||\n                header?.mainButtons?.length ||\n                header?.actionButtons?.length ||\n                header?.inlineButtons?.length ||\n                header?.search ||\n                (isAnyFilterDefined$ | async)\"\n     class=\"ui-grid-filter-container\">\n    <div class=\"ui-grid-filter-container-lhs-group\">\n        <ng-container *ngIf=\"swapFilterContainers; else gridFilterContainerLeft\">\n            <ng-container *ngTemplateOutlet=\"gridFilterContainerRight\"></ng-container>\n        </ng-container>\n    </div>\n\n    <div class=\"ui-grid-filter-container-rhs-group\"\n         *ngLet=\"(hasSelection$ | async) as hasSelections\">\n         <ng-container *ngIf=\"swapFilterContainers; else gridFilterContainerRight\">\n            <ng-container *ngTemplateOutlet=\"gridFilterContainerLeft\"></ng-container>\n        </ng-container>\n    </div>\n</div>\n\n<ng-container *ngIf=\"multiPageSelect then multiPageSelectionRow\">\n</ng-container>\n\n<div (keydown.shift.alt.arrowup)=\"focusRowHeader()\"\n     class=\"ui-grid-container\">\n\n    <div [class.scrollable]=\"isScrollable && !dataManager.pristine\"\n         class=\"ui-grid-table-container\">\n        <div [class.ui-grid-table-refreshable]=\"refreshable\"\n             [style.minWidth.px]=\"isScrollable ? (minWidth$ | async) : undefined\"\n             [style.overflow]=\"isScrollable ? (tableOverflowStyle$ | async) : 'visible'\"\n             class=\"ui-grid-table\"\n             role=\"grid\">\n            <mat-progress-bar *ngIf=\"loading && !loadingState\"\n                              mode=\"query\"\n                              class=\"ui-grid-loader\">\n            </mat-progress-bar>\n            <div class=\"ui-grid-header\">\n                <div *ngIf=\"showHeaderRow\"\n                     class=\"ui-grid-header-row\"\n                     role=\"row\">\n                    <div *ngIf=\"selectable && !singleSelectable\"\n                         [class.ui-grid-sticky-element]=\"isScrollable\"\n                         class=\"ui-grid-header-cell ui-grid-checkbox-cell ui-grid-feature-cell\"\n                         role=\"columnheader\">\n                        <mat-checkbox #selectAvailableRowsCheckbox\n                                      (change)=\"$event && toggle($event)\"\n                                      (indeterminateChange)=\"checkIndeterminateState($event)\"\n                                      [disabled]=\"!dataManager.length\"\n                                      [checked]=\"isEveryVisibleRowChecked\"\n                                      [indeterminate]=\"hasValueOnVisiblePage && !isEveryVisibleRowChecked\"\n                                      [matTooltip]=\"checkboxTooltip()\"\n                                      [aria-label]=\"checkboxTooltip()\"\n                                      tabindex=\"0\">\n                        </mat-checkbox>\n                    </div>\n\n                    <div *ngIf=\"singleSelectable\"\n                         class=\"ui-grid-header-cell ui-grid-spacer-cell ui-grid-feature-cell\">\n                    </div>\n\n                    <ng-container *ngIf=\"multiPageSelect then multiPageSelectionProjectedHeaderCell\">\n                    </ng-container>\n\n                    <ng-container *ngLet=\"partitionedVisibleColumns$ | async as columns\">\n                        <div *ngIf=\"columns.stickyColumns.length\"\n                             [style.left.px]=\"(selectable || singleSelectable) ? selectionColumnWidth : 0\"\n                             [class.sticky-container-border-right]=\"(isOverflown$ | async) && columns.freeColumns.length\"\n                             [style.minWidth.px]=\"stickyColumnsSum$ | async\"\n                             class=\"sticky-columns-header-container\">\n                            <ng-container *ngFor=\"let column of columns.stickyColumns; let last = last; let columnIndex = index\">\n                                <div *ngLet=\"(column.widthPx$ | async) as widthPx\"\n                                     [class.ui-grid-header-cell-sortable]=\"column.sortable\"\n                                     [class.ui-grid-resizeable]=\"column.resizeable\"\n                                     [class.ui-grid-state-resizing]=\"column === resizeManager.current?.column\"\n                                     [attr.aria-sort]=\"column.ariaSort\"\n                                     [attr.data-property]=\"column.property\"\n                                     [attr.data-identifier]=\"column.identifier\"\n                                     [style.width]=\"widthPx ? (widthPx + 'px') : (column.width + '%')\"\n                                     [style.minWidth.px]=\"widthPx\"\n                                     (cdkFocusChange)=\"triggerColumnHeaderTooltip($event, columnTooltip)\"\n                                     (focusout)=\"hideColumnHeaderTooltip(columnTooltip)\"\n                                     (keyup.enter)=\"sortManager.changeSort(column)\"\n                                     (keyup.space)=\"sortManager.changeSort(column)\"\n                                     (keydown.ArrowLeft)=\"(!last || isScrollable) && columns.freeColumns.length && resizeManager.startKeyboardResize('left', column, columnIndex); $event.preventDefault()\"\n                                     (keydown.ArrowRight)=\"(!last || isScrollable) && columns.freeColumns.length && resizeManager.startKeyboardResize('right', column, columnIndex); $event.preventDefault()\"\n                                     cdkMonitorElementFocus\n                                     class=\"ui-grid-header-cell ui-grid-sticky-element\"\n                                     role=\"columnheader\"\n                                     tabindex=\"0\">\n                                    <div (click)=\"sortManager.changeSort(column)\"\n                                         class=\"ui-grid-header-title\">\n                                        <p #columnTooltip=\"matTooltip\"\n                                           [class.ui-grid-header-title-filtered]=\"isFilterApplied(column)\"\n                                           [matTooltip]=\"column.title + (focusedColumnHeader ? ('\\n' + column.description) : '')\"\n                                           [matTooltipDisabled]=\"resizeManager.isResizing\"\n                                           [attr.aria-label]=\"column.title + (column.description ? ('. ' + column.description) : '') + (column.sortable && intl.sortableMessage ? '. ' + intl.sortableMessage : '')\"\n                                           matTooltipClass=\"preserve-whitespace\"\n                                           class=\"ui-grid-header-text\">\n                                            {{ column.title }}\n                                        </p>\n\n                                        <mat-icon *ngIf=\"column.description\"\n                                                  [matTooltip]=\"column.description\"\n                                                  class=\"ui-grid-info-icon material-icons-outlined\">info</mat-icon>\n\n                                        <div *ngIf=\"column.sortable\"\n                                             [class.ui-grid-sort-indicator-asc]=\"column.sort === 'asc'\"\n                                             [class.ui-grid-sort-indicator-desc]=\"column.sort === 'desc'\"\n                                             class=\"ui-grid-sort-indicator\">\n                                            <mat-icon class=\"ui-grid-sort-icon\">\n                                                <svg xmlns=\"http://www.w3.org/2000/svg\"\n                                                     viewBox=\"0 0 24 24\">\n                                                    <path [attr.transform]=\"column.sort === '' ? 'translate(0 -3)': ''\"\n                                                          class=\"path-asc\"\n                                                          d=\"M12 11.8l2.5 2.5 1.1-1.1L12 9.7l-3.6 3.5 1.1 1.1z\" />\n                                                    <path [attr.transform]=\"column.sort === '' ? 'translate(0 3)': ''\"\n                                                          class=\"path-desc\"\n                                                          d=\"M12 12.2L9.5 9.7l-1.1 1.1 3.6 3.5 3.6-3.5-1.1-1.1z\" />\n                                                </svg>\n                                            </mat-icon>\n                                        </div>\n                                    </div>\n\n                                    <div *ngIf=\"!isProjected && column.resizeable && !useCardView && (!last || columns.freeColumns.length > 0)\"\n                                         (mousedown)=\"resizeManager.startResize($event, column, columnIndex)\"\n                                         [class.last-sticky-handle-container]=\"last && columns.freeColumns.length > 0\"\n                                         class=\"ui-grid-resize-handle-container ui-grid-sticky-element\">\n\n                                        <div [class.ui-grid-state-resizing]=\"column === resizeManager.current?.column\"\n                                             class=\"ui-grid-resize-handle\">\n                                        </div>\n                                    </div>\n                                </div>\n                            </ng-container>\n                        </div>\n\n                        <ng-container\n                                      *ngFor=\"let column of columns.freeColumns; let last = last; let columnIndex = index\">\n                            <div *ngLet=\"(+(column.widthPx$ | async)! + (last ? (+(deficit$ | async)!) : 0)) as widthPx\"\n                                 [class.ui-grid-header-cell-sortable]=\"column.sortable\"\n                                 [class.ui-grid-resizeable]=\"column.resizeable\"\n                                 [class.ui-grid-state-resizing]=\"column === resizeManager.current?.column\"\n                                 [attr.aria-sort]=\"column.ariaSort\"\n                                 [attr.data-property]=\"column.property\"\n                                 [attr.data-identifier]=\"column.identifier\"\n                                 [style.width]=\"widthPx ? (widthPx + 'px') : (column.width + '%')\"\n                                 [style.minWidth.px]=\"widthPx\"\n                                 (cdkFocusChange)=\"triggerColumnHeaderTooltip($event, columnTooltip)\"\n                                 (focusout)=\"hideColumnHeaderTooltip(columnTooltip)\"\n                                 (keyup.enter)=\"sortManager.changeSort(column)\"\n                                 (keyup.space)=\"sortManager.changeSort(column)\"\n                                 (keydown.ArrowLeft)=\"(!last || isScrollable) && resizeManager.startKeyboardResize('left', column, columnIndex); $event.preventDefault()\"\n                                 (keydown.ArrowRight)=\"(!last || isScrollable) && resizeManager.startKeyboardResize('right', column, columnIndex); $event.preventDefault()\"\n                                 cdkMonitorElementFocus\n                                 class=\"ui-grid-header-cell\"\n                                 role=\"columnheader\"\n                                 tabindex=\"0\">\n                                <div (click)=\"sortManager.changeSort(column)\"\n                                     class=\"ui-grid-header-title\">\n                                    <p #columnTooltip=\"matTooltip\"\n                                       [class.ui-grid-header-title-filtered]=\"isFilterApplied(column)\"\n                                       [matTooltip]=\"column.title + (focusedColumnHeader ? ('\\n' + column.description) : '')\"\n                                       [matTooltipDisabled]=\"resizeManager.isResizing\"\n                                       [attr.aria-label]=\"column.title + (column.description ? ('. ' + column.description) : '') + (column.sortable && intl.sortableMessage ? '. ' + intl.sortableMessage : '')\"\n                                       matTooltipClass=\"preserve-whitespace\"\n                                       class=\"ui-grid-header-text\">\n                                        {{ column.title }}\n                                    </p>\n\n                                    <mat-icon *ngIf=\"column.description\"\n                                              [matTooltip]=\"column.description\"\n                                              class=\"ui-grid-info-icon material-icons-outlined\">info</mat-icon>\n\n                                    <div *ngIf=\"column.sortable\"\n                                         [class.ui-grid-sort-indicator-asc]=\"column.sort === 'asc'\"\n                                         [class.ui-grid-sort-indicator-desc]=\"column.sort === 'desc'\"\n                                         class=\"ui-grid-sort-indicator\">\n                                        <mat-icon class=\"ui-grid-sort-icon\">\n                                            <svg xmlns=\"http://www.w3.org/2000/svg\"\n                                                 viewBox=\"0 0 24 24\">\n                                                <path [attr.transform]=\"column.sort === '' ? 'translate(0 -3)': ''\"\n                                                      class=\"path-asc\"\n                                                      d=\"M12 11.8l2.5 2.5 1.1-1.1L12 9.7l-3.6 3.5 1.1 1.1z\" />\n                                                <path [attr.transform]=\"column.sort === '' ? 'translate(0 3)': ''\"\n                                                      class=\"path-desc\"\n                                                      d=\"M12 12.2L9.5 9.7l-1.1 1.1 3.6 3.5 3.6-3.5-1.1-1.1z\" />\n                                            </svg>\n                                        </mat-icon>\n                                    </div>\n                                </div>\n\n                                <div *ngIf=\"!isProjected && column.resizeable && !useCardView && (!last || isScrollable)\"\n                                     (mousedown)=\"resizeManager.startResize($event, column, columnIndex)\"\n                                     class=\"ui-grid-resize-handle-container\">\n                                    <div [class.ui-grid-state-resizing]=\"column === resizeManager.current?.column\"\n                                         class=\"ui-grid-resize-handle\">\n                                    </div>\n                                </div>\n                            </div>\n                        </ng-container>\n                    </ng-container>\n                    <div *ngIf=\"virtualScroll\"\n                         [style.marginLeft.px]=\"scrollCompensationWidth$ | async\"\n                         class=\"ui-grid-header-cell ui-grid-scroll-size-compensation-cell ui-grid-feature-cell\">\n                    </div>\n                    <div *ngIf=\"refreshable\"\n                         [class.refresh-shadow]=\"shouldDisplayContainerShadow$ | async\"\n                         class=\"ui-grid-header-cell ui-grid-refresh-cell ui-grid-feature-cell\"\n                         role=\"columnheader\">\n                        <button [matTooltip]=\"intl.refreshTooltip\"\n                                [matTooltipDisabled]=\"resizeManager.isResizing\"\n                                [disabled]=\"disabled\"\n                                (click)=\"refresh.emit()\"\n                                mat-icon-button\n                                type=\"button\"\n                                class=\"grid-refresh-button\">\n                            <mat-icon>refresh</mat-icon>\n                        </button>\n                    </div>\n                    <div *ngIf=\"!!actions\"\n                         class=\"ui-grid-header-cell ui-grid-action-cell ui-grid-feature-cell\">\n                    </div>\n                </div>\n            </div>\n\n            <ng-container *ngIf=\"dataManager?.length; else noData\">\n                <ng-container *ngIf=\"virtualScroll\">\n                    <cdk-virtual-scroll-viewport [total]=\"dataManager.length\"\n                                                 [itemSize]=\"rowSize\"\n                                                 uiVirtualScrollViewportResize\n                                                 class=\"ui-grid-viewport\">\n                        <ng-container *ngIf=\"useCardView\">\n                            <div class=\"ui-grid-cards-container\">\n                                <ng-container *cdkVirtualFor=\"let row of dataManager.data$ | async;\n                                    let last = last;\n                                    let index = index;\n                                    trackBy: dataManager.hashTrack\">\n                                    <ng-container *ngTemplateOutlet=\"rowCardTemplate; context: {\n                                            data: row,\n                                            index: index,\n                                            expanded: expandedEntries,\n                                            last: last\n                                        }\"></ng-container>\n                                </ng-container>\n                            </div>\n                        </ng-container>\n                        <ng-container *ngIf=\"!useCardView\">\n                            <ng-container *cdkVirtualFor=\"let row of dataManager.data$ | async;\n                                                        let last = last;\n                                                        let index = index;\n                                                        trackBy: dataManager.hashTrack\">\n                                <ng-container *ngTemplateOutlet=\"rowTemplate; context: {\n                                        data: row,\n                                        index: index,\n                                        expanded: expandedEntries,\n                                        last: last,\n                                        highlightedEntityId: (highlightedEntityId$ | async)\n                                    }\">\n                                </ng-container>\n                            </ng-container>\n                        </ng-container>\n                    </cdk-virtual-scroll-viewport>\n                </ng-container>\n\n                <ng-container *ngIf=\"!virtualScroll\">\n                    <ng-container *ngIf=\"useCardView\">\n                        <div class=\"ui-grid-cards-container\">\n                            <ng-container *ngFor=\"let row of dataManager.data$ | async;\n                                                let index = index;\n                                                let last = last;\n                                                trackBy: dataManager.hashTrack\">\n                                <ng-container *ngTemplateOutlet=\"rowCardTemplate; context: {\n                                            data: row,\n                                            index: index,\n                                            expanded: expandedEntries,\n                                            last: last\n                                        }\">\n                                </ng-container>\n                            </ng-container>\n                        </div>\n                    </ng-container>\n                    <ng-container *ngIf=\"!useCardView\">\n                        <ng-container *ngFor=\"let row of dataManager.data$ | async;\n                                            let index = index;\n                                            let last = last;\n                                            trackBy: dataManager.hashTrack\">\n                            <ng-container *ngTemplateOutlet=\"rowTemplate; context: {\n                                        data: row,\n                                        index: index,\n                                        expanded: expandedEntries,\n                                        last: last,\n                                        highlightedEntityId: (highlightedEntityId$ | async)\n                                    }\">\n                            </ng-container>\n                        </ng-container>\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n\n            <ng-container *ngIf=\"loading && !!loadingState\">\n                <ng-container *ngTemplateOutlet=\"loadingState.html ?? null\"></ng-container>\n            </ng-container>\n        </div>\n    </div>\n    <div class=\"ui-grid-footer-container\">\n        <ui-grid-custom-paginator *ngIf=\"!!footer && !footer.hidden\"\n                                  [pageIndex]=\"footer.state.pageIndex\"\n                                  [pageSize]=\"footer.state.pageSize\"\n                                  [pageSizeOptions]=\"footer.pageSizes\"\n                                  [length]=\"footer.length\"\n                                  [disabled]=\"disabled\"\n                                  [showFirstLastButtons]=\"footer.showFirstLastButtons\"\n                                  [hidePageSize]=\"footer.hidePageSize\"\n                                  [hideTotalCount]=\"footer.hideTotalCount\"\n                                  [selectablePageIndex]=\"selectablePageIndex\"\n                                  (page)=\"footer.pageChange.next($event)\">\n        </ui-grid-custom-paginator>\n    </div>\n</div>\n<ng-template #rowTemplate\n             let-row=\"data\"\n             let-expanded=\"expanded\"\n             let-last=\"last\"\n             let-index=\"index\"\n             let-highlightedEntityId=\"highlightedEntityId\">\n    <div cdkMonitorSubtreeFocus\n         class=\"ui-grid-row\"\n         *ngIf=\"!isRowExpanded(row?.id) || expandMode === 'preserve'\"\n         [class.ui-grid-row-state-expanded]=\"isRowExpanded(row?.id)\"\n         [class.ui-grid-border-none]=\"!footer && last\"\n         [class.highlighted-row]=\"allowHighlight && (row.id + '')  === (highlightedEntityId + '')\"\n         [ngClass]=\"rowConfig?.ngClassFn(row) ?? ''\"\n         [tabIndex]=\"0\"\n         [attr.data-row-index]=\"index\"\n         (click)=\"onRowClick($event, row)\"\n         (keyup.enter)=\"onRowClick($event, row)\"\n         role=\"row\">\n\n        <div *ngIf=\"isProjected\"\n             class=\"ui-grid-cell ui-grid-feature-cell ui-grid-mobile-feature-cell\"\n             role=\"gridcell\">\n            <ng-container *ngLet=\"disableSelectionByEntry(row) as disabledReason\">\n                <div *ngIf=\"selectable && !singleSelectable\"\n                     class=\"ui-grid-mobile-feature-container ui-grid-mobile-refresh-container\">\n                    <mat-checkbox (change)=\"handleSelection(index, row)\"\n                                  [checked]=\"selectionManager.isSelected(row)\"\n                                  [indeterminate]=\"selectionManager.isIndeterminate(row)\"\n                                  [matTooltip]=\"disabledReason || checkboxTooltip(row)\"\n                                  [aria-label]=\"disabledReason || checkboxTooltip(row)\"\n                                  [disabled]=\"!!disabledReason\"\n                                  tabindex=\"0\">\n                    </mat-checkbox>\n                </div>\n                <div *ngIf=\"singleSelectable\"\n                     class=\"ui-grid-mobile-feature-container ui-grid-mobile-refresh-container\">\n                    <mat-radio-group>\n                        <mat-radio-button [value]=\"row.id\"\n                                          [checked]=\"selectionManager.isSelected(row)\"\n                                          [disabled]=\"disabledReason\"\n                                          [matTooltip]=\"disabledReason || checkboxTooltip(row)\"\n                                          [aria-label]=\"disabledReason || checkboxTooltip(row)\"\n                                          (change)=\"rowSelected(row)\"></mat-radio-button>\n                    </mat-radio-group>\n                </div>\n            </ng-container>\n            <div *ngIf=\"!!actions\"\n                 role=\"gridcell\"\n                 class=\"ui-grid-mobile-feature-container ui-grid-mobile-action-container\">\n                <ng-container *ngTemplateOutlet=\"actions.html ?? null; context: {\n                    data: row,\n                    index: index\n                }\">\n                </ng-container>\n            </div>\n        </div>\n\n        <div *ngIf=\"!isProjected && (selectable || singleSelectable)\"\n             [class.ui-grid-sticky-element]=\"isScrollable\"\n             class=\"ui-grid-cell ui-grid-checkbox-cell ui-grid-feature-cell\"\n             role=\"gridcell\">\n            <ng-container *ngLet=\"disableSelectionByEntry(row) as disabledReason\">\n                <mat-radio-group *ngIf=\"singleSelectable; else multiSelectable\">\n                    <mat-radio-button [value]=\"row.id\"\n                                      [checked]=\"selectionManager.isSelected(row)\"\n                                      [disabled]=\"disabledReason\"\n                                      [matTooltip]=\"disabledReason || checkboxTooltip(row)\"\n                                      [aria-label]=\"disabledReason || checkboxTooltip(row)\"\n                                      (change)=\"rowSelected(row)\"></mat-radio-button>\n                </mat-radio-group>\n                <ng-template #multiSelectable>\n                    <mat-checkbox (change)=\"handleSelection(index, row)\"\n                                  [checked]=\"selectionManager.isSelected(row)\"\n                                  [indeterminate]=\"selectionManager.isIndeterminate(row)\"\n                                  [matTooltip]=\"disabledReason || checkboxTooltip(row)\"\n                                  [aria-label]=\"disabledReason || checkboxTooltip(row)\"\n                                  [disabled]=\"disabledReason\"\n                                  tabindex=\"0\">\n                    </mat-checkbox>\n                </ng-template>\n            </ng-container>\n        </div>\n\n        <ng-container *ngLet=\"renderedColumns$ | async as renderedColumns\">\n            <div *ngIf=\"renderedColumns.stickyColumns.length\"\n                 [style.left.px]=\"(selectable || singleSelectable) ? selectionColumnWidth : 0\"\n                 [style.minWidth.px]=\"stickyColumnsSum$ | async\"\n                 [class.sticky-container-border-right]=\"(isOverflown$ | async) && renderedColumns.freeColumns.length\"\n                 class=\"sticky-columns-cell-container ui-grid-cell\">\n                <ng-container *ngFor=\"let column of renderedColumns.stickyColumns let lastColumn = last;\">\n                    <div *ngLet=\"(column.directive.widthPx$ | async) as widthPx\"\n                         [class.ui-grid-primary]=\"column.directive.primary\"\n                         [class.ui-grid-secondary]=\"!column.directive.primary\"\n                         [class.ui-grid-state-resizing]=\"column.directive === resizeManager.current?.column\"\n                         [attr.data-property]=\"column.directive.property\"\n                         [attr.data-identifier]=\"column.directive.identifier\"\n                         [style.width]=\"widthPx ? (widthPx + 'px') : (column.directive.width + '%')\"\n                         [style.minWidth.px]=\"widthPx\"\n                         [attr.role]=\"column.role\"\n                         class=\"ui-grid-cell ui-grid-sticky-element\">\n                        <div *ngIf=\"isProjected\"\n                             [matTooltip]=\"column.directive.title ?? ''\"\n                             [matTooltipDisabled]=\"resizeManager.isResizing\"\n                             class=\"ui-grid-cell-mobile-title\">{{column.directive.title}}</div>\n\n                        <div class=\"ui-grid-cell-content\">\n                            <ng-container *ngTemplateOutlet=\"column.directive.html || textCellTemplate; context: {\n                                                    data: row,\n                                                    index: index,\n                                                    property: column.directive.property\n                                                }\">\n                            </ng-container>\n                        </div>\n\n                        <div class=\"ui-grid-cell-resizing-border-container ui-grid-sticky-element\"\n                             [class.ui-grid-last-resize-handle-container]=\"lastColumn && renderedColumns.freeColumns.length > 0\">\n                            <div *ngIf=\"!isProjected && column.directive.resizeable && !useCardView\"\n                                 [class.ui-grid-state-resizing]=\"column.directive === resizeManager.current?.column\"\n                                 class=\"ui-grid-cell-resizing-border\">\n                            </div>\n                        </div>\n                    </div>\n                </ng-container>\n            </div>\n\n            <ng-container *ngFor=\"let column of renderedColumns.freeColumns; let lastColumn = last; let columnIndex = index\">\n                <div *ngLet=\"(+(column.directive.widthPx$ | async)! + (lastColumn ? (+(deficit$ | async)!) : 0) + (lastColumn && isScrollable ? 50 : 0)) as widthPx\"\n                     [class.ui-grid-primary]=\"column.directive.primary\"\n                     [class.ui-grid-secondary]=\"!column.directive.primary\"\n                     [class.ui-grid-state-resizing]=\"column.directive === resizeManager.current?.column\"\n                     [attr.data-property]=\"column.directive.property\"\n                     [attr.data-identifier]=\"column.directive.identifier\"\n                     [style.width]=\"widthPx ? (widthPx + 'px') : (column.directive.width + '%')\"\n                     [style.minWidth.px]=\"widthPx\"\n                     [attr.role]=\"column.role\"\n                     class=\"ui-grid-cell\">\n                    <div *ngIf=\"isProjected\"\n                         [matTooltip]=\"column.directive.title ?? ''\"\n                         [matTooltipDisabled]=\"resizeManager.isResizing\"\n                         class=\"ui-grid-cell-mobile-title\">{{column.directive.title}}</div>\n\n                    <div class=\"ui-grid-cell-content\">\n                        <ng-container *ngTemplateOutlet=\"column.directive.html || textCellTemplate; context: {\n                                        data: row,\n                                        index: index,\n                                        property: column.directive.property\n                                    }\">\n                        </ng-container>\n                    </div>\n                    <div *ngIf=\"!lastColumn\"\n                         class=\"ui-grid-cell-resizing-border-container\">\n                        <div *ngIf=\"!isProjected && column.directive.resizeable && !lastColumn && !useCardView\"\n                             [class.ui-grid-state-resizing]=\"column.directive === resizeManager.current?.column\"\n                             class=\"ui-grid-cell-resizing-border\">\n                        </div>\n                    </div>\n                </div>\n            </ng-container>\n        </ng-container>\n\n        <div *ngIf=\"virtualScroll\"\n             class=\"ui-grid-cell ui-grid-scroll-size-compensation-cell ui-grid-feature-cell\">\n        </div>\n\n        <div *ngIf=\"!isProjected &&\n                    refreshable\"\n             [class.invisible-refresh]=\"isScrollable\"\n             class=\"ui-grid-cell ui-grid-refresh-cell ui-grid-feature-cell\">\n        </div>\n\n        <div *ngIf=\"!actions && (shouldDisplayContainerShadow$ | async)\"\n             class=\"grid-margin-shadow ui-grid-feature-cell\"></div>\n\n        <div *ngIf=\"!isProjected &&\n                    !!actions\"\n             [class.ui-grid-sticky-element]=\"isScrollable\"\n             [class.grid-margin-shadow]=\"shouldDisplayContainerShadow$ | async\"\n             role=\"gridcell\"\n             class=\"ui-grid-cell ui-grid-action-cell ui-grid-feature-cell\">\n            <div [class.sticky-grid-action-cell-container]=\"isScrollable\"\n                 class=\"ui-grid-action-cell-container\">\n                <ng-container *ngTemplateOutlet=\"actions.html ?? null; context: {\n                        data: row,\n                        index: index\n                    }\">\n                </ng-container>\n            </div>\n        </div>\n    </div>\n    <div *ngIf=\"isRowExpanded(row?.id)\"\n         [class.ui-grid-row-state-expanded]=\"isRowExpanded(row?.id)\"\n         [class.ui-grid-border-none]=\"!footer && last\"\n         role=\"row\">\n        <div class=\"ui-grid-expanded-row-container\">\n            <ng-container *ngTemplateOutlet=\"expandedRow!.html ?? null; context: {\n                data: row,\n                index: index\n            }\">\n            </ng-container>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #textCellTemplate\n             let-row=\"data\"\n             let-property=\"property\">\n    <p [matTooltip]=\"dataManager.getProperty(row, property)\"\n       [matTooltipDisabled]=\"resizeManager.isResizing\">{{ dataManager.getProperty(row, property) }}</p>\n</ng-template>\n\n<ng-template #rowCardTemplate\n             let-row=\"data\"\n             let-expanded=\"expanded\"\n             let-last=\"last\"\n             let-index=\"index\">\n    <div cdkMonitorSubtreeFocus\n         class=\"ui-grid-card-wrapper\"\n         [ngClass]=\"rowConfig?.ngClassFn(row) ?? ''\"\n         [attr.data-row-index]=\"index\"\n         (click)=\"onRowClick($event, row)\"\n         (keyup.enter)=\"onRowClick($event, row)\"\n         role=\"row\">\n        <ng-container *ngIf=\"cardTemplate?.html; else defaultCardTemplate\">\n            <ng-container *ngTemplateOutlet=\"cardTemplate?.html || defaultCardTemplate;context: {\n                data: row,\n                index: index,\n                expanded: expandedEntries,\n                last: last\n            }\"></ng-container>\n        </ng-container>\n    </div>\n</ng-template>\n\n<ng-template #defaultCardTemplate\n             let-row=\"data\"\n             let-index=\"index\">\n    <div class=\"ui-grid-card-default\"\n         role=\"gridcell\"\n         tabindex=\"0\">\n        <ng-container *ngFor=\"let column of (renderedColumns$ | async)!.freeColumns\">\n            <div [class.ui-grid-primary]=\"column.directive.primary\"\n                 [class.ui-grid-secondary]=\"!column.directive.primary\"\n                 [attr.data-property]=\"column.directive.property\"\n                 [attr.data-identifier]=\"column.directive.identifier\"\n                 class=\"ui-grid-card-default-cell\">\n                <div *ngIf=\"isProjected\"\n                     [matTooltip]=\"column.directive.title ?? ''\"\n                     [matTooltipDisabled]=\"resizeManager.isResizing\"\n                     class=\"ui-grid-card-default-cell-mobile-title\">{{column.directive.title}}</div>\n                <div class=\"ui-grid-card-default-cell-content\">\n                    <b>{{ column.directive.title ?? column.directive.property }}:</b> <ng-container *ngTemplateOutlet=\"column.directive.html || textCellTemplate; context: {\n                            data: row,\n                            index: index,\n                            property: column.directive.property\n                        }\">\n                    </ng-container>\n                </div>\n            </div>\n        </ng-container>\n    </div>\n</ng-template>\n\n<ng-template #noData>\n    <ng-container *ngIf=\"!loading\">\n        <ng-container *ngIf=\"noContent; else defaultNoData\">\n            <ng-container *ngTemplateOutlet=\"noContent.html ?? null; context: {\n                search: header?.searchValue,\n                activeCount: filterManager.activeCount$ | async\n            }\">\n            </ng-container>\n        </ng-container>\n    </ng-container>\n</ng-template>\n\n<ng-template #defaultNoData>\n    <ng-container *ngLet=\"(filterManager.activeCount$ | async) as activeFilterCount\">\n        <div *ngIf=\"!dataManager.pristine\"\n             class=\"ui-grid-row ui-grid-no-data-container\"\n             [class.ui-grid-no-content-available]=\"!header?.searchValue && !activeFilterCount\"\n             [class.sticky-no-data]=\"isScrollable\"\n             [style.width]=\"isScrollable ? containerWidth + 'px' : undefined\"\n             [class.ui-grid-border-none]=\"!footer\">\n            <mat-icon *ngIf=\"!header?.searchValue && !activeFilterCount\">visibility_off</mat-icon>\n            <p>{{ noDataMessage || intl.noDataMessageAlternative(header?.searchValue, activeFilterCount) }}</p>\n        </div>\n    </ng-container>\n</ng-template>\n\n<ng-template #multiPageSelectionRow>\n    <div *ngIf=\"!isProjected &&\n                showMultiPageSelectionInfo\"\n         class=\"ui-grid-row ui-grid-selection-info-container ui-grid-selection-info-container-alternate\">\n        <ng-container *ngTemplateOutlet=\"multiPageSelectionInfo\"></ng-container>\n    </div>\n</ng-template>\n\n<ng-template #multiPageSelectionProjectedHeaderCell>\n    <div *ngIf=\"isProjected &&\n                showMultiPageSelectionInfo\"\n         class=\"ui-grid-header-cell ui-grid-feature-cell ui-grid-selection-info-container\">\n        <ng-container *ngTemplateOutlet=\"multiPageSelectionInfo\"></ng-container>\n    </div>\n</ng-template>\n\n<ng-template #multiPageSelectionInfo>\n    <ng-container *ngIf=\"selectionManager.selected.length; else noSelectionTmpl\">\n        <button [matTooltip]=\"intl.clearSelectionTooltip\"\n                [matTooltipDisabled]=\"resizeManager.isResizing\"\n                (click)=\"selectionManager.clear()\"\n                mat-icon-button\n                type=\"button\"\n                color=\"warn\"\n                class=\"ui-grid-selection-clear-button\">\n            <mat-icon>clear</mat-icon>\n        </button>\n        <span class=\"ui-grid-selection-info-message\">\n            {{ intl.translateMultiPageSelectionCount(selectionManager.selected.length) }}\n        </span>\n    </ng-container>\n</ng-template>\n\n<ng-template #noSelectionTmpl>\n    <span class=\"ui-grid-selection-info-message\">\n        {{ intl.noSelectionMessage }}\n    </span>\n</ng-template>\n\n<ng-template #filtersTmpl>\n    <ng-container *ngIf=\"areFilersCollapsed$ | async; else inlineFiltersTmpl\">\n        <button *ngIf=\"hasAnyFiltersVisible$ | async\"\n                [disabled]=\"disabled\"\n                (click)=\"showFilters = !showFilters\"\n                [attr.aria-expanded]=\"showFilters\"\n                mat-button\n                type=\"button\"\n                class=\"ui-grid-collapsible-filters-toggle\">\n            <mat-icon>filter_list</mat-icon>\n            <span>{{ intl.filters(filterManager.activeCount$ | async) }}</span>\n            <mat-icon iconPositionEnd>{{ showFilters ? 'expand_less' : 'expand_more' }}</mat-icon>\n        </button>\n    </ng-container>\n</ng-template>\n\n<ng-template #inlineFiltersTmpl>\n    <ng-container *ngFor=\"let column of columns$ | async\">\n        <div *ngIf=\"column.dropdown?.visible$ | async\"\n             [attr.data-collapsed]=\"!collapseFiltersCount || null\"\n             class=\"ui-grid-dropdown-filter-container ui-grid-filter-option\">\n            <ng-container *ngLet=\"column.dropdown!.value as selectedFilters\">\n                <ui-suggest *ngLet=\"(column.dropdown!.suggestValue ?? []) as suggestValue\"\n                            [disabled]=\"false\"\n                            [compact]=\"true\"\n                            [hasHighDensity]=\"hasHighDensity\"\n                            [multiple]=\"column.dropdown!.multi\"\n                            [clearable]=\"column.dropdown!.multi\"\n                            [searchable]=\"false\"\n                            [value]=\"suggestValue\"\n                            [placeholder]=\"column.title ?? ''\"\n                            [items]=\"column.dropdown!.suggestItems\"\n                            [compactSummaryTemplate]=\"displayedFilterName\"\n                            [maxSelectionConfig]=\"{\n                                count: (disableFilterSelection$ | async) && (column.dropdown!.multi || selectedFilters === undefined) ? suggestValue.length : Infinity,\n                                footerMessage: intl.maxSelectedFilterValuesWarning,\n                                itemTooltip: intl.filterItemWarningTooltip\n                                }\"\n                            [attr.data-column-name]=\"getColumnName(column)\"\n                            (itemSelected)=\"filterManager.selectFilters(column, $event)\"\n                            (selected)=\"$event === undefined && filterManager.selectFilters(column, undefined)\"\n                            class=\"ui-grid-filter-suggest\"\n                            width=\"230px\">\n                </ui-suggest>\n\n                <ng-template #displayedFilterName\n                             let-value>\n                    <div class=\"flex\">\n                        <span class=\"text-ellipsis\">\n                            {{ (column.dropdown!.multi && selectedFilters?.length > 1)\n                                ? intl.translateMultiDropdownOptions(value[0].text!, selectedFilters.length)\n                                : value?.[0]?.text ?? intl.noFilterPlaceholder\n                            }}</span>\n                    </div>\n                </ng-template>\n            </ng-container>\n        </div>\n\n        <ng-container *ngIf=\"column.searchableDropdown?.visible$ | async\">\n            <ui-suggest *ngLet=\"searchableDropdownValue(column.searchableDropdown!) as dropdownValue\"\n                        #suggest\n                        [placeholder]=\"column.title ?? ''\"\n                        [defaultValue]=\"column.searchableDropdown!.noFilterPlaceholder || intl.noFilterPlaceholder\"\n                        [searchSourceFactory]=\"column.searchableDropdown!.searchSourceFactory\"\n                        [value]=\"dropdownValue\"\n                        [disabled]=\"column.searchableDropdown!.disabled || disabled\"\n                        [drillDown]=\"column.searchableDropdown!.drillDown\"\n                        [maxLength]=\"64\"\n                        [fetchStrategy]=\"column.searchableDropdown!.fetchStrategy || fetchStrategy\"\n                        [attr.data-cy]=\"getColumnName(column, 'ui-grid-search-filter')\"\n                        [multiple]=\"column.searchableDropdown!.multiple\"\n                        [compact]=\"column.searchableDropdown!.multiple\"\n                        [hasHighDensity]=\"hasHighDensity\"\n                        [displayCount]=\"column.searchableDropdown!.displayCount\"\n                        [minChars]=\"column.searchableDropdown?.minChars ?? 0\"\n                        [maxSelectionConfig]=\"{\n                            count: (disableFilterSelection$ | async) ? dropdownValue.length : Infinity,\n                            footerMessage: intl.maxSelectedFilterValuesWarning,\n                            itemTooltip: intl.filterItemWarningTooltip\n                             }\"\n                        (selected)=\"filterManager.searchableDropdownUpdate(column, $event, true)\"\n                        (deselected)=\"filterManager.searchableDropdownUpdate(column, $event, false)\"\n                        (opened)=\"column.refetch && suggest.fetch()\"\n                        width=\"230px\"\n                        class=\"ui-grid-search-filter ui-grid-filter-option\">\n            </ui-suggest>\n        </ng-container>\n    </ng-container>\n</ng-template>\n\n<ng-template #toggleColumnsTmpl>\n    <ui-grid-toggle-columns *ngIf=\"toggleColumns && !(hasSelection$ | async)\"\n                            [options]=\"visibilityManager.options$ | async\"\n                            [dirty]=\"(visibilityManager.isDirty$ | async) ?? false\"\n                            [toggleTooltip]=\"intl.toggleTooltip\"\n                            [resetToDefaults]=\"intl.toggleResetToDefaults\"\n                            [toggleTitle]=\"intl.toggleTitle\"\n                            [togglePlaceholderTitle]=\"intl.togglePlaceholderTitle\"\n                            [showDivider]=\"(displayToggleColumnsDivider$ | async) ?? false\"\n                            (visibleColumns)=\"visibilityManager.update($event)\"\n                            (resetColumns)=\"visibilityManager.reset()\"\n                            (visibleColumnsToggled)=\"visibleColumnsToggle$.next($event)\">\n    </ui-grid-toggle-columns>\n</ng-template>\n\n<ng-template #gridFilterContainerLeft>\n    <div class=\"ui-grid-filter-container-lhs-group-actions\">\n        <ng-container *ngIf=\"filterManager.hasCustomFilter$ | async; else noCustomFilter\">\n            <ng-container *ngTemplateOutlet=\"toggleColumnsTmpl\"></ng-container>\n            <button *ngIf=\"!(hasSelection$ | async)\"\n                    (click)=\"clearCustomFilter()\"\n                    mat-flat-button\n                    type=\"button\"\n                    data-cy=\"clear-custom-filter\">\n                {{ intl.clearCustomFilter }}\n            </button>\n        </ng-container>\n        <ng-template #noCustomFilter>\n            <ng-container>\n                <ng-container *ngIf=\"!(hasSelection$ | async) ||\n                            !header?.actionButtons?.length\">\n                    <ng-container *ngIf=\"!!search; else defaultSearch\">\n                        <ng-container *ngTemplateOutlet=\"search.html ?? null\"></ng-container>\n                    </ng-container>\n\n                    <ng-template #defaultSearch>\n                        <ui-grid-search *ngIf=\"header?.search\"\n                                        [debounce]=\"header!.searchDebounce\"\n                                        [maxLength]=\"header!.searchMaxLength\"\n                                        [placeholder]=\"intl.searchPlaceholder\"\n                                        [searchTooltip]=\"intl.searchTooltip\"\n                                        [clearTooltip]=\"intl.clearTooltip\"\n                                        [tooltipDisabled]=\"resizeManager.isResizing\"\n                                        [value]=\"header!.searchValue!\"\n                                        (searchChange)=\"filterManager.searchChange($event, header!, footer)\"\n                                        class=\"ui-grid-search ui-grid-filter-option\">\n                        </ui-grid-search>\n                    </ng-template>\n\n                    <ng-container *ngTemplateOutlet=\"toggleColumnsTmpl\"></ng-container>\n\n                    <ng-container *ngTemplateOutlet=\"filtersTmpl\">\n                    </ng-container>\n                </ng-container>\n\n                <div *ngIf=\"!(hasSelection$ | async)\"\n                     class=\"ui-grid-action-buttons ui-grid-action-buttons-inline\">\n                    <ng-container *ngFor=\"let button of header?.inlineButtons\">\n                        <ng-container *ngIf=\"button.visible\">\n                            <ng-container *ngTemplateOutlet=\"button.html ?? null\">\n                            </ng-container>\n                        </ng-container>\n                    </ng-container>\n                </div>\n            </ng-container>\n        </ng-template>\n\n        <div #gridActionButtons\n             *ngIf=\"hasSelection$ | async\"\n             class=\"ui-grid-action-buttons ui-grid-action-buttons-selection\">\n            <ng-container *ngFor=\"let button of header?.actionButtons\">\n                <ng-container *ngIf=\"button.visible\">\n                    <ng-container *ngTemplateOutlet=\"button.html?? null\">\n                    </ng-container>\n                </ng-container>\n            </ng-container>\n        </div>\n    </div>\n    <div *ngIf=\"showFilters &&\n            (hasAnyFiltersVisible$ | async) &&\n            (filterManager.hasCustomFilter$ | async) === false &&\n            !(hasSelection$ | async)\"\n         [@filters-container]\n         class=\"ui-grid-filter-container-lhs-group-filters\">\n        <ng-container *ngTemplateOutlet=\"inlineFiltersTmpl\"></ng-container>\n    </div>\n</ng-template>\n\n<ng-template #gridFilterContainerRight>\n    <div class=\"ui-grid-action-buttons ui-grid-action-buttons-main\">\n        <ng-container *ngFor=\"let button of header?.mainButtons\">\n            <ng-container *ngIf=\"button.visible\">\n                <ng-container *ngTemplateOutlet=\"button.html ?? null\">\n                </ng-container>\n            </ng-container>\n        </ng-container>\n    </div>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { UiAutoAccessibleLabelModule } from '@uipath/angular/a11y';\nimport { UiSuggestModule } from '@uipath/angular/components/ui-suggest';\nimport { UiNgLetModule } from '@uipath/angular/directives/ui-ng-let';\nimport { UiVirtualScrollViewportResizeModule } from '@uipath/angular/directives/ui-virtual-scroll-viewport-resize';\n\nimport { UiGridCustomSearchDirective } from './components/ui-grid-search/ui-grid-custom-search.directive';\nimport { UiGridColumnDirective } from './body/ui-grid-column.directive';\nimport { UiGridExpandedRowDirective } from './body/ui-grid-expanded-row.directive';\nimport { UiGridLoadingDirective } from './body/ui-grid-loading.directive';\nimport { UiGridNoContentDirective } from './body/ui-grid-no-content.directive';\nimport { UiGridRowActionDirective } from './body/ui-grid-row-action.directive';\nimport { UiGridRowCardViewDirective } from './body/ui-grid-row-card-view.directive';\nimport { UiGridRowConfigDirective } from './body/ui-grid-row-config.directive';\nimport { UiGridCustomPaginatorModule } from './components/ui-grid-custom-paginator/ui-grid-custom-paginator.module';\nimport { UiGridSearchModule } from './components/ui-grid-search/ui-grid-search.module';\nimport { UiGridToggleColumnsModule } from './components/ui-grid-toggle-columns/ui-grid-toggle-columns.module';\nimport { UiGridDropdownFilterDirective } from './filters/ui-grid-dropdown-filter.directive';\nimport { UiGridSearchFilterDirective } from './filters/ui-grid-search-filter.directive';\nimport { UiGridFooterDirective } from './footer/ui-grid-footer.directive';\nimport { UiGridHeaderButtonDirective } from './header/ui-grid-header-button.directive';\nimport { UiGridHeaderDirective } from './header/ui-grid-header.directive';\nimport { UiGridComponent } from './ui-grid.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatPaginatorModule,\n        MatCheckboxModule,\n        MatButtonModule,\n        MatIconModule,\n        MatMenuModule,\n        MatSelectModule,\n        MatTooltipModule,\n        MatProgressBarModule,\n        MatRadioModule,\n        ScrollingModule,\n        UiGridSearchModule,\n        UiGridToggleColumnsModule,\n        UiGridCustomPaginatorModule,\n        UiSuggestModule,\n        A11yModule,\n        UiVirtualScrollViewportResizeModule,\n        UiAutoAccessibleLabelModule,\n        UiNgLetModule,\n    ],\n    declarations: [\n        UiGridComponent,\n        UiGridRowActionDirective,\n        UiGridColumnDirective,\n        UiGridHeaderDirective,\n        UiGridHeaderButtonDirective,\n        UiGridFooterDirective,\n        UiGridSearchFilterDirective,\n        UiGridDropdownFilterDirective,\n        UiGridRowConfigDirective,\n        UiGridExpandedRowDirective,\n        UiGridNoContentDirective,\n        UiGridLoadingDirective,\n        UiGridRowCardViewDirective,\n        UiGridCustomSearchDirective,\n    ],\n    exports: [\n        UiGridComponent,\n        UiGridRowActionDirective,\n        UiGridColumnDirective,\n        UiGridHeaderDirective,\n        UiGridHeaderButtonDirective,\n        UiGridFooterDirective,\n        UiGridSearchFilterDirective,\n        UiGridDropdownFilterDirective,\n        UiGridRowConfigDirective,\n        UiGridExpandedRowDirective,\n        UiGridNoContentDirective,\n        UiGridLoadingDirective,\n        UiGridRowCardViewDirective,\n        UiGridCustomSearchDirective,\n    ],\n})\nexport class UiGridModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["isEqual","isArray","takeUntil","i1","i3","i4","i5","i2","i8","i1.UiGridIntl","i6","i7","i11.UiGridSearchComponent","i12.UiGridToggleColumnsComponent","i13.UiGridCustomPaginatorComponent"],"mappings":"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"}