{"version":3,"file":"eui-components-eui-table.mjs","sources":["../../eui-table/services/eui-table-selectable-row.service.ts","../../eui-table/services/eui-table-sort.service.ts","../../eui-table/eui-table.component.ts","../../eui-table/eui-table.component.html","../../eui-table/selectable-header/eui-table-selectable-header.component.ts","../../eui-table/selectable-header/eui-table-selectable-header.component.html","../../eui-table/selectable-row/eui-table-selectable-row.component.ts","../../eui-table/selectable-row/eui-table-selectable-row.component.html","../../eui-table/directives/eui-table-sticky-col.directive.ts","../../eui-table/filter/eui-table-filter.component.ts","../../eui-table/filter/eui-table-filter.component.html","../../eui-table/pipes/eui-table-highlight.pipe.ts","../../eui-table/sortable-col/eui-table-sortable-col.component.ts","../../eui-table/sortable-col/eui-table-sortable-col.component.html","../../eui-table/directives/eui-table-expandable-row.directive.ts","../../eui-table/index.ts","../../eui-table/eui-components-eui-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * @description\n * Service to manage the selection state of rows in a table.\n * Allows tracking of selected rows and managing selection for individual and multiple rows.\n */\n@Injectable()\nexport class EuiTableSelectableRowService<DATA> {\n    /**\n     * BehaviorSubject containing the selected rows.\n     */\n    public selectedRows$: BehaviorSubject<DATA[]> = new BehaviorSubject([]);\n    /**\n     * BehaviorSubject containing the state of whether all rows are selected.\n     */\n    public isAllRowsSelected$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n    \n    private lastSelectedRow: DATA = null;\n    private rows: DATA[] = [];\n    private propId = 'id';\n\n    /**\n     * Observable stream of selected rows.\n     */\n    get selectedRows(): Observable<DATA[]> {\n        return this.selectedRows$.asObservable();\n    }\n\n    /**\n     * Observable stream of whether all rows are selected.\n     */\n    get isAllRowsSelected(): Observable<boolean> {\n        return this.isAllRowsSelected$.asObservable();\n    }\n\n    /**\n     * Sets the property name used to identify rows as unique.\n     */\n    public setPropId(value: string): void {\n        this.propId = value;\n    }\n\n    /**\n     * Gets the current property name used to identify rows.\n     */\n    public getPropId(): string {\n        return this.propId;\n    }\n\n    /**\n     * Registers a row as selectable.\n     * \n     * @param row Row to register.\n     */\n    public registerRow(row: DATA): void {\n        if (row && !this.rows.find((r) => r[this.propId] === row[this.propId])) {\n            this.rows.push(row);\n\n            if (this.rows.length > this.selectedRows$.value.length && this.isAllRowsSelected$.value) {\n                this.isAllRowsSelected$.next(false);\n            }\n\n            if (this.rows.length <= this.selectedRows$.value.length && this.rows.every((r) => this.selectedRows$.value.includes(r))) {\n                this.isAllRowsSelected$.next(true);\n            }\n        }\n    }\n\n    /**\n     * Registers a set of rows as selectable.\n     * \n     * @param rows Set of rows to register.\n     */\n    public registerRows(rows: DATA[]): void {\n        rows.forEach((row) => {\n            this.registerRow(row);\n        });\n    }\n\n    /**\n     * Unregisters a row as selectable.\n     * \n     * @param row Row to unregister.\n     */\n    public unregisterRow(row: DATA): void {\n        this.rows = this.rows.filter(r => r[this.propId] !== row[this.propId]);\n    }\n\n    /**\n     * Unregisters all rows.\n     */\n    public unregisterRows(): void {\n        this.rows = [];\n    }\n\n    /**\n     * Selects a row.\n     * \n     * @param row Row to select.\n     */\n    public selectRow(row: DATA): void {\n        if (this.selectedRows$.value.indexOf(row) === -1) {\n            this.selectedRows$.next([...this.selectedRows$.value, row]);\n        }\n\n        this.isAllRowsSelected$.next(this.selectedRows$.value.length === this.rows.length);\n        this.lastSelectedRow = row;\n    }\n\n    /**\n     * Selects a single row and replace existing one in selectedRows array.\n     * \n     * @param row Row to select.\n     */\n    public selectSingleRow(row: DATA): void {\n        if (this.selectedRows$.value.indexOf(row) === -1) {\n            this.selectedRows$.next([row]);\n        }\n\n        this.lastSelectedRow = row;\n    }\n\n    /**\n     * Unselects a row.\n     * \n     * @param row Row to unselect.\n     */\n    public unselectRow(row: DATA): void {\n        if (row && this.selectedRows$.value.find((r) => r[this.propId] === row[this.propId]) !== undefined) {\n            const value = this.selectedRows$.value.filter((selected) => selected[this.propId] !== row[this.propId]);\n            this.selectedRows$.next(value);\n            this.isAllRowsSelected$.next(false);\n        }\n    }\n\n    /**\n     * Selects a set of rows.\n     * \n     * @param rows Rows to select.\n     */\n    public selectRows(rows: DATA[]): void {\n        this.selectedRows$.next([...rows]);\n        this.isAllRowsSelected$.next(this.rows.length > 0 && this.rows.length === this.selectedRows$.value.length);\n        this.lastSelectedRow = rows[rows.length - 1];\n    }\n\n    /**\n     * Select all rows.\n     */\n    public selectAllRows(): void {\n        this.selectedRows$.next([...this.rows]);\n        this.isAllRowsSelected$.next(true);\n        this.lastSelectedRow = this.rows[this.rows.length - 1];\n    }\n\n    /**\n     * Unselect all rows.\n     */\n    public unselectAllRows(): void {\n        this.selectedRows$.next([]);\n        this.isAllRowsSelected$.next(false);\n        this.lastSelectedRow = null;\n    }\n\n    /**\n     * Gets the list of registered rows.\n     * \n     * @returns The list of registered rows.\n     */\n    public getRows(): DATA[] {\n        return this.rows;\n    }\n\n    /**\n     * Gets the last selected row.\n     * \n     * @returns The last selected row.\n     */\n    public getLastSelectedRow(): DATA {\n        return this.lastSelectedRow;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { Sort, SortOrder } from '../models/sort.model';\n\n/**\n * @description\n * Service to manage the sorting state of columns in a table.\n * Uses a `BehaviorSubject` to store and emit the current sorting values.\n */\n@Injectable()\nexport class EuiTableSortService {\n    /**\n     * BehaviorSubject containing the current sorting information.\n     */\n    public sorts$ = new BehaviorSubject<Sort[]>([]);\n\n    /**\n     * Observable stream of sorting values.\n     */\n    get sorts(): Observable<Sort[]> {\n        return this.sorts$.asObservable();\n    }\n\n    private isCurrentMultiSortable = false;\n\n    /**\n     * Sets the ordering order for a given column\n     * @param sort The name of the column to sort.\n     * @param order The sorting order (ascending, descending, none).\n     * @param isMultiSortable Whether multi-sorting is allowed.\n     */\n    setSort(sort: string, order: SortOrder, isMultiSortable: boolean): void {\n        if (isMultiSortable && this.isCurrentMultiSortable) {\n            let sortValues = this.sorts$.value;\n            if (!order || order === 'none') {\n                sortValues = this.sorts$.value.filter(s => s.sort !== sort);\n                this.sorts$.next(sortValues);\n            } else {\n                if (this.sorts$.value.find(s => s.sort === sort)) {\n                    sortValues = this.sorts$.value.map(s => s.sort == sort ? ({ ...s, order }) : s);\n                    this.sorts$.next(sortValues);\n                } else {\n                    this.sorts$.next([ ...sortValues, { sort, order } ]);\n                }\n            }\n        } else {\n            this.sorts$.next(sort && order && order !== 'none' ? [{ sort, order }] : []);\n        }\n\n        this.isCurrentMultiSortable = isMultiSortable;\n    }\n\n    /**\n     * Sets the full list of sorting values.\n     * \n     * @param sorts The list of sorts to apply.\n     */\n    setSorts(sorts: Sort[]): void {\n        this.sorts$.next(sorts);\n        this.isCurrentMultiSortable = sorts.length > 1;\n    }\n}\n","import {\n    Component,\n    Input,\n    ContentChildren,\n    QueryList,\n    AfterContentInit,\n    TemplateRef,\n    ViewChild,\n    AfterViewInit,\n    ElementRef,\n    booleanAttribute,\n    HostBinding,\n    ViewEncapsulation,\n    ChangeDetectionStrategy,\n    OnDestroy,\n    OnInit,\n    Output,\n    EventEmitter,\n    SimpleChanges,\n    OnChanges,\n    numberAttribute,\n    ChangeDetectorRef,\n    Renderer2,\n    inject,\n} from '@angular/core';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { BehaviorSubject, Observable, Subject, Subscription, combineLatest, debounceTime, skip, takeUntil } from 'rxjs';\nimport { ListRange } from '@angular/cdk/collections';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EUI_SKELETON } from '@eui/components/eui-skeleton';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_LIST } from '@eui/components/eui-list';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\n\nimport { EuiPaginationEvent, EuiPaginatorComponent } from '@eui/components/eui-paginator';\nimport { EuiTemplateDirective } from '@eui/components/directives';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { EuiTableSelectableRowService } from './services/eui-table-selectable-row.service';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableSortService } from './services/eui-table-sort.service';\nimport { Sort, SortOrder } from './models/sort.model';\n\nexport enum ScrollinDirection {\n    UP = 'UP',\n    DOWN = 'DOWN',\n}\n\n/**\n * @description\n * The `eui-table` component has been built to offer various requested features including fast performance and excellent level of control over tabular presentation of data.\n *\n * The eui-table is quite simple of usage and requires :\n *\n *     - rows : the data value input as an array of objects, usually fetched from a service (data payload),\n *     - view : this is the template for the presentation with its various options such as the search filter, the paginator, sortable columns, etc.\n * \n * High-performance data table component with extensive features for tabular data presentation.\n * Supports virtual scrolling for large datasets, pagination, sorting, filtering, and row selection.\n * Provides sticky headers/footers/columns, responsive layouts, and async data loading.\n * Implements customizable templates for headers, body rows, footers, and empty states.\n * Commonly used for data grids, reports, dashboards, and any structured data display requiring advanced table functionality.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table euiTable [data]=\"data\" isTableCompact>\n *     <ng-template euiTemplate=\"header\">\n *         <tr>\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr>\n *             <td>{{ row.country }}</td>\n *             <td>{{ row.year }}</td>\n *             <td>{{ row.iso }}</td>\n *             <td>{{ row.population | number }}</td>\n *             <td>{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n *     <ng-template euiTemplate=\"footer\">\n *         <tr>\n *             <td class=\"eui-u-text-center\" colspan=\"5\">Footer</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * ```\n *\n * ### With Pagination and Selection and template when no data\n * ```html\n * <table euiTable isTableResponsive [data]=\"data\" [paginator]=\"paginator\" (rowsSelect)=\"onRowsSelect($event)\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr [isHeaderSelectable]=\"hasSelectionFeature\">\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr [isDataSelectable]=\"row\">\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n *     <ng-template euiTemplate=\"footer\">\n *         <tr>\n *             <td class=\"eui-u-text-center\" colspan=\"5\">Footer</td>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"noData\">\n *         <tr>\n *             <td class=\"eui-u-text-center\" colspan=\"5\">There are currently no data to display</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * <eui-paginator #paginator [pageSizeOptions]=\"[5, 10, 25, 50]\" [pageSize]=\"10\" (pageChange)=\"onPageChange($event)\" [isHidden]=\"!hasPagination\"></eui-paginator>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * \n * onRowsSelect(selected: Country[]): void {\n *     console.log(selected);\n * }\n * ```\n *\n * ### Imports\n *  ```ts\n * import { EUI_TABLE } from '@eui/components/eui-table';\n * import { EuiTemplateDirective } from '@eui/components/directives';\n * \n * imports: [...EUI_TABLE, EuiTemplateDirective]\n * ```\n * \n * ### Accessibility\n * - Use semantic table elements (thead, tbody, tfoot, th, td)\n * - Provide scope=\"col\" or scope=\"row\" on header cells\n * - Use caption element to describe table purpose\n * - Ensure sufficient color contrast for text and borders\n *\n * ### Notes\n * - Virtual scrolling improves performance for large datasets (1000+ rows)\n * - Sticky headers/footers/columns require explicit height on container\n * - Use [isTableCompact]=\"true\" for dense data display\n * - Sortable columns require isSortable directive on th elements\n */\n@Component({\n    selector: 'eui-table, table[euiTable]',\n    templateUrl: './eui-table.component.html',\n    styleUrls: ['./styles/_index.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        NgTemplateOutlet,\n        ScrollingModule,\n        FormsModule,\n        ReactiveFormsModule,\n        TranslateModule,\n        ...EUI_ICON,\n        ...EUI_SKELETON,\n        ...EUI_LIST,\n        ...EUI_ICON_INPUT,\n        ...EUI_BUTTON,\n        ...EUI_INPUT_TEXT,\n        ...EUI_INPUT_CHECKBOX,\n    ],\n    providers: [EuiTableSelectableRowService, EuiTableSortService],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [],\n        },\n    ],\n})\nexport class EuiTableComponent<DATA = unknown> implements AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            this.baseStatesDirective.getCssClasses('eui-table-default eui-table'),\n            this.isVirtualScroll ? 'eui-table--virtual-scroll' : '',\n            this.hasStickyHeader ? 'eui-table--sticky eui-table--sticky-header' : '',\n            this.hasStickyFooter ? 'eui-table--sticky eui-table--sticky-footer' : '',\n            this.hasStickyCols ? 'eui-table--sticky eui-table--sticky-cols' : '',\n            this.isTableResponsive ? 'eui-table-default--responsive' : '',\n            this.isColsOrderable ? 'eui-table--cols-orderable' : '',\n            this.isLoading ? 'eui-table--loading' : '',\n            this.isTableFixedLayout ? 'eui-table--fixed-layout' : '',\n            this.isTableBordered ? 'eui-table--bordered' : '',\n            this.isTableCompact? 'eui-table--compact' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Data to display in the table.\n     *\n     * @type {DATA[]} Generic type of data\n     */\n    @Input() data: DATA[] = [];\n    /**\n     * Unicity criteria of the data.\n     *\n     * @default 'id'\n     */\n    @Input() propId = 'id';\n    /**\n     * In combination with `isVirtualScroll`. Row height use by virtual scroll calculation.\n     *\n     * @default 41\n     */\n    @Input() itemSize = 41;\n    /**\n     * `eui-paginator` reference passed to the table.\n     *\n     * @type {EuiPaginatorComponent}\n     */\n    @Input() paginator: EuiPaginatorComponent;\n    /**\n     * `eui-table-filter` reference passed to the table.\n     *\n     * @type {EuiTableFilterComponent}\n     */\n    @Input() filter: EuiTableFilterComponent;\n    /**\n     * In combination with `isDataSelectable`. Rows to be selected by default.\n     *\n     * @type {DATA[]} Set of data to select.\n     */\n    @Input() preselectedRows: DATA[] = [];\n\n    /**\n     * Wheter the table uses virtual scroll to display data.\n     *\n     * `eui-table` selector needs to be used in order to make virtual scroll working properly.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isVirtualScroll = false;\n    /**\n     * In combination with `isVirtualScroll`. Wheter the table caches the data when scroll.\n     * Means that if a scroll level has already loads data, the `scrollChange` event won't be emitted.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isVirtualScrollCache = false;\n    /**\n     * Wheter the table header is sticky.\n     * In order to use eui-table sticky feature and control the scrolling overflow,\n     * we recommend to wrap the table with the provided eui-table__scrollable-wrapper class and set your custom table width and/or height.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasStickyHeader = false;\n    /**\n     * Wheter the table footer is sticky.\n     * In order to use eui-table sticky feature and control the scrolling overflow,\n     * we recommend to wrap the table with the provided eui-table__scrollable-wrapper class and set your custom table width and/or height.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasStickyFooter = false;\n    /**\n     * Wheter the table col is sticky.\n     * In order to use eui-table sticky feature and control the scrolling overflow,\n     * we recommend to wrap the table with the provided eui-table__scrollable-wrapper class and set your custom table width and/or height.\n     *\n     * Only first or latest columns can be sticky.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) hasStickyCols = false;\n    /**\n     * Wheter the table is reponsive.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isTableResponsive = false;\n    /**\n     * Wheter the table uses async data.\n     * In this configuration, pagination, filtering and sorting are managed by the backend.\n     *\n     * When data are async, paginator and filter must not be bound to the eui-table component like in other sample.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isAsync = false;\n    /**\n     * In combination with `isVirtualScroll`. Total length of data that are displayed in the table with virtual scroll.\n     *\n     * @default 0\n     */\n    @Input({ transform: numberAttribute }) virtualScrollAsyncItemsLength = 0;\n    /**\n     * In combination with `isVirtualScroll`. Nb of data items to load in the table.\n     *\n     * @default 50\n     */\n    @Input({ transform: numberAttribute }) virtualScrollNbRows = 50;\n    /**\n     * Wheter the cols can be reordered.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isColsOrderable = false;\n    /**\n     * Wheter a loading spinner is displayed in the table.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isLoading = false;\n    /**\n     * Wheter the 'select all' checkbox in the header will select ONLY items in the current page.\n     *\n     * If `false`, all items across the pages will be selected.\n     *\n     * @default true\n     */\n    @Input({ transform: booleanAttribute }) isSelectOnlyVisibleRows = true;\n    /**\n     * Whether the table use bordered styles.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isTableBordered = false;    \n    /**\n     * Wheter the table has a fixed layout which forces a table to use fixed column widths, ignoring content size for faster and more predictable layout.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isTableFixedLayout = false;\n    /**\n     * Whether the table use compact design.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isTableCompact = false;\n\n    protected headerTemplate: TemplateRef<HTMLElement>;\n    protected bodyTemplate: TemplateRef<{ $implicit: DATA; index: number }>;\n    protected footerTemplate: TemplateRef<HTMLElement>;\n    protected noDataTemplate: TemplateRef<HTMLElement>;\n    protected captionTemplate: TemplateRef<HTMLElement>;\n    protected loading = [];\n    protected nbCols: HTMLTableCellElement[] = [];\n    protected dataRendered: DATA[] = [];\n    protected cdkVirtualScrollViewportOverflowValue: ('hidden' | 'auto') = 'auto';\n\n    @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n    @ViewChild('cdkVirtualScrollViewport', { static: false }) protected cdkVirtualScrollViewport: CdkVirtualScrollViewport;\n    @ViewChild('cdkVirtualScrollViewportElement', { static: false, read: ElementRef }) protected cdkVirtualScrollViewportElement: ElementRef;\n    @ViewChild('theadRef') theadRef: ElementRef<HTMLElement>;\n    @ViewChild('tbodyRef') tbodyRef: ElementRef<HTMLElement>;\n    @ViewChild('tfootRef') tfootRef: ElementRef<HTMLElement>;\n\n    /**\n     * In combination with `isVirtualScroll`. Event emitted when a scroll is done.\n     */\n    @Output() scrollChange = new EventEmitter();\n    /**\n     * In combination with `isDataSelectable` on a row. Event emitted when the selection changes with an array of data.\n     */\n    @Output() rowsSelect = new EventEmitter<DATA[]>();\n    /**\n     * In combination with `isSortable` on the cols. Event emitted when the sort changes with the property displayed in the col and the order as `ASC` or `DESC`.\n     */\n    @Output() sortChange = new EventEmitter<Sort[]>();\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private virtualScrollLastMultiple = 0;\n    private virtualScrollSpliceFrom = 0;\n    private scrolledIndex = 0;\n    private nbItemDisplayed = 0;\n    private scrollingDirection: ScrollinDirection;\n    private mutationObserver: MutationObserver;\n    private dataSrc: DATA[] = [];\n    private page = 0;\n    private pageSize = 0;\n    private tableFeaturesHandlerSubscription = new Subscription();\n    private filteredData: DATA[] = [];\n    private elementRef = inject(ElementRef);\n    private cd = inject(ChangeDetectorRef);\n    private euiTableSelectableRowService = inject<EuiTableSelectableRowService<DATA>>(EuiTableSelectableRowService);\n    private euiTableSortService = inject(EuiTableSortService);\n    private baseStatesDirective = inject(BaseStatesDirective);\n    private renderer = inject(Renderer2);\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (!this.data) {\n            this.data = [];\n        }\n\n        this.euiTableSelectableRowService.setPropId(this.propId);\n        if (this.isVirtualScroll) {\n            if (c.data && c.data.isFirstChange()) {\n                this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n\n                this.euiTableSelectableRowService.unregisterRows();\n                this.euiTableSelectableRowService.registerRows(this.dataRendered);\n            }\n\n            if (c.data && !c.data.isFirstChange()) {\n                if (this.isAsync) {\n                    const source = [...this.dataRendered];\n                    if (this.isVirtualScrollCache) {\n                        this.dataRendered = [...source.slice(0, this.virtualScrollSpliceFrom), ...c.data.currentValue, ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows)];\n                    } else {\n                        this.dataRendered = [\n                            ...Array.from({ length: this.virtualScrollSpliceFrom - this.nbItemDisplayed }),\n                            ...source.slice(this.virtualScrollSpliceFrom - this.nbItemDisplayed, this.virtualScrollSpliceFrom),\n                            ...c.data.currentValue,\n                            ...source.slice(this.virtualScrollSpliceFrom + this.virtualScrollNbRows, this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed),\n                            ...Array.from({ length: this.virtualScrollAsyncItemsLength - (this.virtualScrollSpliceFrom + this.virtualScrollNbRows + this.nbItemDisplayed) }),\n                        ];\n                    }\n\n                    if (c && c.virtualScrollAsyncItemsLength) {\n                        if (c.virtualScrollAsyncItemsLength.previousValue > c.virtualScrollAsyncItemsLength.currentValue) {\n                            this.dataRendered = this.dataRendered.slice(0, c.virtualScrollAsyncItemsLength.currentValue);\n                        } else {\n                            this.dataRendered = [...c.data.currentValue, ...Array.from({ length: this.virtualScrollAsyncItemsLength - c.data.currentValue.length })];\n                        }\n                    }\n\n                    this.euiTableSelectableRowService.unregisterRows();\n                    this.euiTableSelectableRowService.registerRows(this.dataRendered);\n\n                    if (this.scrollingDirection === ScrollinDirection.DOWN) {\n                        if ((this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1 ||\n                            this.scrolledIndex === this.virtualScrollSpliceFrom &&\n                            !this.dataRendered[this.scrolledIndex - 1]) &&\n                            this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== this.dataRendered.length\n                            ) {\n                            // console.log('reposition down')\n                            this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n                        }\n                    }\n\n                    if (this.scrollingDirection === ScrollinDirection.UP) {\n                        if (this.hasUndefinedInRange(this.scrolledIndex, this.nbItemDisplayed, this.dataRendered) !== -1) {\n                            // console.log('reposition up')\n                            this.cdkVirtualScrollViewport.scrollToIndex(this.virtualScrollSpliceFrom + 1);\n                        }\n                    }\n\n                    this.stickyFeatureHandler();\n                }\n            }\n        } else {\n            if (c && c.data) {\n                const lengthChanged = this.dataSrc.length !== c.data.currentValue?.length;\n                this.dataSrc = c.data.currentValue ? [...c.data.currentValue] : [];\n\n                if (this.paginator && lengthChanged) {\n                    this.paginator.goFirstPage({ emitEvent: !c.data.firstChange });\n                }\n\n                this.euiTableSelectableRowService.registerRows(this.dataSrc);\n\n                if (!this.isAsync && !c.data.isFirstChange()) {\n                    this.tableFeaturesHandlerSubscription.unsubscribe();\n                    this.tableFeaturesHandler();\n                }\n            }\n            if (c && c.paginator?.currentValue) {\n                this.paginator.setLength(this.data.length);\n                if (!c.paginator?.isFirstChange()) {\n                    this.paginator.goFirstPage({ emitEvent: false });\n                }\n            } else {\n                // this.data can be changed anytime, then this else can be executed at that time, testing this.paginator allows to make sure\n                // the user wants to disable pagination or change the datasource\n                if (!this.paginator) {\n                    this.dataRendered = this.dataSrc;\n                    this.page = 0;\n                }\n            }\n        }\n\n        if (c && c.preselectedRows && !c.preselectedRows.isFirstChange()) {\n            this.euiTableSelectableRowService.selectRows(c.preselectedRows.currentValue);\n        }\n    }\n\n    ngOnInit(): void {\n        this.dataSrc = [...this.data];\n    }\n\n    ngAfterContentInit(): void {\n        this.templates.forEach((item) => {\n            if (item.getType() === 'header') {\n                this.headerTemplate = item.template;\n            }\n            if (item.getType() === 'body') {\n                this.bodyTemplate = item.template;\n            }\n            if (item.getType() === 'footer') {\n                this.footerTemplate = item.template;\n            }\n            if (item.getType() === 'noData') {\n                this.noDataTemplate = item.template;\n            }\n            if (item.getType() === 'caption') {\n                this.captionTemplate = item.template;\n            }\n        });\n    }\n\n    ngAfterViewInit(): void {\n        this.stickyFeatureHandler();\n\n        if (this.isVirtualScroll) {\n            this.cdkVirtualScrollViewport?.renderedRangeStream\n                .pipe(debounceTime(500), takeUntil(this.destroy$))\n                .subscribe((listRange: ListRange) => {\n                    this.stickyFeatureHandler();\n                });\n\n            const theadElements = Array.from(this.theadRef.nativeElement.querySelectorAll('th'));\n            this.nbCols = new Array(theadElements.length);\n\n            this.cdkVirtualScrollViewport.scrolledIndexChange\n                .pipe(debounceTime(500), takeUntil(this.destroy$), skip(1))\n                .subscribe((scrolledIndex: number) => {\n                    if (this.isAsync) {\n                        this.scrollingDirection = scrolledIndex > this.scrolledIndex ? ScrollinDirection.DOWN : ScrollinDirection.UP;\n                        this.scrolledIndex = scrolledIndex;\n\n                        this.cdkVirtualScrollViewport.setTotalContentSize(this.virtualScrollAsyncItemsLength * this.itemSize);\n\n                        const scrollOffset = this.cdkVirtualScrollViewport.measureScrollOffset('top');\n                        const endIndex = Math.ceil((scrollOffset + this.cdkVirtualScrollViewport.getViewportSize()) / this.itemSize);\n                        this.nbItemDisplayed = endIndex - scrolledIndex;\n                        const virtualScrollCurrentMultiple = Math.floor((scrolledIndex + this.nbItemDisplayed) / this.virtualScrollNbRows);\n\n                        if (this.dataRendered[scrolledIndex] || (this.scrollingDirection === ScrollinDirection.UP && this.dataRendered[scrolledIndex - 1])) {\n                            // console.log('virtualScrollCurrentMultiple', virtualScrollCurrentMultiple)\n                            // console.log('this.virtualScrollLastMultiple', this.virtualScrollLastMultiple)\n                            // console.log('virtualScrollCurrentMultiple > this.virtualScrollLastMultiple', virtualScrollCurrentMultiple > this.virtualScrollLastMultiple)\n\n                            if (virtualScrollCurrentMultiple > this.virtualScrollLastMultiple) {\n                                this.virtualScrollSpliceFrom = virtualScrollCurrentMultiple * this.virtualScrollNbRows;\n                                this.scrollChange.emit({ start: virtualScrollCurrentMultiple * this.virtualScrollNbRows, end: this.virtualScrollNbRows });\n                            }\n                        } else {\n                            this.virtualScrollSpliceFrom = this.roundDown(scrolledIndex, this.virtualScrollNbRows);\n                            this.scrollChange.emit({ start: this.virtualScrollSpliceFrom, end: this.virtualScrollNbRows });\n                        }\n\n                        this.virtualScrollLastMultiple = virtualScrollCurrentMultiple;\n                    }\n                });\n        }\n\n        if (this.cdkVirtualScrollViewportElement) {\n            this.cdkVirtualScrollViewportElement.nativeElement.style.height = this.cdkVirtualScrollViewport.elementRef.nativeElement.parentElement.clientHeight + 'px';\n        }\n\n        const mutationObservable = new Observable<MutationRecord[]>((observer) => {\n            this.mutationObserver = new MutationObserver((mutations) => {\n                const filteredMutations = mutations.filter((mutation) => {\n                    return (\n                        mutation.target instanceof HTMLElement &&\n                        mutation.target.tagName.toLowerCase() === 'th' &&\n                        mutation.attributeName === 'style'\n                    );\n                });\n\n                if (filteredMutations.length > 0) {\n                    observer.next(filteredMutations);\n                }\n            });\n\n            if (this.theadRef) {\n                const config = { attributes: true, subtree: true, attributeFilter: ['style'] };\n                this.mutationObserver.observe(this.theadRef.nativeElement, config);\n            }\n        });\n\n        mutationObservable.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe((mutations) => {\n            this.stickyFeatureHandler();\n        });\n\n        if (!this.isAsync && !this.isVirtualScroll) {\n            this.tableFeaturesHandlerSubscription.unsubscribe();\n            this.tableFeaturesHandler();\n\n            if (this.preselectedRows) {\n                setTimeout(() => {\n                    this.euiTableSelectableRowService.selectRows(this.preselectedRows);\n                });\n            }\n        }\n\n        this.selectRowsFeatureHandler();\n        this.sortFeatureHandler();\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n        this.mutationObserver?.disconnect();\n        this.tableFeaturesHandlerSubscription.unsubscribe();\n    }\n\n    /**\n     * Moves an element within the rendered data array.\n     *\n     * @param itemId - The identifier (default: id) of the element to move.\n     * @param fromIndex - The current index of the element to move.\n     * @param toIndex - The new desired position for the element.\n     */\n    public moveItem(itemId: number | string, fromIndex: number, toIndex: number): void {\n        const itemPosition = this.dataRendered.findIndex(d => d && d[this.propId] === itemId);\n        const move = toIndex - fromIndex;\n\n        const source = [...this.dataRendered];\n        const [elementToMove] = source.splice(itemPosition, 1);\n\n        source.splice(itemPosition + move, 0, elementToMove);\n\n        this.dataRendered = source;\n    }\n\n    /**\n     * Select all rows\n     */\n    public selectAllRows(): void {\n        this.euiTableSelectableRowService.selectAllRows();\n    }\n\n    /**\n     * Unselect all rows\n     */\n    public unselectAllRows(): void {\n        this.euiTableSelectableRowService.unselectAllRows();\n    }\n\n    /**\n     * Return an array with the data matching the string filter\n     * @returns\n     */\n    public getFilteredData(): DATA[] {\n        return this.filteredData;\n    }\n\n    /**\n     * Sort the table's data.\n     *\n     * @param sorts An array of SortOrder. See {@link SortOrder}\n     */\n    public setSort(sorts: Sort[]): void {\n        this.euiTableSortService.setSorts(sorts);\n    }\n\n    /**\n     * Filters the table's data based on a string declared in `EuiTableFilterComponent`\n     *\n     * @param filter String to filter the data\n     * @param r Array of data to filter\n     * @returns The set of data matching the filter\n     */\n    public filterData(filter: string, r: DATA[]): DATA[] {\n        const rows = filter ?\n            r.filter((row) => {\n                  const matching = this.getProps(row, filter).filter((p) => p.match === true);\n                  return matching?.length > 0;\n            }) : r;\n\n        this.euiTableSelectableRowService.unregisterRows();\n        this.euiTableSelectableRowService.registerRows(rows);\n\n        this.filteredData = rows;\n\n        return rows;\n    }\n\n    /**\n     * Get the top position in px of the sticky header.\n     */\n    protected get stickyHeaderTopPosition(): string {\n        if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n            return '0';\n        }\n\n        return (-this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1) + 'px';\n    }\n\n    /**\n     * Get the bottom position in px of the sticky footer.\n     */\n    protected get stickyFooterBottomPosition(): string {\n        if (!this.cdkVirtualScrollViewport || !this.cdkVirtualScrollViewport['_renderedContentOffset']) {\n            return '-1px';\n        }\n\n        return this.cdkVirtualScrollViewport['_renderedContentOffset'] - 1 + 'px';\n    }\n\n    /**\n     * Get the width in px of the viewport in which the table is.\n     */\n    protected get cdkVirtualScrollViewportWidth(): string {\n        return (this.elementRef.nativeElement?.parentElement?.clientWidth || 0) + 'px';\n    }\n\n    /**\n     * Get the width, as a number, of the host element.\n     */\n    protected get hostWidth(): number {\n        return this.elementRef.nativeElement.style.width;\n    }\n\n    protected trackByFn(index: number): number {\n        return index;\n    }\n\n    /**\n     * Handles table features such as sorting, filtering, and pagination before rendering.\n     */\n    private tableFeaturesHandler(): void {\n        this.tableFeaturesHandlerSubscription = combineLatest(\n            this.paginator ? this.paginator.page$ : new BehaviorSubject(null),\n            this.filter ? this.filter.filter$ : new BehaviorSubject(null),\n            this.euiTableSortService.sorts,\n        ).pipe(takeUntil(this.destroy$)).subscribe(([pagination, filter, sorts]: [EuiPaginationEvent, string, Sort[]]) => {\n            let r = [...this.dataSrc];\n\n            if (sorts.length > 0) {\n                r = this.sortData(sorts, r);\n            }\n\n            r = this.filterData(filter, r);\n\n            if (this.paginator) {\n                this.paginator.setLength(r.length);\n                const currentPagination = this.paginator.getCurrentPagination();\n\n                r = this.paginateRows(currentPagination, r);\n            }\n\n            this.dataRendered = r;\n            if (this.isSelectOnlyVisibleRows) {\n                this.euiTableSelectableRowService.unselectAllRows();\n                this.euiTableSelectableRowService.unregisterRows();\n                this.euiTableSelectableRowService.registerRows(this.dataRendered);\n            }\n\n            this.cd.detectChanges();\n\n            if (this.hasStickyCols) {\n                this.stickyFeatureHandler();\n            }\n        });\n    }\n\n    /**\n     * Sorts the data based on the sort, property and order, criterias.\n     *\n     * @param sortCriterias Array of sort criterias containing the property on which the sort will be performed and the order (`ASC` or `DESC`).\n     * @param r Array of data to sort\n     * @returns A sorted array\n     */\n    private sortData(sortCriterias: { sort: string, order: SortOrder }[], r: DATA[]): DATA[] {\n        if (sortCriterias.every(criteria => criteria.order === null)) {\n            return r.slice();\n        }\n\n        return r.sort((a, b) => {\n            for (const criteria of sortCriterias) {\n                const aValue = this.getObjProp(a, criteria.sort);\n                const bValue = this.getObjProp(b, criteria.sort);\n\n                if (aValue === bValue) {\n                    continue;\n                }\n\n                if (aValue === null || aValue === undefined) {\n                    return criteria.order === 'asc' ? -1 : 1;\n                }\n                if (bValue === null || bValue === undefined) {\n                    return criteria.order === 'asc' ? 1 : -1;\n                }\n\n                if (typeof aValue === 'boolean' && typeof bValue === 'boolean') {\n                    return criteria.order === 'asc' ? (aValue ? -1 : 1) : (bValue ? -1 : 1);\n                }\n\n                if (typeof aValue === 'number' && typeof bValue === 'number') {\n                    return criteria.order === 'asc' ? aValue - bValue : bValue - aValue;\n                }\n\n                if (aValue instanceof Date && bValue instanceof Date) {\n                    return criteria.order === 'asc' ? aValue.getTime() - bValue.getTime() : bValue.getTime() - aValue.getTime();\n                }\n\n                const aValueStr = typeof aValue === 'string' ? aValue.toLowerCase() : aValue;\n                const bValueStr = typeof bValue === 'string' ? bValue.toLowerCase() : bValue;\n\n                const comparison = criteria.order === 'asc' ? aValueStr.localeCompare(bValueStr) : bValueStr.localeCompare(aValueStr);\n\n                if (comparison !== 0) {\n                    return comparison;\n                }\n            }\n\n            return 0;\n        });\n    }\n\n    /**\n     * Slices the data array based on the pagination event.\n     *\n     * @param pagination Object containing the page, the page size and the total number of pages.\n     * @param r Array of data to paginate.\n     * @returns The sliced array to render.\n     */\n    private paginateRows(pagination: EuiPaginationEvent, r: DATA[]): DATA[] {\n        this.page = pagination.page;\n        this.pageSize = pagination.pageSize;\n\n        return r.slice(this.page * this.pageSize, this.page * this.pageSize + this.pageSize);\n    }\n\n    /**\n     * Round down the index to the nearest multiple of the number of rows.\n     *\n     * @param index Index of the current scroll level.\n     * @param nbRows Number of rows to display.\n     * @returns A rounded number.\n     */\n    private roundDown(index: number, nbRows: number): number {\n        return Math.floor(index / nbRows) * nbRows;\n    }\n\n    /**\n     * Checks if in the range of data to render some of them had already been loaded or not.\n     *\n     * @param startIndex Start index of the range to check\n     * @param limit Number of item to check after the start index.\n     * @param dataRendered Array of data to check\n     * @returns The index of the first undefined item in the range or `-1` if not found.\n     */\n    private hasUndefinedInRange(startIndex: number, limit: number, dataRendered: DATA[]): number {\n        for (let i = startIndex; i < startIndex + limit; i ++) {\n            if (dataRendered[i] === undefined) {\n                return i;\n            }\n        }\n\n        return -1;\n    }\n\n    /**\n     * Calcultates the position of columns that are sticky.\n     */\n    private stickyFeatureHandler(): void {\n        setTimeout(() => {\n            const containerWidth = this.elementRef.nativeElement?.parentElement?.clientWidth || 0;\n\n            const processStickyItems = (items: HTMLTableCellElement[]): void => {\n                items.forEach((item, i) => {\n                    const isStickyFirstCol = item.offsetLeft + item.clientWidth < containerWidth;\n                    const isStickyLastCol = item.offsetLeft + item.clientWidth > containerWidth;\n\n                    const itemsSticky = isStickyFirstCol\n                        ? items.filter((it) => it.offsetLeft + it.clientWidth < containerWidth)\n                        : isStickyLastCol\n                        ? items.filter((it) => it.offsetLeft + it.clientWidth > containerWidth)\n                        : [];\n\n                    itemsSticky.forEach((it, j) => {\n                        const w = itemsSticky[j - 1]?.clientWidth;\n                        const offset = isStickyFirstCol\n                            ? parseInt(itemsSticky[j - 1]?.style.left, 10)\n                            : parseInt(itemsSticky[j - 1]?.style.right, 10);\n\n                        if (isStickyFirstCol) {\n                            it.style.left = (j === 0 ? 0 : w + offset) + 'px';\n                        } else if (isStickyLastCol) {\n                            it.style.right = (j === 0 ? 0 : w + offset) + 'px';\n                        }\n\n                        if (j + 1 === itemsSticky.length) {\n                            this.renderer.addClass(it, `eui-table__col--sticky-shadowed-${isStickyFirstCol ? 'first' : 'last'}`);\n                        }\n                    });\n                });\n            };\n\n            if (this.theadRef) {\n                const thItems: HTMLTableCellElement[] = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n                processStickyItems(thItems);\n            }\n\n            if (this.tbodyRef) {\n                const bodyTrItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));\n                bodyTrItems.forEach((tr) => {\n                    const tdItems: HTMLTableCellElement[] = Array.from(tr.querySelectorAll('.eui-table__col--sticky'));\n                    processStickyItems(tdItems);\n                });\n            }\n\n            if (this.tfootRef) {\n                const tdItems: HTMLTableCellElement[] = Array.from(this.tfootRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));\n                processStickyItems(tdItems);\n            }\n        }, 250);\n    }\n\n    /**\n     * Handles the selection of rows.\n     */\n    private selectRowsFeatureHandler(): void {\n        this.euiTableSelectableRowService.selectedRows.pipe(skip(1), takeUntil(this.destroy$)).subscribe((selected) => {\n            this.rowsSelect.emit(selected);\n        });\n    }\n\n    /**\n     * Handles the sorting of columns.\n     */\n    private sortFeatureHandler(): void {\n        this.euiTableSortService.sorts.pipe(skip(1), takeUntil(this.destroy$)).subscribe((sorts: Sort[]) => {\n            this.sortChange.emit(sorts);\n        });\n    }\n\n    /**\n     * Get the properties of the object matching the filter string.\n     *\n     * @param row Row to extract the property from.\n     * @param filter String to search in the properties.\n     * @returns An array of properties matching the filter.\n     */\n    private getProps(row: DATA, filter: string): { key: string; match: boolean; value: string | number }[] {\n        const isObject = (val: string | number): boolean => val && typeof val === 'object';\n        const addDelimiter = (a: string, b: string): string => (a && a !== '0' ? `${a}.${b}` : b);\n        const props: { key: string, match: boolean, value: string | number }[] = [];\n        const paths = (pathObj: DATA, head = ''): string[] => {\n            return Object.entries(pathObj).reduce((product, [key, value]) => {\n                const fullPath = addDelimiter(head, key);\n                const match = (v: string | number): boolean => v && typeof v !== 'object' && v?.toString().toLowerCase().indexOf(filter?.trim().toLowerCase()) !== -1;\n\n                if (key !== '0' && typeof value !== 'object') {\n                    props.push({ key: addDelimiter(head, key), match: match(value), value });\n                }\n\n                return isObject(value) ? product.concat(paths(value, fullPath)) : product.concat(fullPath);\n            }, []);\n        };\n\n        paths(row);\n        return props;\n    }\n\n    /**\n     * Get a property of an object based on the path.\n     *\n     * @param obj Row to extract the property from.\n     * @param prop Path of the property to extract.\n     * @returns The value of the property\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private getObjProp(obj: DATA, prop: string): any {\n        return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;\n    }\n}\n","@if (isVirtualScroll) {\n    <cdk-virtual-scroll-viewport\n        #cdkVirtualScrollViewport\n        #cdkVirtualScrollViewportElement\n        class=\"eui-table__scroll-viewport\"\n        [itemSize]=\"itemSize\"\n        [style.overflow]=\"cdkVirtualScrollViewportOverflowValue\"\n        tabindex=\"0\">\n        <table class=\"{{ cssClasses }}\" [style.width]=\"hostWidth\">\n            @if (captionTemplate) {\n                <caption>\n                    <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n                </caption>\n            }\n            @if (headerTemplate) {\n                <thead #theadRef [style.top]=\"stickyHeaderTopPosition\">\n                    <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n                </thead>\n            }\n            @if (bodyTemplate) {\n                <tbody #tbodyRef>\n                    <ng-container *cdkVirtualFor=\"let row of dataRendered; let i = index; trackBy: trackByFn\">\n                        @if (row) {\n                            <ng-template\n                                [ngTemplateOutlet]=\"bodyTemplate\"\n                                [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n                            </ng-template>\n                        } @else {\n                            <ng-template [ngTemplateOutlet]=\"skeletonLoading\"></ng-template>\n                        }\n                    </ng-container>\n\n                    @if (noDataTemplate && (data?.length === 0 || dataRendered?.length === 0)) {\n                        <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n                    }\n                </tbody>\n            }\n            @if (footerTemplate) {\n                <tfoot #tfootRef [style.bottom]=\"stickyFooterBottomPosition\">\n                    <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n                </tfoot>\n            }\n        </table>\n    </cdk-virtual-scroll-viewport>\n} @else {\n    @if (captionTemplate) {\n        <caption>\n            <ng-template [ngTemplateOutlet]=\"captionTemplate\"></ng-template>\n        </caption>\n    }\n    @if (headerTemplate) {\n        <thead #theadRef>\n            <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n        </thead>\n    }\n    @if (bodyTemplate) {\n        <tbody #tbodyRef>\n            @for (row of dataRendered; let i = $index; track $index) {\n                <ng-container>\n                    <ng-template\n                        [ngTemplateOutlet]=\"bodyTemplate\"\n                        [ngTemplateOutletContext]=\"{ $implicit: row, index: i }\">\n                    </ng-template>\n                </ng-container>\n            }\n            @if (noDataTemplate && (data?.length === 0 || dataRendered?.length === 0)) {\n                <ng-template [ngTemplateOutlet]=\"noDataTemplate\"></ng-template>\n            }\n        </tbody>\n    }\n    @if (footerTemplate) {\n        <tfoot #tfootRef>\n            <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n        </tfoot>\n    }\n}\n\n<ng-template #skeletonLoading>\n    <tr [style.height.px]=\"itemSize\">\n        @for (__ of nbCols; track $index) {\n            <td><eui-skeleton line euiRounded></eui-skeleton></td>\n        }\n    </tr>\n</ng-template>\n","import { Component, OnInit, Input, OnDestroy, booleanAttribute, inject } from '@angular/core';\nimport { Subject, combineLatest, takeUntil } from 'rxjs';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\n/**\n * @description\n * Component used internally by `eui-table` to add a 'select all' checkbox in the header of the table.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table euiTable [data]=\"data\" (rowsSelect)=\"onRowsSelect($event)\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr isHeaderSelectable>\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr [isDataSelectable]=\"row\">\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * \n * onRowsSelect(selected: Country[]): void {\n *     console.log(selected);\n * }\n * ```\n */\n@Component({\n    // eslint-disable-next-line\n    selector: 'tr[isHeaderSelectable]',\n    templateUrl: './eui-table-selectable-header.component.html',\n    imports: [\n        ...EUI_INPUT_CHECKBOX,\n    ],\n})\nexport class EuiTableSelectableHeaderComponent<DATA> implements OnInit, OnDestroy {\n    /**\n     * Whether select all features are available in the header.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isHeaderSelectable = true;\n\n    public isCheckedIndeterminate = false;\n    public isChecked = false;\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private euiDataTableSelectableRowService = inject<EuiTableSelectableRowService<DATA>>(EuiTableSelectableRowService);\n\n    ngOnInit(): void {\n        combineLatest([\n            this.euiDataTableSelectableRowService.isAllRowsSelected,\n            this.euiDataTableSelectableRowService.selectedRows,\n        ]).pipe(takeUntil(this.destroy$)).subscribe(([allSelected, selectedRows]) => {\n            this.isChecked = allSelected;\n            this.isCheckedIndeterminate = !allSelected && selectedRows.length > 0;\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Gets the `aria-label` attribute for the checkbox element.\n     *\n     * @default `Unchecked`\n     */\n    get ariaLabel(): string {\n        if(!this.isChecked && !this.isCheckedIndeterminate) {\n            return 'Unchecked';\n        }\n        if(this.isCheckedIndeterminate) {\n            return 'Indeterminate';\n        }\n        if(this.isChecked && !this.isCheckedIndeterminate) {\n            return 'Checked';\n        }\n    }\n\n    /**\n     * Handle the change of the selected status.\n     *\n     * @param e Change Event\n     */\n    public toggleCheckedState(e: Event): void {\n        this.isChecked = (e.target as HTMLInputElement).checked;\n\n        if (this.isChecked) {\n            this.euiDataTableSelectableRowService.selectAllRows();\n        } else {\n            this.euiDataTableSelectableRowService.unselectAllRows();\n        }\n    }\n}\n","@if (isHeaderSelectable) {\n    <th class=\"eui-table__cell-select\">\n        <div class=\"eui-table__cell-select-checkbox-container\">\n            <input [attr.aria-label]=\"ariaLabel\" euiInputCheckBox [checked]=\"isChecked ? 'checked' : null\" [indeterminate]=\"isCheckedIndeterminate\" (click)=\"toggleCheckedState($event)\" />\n        </div>\n    </th>\n}\n<ng-content />\n","import { Component, OnInit, Input, OnDestroy, OnChanges, HostBinding, booleanAttribute, ElementRef, SimpleChanges, inject } from '@angular/core';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\nimport { FormsModule } from '@angular/forms';\n\nimport { EUI_INPUT_CHECKBOX } from '@eui/components/eui-input-checkbox';\n\nimport { EuiTableSelectableRowService } from '../services/eui-table-selectable-row.service';\n\n/**\n * @description\n * Component used internally by `eui-table` to make a row selectable.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table euiTable [data]=\"data\" (rowsSelect)=\"onRowsSelect($event)\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr isHeaderSelectable>\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr [isDataSelectable]=\"row\">\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * \n * onRowsSelect(selected: Country[]): void {\n *     console.log(selected);\n * }\n * ```\n */\n@Component({\n    // eslint-disable-next-line\n    selector: 'tr[isDataSelectable]',\n    templateUrl: './eui-table-selectable-row.component.html',\n    imports: [\n        FormsModule,\n        ...EUI_INPUT_CHECKBOX,\n    ],\n})\nexport class EuiTableSelectableRowComponent<DATA> implements OnInit, OnDestroy, OnChanges {\n    /**\n     * Data of the row.\n     */\n    @Input() isDataSelectable: DATA;\n    /**\n     * Wheter only one row is selectable.\n     * \n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isSingleSelectable = false;\n    /**\n     * Wheter the row is selected.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChecked = false;\n    /**\n     * Wheter the selection can be done with the keyboard.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isKeyboardSelectable = false;\n\n    private propId = 'id';\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    public get cssClasses(): string {\n        return [\n            'eui-table__row',\n            this.isDataSelectable ? 'eui-table__row--selectable' : '',\n            this.isChecked ? 'eui-table__row--selected' : '',\n        ]\n            .join(' ')\n            .trim();\n    }\n    private euiDataTableSelectableRowService = inject<EuiTableSelectableRowService<DATA>>(EuiTableSelectableRowService);\n    private elementRef = inject(ElementRef);\n\n    ngOnChanges(c: SimpleChanges): void {\n        if (c && c.isChecked) {\n            if (c.isChecked.currentValue) {\n                this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n            } else {\n                this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n            }\n        }\n\n        const selected = this.euiDataTableSelectableRowService.selectedRows$.getValue();\n        this.isChecked = selected.some((s) => s[this.propId] === this.isDataSelectable?.[this.propId]);\n    }\n\n    ngOnInit(): void {\n        if (this.isKeyboardSelectable && this.isDataSelectable) {\n            fromEvent<PointerEvent>(this.elementRef.nativeElement, 'click').pipe(takeUntil(this.destroy$)).subscribe((event) => {\n                if (event.ctrlKey) {\n                    if (!this.isChecked) {\n                        this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n                    } else {\n                        this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n                    }\n                } else if (event.shiftKey) {\n                    const rows = this.euiDataTableSelectableRowService.getRows();\n                    const lastSelectedRow = this.euiDataTableSelectableRowService.getLastSelectedRow();\n                    const lastSelectedRowPosition = rows.indexOf(lastSelectedRow);\n                    const position = rows.indexOf(this.isDataSelectable);\n\n                    const range =\n                        lastSelectedRowPosition > position\n                            ? rows.slice(position, lastSelectedRowPosition + 1)\n                            : rows.slice(lastSelectedRowPosition, position + 1);\n\n                    this.euiDataTableSelectableRowService.selectRows(range);\n\n                    window.getSelection()?.empty();\n                } else {\n                    this.euiDataTableSelectableRowService.selectRows([this.isDataSelectable]);\n                }\n            });\n        }\n\n        this.propId = this.euiDataTableSelectableRowService.getPropId();\n        this.euiDataTableSelectableRowService.selectedRows.pipe(takeUntil(this.destroy$)).subscribe((selected) => {\n            this.isChecked = selected.find((s) => s[this.propId] === this.isDataSelectable?.[this.propId]) !== undefined;\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Handle the change of the selected status.\n     *\n     * @param e Change Event\n     */\n    public toggleCheckedState(e: Event): void {\n        this.isChecked = (e.target as HTMLInputElement).checked;\n\n        if (this.isChecked) {\n            if (this.isSingleSelectable) {\n                this.euiDataTableSelectableRowService.selectSingleRow(this.isDataSelectable);\n            } else {\n                this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n            }\n            this.euiDataTableSelectableRowService.selectRow(this.isDataSelectable);\n        } else {\n            this.euiDataTableSelectableRowService.unselectRow(this.isDataSelectable);\n        }\n    }\n}\n","@if (isDataSelectable) {\n    <td class=\"eui-table__cell-select\">\n        <div class=\"eui-table__cell-select-checkbox-container\">\n            <input\n                euiInputCheckBox\n                [attr.aria-label]=\"isChecked ? 'default checkbox checked' : 'default checkbox unchecked'\"\n                [(ngModel)]=\"isChecked\"\n                (change)=\"toggleCheckedState($event)\" />\n        </div>\n    </td>\n}\n<ng-content />\n","import { Directive, HostBinding } from '@angular/core';\n\n/**\n * @description\n * Directive used to activate the sticky feature on a column of the table.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <div class=\"eui-table__scrollable-wrapper\" style=\"width: 800px; height: 600px; overflow: auto\" tabindex=\"0\">\n *     <table euiTable hasStickyHeader hasStickyFooter hasStickyCols [data]=\"data\" style=\"width: 1400px\">\n *         <ng-template euiTemplate=\"header\">\n *             <tr>\n *                 <th isStickyCol>Country</th>\n *                 <th>Year</th>\n *                 <th>ISO</th>\n *                 <th>Population</th>\n *                 <th>Capital city</th>\n *             </tr>\n *         </ng-template>\n *         <ng-template let-row euiTemplate=\"body\">\n *             <tr>\n *                 <td isStickyCol>{{ row.country }}</td>\n *                 <td>{{ row.year }}</td>\n *                 <td>{{ row.iso }}</td>\n *                 <td>{{ row.population | number }}</td>\n *                 <td>{{ row.capital }}</td>\n *             </tr>\n *         </ng-template>\n *         <ng-template euiTemplate=\"footer\">\n *             <tr>\n *                 <td isStickyCol class=\"eui-u-text-center\">Footer</td>\n *                 <td class=\"eui-u-text-center\">Footer</td>\n *                 <td class=\"eui-u-text-center\">Footer</td>\n *                 <td class=\"eui-u-text-center\">Footer</td>\n *                 <td class=\"eui-u-text-center\">Footer</td>\n *             </tr>\n *         </ng-template>\n *     </table>\n * </div>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * ```\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'th[isStickyCol], td[isStickyCol]',\n})\nexport class EuiTableStickyColDirective {\n    @HostBinding('class') class = 'eui-table__col--sticky';\n}\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, HostBinding, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject, BehaviorSubject, takeUntil, debounceTime, distinctUntilChanged } from 'rxjs';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_ICON_INPUT } from '@eui/components/eui-icon-input';\nimport { EUI_INPUT_TEXT } from '@eui/components/eui-input-text';\n\n/**\n * @description\n * Component used with `eui-table` to add a filter feature to the table.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <eui-table-filter #filter placeholder=\"Search filter...\" (filterChange)=\"onFilterChange($event)\"></eui-table-filter>\n * <table #euiTable euiTable [data]=\"data\" [filter]=\"filter\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr>\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr>\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n *     <ng-template euiTemplate=\"footer\">\n *         <tr>\n *             <td colspan=\"5\" class=\"text-right\">Table footer</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * \n * onFilterChange(event: string) {\n *     this.filteredData = this.euiTable.getFilteredData();\n *     this.getTotalPopulation();\n * }\n * ```\n */\n@Component({\n    selector: 'eui-table-filter',\n    templateUrl: './eui-table-filter.component.html',\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        ReactiveFormsModule,\n        ...EUI_ICON,\n        ...EUI_ICON_INPUT,\n        ...EUI_INPUT_TEXT,\n    ],\n})\nexport class EuiTableFilterComponent implements OnInit, OnDestroy {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [\n            'eui-table__filter',\n        ]\n            .join(' ')\n            .trim();\n    }\n\n    /**\n     * Placeholder text for the filter input.\n     */\n    @Input() placeholder: string;\n\n    /**\n     * Event emitted when the value of the input changes.\n     */\n    @Output() filterChange = new EventEmitter<string>();\n\n    @ViewChild('filterInput', { read: ElementRef }) filterInput: ElementRef<HTMLInputElement>;\n\n    public filter$: BehaviorSubject<string> = new BehaviorSubject(null);\n    public form = new FormGroup({\n        filter: new FormControl<string>(null),\n    });\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n\n    ngOnInit(): void {\n        this.form.get('filter').valueChanges.pipe(debounceTime(500), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe((value) => {\n            this.setFilter(value);\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Set the filter value and emit the change event.\n     *\n     * @param value Value of the input.\n     */\n    public setFilter(value: string): void {\n        this.filter$.next(value);\n        this.filterChange.emit(value);\n        this.form.get('filter').setValue(value);\n    }\n\n    /**\n     * Reset the filter and emit the change event.\n     */\n    public resetFilter(): void {\n        this.setFilter(null);\n        this.form.reset();\n        this.filterInput.nativeElement.focus();\n    }\n}\n","<div class=\"eui-table__filter\">\n    <form [formGroup]=\"form\">\n        <eui-icon-input>\n            <eui-icon-svg icon=\"eui-search\" fillColor=\"secondary\"></eui-icon-svg>\n            <input #filterInput\n                euiClearable\n                euiInputText\n                class=\"eui-table__filter-input\"\n                formControlName=\"filter\"\n                [attr.aria-label]=\"form.get('filter').value ? form.get('filter').value : placeholder\"\n                placeholder=\"{{ placeholder }}\" />\n        </eui-icon-input>\n    </form>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description\n * Pipe used to highlight the matching string in the data of the table when used with filter feature.\n *\n * @example\n * ```\n * <td><span [innerHTML]=\"row.year | euiTableHighlight: strFilter\"></span></td>\n *\n * strFilter = '19'\n * ```\n */\n@Pipe({\n    name: 'euiTableHighlight',\n})\nexport class EuiTableHighlightPipe implements PipeTransform {\n    /**\n     * Wrap a matching string with a span element with a class name in the data of the table\n     *\n     * @param value Data displayed in a cell.\n     * @param strFilter Search string to highlight.\n     * @param className CSS class to add to the span element. Default: 'eui-u-text-search'\n     * @returns\n     */\n    transform(value: string, strFilter: string, className = 'eui-u-text-search'): string {\n        if (!value) return '';\n        if (!strFilter || strFilter.length === 0) return value;\n\n        const generateVariants = (str: string): string[] => {\n            const variants: Set<string> = new Set([str]);\n\n            for (let j = 1; j <= 3; j++) {\n                for (const separator of ['.', ',', ' ']) {\n                    let newVariant = str;\n                    let i = j;\n\n                    while (i < newVariant.length) {\n                        newVariant = newVariant.slice(0, i) + separator + newVariant.slice(i);\n                        i += 4;\n                    }\n                    variants.add(newVariant);\n                }\n            }\n            return Array.from(variants);\n        };\n\n        const isNumber = (str: string): boolean => !isNaN(Number(str)) && str.trim() !== '';\n        const variants = isNumber(strFilter) ? generateVariants(strFilter) : [strFilter];\n        const regex = new RegExp(`(${variants.map(v => v.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|')})`, 'gi');\n\n        return value.toString().replace(regex, `<span class=\"${className}\">$1</span>`);\n    }\n\n}\n","import { Component, OnInit, OnDestroy, Input, HostBinding, booleanAttribute, ViewChild, inject, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { EUI_ICON } from '@eui/components/eui-icon';\nimport { EUI_BUTTON } from '@eui/components/eui-button';\nimport { EUI_ICON_BUTTON } from '@eui/components/eui-icon-button';\nimport { EuiDropdownComponent } from '@eui/components/eui-dropdown';\n\nimport { EuiTableSortService } from '../services/eui-table-sort.service';\nimport { SortOrder } from '../models/sort.model';\n\n/**\n * @description\n * Component used internally by `eui-table` to make a column sortable.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table euiTable [data]=\"data\" (sortChange)=\"onSortChange($event)\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr>\n *             <th isSortable sortOn=\"id\">Id</th>\n *             <th isSortable sortOn=\"country\">Country</th>\n *             <th isSortable sortOn=\"year\">Year</th>\n *             <th isSortable sortOn=\"iso\">ISO</th>\n *             <th isSortable sortOn=\"population\">Population</th>\n *             <th isSortable sortOn=\"capital\">Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr>\n *             <td data-col-label=\"Id\"><span euiBadge>{{ row.id }}</span></td>\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *     </ng-template>\n *     <ng-template euiTemplate=\"footer\">\n *         <tr>\n *             <td class=\"eui-u-text-center\" colspan=\"6\">Footer</td>\n *         </tr>\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * \n * onSortChange(e: Sort[]) {\n *     console.log(e);\n * }\n * ```\n */\n@Component({\n    // eslint-disable-next-line\n    selector: 'th[isSortable]',\n    templateUrl: './eui-table-sortable-col.component.html',\n    imports: [\n        TranslateModule,\n        ...EUI_ICON,\n        ...EUI_BUTTON,\n        ...EUI_ICON_BUTTON,\n    ],\n})\nexport class EuiTableSortableColComponent implements OnInit, OnDestroy {\n    /**\n     * @description\n     * Computes and returns the CSS classes for the component based on its current state.\n     *\n     * @returns {string} Space-separated string of CSS class names\n     */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return ['eui-table__sortable-col', this.sortDisabled ? 'eui-table__sortable-col--disabled' : ''].join(' ').trim();\n    }\n\n    /**\n     * @description\n     * Returns the aria-sort value based on current sort order for accessibility.\n     *\n     * @returns {string} ARIA sort state: 'ascending', 'descending', or 'none'\n     */\n    @HostBinding('attr.aria-sort')\n    get ariaSort(): 'ascending' | 'descending' | 'none' {\n        if (this.order === 'asc') return 'ascending';\n        if (this.order === 'desc') return 'descending';\n        return 'none';\n    }\n\n    sortOn = input<string>();\n    sortOrder = input<SortOrder>('asc');\n\n    /**\n     * Whether the column is sorted by default.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) defaultOrder = false;\n    /**\n     * Whether the sort is disabled on the column.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) sortDisabled = false;\n    /**\n     * Whether the sorting of the column can be cumulated with the one of other column.\n     *\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isMultiSortable = false;\n\n    public order: SortOrder = 'none';\n    public isSorted = false;\n    public sortedIndex: number = null;\n\n    @ViewChild('euiDropdown') euiDropdown: EuiDropdownComponent;\n\n    private destroy$: Subject<boolean> = new Subject<boolean>();\n    private euiTableSortService = inject(EuiTableSortService);\n\n    ngOnInit(): void {\n        this.euiTableSortService.sorts.pipe(takeUntil(this.destroy$)).subscribe((sorts) => {\n            const isSorted = sorts.find(s => s.sort === this.sortOn());\n            this.isSorted = isSorted !== undefined;\n            if (this.isSorted) {\n                this.order = isSorted.order;\n                if (sorts.length > 1) {\n                    this.sortedIndex = sorts.findIndex(s => s.sort === this.sortOn()) + 1;\n                } else {\n                    this.sortedIndex = null;\n                }\n            } else {\n                this.order = 'none';\n                this.sortedIndex = null;\n            }\n        });\n\n        if (this.defaultOrder) {\n            this.order = this.sortOrder();\n            this.euiTableSortService.setSort(this.sortOn(), this.order, this.isMultiSortable);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.unsubscribe();\n    }\n\n    /**\n     * Handles the click event on the sortable column.\n     */\n    public changeSort(): void {\n        if (!this.sortDisabled) {\n            if (this.order === 'asc') {\n                this.order = 'desc';\n            } else if (this.order === 'desc') {\n                this.order = 'none';\n            } else if (this.order === 'none') {\n                this.order = 'asc';\n            }\n\n            this.euiTableSortService.setSort(this.sortOn(), this.order, this.isMultiSortable);\n        }\n    }\n\n    /**\n     * Handles the click event on the dropdown item when the column is multi-sortable.\n     * @param order An array of SortOrder. See {@link SortOrder}\n     */\n    public onDropdownItemClick(order: SortOrder): void {\n        this.euiTableSortService.setSort(this.sortOn(), order, this.isMultiSortable);\n    }\n}\n","<div class=\"eui-table__sortable-col-content\">\n    <div class=\"eui-table__sortable-col-content-label\">\n        <ng-content></ng-content>\n\n        @if (order === 'none' && !sortDisabled) {\n            <eui-icon-button class=\"eui-u-ml-xs\" icon=\"eui-arrows-down-up\" ariaLabel=\"'Click to sort ascending'\" (click)=\"changeSort()\" />\n        }\n        @if (order === 'asc' && isSorted && !sortDisabled) {\n            <eui-icon-button class=\"eui-u-ml-xs\" euiPrimary icon=\"eui-arrow-up\" ariaLabel=\"'Click to sort descending'\" (click)=\"changeSort()\" />\n        }\n        @if (order === 'desc' && isSorted && !sortDisabled) {\n            <eui-icon-button class=\"eui-u-ml-xs\" euiPrimary icon=\"eui-arrow-down\" ariaLabel=\"'Click to sort none'\" (click)=\"changeSort()\" />\n        }\n\n        @if (sortedIndex && !sortDisabled) {\n            <button euiSizeS euiButton euiBasicButton (click)=\"changeSort()\">\n                <span class=\"eui-table__sortable-col-multisort-index\">{{ sortedIndex }}</span>\n            </button>\n        }\n    </div>\n</div>\n","import { Directive, HostBinding, ElementRef, OnInit, inject } from '@angular/core';\nimport { AnimationBuilder, AnimationPlayer, animate, style } from '@angular/animations';\n\n/**\n * @description\n * Directive used to activate the expandable feature on a row of the table.\n * \n * @usageNotes\n * ### Basic Usage\n * ```html\n * <table euiTable [data]=\"data\">\n *     <ng-template euiTemplate=\"header\">\n *         <tr>\n *             <th aria-hidden=\"true\"></th>\n *             <th>Country</th>\n *             <th>Year</th>\n *             <th>ISO</th>\n *             <th>Population</th>\n *             <th>Capital city</th>\n *         </tr>\n *     </ng-template>\n *     <ng-template let-row euiTemplate=\"body\">\n *         <tr>\n *             <td data-col-label=\"Click to expand/collapse\">\n *                 <eui-icon-button\n *                     size=\"s\"\n *                     [icon]=\"!row.expanded ? 'eui-chevron-right' : 'eui-chevron-down'\"\n *                     [aria-label]=\"row.expanded ? 'Collapse row for ' + row.country : 'Expand row for ' + row.country\"\n *                     (click)=\"row.expanded = !row.expanded;\" />\n *             </td>\n *             <td data-col-label=\"Country\">{{ row.country }}</td>\n *             <td data-col-label=\"Year\">{{ row.year }}</td>\n *             <td data-col-label=\"ISO\">{{ row.iso }}</td>\n *             <td data-col-label=\"Population\">{{ row.population | number }}</td>\n *             <td data-col-label=\"Capital city\">{{ row.capital }}</td>\n *         </tr>\n *         \\@if(row.expanded) {\n *             <tr isExpandableRow>\n *                 <td colspan=\"6\" class=\"p-3\">\n *                     <h4 class=\"eui-u-text-h4\">Expanded row content for {{ row.country }}</h4>\n *                     <div class=\"row\">\n *                         <div class=\"col-md-3\">\n *                             <span class=\"eui-flag-icon eui-flag-icon-{{ row.iso.toLowerCase() }} eui-flag-icon-5x\"></span>\n *                         </div>\n *                         <div class=\"col-md-9\">\n *                             <span>Capital city : <strong>{{ row.capital }}</strong></span><br>\n *                             <span>Population : <strong>{{ row.population | number }}</strong></span><br>\n *                             <span>Year : <strong>{{ row.year }}</strong></span><br>\n *                         </div>\n *                     </div>\n *                 </td>\n *             </tr>\n *         }\n *     </ng-template>\n * </table>\n * ```\n * Typescript logic\n * ```ts\n * data: Country[] = [\n *     { id: 1, country: 'Belgium', year: 1958, iso: 'BE', population: 11198638, capital: 'Brussels' },\n * ]\n * ```\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'tr[isExpandableRow]',\n})\nexport class EuiTableExpandableRowDirective implements OnInit {\n    @HostBinding('class') string = 'eui-table-expandable-row';\n    private animationPlayer: AnimationPlayer;\n\n    get isOpen(): boolean {\n        return true;\n    }\n    private el = inject(ElementRef);\n    private animationBuilder = inject(AnimationBuilder);\n\n    ngOnInit(): void {\n        const animation = this.animationBuilder.build([\n            style({ opacity: 0 }),\n            animate('250ms', style({ opacity: 1 })),\n        ]);\n\n        this.animationPlayer = animation.create(this.el.nativeElement);\n        this.animationPlayer.play();\n    }\n}\n","import { EuiTableComponent } from './eui-table.component';\nimport { EuiTableSelectableHeaderComponent } from './selectable-header/eui-table-selectable-header.component';\nimport { EuiTableSelectableRowComponent } from './selectable-row/eui-table-selectable-row.component';\nimport { EuiTableStickyColDirective } from './directives/eui-table-sticky-col.directive';\nimport { EuiTableFilterComponent } from './filter/eui-table-filter.component';\nimport { EuiTableHighlightPipe } from './pipes/eui-table-highlight.pipe';\nimport { EuiTableSortableColComponent } from './sortable-col/eui-table-sortable-col.component';\nimport { EuiTableExpandableRowDirective } from './directives/eui-table-expandable-row.directive';\nimport { EuiTemplateDirective } from '@eui/components/directives';\n\nexport * from './eui-table.component';\nexport * from './directives/eui-table-sticky-col.directive';\nexport * from './directives/eui-table-expandable-row.directive';\nexport * from './selectable-header/eui-table-selectable-header.component';\nexport * from './selectable-row/eui-table-selectable-row.component';\nexport * from './filter/eui-table-filter.component';\nexport * from './pipes/eui-table-highlight.pipe';\nexport * from './sortable-col/eui-table-sortable-col.component';\nexport * from './models/sort.model';\n\nexport const EUI_TABLE = [\n    EuiTableComponent,\n    EuiTableSelectableHeaderComponent,\n    EuiTableSelectableRowComponent,\n    EuiTableStickyColDirective,\n    EuiTableFilterComponent,\n    EuiTableHighlightPipe,\n    EuiTableSortableColComponent,\n    EuiTableExpandableRowDirective,\n    EuiTemplateDirective,\n] as const;","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}