{"version":3,"file":"igniteui-angular-grids-hierarchical-grid.mjs","sources":["../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid-base.directive.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island-api.service.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/row-island.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.pipes.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-cell.component.ts","../../../projects/igniteui-angular/grids/core/src/cell.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/child-grid-row.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.component.html","../../../projects/igniteui-angular/grids/hierarchical-grid/src/hierarchical-grid.module.ts","../../../projects/igniteui-angular/grids/hierarchical-grid/src/igniteui-angular-grids-hierarchical-grid.ts"],"sourcesContent":["import { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { GridBaseAPIService, GridType } from 'igniteui-angular/grids/core';\nimport { IPathSegment } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridAPIService extends GridBaseAPIService<GridType> {\n    protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n    protected childGrids: Map<string, Map<any, GridType>> =\n        new Map<string, Map<any, GridType>>();\n\n    public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n        this.childRowIslands.set(rowIsland.key, rowIsland);\n        this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n    }\n\n    public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n        this.childGrids.delete(rowIsland.key);\n        this.childRowIslands.delete(rowIsland.key);\n        this.destroyMap.delete(rowIsland.key);\n    }\n\n    public getChildRowIsland(key: string) {\n        return this.childRowIslands.get(key);\n    }\n\n    public getChildGrid(path: Array<IPathSegment>): GridType | undefined {\n        const currPath = path;\n        let grid;\n        const pathElem = currPath.shift();\n        const childrenForLayout = this.childGrids.get(pathElem.rowIslandKey);\n        if (childrenForLayout) {\n            const childGrid = childrenForLayout.get(pathElem.rowKey);\n            if (currPath.length === 0) {\n                grid = childGrid;\n            } else {\n                grid = childGrid.gridAPI.getChildGrid(currPath);\n            }\n        }\n        return grid;\n    }\n\n    public getChildGrids(inDepth?: boolean) {\n        let allChildren: GridType [] = [];\n        this.childGrids.forEach((layoutMap) => {\n            layoutMap.forEach((grid) => {\n                allChildren.push(grid);\n                if (inDepth) {\n                    const children = grid.gridAPI.getChildGrids(inDepth);\n                    allChildren = allChildren.concat(children);\n                }\n            });\n        });\n\n        return allChildren;\n    }\n\n    public getParentRowId(childGrid: GridType) {\n        let rowID;\n        this.childGrids.forEach((layoutMap) => {\n            layoutMap.forEach((grid, key) => {\n                if (grid === childGrid) {\n                    rowID = key;\n                    return;\n                }\n            });\n        });\n        return rowID;\n    }\n\n    public registerChildGrid(parentRowID: any, rowIslandKey: string, grid: GridType) {\n        let childrenForLayout = this.childGrids.get(rowIslandKey);\n        if (!childrenForLayout) {\n            this.childGrids.set(rowIslandKey, new Map<any, GridType>());\n            childrenForLayout = this.childGrids.get(rowIslandKey);\n        }\n        childrenForLayout.set(parentRowID, grid);\n    }\n\n    public getChildGridsForRowIsland(rowIslandKey: string): GridType[] {\n        const childrenForLayout = this.childGrids.get(rowIslandKey);\n        const children = [];\n        if (childrenForLayout) {\n            childrenForLayout.forEach((child) => {\n                children.push(child);\n            });\n        }\n        return children;\n    }\n\n    public getChildGridByID(rowIslandKey, rowID) {\n        const childrenForLayout = this.childGrids.get(rowIslandKey);\n        return childrenForLayout.get(rowID);\n    }\n\n    public override get_row_expansion_state(record: any): boolean {\n        let inState;\n        if (record.childGridsData !== undefined) {\n            const ri = record.key;\n            const states = this.grid.expansionStates;\n            const expanded = states.get(ri);\n            if (expanded !== undefined) {\n                return expanded;\n            } else {\n                return this.grid.getDefaultExpandState(record);\n            }\n        } else {\n            inState = !!super.get_row_expansion_state(record);\n        }\n        return inState && (this.grid as any).childLayoutList.length !== 0;\n    }\n\n    public override allow_expansion_state_change(rowID, expanded): boolean {\n        const rec = this.get_rec_by_id(rowID);\n        const grid = (this.grid as any);\n        if (grid.hasChildrenKey && !rec[grid.hasChildrenKey]) {\n            return false;\n        }\n        return !!rec && this.grid.expansionStates.get(rowID) !== expanded;\n    }\n\n    public override get_rec_by_id(rowID): any {\n        const data = this.get_all_data(false);\n        const index = this.get_row_index_in_data(rowID, data);\n        return data[index];\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { first } from 'rxjs/operators';\nimport { GridType, RowType, SUPPORTED_KEYS } from 'igniteui-angular/grids/core';\nimport { IActiveNode, IgxGridNavigationService } from 'igniteui-angular/grids/core';\nimport { IPathSegment, NAVIGATION_KEYS } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxHierarchicalGridNavigationService extends IgxGridNavigationService {\n    protected _pendingNavigation = false;\n\n\n    public override dispatchEvent(event: KeyboardEvent) {\n        const key = event.key.toLowerCase();\n        const cellOrRowInEdit = this.grid.crudService.cell || this.grid.crudService.row;\n        if (!this.activeNode || !(SUPPORTED_KEYS.has(key) || (key === 'tab' && cellOrRowInEdit))) {\n            return;\n        }\n\n        const targetGrid = this.getClosestElemByTag(event.target, 'igx-hierarchical-grid')\n            || this.getClosestElemByTag(event.target, 'igc-hierarchical-grid');\n        if (targetGrid !== this.grid.nativeElement) {\n            return;\n        }\n\n        if (this._pendingNavigation && NAVIGATION_KEYS.has(key)) {\n            // In case focus needs to be moved from one grid to another, however there is a pending scroll operation\n            // which is an async operation, any additional navigation keys should be ignored\n            // untill operation complete.\n            event.preventDefault();\n            return;\n        }\n        super.dispatchEvent(event);\n    }\n\n    public override navigateInBody(rowIndex, visibleColIndex, cb: (arg: any) => void = null): void {\n        const rec = this.grid.dataView[rowIndex];\n        if (rec && this.grid.isChildGridRecord(rec)) {\n             // target is child grid\n            const virtState = this.grid.verticalScrollContainer.state;\n             const inView = rowIndex >= virtState.startIndex && rowIndex <= virtState.startIndex + virtState.chunkSize;\n             const isNext =  this.activeNode.row < rowIndex;\n             const targetLayoutIndex = isNext ? null : this.grid.childLayoutKeys.length - 1;\n             if (inView) {\n                this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n            } else {\n                let scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(rowIndex, !isNext);\n                scrollAmount += isNext ? 1 : -1;\n                this.grid.verticalScrollContainer.getScroll().scrollTop = scrollAmount;\n                this._pendingNavigation = true;\n                this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n                    this._moveToChild(rowIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n                    this._pendingNavigation = false;\n                });\n            }\n            return;\n        }\n\n        const isLast = rowIndex === this.grid.dataView.length;\n        if ((rowIndex === -1 || isLast) &&\n            this.grid.parent !== null) {\n            // reached end of child grid\n            const nextSiblingIndex = this.nextSiblingIndex(isLast);\n            if (nextSiblingIndex !== null) {\n                this.grid.parent.navigation._moveToChild(this.grid.childRow.index, visibleColIndex, isLast, nextSiblingIndex, cb);\n            } else {\n                this._moveToParent(isLast, visibleColIndex, cb);\n            }\n            return;\n        }\n\n        if (this.grid.parent) {\n            const isNext = this.activeNode && typeof this.activeNode.row === 'number' ? rowIndex > this.activeNode.row : false;\n            const cbHandler = (args) => {\n                this._handleScrollInChild(rowIndex, isNext);\n                cb(args);\n            };\n            if (!this.activeNode) {\n                this.activeNode = { row: null, column: null };\n            }\n            super.navigateInBody(rowIndex, visibleColIndex, cbHandler);\n            return;\n        }\n\n        if (!this.activeNode) {\n            this.activeNode = { row: null, column: null };\n        }\n        super.navigateInBody(rowIndex, visibleColIndex, cb);\n    }\n\n    public override shouldPerformVerticalScroll(index, visibleColumnIndex = -1, isNext?) {\n        const targetRec = this.grid.dataView[index];\n        if (this.grid.isChildGridRecord(targetRec)) {\n            const scrollAmount = this.grid.verticalScrollContainer.getScrollForIndex(index, !isNext);\n            const currScroll = this.grid.verticalScrollContainer.getScroll().scrollTop;\n            const shouldScroll = !isNext ? scrollAmount > currScroll : currScroll < scrollAmount;\n            return shouldScroll;\n        } else {\n            return super.shouldPerformVerticalScroll(index, visibleColumnIndex);\n        }\n    }\n\n    public override focusTbody(event) {\n        if (!this.activeNode || this.activeNode.row === null) {\n            this.activeNode = {\n                row: 0,\n                column: 0\n            };\n\n            this.grid.navigateTo(0, 0, (obj) => {\n                this.grid.clearCellSelection();\n                obj.target.activate(event);\n            });\n\n        } else {\n            super.focusTbody(event);\n        }\n    }\n\n    protected nextSiblingIndex(isNext) {\n        const layoutKey = this.grid.childRow.layout.key;\n        const layoutIndex = this.grid.parent.childLayoutKeys.indexOf(layoutKey);\n        const nextIndex = isNext ? layoutIndex + 1 : layoutIndex - 1;\n        if (nextIndex <= this.grid.parent.childLayoutKeys.length - 1 && nextIndex > -1) {\n            return nextIndex;\n        } else {\n            return null;\n        }\n    }\n\n    /**\n     * Handles scrolling in child grid and ensures target child row is in main grid view port.\n     *\n     * @param rowIndex The row index which should be in view.\n     * @param isNext  Optional. Whether we are navigating to next. Used to determine scroll direction.\n     * @param cb  Optional.Callback function called when operation is complete.\n     */\n    protected _handleScrollInChild(rowIndex: number, isNext?: boolean, cb?: () => void) {\n        const shouldScroll = this.shouldPerformVerticalScroll(rowIndex, -1, isNext);\n        if (shouldScroll) {\n            this.grid.navigation.performVerticalScrollToCell(rowIndex, -1, () => {\n                this.positionInParent(rowIndex, isNext, cb);\n            });\n        } else {\n            this.positionInParent(rowIndex, isNext, cb);\n        }\n    }\n\n    /**\n     *\n     * @param rowIndex Row index that should come in view.\n     * @param isNext  Whether we are navigating to next. Used to determine scroll direction.\n     * @param cb  Optional.Callback function called when operation is complete.\n     */\n    protected positionInParent(rowIndex, isNext, cb?: () => void) {\n        const row = this.grid.gridAPI.get_row_by_index(rowIndex);\n        if (!row) {\n            if (cb) {\n                cb();\n            }\n            return;\n        }\n        const positionInfo = this.getPositionInfo(row, isNext);\n        if (!positionInfo.inView) {\n            // stop event from triggering multiple times before scrolling is complete.\n            this._pendingNavigation = true;\n            const scrollableGrid = isNext ? this.getNextScrollableDown(this.grid) : this.getNextScrollableUp(this.grid);\n            scrollableGrid.grid.verticalScrollContainer.recalcUpdateSizes();\n            scrollableGrid.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n            scrollableGrid.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n                this._pendingNavigation = false;\n                if (cb) {\n                    cb();\n                }\n            });\n        } else {\n            if (cb) {\n                cb();\n            }\n        }\n    }\n\n    /**\n     * Navigates to the specific child grid based on the array of paths leading to it\n     *\n     * @param pathToChildGrid Array of IPathSegments that describe the path to the child grid\n     * each segment is described by the rowKey of the parent row and the rowIslandKey.\n     */\n    public navigateToChildGrid(pathToChildGrid: IPathSegment[], cb?: () => void) {\n        if (pathToChildGrid.length == 0) {\n            if (cb) {\n                cb();\n            }\n            return;\n        }\n        const pathElem = pathToChildGrid.shift();\n        const rowKey = pathElem.rowKey;\n        const rowIndex = this.grid.gridAPI.get_row_index_in_data(rowKey);\n        if (rowIndex === -1) {\n            if (cb) {\n                cb();\n            }\n            return;\n        }\n        // scroll to row, since it can be out of view\n        this.performVerticalScrollToCell(rowIndex, -1, () => {\n            this.grid.cdr.detectChanges();\n            // next, expand row, if it is collapsed\n            const row = this.grid.getRowByIndex(rowIndex);\n            if (!row.expanded) {\n                row.expanded = true;\n                // update sizes after expand\n                this.grid.verticalScrollContainer.recalcUpdateSizes();\n                this.grid.cdr.detectChanges();\n            }\n\n            const childGrid =  this.grid.gridAPI.getChildGrid([pathElem]);\n            if (!childGrid) {\n                if (cb) {\n                    cb();\n                }\n                return;\n            }\n            const positionInfo = this.getElementPosition(childGrid.nativeElement, false);\n            this.grid.verticalScrollContainer.addScrollTop(positionInfo.offset);\n            this.grid.verticalScrollContainer.chunkLoad.pipe(first()).subscribe(() => {\n                childGrid.navigation.navigateToChildGrid(pathToChildGrid, cb);\n            });\n        });\n    }\n\n    /**\n     * Moves navigation to child grid.\n     *\n     * @param parentRowIndex The parent row index, at which the child grid is rendered.\n     * @param childLayoutIndex Optional. The index of the child row island to which the child grid belongs to. Uses first if not set.\n     */\n    protected _moveToChild(parentRowIndex: number, visibleColIndex: number, isNext: boolean, childLayoutIndex?: number,\n                            cb?: (arg: any) => void) {\n        const ri = typeof childLayoutIndex !== 'number' ?\n         this.grid.childLayoutList.first : this.grid.childLayoutList.toArray()[childLayoutIndex];\n        const rowId = this.grid.dataView[parentRowIndex].rowID;\n        const pathSegment: IPathSegment = {\n            rowID: rowId,\n            rowKey: rowId,\n            rowIslandKey: ri.key\n        };\n        const childGrid =  this.grid.gridAPI.getChildGrid([pathSegment]);\n        const targetIndex = isNext ? 0 : childGrid.dataView.length - 1;\n        const targetRec =  childGrid.dataView[targetIndex];\n        if (!targetRec) {\n            // if no target rec, then move on in next sibling or parent\n            childGrid.navigation.navigateInBody(targetIndex, visibleColIndex, cb);\n            return;\n        }\n        if (childGrid.isChildGridRecord(targetRec)) {\n            // if target is a child grid record should move into it.\n            this.grid.navigation.activeNode.row = null;\n            childGrid.navigation.activeNode = { row: targetIndex, column: this.activeNode.column};\n            childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n                const targetLayoutIndex = isNext ? 0 : childGrid.childLayoutList.toArray().length - 1;\n                childGrid.navigation._moveToChild(targetIndex, visibleColIndex, isNext, targetLayoutIndex, cb);\n            });\n            return;\n        }\n\n        const childGridNav =  childGrid.navigation;\n        this.clearActivation();\n        const lastVisibleIndex = childGridNav.lastColumnIndex;\n        const columnIndex = visibleColIndex <= lastVisibleIndex ? visibleColIndex : lastVisibleIndex;\n        childGridNav.activeNode = { row: targetIndex, column: columnIndex};\n        childGrid.tbody.nativeElement.focus({preventScroll: true});\n        this._pendingNavigation = false;\n        childGrid.navigation._handleScrollInChild(targetIndex, isNext, () => {\n            childGrid.navigateTo(targetIndex, columnIndex, cb);\n        });\n    }\n\n    /**\n     * Moves navigation back to parent grid.\n     *\n     * @param rowIndex\n     */\n    protected _moveToParent(isNext: boolean, columnIndex, cb?) {\n        const indexInParent = this.grid.childRow.index;\n        const hasNextTarget = this.hasNextTarget(this.grid.parent, indexInParent, isNext);\n        if (!hasNextTarget) {\n            return;\n        }\n        this.clearActivation();\n        const targetRowIndex =  isNext ? indexInParent + 1 : indexInParent - 1;\n        const lastVisibleIndex = this.grid.parent.navigation.lastColumnIndex;\n        const nextColumnIndex = columnIndex <= lastVisibleIndex ? columnIndex : lastVisibleIndex;\n        this._pendingNavigation = true;\n        const cbFunc = (args) => {\n            this._pendingNavigation = false;\n            cb(args);\n            args.target.grid.tbody.nativeElement.focus();\n        };\n        this.grid.parent.navigation.navigateInBody(targetRowIndex, nextColumnIndex, cbFunc);\n    }\n\n    /**\n     * Gets information on the row position relative to the root grid view port.\n     * Returns whether the row is in view and its offset.\n     *\n     * @param rowObj\n     * @param isNext\n     */\n    protected getPositionInfo(row: RowType, isNext: boolean) {\n        // XXX: Fix type\n        let rowElem = row.nativeElement;\n        if ((row as any).layout) {\n            const childLayoutKeys = this.grid.childLayoutKeys;\n            const riKey = isNext ? childLayoutKeys[0] : childLayoutKeys[childLayoutKeys.length - 1];\n            const pathSegment: IPathSegment = {\n                rowID: row.data.rowID, rowKey: row.data.rowID,\n                rowIslandKey: riKey\n            };\n            const childGrid =  this.grid.gridAPI.getChildGrid([pathSegment]);\n            rowElem = childGrid.tfoot.nativeElement;\n        }\n\n        return this.getElementPosition(rowElem, isNext);\n    }\n\n    protected getElementPosition(element: HTMLElement, isNext: boolean) {\n        // Special handling for scenarios where there is css transformations applied that affects scale.\n        // getBoundingClientRect().height returns size after transformations\n        // element.offsetHeight returns size without any transformations\n        // get the ratio to figure out if anything has applied transformations\n        const scaling = element.getBoundingClientRect().height / element.offsetHeight;\n\n        const gridBottom = this._getMinBottom(this.grid);\n        const diffBottom =\n        element.getBoundingClientRect().bottom - gridBottom;\n        const gridTop = this._getMaxTop(this.grid);\n        const diffTop = element.getBoundingClientRect().bottom -\n        element.getBoundingClientRect().height - gridTop;\n        // Adding Math.Round because Chrome has some inconsistencies when the page is zoomed\n        const isInView = isNext ? Math.round(diffBottom) <= 0 : Math.round(diffTop) >= 0;\n        const calcOffset =  isNext ? diffBottom : diffTop;\n\n        return { inView: isInView, offset: calcOffset / scaling};\n    }\n\n    /**\n     * Gets closest element by its tag name.\n     *\n     * @param sourceElem The element from which to start the search.\n     * @param targetTag The target element tag name, for which to search.\n     */\n    protected getClosestElemByTag(sourceElem, targetTag) {\n        let result = sourceElem;\n        while (result !== null && result.nodeType === 1) {\n            if (result.tagName.toLowerCase() === targetTag.toLowerCase()) {\n                return result;\n            }\n            result = result.parentNode;\n        }\n        return null;\n    }\n\n    private clearActivation() {\n        // clear if previous activation exists.\n        if (this.activeNode && Object.keys(this.activeNode).length) {\n            this.activeNode = Object.assign({} as IActiveNode);\n        }\n    }\n\n    private hasNextTarget(grid: GridType, index: number, isNext: boolean) {\n        const targetRowIndex =  isNext ? index + 1 : index - 1;\n        const hasTargetRecord = !!grid.dataView[targetRowIndex];\n        if (hasTargetRecord) {\n            return true;\n        } else {\n            let hasTargetRecordInParent = false;\n            if (grid.parent) {\n                const indexInParent = grid.childRow.index;\n                hasTargetRecordInParent = this.hasNextTarget(grid.parent, indexInParent, isNext);\n            }\n            return hasTargetRecordInParent;\n        }\n    }\n\n    /**\n     * Gets the max top view in the current grid hierarchy.\n     *\n     * @param grid\n     */\n    private _getMaxTop(grid) {\n        let currGrid = grid;\n        let top = currGrid.tbody.nativeElement.getBoundingClientRect().top;\n        while (currGrid.parent) {\n            currGrid = currGrid.parent;\n            const pinnedRowsHeight = currGrid.hasPinnedRecords && currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n            top = Math.max(top, currGrid.tbody.nativeElement.getBoundingClientRect().top + pinnedRowsHeight);\n        }\n        return top;\n    }\n\n    /**\n     * Gets the min bottom view in the current grid hierarchy.\n     *\n     * @param grid\n     */\n    private _getMinBottom(grid) {\n        let currGrid = grid;\n        let bottom = currGrid.tbody.nativeElement.getBoundingClientRect().bottom;\n        while (currGrid.parent) {\n            currGrid = currGrid.parent;\n            const pinnedRowsHeight = currGrid.hasPinnedRecords && !currGrid.isRowPinningToTop ? currGrid.pinnedRowHeight : 0;\n            bottom = Math.min(bottom, currGrid.tbody.nativeElement.getBoundingClientRect().bottom - pinnedRowsHeight);\n        }\n        return bottom;\n    }\n\n    /**\n     * Finds the next grid that allows scrolling down.\n     *\n     * @param grid The grid from which to begin the search.\n     */\n    private getNextScrollableDown(grid) {\n        let currGrid = grid.parent;\n        if (!currGrid) {\n            return { grid, prev: null };\n        }\n        let scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n        let scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n        let nonScrollable = scrollHeight === 0 ||\n            Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n        let prev = grid;\n        while (nonScrollable && currGrid.parent !== null) {\n            prev = currGrid;\n            currGrid = currGrid.parent;\n            scrollTop = currGrid.verticalScrollContainer.scrollPosition;\n            scrollHeight = currGrid.verticalScrollContainer.getScroll().scrollHeight;\n            nonScrollable = scrollHeight === 0 ||\n                Math.round(scrollTop + currGrid.verticalScrollContainer.igxForContainerSize) === scrollHeight;\n        }\n        return { grid: currGrid, prev };\n    }\n\n    /**\n     * Finds the next grid that allows scrolling up.\n     *\n     * @param grid The grid from which to begin the search.\n     */\n    private getNextScrollableUp(grid) {\n        let currGrid = grid.parent;\n        if (!currGrid) {\n            return { grid, prev: null };\n        }\n        let nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n        let prev = grid;\n        while (nonScrollable && currGrid.parent !== null) {\n            prev = currGrid;\n            currGrid = currGrid.parent;\n            nonScrollable = currGrid.verticalScrollContainer.scrollPosition === 0;\n        }\n        return { grid: currGrid, prev };\n    }\n}\n","import {\n    booleanAttribute,\n    createComponent,\n    Directive,\n    EventEmitter,\n    Input,\n    Output,\n    reflectComponentType,\n    inject\n} from '@angular/core';\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxSummaryOperand } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { GridType, IGX_GRID_SERVICE_BASE } from 'igniteui-angular/grids/core';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxGridTransaction } from 'igniteui-angular/grids/core';\nimport { IgxTransactionService, IPathSegment } from 'igniteui-angular/core';\nimport { IForOfState } from 'igniteui-angular/directives';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\n\nexport const hierarchicalTransactionServiceFactory = () => new IgxTransactionService();\n\nexport const IgxHierarchicalTransactionServiceFactory = {\n    provide: IgxGridTransaction,\n    useFactory: hierarchicalTransactionServiceFactory\n};\n\n/* blazorIndirectRender\n   blazorComponent\n   omitModule\n   wcSkipComponentSuffix */\n@Directive()\nexport abstract class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective implements GridType {\n    /* blazorSuppress */\n    public override gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n    /* blazorSuppress */\n    public override navigation = inject(IgxHierarchicalGridNavigationService);\n    /**\n     * Gets/Sets the key indicating whether a row has children. If row has no children it does not render an expand indicator.\n     *\n     * @example\n     * ```html\n     * <igx-hierarchical-grid #grid [data]=\"localData\" [hasChildrenKey]=\"'hasEmployees'\">\n     * </igx-hierarchical-grid>\n     * ```\n     */\n    @Input()\n    public hasChildrenKey: string;\n\n    /**\n     * Gets/Sets whether the expand/collapse all button in the header should be rendered.\n     *\n     * @remarks\n     * The default value is false.\n     * @example\n     * ```html\n     * <igx-hierarchical-grid #grid [data]=\"localData\" [showExpandAll]=\"true\">\n     * </igx-hierarchical-grid>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public showExpandAll = false;\n\n    /**\n     * Emitted when a new chunk of data is loaded from virtualization.\n     *\n     * @example\n     * ```typescript\n     *  <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" (dataPreLoad)=\"handleEvent()\">\n     *  </igx-hierarchical-grid>\n     * ```\n     */\n    @Output()\n    public dataPreLoad = new EventEmitter<IForOfState>();\n\n    /** @hidden @internal */\n    public override get type(): GridType[\"type\"] {\n        return 'hierarchical';\n    }\n\n    /* blazorSuppress */\n    /**\n     * Gets the outlet used to attach the grid's overlays to.\n     *\n     * @remarks\n     * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.\n     */\n    public override get outlet() {\n        return this.rootGrid ? this.rootGrid.resolveOutlet() : this.resolveOutlet();\n    }\n\n    /* blazorSuppress */\n    /**\n     * Sets the outlet used to attach the grid's overlays to.\n     */\n    public override set outlet(val: any) {\n        this._userOutletDirective = val;\n    }\n\n    /** @hidden @internal */\n    public batchEditingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n    public override get batchEditing(): boolean {\n        return this._batchEditing;\n    }\n\n    public override set batchEditing(val: boolean) {\n        if (val !== this._batchEditing) {\n            delete this._transactions;\n            this.switchTransactionService(val);\n            this.subscribeToTransactions();\n            this.batchEditingChange.emit(val);\n            this._batchEditing = val;\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public parentIsland: IgxRowIslandComponent;\n    public abstract rootGrid: GridType;\n\n    /* blazorSuppress */\n    public abstract expandChildren: boolean;\n\n    /**\n     * @hidden\n     */\n    public createColumnsList(cols: Array<any>) {\n        const columns = [];\n        const topLevelCols = cols.filter(c => c.level === 0);\n        topLevelCols.forEach((col) => {\n            col.grid = this;\n            const ref = this._createColumn(col);\n            ref.changeDetectorRef.detectChanges();\n            columns.push(ref.instance);\n        });\n        const result = flatten(columns);\n        this.updateColumns(result);\n        this.initPinning();\n\n        result.forEach(col => {\n            this.columnInit.emit(col);\n        });\n\n        const mirror = reflectComponentType(IgxColumnComponent);\n        const outputs = mirror.outputs.filter(o => o.propName !== 'columnChange');\n        outputs.forEach(output => {\n            this.columns.forEach(column => {\n                if (column[output.propName]) {\n                    column[output.propName].pipe(takeUntil(column.destroy$)).subscribe((args) => {\n                        const rowIslandColumn = this.parentIsland.columnList.find((col) => col.field\n                            ? col.field === column.field\n                            : col.header === column.header);\n                        rowIslandColumn[output.propName].emit({ args, owner: this });\n                    });\n                }\n            });\n        });\n    }\n\n    protected _createColumn(col) {\n        let ref;\n        if (col instanceof IgxColumnGroupComponent) {\n            ref = this._createColGroupComponent(col);\n        } else {\n            ref = this._createColComponent(col);\n        }\n        return ref;\n    }\n\n    protected _createColGroupComponent(col: IgxColumnGroupComponent) {\n        const ref = createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n        ref.changeDetectorRef.detectChanges();\n        const mirror = reflectComponentType(IgxColumnGroupComponent);\n        mirror.inputs.forEach((input) => {\n            const propName = input.propName;\n            ref.instance[propName] = col[propName];\n        });\n        if (col.children.length > 0) {\n            const newChildren = [];\n            col.children.forEach(child => {\n                const newCol = this._createColumn(child).instance;\n                newCol.parent = ref.instance;\n                newChildren.push(newCol);\n            });\n            ref.instance.children.reset(newChildren);\n            ref.instance.children.notifyOnChanges();\n        }\n        return ref;\n    }\n\n    protected _createColComponent(col) {\n        const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n        const mirror = reflectComponentType(IgxColumnComponent);\n        mirror.inputs.forEach((input) => {\n            const propName = input.propName;\n            if (!(col[propName] instanceof IgxSummaryOperand)) {\n                ref.instance[propName] = col[propName];\n            } else {\n                ref.instance[propName] = col[propName].constructor;\n            }\n        });\n        ref.instance.validators = col.validators;\n        return ref;\n    }\n\n    protected getGridsForIsland(rowIslandID: string) {\n        return this.gridAPI.getChildGridsForRowIsland(rowIslandID);\n    }\n\n    protected getChildGrid(path: Array<IPathSegment>) {\n        if (!path) {\n            return;\n        }\n        return this.gridAPI.getChildGrid(path);\n    }\n}\n\nconst flatten = (arr: any[]) => {\n    let result = [];\n\n    arr.forEach(el => {\n        result.push(el);\n        if (el.children) {\n            result = result.concat(flatten(el.children.toArray()));\n        }\n    });\n    return result;\n};\n","import { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class IgxRowIslandAPIService {\n    public rowIsland: IgxRowIslandComponent;\n    public change: Subject<any> = new Subject<any>();\n    protected state: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n    protected destroyMap: Map<string, Subject<boolean>> = new Map<string, Subject<boolean>>();\n\n    protected childRowIslands: Map<string, IgxRowIslandComponent> = new Map<string, IgxRowIslandComponent>();\n    protected childGrids:  Map<any, IgxHierarchicalGridComponent> = new Map<any, IgxHierarchicalGridComponent>();\n\n    public register(rowIsland: IgxRowIslandComponent) {\n        this.state.set(rowIsland.id, rowIsland);\n        this.destroyMap.set(rowIsland.id, new Subject<boolean>());\n    }\n\n    public unsubscribe(rowIsland: IgxRowIslandComponent) {\n        this.state.delete(rowIsland.id);\n    }\n\n    public get(id: string): IgxRowIslandComponent {\n        return this.state.get(id);\n    }\n\n    public unset(id: string) {\n        this.state.delete(id);\n        this.destroyMap.delete(id);\n    }\n\n    public reset(oldId: string, newId: string) {\n        const destroy = this.destroyMap.get(oldId);\n        const rowIsland = this.get(oldId);\n\n        this.unset(oldId);\n\n        if (rowIsland) {\n            this.state.set(newId, rowIsland);\n        }\n\n        if (destroy) {\n            this.destroyMap.set(newId, destroy);\n        }\n    }\n\n    public registerChildRowIsland(rowIsland: IgxRowIslandComponent) {\n        this.childRowIslands.set(rowIsland.key, rowIsland);\n        this.destroyMap.set(rowIsland.key, new Subject<boolean>());\n    }\n\n    public unsetChildRowIsland(rowIsland: IgxRowIslandComponent) {\n        this.childRowIslands.delete(rowIsland.key);\n        this.destroyMap.delete(rowIsland.key);\n    }\n\n    public getChildRowIsland(rowIslandKey: string) {\n        return this.childRowIslands.get(rowIslandKey);\n    }\n\n    public registerChildGrid(parentRowID: any, grid: IgxHierarchicalGridComponent) {\n        this.childGrids.set(parentRowID, grid);\n    }\n\n    public getChildGrids(inDepth?: boolean) {\n        let allChildren = [];\n        this.childGrids.forEach((grid) => {\n            allChildren.push(grid);\n        });\n        if (inDepth) {\n            this.childRowIslands.forEach((layout) => {\n                allChildren = allChildren.concat(layout.rowIslandAPI.getChildGrids(inDepth));\n            });\n        }\n\n        return allChildren;\n    }\n\n    public getChildGridByID(rowID) {\n        return this.childGrids.get(rowID);\n    }\n}\n","import {\n    AfterContentInit,\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ContentChildren,\n    EventEmitter,\n    forwardRef,\n    Input,\n    IterableChangeRecord,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    TemplateRef,\n    inject\n} from '@angular/core';\nimport {\n    GridType,\n    IgxColumnComponent,\n    IgxFilteringService,\n    IgxGridPaginatorTemplateContext,\n    IgxGridSelectionService,\n    IgxGridToolbarDirective,\n    IgxGridToolbarTemplateContext,\n    ISearchInfo\n} from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { IgxActionStripToken, IGridResourceStrings } from 'igniteui-angular/core';\nimport { first, filter, takeUntil, pluck } from 'rxjs/operators';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IGridCreatedEventArgs } from './events';\nimport { IgxPaginatorComponent, IgxPaginatorDirective } from 'igniteui-angular/paginator';\nimport { IForOfState } from 'igniteui-angular/directives';\n\n/* blazorCopyInheritedMembers */\n/* blazorElement */\n/* wcElementTag: igc-row-island */\n/* blazorIndirectRender */\n/* jsonAPIManageCollectionInMarkup */\n/* jsonAPIManageItemInMarkup */\n/* mustUseNGParentAnchor */\n/* additionalIdentifier: ChildDataKey */\n/* contentParent: RowIsland */\n/* contentParent: HierarchicalGrid */\n/**\n * Row island\n *\n * @igxModule IgxHierarchicalGridModule\n * @igxParent IgxHierarchicalGridComponent, IgxRowIslandComponent\n *\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-row-island',\n    template: `@if (platform.isElements) {\n        <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n        <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n    }`,\n    providers: [\n        IgxRowIslandAPIService,\n        IgxFilteringService,\n        IgxGridSelectionService\n    ],\n    standalone: true\n})\nexport class IgxRowIslandComponent extends IgxHierarchicalGridBaseDirective\n    implements AfterContentInit, AfterViewInit, OnChanges, OnInit, OnDestroy {\n    /* blazorSuppress */\n    public rowIslandAPI = inject(IgxRowIslandAPIService);\n\n\n    /* blazorSuppress */\n    /**\n     * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n     * ```html\n     * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n     *      <igx-row-island [key]=\"'childData'\">\n     *          <!-- ... -->\n     *      </igx-row-island>\n     * </igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxRowIslandComponent\n     */\n    @Input()\n    public key: string;\n\n    /* blazorInclude,wcInclude TODO: Move to Elements-only component */\n    /**\n     * Sets the key of the row island by which child data would be taken from the row data if such is provided.\n     * @hidden @internal\n     */\n    @Input()\n    public get childDataKey() {\n        return this.key;\n    }\n    /* blazorInclude,wcInclude */\n    public set childDataKey(value: string) {\n        this.key = value;\n    }\n\n    /**\n     * Gets/Sets the resource strings.\n     *\n     * @remarks\n     * By default it uses the root grid resources.\n     */\n    @Input()\n    public override set resourceStrings(value: IGridResourceStrings) {\n        super.resourceStrings = value;\n        this.updateGridsResources();\n    }\n\n    public override get resourceStrings() {\n        return super.resourceStrings ?? this.rootGrid.resourceStrings;\n    }\n\n    /**\n     * @hidden\n     */\n    @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n    public children = new QueryList<IgxRowIslandComponent>();\n\n    /* contentChildren */\n    /* blazorInclude */\n    /* blazorTreatAsCollection */\n    /* blazorCollectionName: RowIslandCollection */\n    /**\n     * @hidden @internal\n     */\n    @ContentChildren(forwardRef(() => IgxRowIslandComponent), { read: IgxRowIslandComponent, descendants: false })\n    public childLayoutList = new QueryList<IgxRowIslandComponent>();\n\n    /**\n     * @hidden\n     */\n    @ContentChildren(IgxColumnComponent, { read: IgxColumnComponent, descendants: false })\n    public childColumns = new QueryList<IgxColumnComponent>();\n\n    @ContentChild(IgxGridToolbarDirective, { read: TemplateRef, descendants: false })\n    protected toolbarDirectiveTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n\n    @ContentChild(IgxPaginatorDirective, { read: TemplateRef, descendants: false })\n    protected paginatorDirectiveTemplate: TemplateRef<any>;\n\n    /* csSuppress */\n    /**\n     * Sets/Gets the toolbar template for each child grid created from this row island.\n    */\n    @Input()\n    public get toolbarTemplate(): TemplateRef<IgxGridToolbarTemplateContext> {\n        return this._toolbarTemplate || this.toolbarDirectiveTemplate;\n    }\n\n    public set toolbarTemplate(template: TemplateRef<IgxGridToolbarTemplateContext>) {\n        this._toolbarTemplate = template;\n    }\n\n\n    /* csSuppress */\n    /**\n     * Sets/Gets the paginator template for each child grid created from this row island.\n    */\n    @Input()\n    public get paginatorTemplate(): TemplateRef<IgxGridPaginatorTemplateContext> {\n        return this._paginatorTemplate || this.paginatorDirectiveTemplate;\n    }\n\n    public set paginatorTemplate(template: TemplateRef<IgxGridPaginatorTemplateContext>) {\n        this._paginatorTemplate = template;\n    }\n\n    // TODO(api-analyzer): Shouldn't need all tags to copy from base or hidden/internal due to include tag\n    /* contentChildren */\n    /* blazorInclude */\n    /* blazorTreatAsCollection */\n    /* blazorCollectionName: ActionStripCollection */\n    /* blazorCollectionItemName: ActionStrip */\n    /* ngQueryListName: actionStripComponents */\n    /** @hidden @internal */\n    @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n    protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n    /**\n     * @hidden\n     */\n    @Output()\n    public layoutChange = new EventEmitter<any>();\n\n    /**\n     * Event emitted when a grid is being created based on this row island.\n     * ```html\n     * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n     *      <igx-row-island [key]=\"'childData'\" (gridCreated)=\"gridCreated($event)\" #rowIsland>\n     *          <!-- ... -->\n     *      </igx-row-island>\n     * </igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxRowIslandComponent\n     */\n    @Output()\n    public gridCreated = new EventEmitter<IGridCreatedEventArgs>();\n\n    /**\n     * Emitted after a grid is being initialized for this row island.\n     * The emitting is done in `ngAfterViewInit`.\n     * ```html\n     * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n     *      <igx-row-island [key]=\"'childData'\" (gridInitialized)=\"gridInitialized($event)\" #rowIsland>\n     *          <!-- ... -->\n     *      </igx-row-island>\n     * </igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxRowIslandComponent\n     */\n    @Output()\n    public gridInitialized = new EventEmitter<IGridCreatedEventArgs>();\n\n    /**\n     * @hidden\n     */\n    public initialChanges = [];\n\n    /**\n     * @hidden\n     */\n    public rootGrid: GridType = null;\n\n    /** @hidden */\n    public readonly data: any[] | null;\n\n    /** @hidden */\n    public override get hiddenColumnsCount(): number {\n        return 0;\n    }\n\n    /** @hidden */\n    public override get pinnedColumnsCount(): number {\n        return 0;\n    }\n\n    /** @hidden */\n    public override get lastSearchInfo(): ISearchInfo {\n        return null;\n    }\n\n    /** @hidden */\n    public override get filteredData(): any {\n        return [];\n    }\n\n    /** @hidden */\n    public override get filteredSortedData(): any[] {\n        return [];\n    }\n\n    /** @hidden */\n    public override get virtualizationState(): IForOfState {\n        return null;\n    }\n\n    /** @hidden */\n    public override get pinnedColumns(): IgxColumnComponent[] {\n        return [];\n    }\n\n    /** @hidden */\n    public override get pinnedStartColumns(): IgxColumnComponent[] {\n        return [];\n    }\n    /** @hidden */\n    public override get pinnedEndColumns(): IgxColumnComponent[] {\n        return [];\n    }\n\n    /** @hidden */\n    public override get unpinnedColumns(): IgxColumnComponent[] {\n        return [];\n    }\n\n    /** @hidden */\n    public override get visibleColumns(): IgxColumnComponent[] {\n        return [];\n    }\n\n    /** @hidden */\n    public override get dataView(): any[] {\n        return [];\n    }\n\n    //#region inert, not-a-grid component\n    /** @hidden @internal */\n    public override tabindex = -1;\n\n    /** @hidden @internal */\n    public override hostRole = null;\n\n    protected override baseClass = null;\n\n    /** @hidden @internal */\n    public override get hostWidth(): any {\n        return null;\n    }\n\n    protected override displayStyle = 'none';\n    protected override templateRows = null;\n    //#endregion\n\n    private ri_columnListDiffer;\n    private layout_id = `igx-row-island-`;\n    private isInit = false;\n    private _toolbarTemplate: TemplateRef<IgxGridToolbarTemplateContext>;\n    private _paginatorTemplate: TemplateRef<IgxGridPaginatorTemplateContext>;\n\n    /**\n     * Sets if all immediate children of the grids for this `IgxRowIslandComponent` should be expanded/collapsed.\n     * ```html\n     * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\">\n     *      <igx-row-island [key]=\"'childData'\" [expandChildren]=\"true\" #rowIsland>\n     *          <!-- ... -->\n     *      </igx-row-island>\n     * </igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxRowIslandComponent\n     */\n    @Input({ transform: booleanAttribute })\n    public set expandChildren(value: boolean) {\n        this._defaultExpandState = value;\n        this.rowIslandAPI.getChildGrids().forEach((grid) => {\n            if (this.document.body.contains(grid.nativeElement)) {\n                // Detect changes right away if the grid is visible\n                grid.expandChildren = value;\n                grid.cdr.detectChanges();\n            } else {\n                // Else defer the detection on changes when the grid gets into view for performance.\n                grid.updateOnRender = true;\n            }\n        });\n    }\n\n    /**\n     * Gets if all immediate children of the grids for this `IgxRowIslandComponent` have been set to be expanded/collapsed.\n     * ```typescript\n     * const expanded = this.rowIsland.expandChildren;\n     * ```\n     *\n     * @memberof IgxRowIslandComponent\n     */\n    public get expandChildren(): boolean {\n        return this._defaultExpandState;\n    }\n\n    /**\n     * @hidden\n     */\n    public get id() {\n        const pId = this.parentId ? this.parentId.substring(this.parentId.indexOf(this.layout_id) + this.layout_id.length) + '-' : '';\n        return this.layout_id + pId + this.key;\n    }\n\n    /**\n     * @hidden\n     */\n    public get parentId() {\n        return this.parentIsland ? this.parentIsland.id : null;\n    }\n\n    /**\n     * @hidden\n     */\n    public get level() {\n        let ptr = this.parentIsland;\n        let lvl = 0;\n        while (ptr) {\n            lvl++;\n            ptr = ptr.parentIsland;\n        }\n        return lvl + 1;\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngOnInit() {\n        this.filteringService.grid = this as GridType;\n        this.rootGrid = this.gridAPI.grid;\n        this.rowIslandAPI.rowIsland = this;\n        this.ri_columnListDiffer = this.differs.find([]).create(null);\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngAfterContentInit() {\n        this.updateChildren();\n        this.children.notifyOnChanges();\n        this.children.changes.pipe(takeUntil(this.destroy$))\n            .subscribe(() => {\n                this.updateChildren();\n                // update existing grids since their child ri have been changed.\n                this.rowIslandAPI.getChildGrids(false).forEach(grid => {\n                    (grid as any).onRowIslandChange(this.children);\n                });\n            });\n        const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n        const colsArray = [].concat.apply([], nestedColumns);\n        const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n        this._childColumns = topCols;\n        this.updateColumns(this._childColumns);\n        this.columnList.changes.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            Promise.resolve().then(() => {\n                this.updateColumnList();\n            });\n        });\n\n        // handle column changes so that they are passed to child grid instances when columnChange is emitted.\n        this.ri_columnListDiffer.diff(this.childColumns);\n        this._childColumns.forEach(x => x.columnChange.pipe(takeUntil(x.destroy$)).subscribe(() => this.updateColumnList()));\n        this.childColumns.changes.pipe(takeUntil(this.destroy$)).subscribe((change: QueryList<IgxColumnComponent>) => {\n            const diff = this.ri_columnListDiffer.diff(change);\n            if (diff) {\n                diff.forEachAddedItem((record: IterableChangeRecord<IgxColumnComponent>) => {\n                    record.item.columnChange.pipe(takeUntil(record.item.destroy$)).subscribe(() => this.updateColumnList());\n                });\n            }\n        });\n\n        if (this.actionStrip) {\n            this.actionStrip.menuOverlaySettings.outlet = this.outlet;\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngAfterViewInit() {\n        this.rowIslandAPI.register(this);\n        if (this.parentIsland) {\n            this.parentIsland.rowIslandAPI.registerChildRowIsland(this);\n        } else {\n            this.rootGrid.gridAPI.registerChildRowIsland(this);\n        }\n        this._init = false;\n\n        // Create the child toolbar if the parent island has a toolbar definition\n        this.gridCreated.pipe(pluck('grid'), takeUntil(this.destroy$)).subscribe(grid => {\n            grid.rendered$.pipe(first(), filter(() => !!this.toolbarTemplate))\n                .subscribe(() => grid.toolbarOutlet.createEmbeddedView(this.toolbarTemplate, { $implicit: grid }, { injector: grid.toolbarOutlet.injector }));\n            grid.rendered$.pipe(first(), filter(() => !!this.paginatorTemplate))\n                .subscribe(() => {\n                    this.rootGrid.paginatorList.changes.pipe(takeUntil(this.destroy$)).subscribe((changes: QueryList<IgxPaginatorComponent>) => {\n                        changes.forEach(p => {\n                            if (p.nativeElement.offsetParent?.id === grid.id) {\n                                // Optimize update only for those grids that have related changed paginator.\n                                grid.setUpPaginator()\n                            }\n                        });\n                    });\n                    grid.paginatorOutlet.createEmbeddedView(this.paginatorTemplate, { $implicit: grid });\n                });\n        });\n        this.cdr.reattach();\n    }\n\n    /**\n     * @hidden\n     */\n    public ngOnChanges(changes) {\n        this.layoutChange.emit(changes);\n        if (!this.isInit) {\n            this.initialChanges.push(changes);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngOnDestroy() {\n        // Override the base destroy because we have not rendered anything to use removeEventListener on\n        this.destroy$.next(true);\n        this.destroy$.complete();\n        this._destroyed = true;\n        this.rowIslandAPI.unset(this.id);\n        if (this.parentIsland) {\n            this.getGridsForIsland(this.key).forEach(grid => {\n                this.cleanGridState(grid);\n                grid.gridAPI.unsetChildRowIsland(this);\n            });\n            this.parentIsland.rowIslandAPI.unsetChildRowIsland(this);\n        } else {\n            this.rootGrid.gridAPI.unsetChildRowIsland(this);\n            this.cleanGridState(this.rootGrid);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public override reflow() { }\n\n    /**\n     * @hidden\n     */\n    public override calculateGridHeight() { }\n\n    /**\n     * @hidden\n     */\n    public override calculateGridWidth() { }\n\n    protected _childColumns = [];\n\n    protected updateColumnList() {\n        const nestedColumns = this.children.map((layout) => layout.columnList.toArray());\n        const colsArray = [].concat.apply([], nestedColumns);\n        const topCols = this.columnList.filter((item) => {\n            if (colsArray.indexOf(item) === -1) {\n                /* Reset the default width of the columns that come into this row island,\n                because the root catches them first during the detectChanges() and sets their defaultWidth. */\n                item.defaultWidth = undefined;\n                return true;\n            }\n            return false;\n        });\n        this._childColumns = topCols;\n        this.updateColumns(this._childColumns);\n        this.rowIslandAPI.getChildGrids().forEach((grid: GridType) => {\n            grid.createColumnsList(this._childColumns);\n            if (!this.document.body.contains(grid.nativeElement)) {\n                grid.updateOnRender = true;\n            }\n        });\n    }\n\n    protected updateChildren() {\n        if (this.children.first === this) {\n            this.children.reset(this.children.toArray().slice(1));\n        }\n        this.children.forEach(child => {\n            child.parentIsland = this;\n        });\n    }\n\n    private cleanGridState(grid) {\n        grid.childGridTemplates.forEach((tmpl) => {\n            tmpl.owner.cleanView(tmpl.context.templateID);\n        });\n        grid.childGridTemplates.clear();\n        grid.onRowIslandChange();\n    }\n\n    private updateGridsResources() {\n        this.rowIslandAPI.getChildGrids().forEach((grid) => {\n            grid.resourceStrings = this.resourceStrings;\n        });\n    }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { GridType, IGX_GRID_BASE } from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, resolveNestedPath } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'gridHierarchical',\n    standalone: true\n})\nexport class IgxGridHierarchicalPipe implements PipeTransform {\n    private grid = inject<GridType>(IGX_GRID_BASE);\n\n    public transform(\n        collection: any,\n        state = new Map<any, boolean>(),\n        id: string,\n        primaryKey: any,\n        childKeys: string[],\n        _pipeTrigger: number\n    ): any[] {\n        if (childKeys.length === 0) {\n            return collection;\n        }\n        if (this.grid.verticalScrollContainer.isRemote) {\n            return collection;\n        }\n        const result = this.addHierarchy(this.grid, cloneArray(collection), state, primaryKey, childKeys);\n\n        return result;\n    }\n\n    public addHierarchy<T>(grid, data: T[], state, primaryKey, childKeys: string[]): T[] {\n        const result = [];\n\n        data.forEach((v) => {\n            result.push(v);\n            const childGridsData = {};\n            childKeys.forEach((childKey) => {\n                if (!v[childKey]) {\n                    v[childKey] = [];\n                }\n                const hasNestedPath = childKey?.includes('.');\n                const childData = !hasNestedPath ? v[childKey] : resolveNestedPath(v, columnFieldPath(childKey));\n                childGridsData[childKey] = childData;\n            });\n            if (grid.gridAPI.get_row_expansion_state(v)) {\n                result.push({ rowID: primaryKey ? v[primaryKey] : v, childGridsData, parentRowData: v });\n            }\n        });\n        return result;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'gridHierarchicalPaging',\n    standalone: true\n})\nexport class IgxGridHierarchicalPagingPipe implements PipeTransform {\n    private grid = inject<GridType>(IGX_GRID_BASE);\n\n\n    public transform(collection: any[], enabled: boolean, page = 0, perPage = 15, _id: string, _pipeTrigger: number): any[] {\n        if (!enabled || this.grid.pagingMode !== 'local') {\n            return collection;\n        }\n\n        const state = {\n            index: page,\n            recordsPerPage: perPage\n        };\n\n        const total = this.grid._totalRecords >= 0 ? this.grid._totalRecords : collection.length;\n        const result: any[] = DataUtil.page(cloneArray(collection), state, total);\n        this.grid.pagingState = state;\n        return result;\n\n    }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport {\n    IgxColumnFormatterPipe,\n    IgxGridCellComponent,\n    IgxGridCellImageAltPipe,\n    IgxStringReplacePipe\n} from 'igniteui-angular/grids/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDateTimeEditorDirective, IgxFocusDirective, IgxTextHighlightDirective, IgxTextSelectionDirective, IgxTooltipDirective, IgxTooltipTargetDirective } from 'igniteui-angular/directives';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxDatePickerComponent } from 'igniteui-angular/date-picker';\nimport { IgxTimePickerComponent } from 'igniteui-angular/time-picker';\nimport { IgxCurrencyFormatterPipe, IgxDateFormatterPipe, IgxNumberFormatterPipe, IgxPercentFormatterPipe } from 'igniteui-angular/core';\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-hierarchical-grid-cell',\n    templateUrl: '../../core/src/cell.component.html',\n    providers: [HammerGesturesManager],\n    imports: [IgxChipComponent, IgxTextHighlightDirective, IgxIconComponent, NgClass, FormsModule, ReactiveFormsModule,\n        IgxInputGroupComponent, IgxInputDirective, IgxFocusDirective, IgxTextSelectionDirective, IgxCheckboxComponent,\n        IgxDatePickerComponent, IgxTimePickerComponent, IgxDateTimeEditorDirective, IgxPrefixDirective,\n        IgxSuffixDirective, NgTemplateOutlet, IgxTooltipTargetDirective, IgxTooltipDirective, IgxGridCellImageAltPipe,\n        IgxStringReplacePipe, IgxColumnFormatterPipe, IgxNumberFormatterPipe, IgxPercentFormatterPipe,\n        IgxCurrencyFormatterPipe, IgxDateFormatterPipe]\n})\nexport class IgxHierarchicalGridCellComponent extends IgxGridCellComponent implements OnInit {\n    // protected hSelection;\n    protected _rootGrid;\n\n    public override ngOnInit() {\n        super.ngOnInit();\n        this._rootGrid = this._getRootGrid();\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override activate(event: FocusEvent) {\n        this._clearAllHighlights();\n        const currentElement = this.grid.nativeElement;\n        let parentGrid = this.grid;\n        let childGrid;\n        // add highligh to the current grid\n        if (this._rootGrid.id !== currentElement.id) {\n            currentElement.classList.add('igx-grid__tr--highlighted');\n        }\n\n        // add highligh to the current grid\n        while (this._rootGrid.id !== parentGrid.id) {\n            childGrid = parentGrid;\n            parentGrid = parentGrid.parent;\n\n            const parentRowID = parentGrid.gridAPI.getParentRowId(childGrid);\n            parentGrid.highlightedRowID = parentRowID;\n        }\n        this.grid.navigation.activeNode.gridID = this.gridID;\n        super.activate(event);\n    }\n\n    private _getRootGrid() {\n        let currGrid = this.grid;\n        while (currGrid.parent) {\n            currGrid = currGrid.parent;\n        }\n        return currGrid;\n    }\n\n    // TODO: Extend the new selection service to avoid complete traversal\n    private _clearAllHighlights() {\n        [this._rootGrid, ...this._rootGrid.getChildGrids(true)].forEach(grid => {\n            if (grid !== this.grid && grid.navigation.activeNode) {\n                grid.selectionService.activeElement = null;\n                grid.navigation.clearActivation();\n                grid.selectionService.initKeyboardState();\n                grid.selectionService.clear();\n            }\n\n            grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n            grid.highlightedRowID = null;\n            grid.cdr.markForCheck();\n        });\n    }\n}\n","<ng-template #defaultPinnedIndicator>\n    @if (displayPinnedChip) {\n        <igx-chip\n            class=\"igx-grid__td--pinned-chip\"\n            [disabled]=\"true\"\n            [style.--ig-size]=\"1\"\n        >{{ grid.resourceStrings.igx_grid_pinned_row_indicator }}</igx-chip>\n    }\n</ng-template>\n<ng-template #defaultCell>\n    @if (column.dataType !== 'boolean' && column.dataType !== 'image' || (column.dataType === 'boolean' && this.formatter)) {\n        <div\n            igxTextHighlight\n            class=\"igx-grid__td-text\"\n            [cssClass]=\"highlightClass\"\n            [activeCssClass]=\"activeHighlightClass\"\n            [groupName]=\"gridID\"\n            [value]=\"\n                formatter\n                    ? (value | columnFormatter:formatter:rowData:columnData)\n                    : column.dataType === 'number'\n                    ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n                    : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n                    ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n                    : column.dataType === 'currency'\n                    ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n                    : column.dataType === 'percent'\n                    ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n                    : value\n            \"\n            [row]=\"rowData\"\n            [column]=\"this.column.field\"\n            [containerClass]=\"'igx-grid__td-text'\"\n            [metadata]=\"searchMetadata\"\n        >{{\n            formatter\n                ? (value | columnFormatter:formatter:rowData:columnData)\n                : column.dataType === \"number\"\n                ? (value | number:column.pipeArgs.digitsInfo:grid.locale)\n                : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime')\n                ? (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale)\n                : column.dataType === 'currency'\n                ? (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale)\n                : column.dataType === 'percent'\n                ? (value | percent:column.pipeArgs.digitsInfo:grid.locale)\n                : value\n        }}</div>\n    }\n    @if (column.dataType === 'boolean' && !this.formatter) {\n        <igx-icon\n            family=\"default\"\n            [name]=\"value ? 'confirm' : 'close'\"\n            [ngClass]=\"{ 'igx-icon--success': value, 'igx-icon--error': !value }\">\n        </igx-icon>\n    }\n    @if (column.dataType === 'image') {\n        <img [src]=\"value\" [alt]=\"value | igxCellImageAlt\" />\n    }\n</ng-template>\n\n<ng-template #emptyCell></ng-template>\n<ng-template #addRowCell let-cell=\"cell\">\n    @if (column.dataType !== 'boolean' || (column.dataType === 'boolean' && this.formatter)) {\n        <div\n            igxTextHighlight class=\"igx-grid__td-text\"\n            [cssClass]=\"highlightClass\"\n            [activeCssClass]=\"activeHighlightClass\"\n            [groupName]=\"gridID\"\n            [value]=\"formatter ? (value | columnFormatter:formatter:rowData) : column.dataType === 'number' ?\n                (value | number:column.pipeArgs.digitsInfo:grid.locale) : (column.dataType === 'date' || column.dataType === 'time' || column.dataType === 'dateTime') ?\n                (value | date:column.pipeArgs.format:column.pipeArgs.timezone:grid.locale) : column.dataType === 'currency' ?\n                (value | currency:currencyCode:column.pipeArgs.display:column.pipeArgs.digitsInfo:grid.locale) : column.dataType === 'percent' ?\n                (value | percent:column.pipeArgs.digitsInfo:grid.locale) : value\"\n            [row]=\"rowData\"\n            [column]=\"this.column.field\"\n            [containerClass]=\"'igx-grid__td-text'\"\n            [metadata]=\"searchMetadata\"\n        >{{\n            !isEmptyAddRowCell ? value : (column.header || column.field)\n        }}</div>\n    }\n</ng-template>\n<ng-template #inlineEditor let-cell=\"cell\">\n    @if (column.dataType === 'string' || column.dataType === 'image') {\n        <ng-container [formGroup]=\"formGroup\">\n            <igx-input-group>\n                <input\n                    igxInput\n                    [attr.aria-describedby]=\"ariaDescribeBy\"\n                    [attr.aria-invalid]=\"isInvalid\"\n                    [igxFocus]=\"true\"\n                    [igxTextSelection]=\"true\"\n                    [formControl]=\"formControl\"\n                    (compositionstart)=\"grid.crudService.isInCompositionMode = true\"\n                    (compositionend)=\"grid.crudService.isInCompositionMode = false\"\n                />\n            </igx-input-group>\n        </ng-container>\n    }\n    @if (column.dataType === 'number') {\n        <igx-input-group [formGroup]=\"formGroup\">\n            <input\n                igxInput\n                [attr.aria-describedby]=\"ariaDescribeBy\"\n                [attr.aria-invalid]=\"isInvalid\"\n                [igxFocus]=\"true\"\n                [igxTextSelection]=\"true\"\n                [step]=\"step\"\n                type=\"number\"\n                [formControl]=\"formControl\"\n            />\n        </igx-input-group>\n    }\n    @if (column.dataType === 'boolean') {\n        <ng-container [formGroup]=\"formGroup\">\n            <igx-checkbox\n                [checked]=\"editValue\"\n                [igxFocus]=\"true\"\n                [disableRipple]=\"true\"\n                [formControl]=\"formControl\"\n            ></igx-checkbox>\n        </ng-container>\n    }\n    @if (column.dataType === 'date') {\n        <ng-container [formGroup]=\"formGroup\">\n            <igx-date-picker\n                [style.width.%]=\"100\"\n                [outlet]=\"grid.outlet\"\n                mode=\"dropdown\"\n                [locale]=\"grid.locale\"\n                [weekStart]=\"column.pipeArgs.weekStart\"\n                [(value)]=\"editValue\"\n                [igxFocus]=\"true\"\n                [formControl]=\"formControl\"\n                [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n                [displayFormat]=\"column.pipeArgs.format\"\n            >\n            </igx-date-picker>\n        </ng-container>\n    }\n    @if (column.dataType === 'time') {\n        <ng-container [formGroup]=\"formGroup\">\n            <igx-time-picker\n                [style.width.%]=\"100\"\n                [outlet]=\"grid.outlet\"\n                mode=\"dropdown\"\n                [locale]=\"grid.locale\"\n                [inputFormat]=\"column.editorOptions?.dateTimeFormat\"\n                [displayFormat]=\"column.pipeArgs.format\"\n                [(value)]=\"editValue\"\n                [igxFocus]=\"true\"\n                [formControl]=\"formControl\"\n            ></igx-time-picker>\n        </ng-container>\n    }\n    @if (column.dataType === 'dateTime') {\n        <igx-input-group [formGroup]=\"formGroup\">\n            <input\n                type=\"text\"\n                [attr.aria-describedby]=\"ariaDescribeBy\"\n                [attr.aria-invalid]=\"isInvalid\"\n                [formControl]=\"formControl\"\n                igxInput\n                [locale]=\"grid.locale\"\n                [igxDateTimeEditor]=\"column.editorOptions?.dateTimeFormat\"\n                [defaultFormatType]=\"column.dataType\"\n                [displayFormat]=\"column.pipeArgs.format\"\n                [igxFocus]=\"true\"\n            />\n        </igx-input-group>\n    }\n    @if (column.dataType === 'currency') {\n        <igx-input-group [formGroup]=\"formGroup\">\n            @if (grid.currencyPositionLeft) {\n                <igx-prefix>{{ currencyCodeSymbol }}</igx-prefix>\n            }\n            <input\n                igxInput\n                [attr.aria-describedby]=\"ariaDescribeBy\"\n                [attr.aria-invalid]=\"isInvalid\"\n                [igxFocus]=\"true\"\n                [igxTextSelection]=\"true\"\n                [step]=\"step\"\n                type=\"number\"\n                [formControl]=\"formControl\"\n            />\n            @if (!grid.currencyPositionLeft) {\n                <igx-suffix>{{ currencyCodeSymbol }}</igx-suffix>\n            }\n        </igx-input-group>\n    }\n    @if (column.dataType === 'percent') {\n        <igx-input-group [formGroup]=\"formGroup\">\n            <input\n                igxInput\n                [attr.aria-describedby]=\"ariaDescribeBy\"\n                [attr.aria-invalid]=\"isInvalid\"\n                [igxFocus]=\"true\"\n                [igxTextSelection]=\"true\"\n                [step]=\"step\"\n                type=\"number\"\n                [formControl]=\"formControl\"\n            />\n            <igx-suffix> {{ editValue | percent:column.pipeArgs.digitsInfo:grid.locale }} </igx-suffix>\n        </igx-input-group>\n    }\n</ng-template>\n<ng-container *ngTemplateOutlet=\"pinnedIndicatorTemplate; context: context\">\n</ng-container>\n<ng-container *ngTemplateOutlet=\"template; context: context\"></ng-container>\n\n@if (isInvalid) {\n    <igx-icon\n        family=\"default\"\n        name=\"error\"\n        #errorIcon\n        [igxTooltipTarget]=\"tooltipRef\"\n        [igxToggleOutlet]=\"grid.outlet\"\n        (mouseover)='errorShowing = true'\n        (mouseout)='errorShowing = false'>\n    </igx-icon>\n    <div [id]=\"ariaErrorMessage\"\n    igxTooltip #error #tooltipRef=\"tooltip\">\n        <div [style.width]=\"'max-content'\">\n            <ng-container *ngTemplateOutlet=\"cellValidationErrorTemplate || defaultError; context: context\"></ng-container>\n        </div>\n    </div>\n}\n\n<ng-template #defaultError>\n    @let errors = formControl.errors;\n    @if (errors?.['required']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_required_validation_error}}\n        </div>\n    }\n    @if (errors?.['minlength']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_min_length_validation_error | igxStringReplace:'{0}':errors.minlength.requiredLength }}\n        </div>\n    }\n    @if (errors?.['maxlength']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_max_length_validation_error | igxStringReplace:'{0}':errors.maxlength.requiredLength }}\n        </div>\n    }\n    @if (errors?.['min']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_min_validation_error | igxStringReplace:'{0}':errors.min.min }}\n        </div>\n    }\n    @if (errors?.['max']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_max_validation_error | igxStringReplace:'{0}':errors.max.max }}\n        </div>\n    }\n    @if (errors?.['email']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_email_validation_error }}\n        </div>\n    }\n    @if (errors?.['pattern']) {\n        <div>\n            {{grid.resourceStrings.igx_grid_pattern_validation_error}}\n        </div>\n    }\n</ng-template>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    HostBinding,\n    forwardRef,\n    ElementRef,\n    ViewChildren,\n    QueryList,\n    ViewChild,\n    TemplateRef\n} from '@angular/core';\nimport { IgxRowDirective } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridCellComponent } from './hierarchical-cell.component';\nimport { GridType } from 'igniteui-angular/grids/core';\nimport { IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe } from 'igniteui-angular/grids/core';\nimport { IgxRowDragDirective } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-hierarchical-grid-row',\n    templateUrl: './hierarchical-row.component.html',\n    providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxHierarchicalRowComponent) }],\n    imports: [NgTemplateOutlet, IgxIconComponent, IgxRowDragDirective, NgClass, IgxGridForOfDirective, IgxHierarchicalGridCellComponent, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridCellStyleClassesPipe, IgxGridDataMapperPipe, IgxGridTransactionStatePipe]\n})\nexport class IgxHierarchicalRowComponent extends IgxRowDirective {\n    @ViewChild('expander', { read: ElementRef })\n    public expander: ElementRef<HTMLElement>;\n\n    @ViewChildren(forwardRef(() => IgxHierarchicalGridCellComponent), { read: IgxHierarchicalGridCellComponent })\n    protected override _cells: QueryList<IgxHierarchicalGridCellComponent>;\n\n    /**\n     * @hidden\n     */\n    @ViewChild('defaultExpandedTemplate', { read: TemplateRef, static: true })\n    protected defaultExpandedTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @ViewChild('defaultEmptyTemplate', { read: TemplateRef, static: true })\n    protected defaultEmptyTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden\n     */\n    @ViewChild('defaultCollapsedTemplate', { read: TemplateRef, static: true })\n    protected defaultCollapsedTemplate: TemplateRef<any>;\n\n    protected expanderClass = 'igx-grid__hierarchical-expander';\n    protected rolActionClass = 'igx-grid__tr-action';\n\n    /**\n     * @hidden\n     */\n    public get expanderClassResolved() {\n        return {\n            [`${this.expanderClass} ${this.rolActionClass}`]: !this.pinned || this.disabled,\n            [`${this.expanderClass}--empty`]: this.pinned && !this.disabled\n        };\n    }\n\n    public override get viewIndex(): number {\n        return this.index + this.grid.page * this.grid.perPage;\n    }\n\n    /**\n     * Returns whether the row is expanded.\n     * ```typescript\n     * const RowExpanded = this.grid1.rowList.first.expanded;\n     * ```\n     */\n    public override get expanded() {\n        return this.grid.gridAPI.get_row_expansion_state(this.data);\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-grid__tr--expanded')\n    public get expandedClass() {\n        return this.expanded && !this.pinned;\n    }\n\n    public override get hasChildren() {\n        return !!this.grid.childLayoutKeys.length;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostBinding('class.igx-grid__tr--highlighted')\n    public get highlighted() {\n        return this.grid && this.grid.highlightedRowID === this.key;\n    }\n\n    /**\n     * @hidden\n     */\n    public expanderClick(event) {\n        event.stopPropagation();\n        this.toggle();\n    }\n\n    /**\n     * Toggles the hierarchical row.\n     * ```typescript\n     * this.grid1.rowList.first.toggle()\n     * ```\n     */\n    public toggle() {\n        if (this.added) {\n            return;\n        }\n        // K.D. 28 Feb, 2022 #10634 Don't trigger endEdit/commit upon row expansion state change\n        // this.endEdit(this.grid.rootGrid);\n        this.grid.gridAPI.set_row_expansion_state(this.key, !this.expanded);\n        this.grid.cdr.detectChanges();\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public select = () => {\n        this.grid.selectRows([this.key]);\n    };\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public deselect = () => {\n        this.grid.deselectRows([this.key]);\n    };\n\n    /**\n     * @hidden\n     */\n    public get iconTemplate() {\n        let expandable = true;\n        if (this.grid.hasChildrenKey) {\n            expandable = this.data[this.grid.hasChildrenKey];\n        }\n        if (!expandable || (this.pinned && !this.disabled)) {\n            return this.defaultEmptyTemplate;\n        }\n        if (this.expanded) {\n            return this.grid.rowExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n        } else {\n            return this.grid.rowCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n        }\n    }\n\n    // TODO: consider moving into CRUD\n    protected endEdit(grid: GridType) {\n        if (grid.gridAPI.crudService.cellInEditMode) {\n            grid.gridAPI.crudService.endEdit();\n        }\n        grid.gridAPI.getChildGrids(true).forEach(g => {\n            if (g.gridAPI.crudService.cellInEditMode) {\n                g.gridAPI.crudService.endEdit();\n            }\n        });\n    }\n}\n","<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n<ng-template #defaultExpandedTemplate>\n    <igx-icon family=\"default\" name=\"tree_collapse\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n    <igx-icon family=\"default\" name=\"tree_expand\" [active]='!added'></igx-icon>\n</ng-template>\n\n<ng-template #defaultEmptyTemplate>\n    <!-- Empty icon used as spacer for size matching-->\n    <igx-icon></igx-icon>\n</ng-template>\n\n<ng-template #addTemp>\n    <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n        <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n    </div>\n</ng-template>\n<ng-template #defaultTemp>\n    <!-- Drag indicator -->\n    @if (rowDraggable) {\n        <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\" (pointerdown)=\"$event.preventDefault()\">\n            <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n        </div>\n    }\n\n    <!-- Select Row -->\n    @if (showRowSelectors) {\n        <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n            <ng-template *ngTemplateOutlet=\"\n                this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n                context: { $implicit: {\n                                index: viewIndex,\n                                rowID: key,\n                                key,\n                                selected: selected,\n                                select: select,\n                                deselect: deselect }}\">\n            </ng-template>\n        </div>\n    }\n\n    <!-- Row Expander -->\n    @if (hasChildren) {\n        <div  (click)=\"expanderClick($event)\" (mousedown)='$event.preventDefault()' [ngClass]=\"expanderClassResolved\" #expander>\n            <ng-container *ngTemplateOutlet=\"iconTemplate; context: { $implicit: this }\">\n            </ng-container>\n        </div>\n    }\n\n    @if (pinnedStartColumns.length > 0) {\n        <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate;  context: { $implicit: this, columns: pinnedStartColumns}\"></ng-template>\n    }\n\n    <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"' [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n        @if (this.hasMergedCells) {\n            <div [style.height.px]=\" this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? getRowHeight() : null\"\n                 class=\"igx-grid__mrl-block\"\n                 [style.visibility]=\"this.metaData?.cellMergeMeta.get(col.field)?.root ? 'hidden' : 'visible'\"\n                 [ngStyle]=\"{\n                'grid-template-rows': this.metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1 ? this.getMergeCellSpan(col) : null\n            }\">\n                <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n            </div>\n        }\n        @else {\n            <ng-container *ngTemplateOutlet=\"cellTemplate; context: { $implicit: this, column: col }\"></ng-container>\n        }\n    </ng-template>\n\n    @if (pinnedEndColumns.length > 0) {\n        <ng-template *ngTemplateOutlet=\"pinnedCellsTemplate; context: { $implicit: this, columns: pinnedEndColumns}\"></ng-template>\n    }\n\n    <ng-template #rowSelectorBaseTemplate>\n        <div class=\"igx-grid__cbx-padding\">\n            <igx-checkbox\n                [tabindex]=\"-1\"\n                [readonly]=\"true\"\n                [checked]=\"selected\"\n                [disableRipple]=\"true\"\n                [disabled]=\"deleted\"\n                [disableTransitions]=\"grid.disableTransitions\"\n                [aria-label]=\"rowCheckboxAriaLabel\">\n            </igx-checkbox>\n        </div>\n    </ng-template>\n\n    <ng-template #pinnedCellsTemplate let-col let-columns=\"columns\">\n        @for (col of columns | igxNotGrouped; track trackPinnedColumn(col)) {\n            <igx-hierarchical-grid-cell\n                class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n                [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n                [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n                [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n                [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n                [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n                [column]=\"col\"\n                [formatter]=\"col.formatter\"\n                [intRow]=\"this\"\n                [active]=\"isCellActive(col.visibleIndex)\"\n                [firstPinned]=\"col.isFirstPinned\"\n                [lastPinned]=\"col.isLastPinned\"\n                [rowData]=\"data\"\n                [style.min-width]=\"col.resolvedWidth\"\n                [style.max-width]=\"col.resolvedWidth\"\n                [style.flex-basis]=\"col.resolvedWidth\"\n                [width]=\"col.getCellWidth()\"\n                [visibleColumnIndex]=\"col.visibleIndex\"\n                [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n                [cellTemplate]=\"col.bodyTemplate\"\n                [cellValidationErrorTemplate]=\"col.errorTemplate\"\n                [lastSearchInfo]=\"grid.lastSearchInfo\"\n                [cellSelectionMode]=\"grid.cellSelection\"\n                [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n            </igx-hierarchical-grid-cell>\n        }\n    </ng-template>\n</ng-template>\n\n<ng-template #cellTemplate let-col=\"column\">\n    <igx-hierarchical-grid-cell\n    [class.igx-grid__td--merged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n    [isMerged]=\"metaData?.cellMergeMeta.get(col.field)?.rowSpan > 1\"\n    [isPlaceholder]=\"!!this.metaData?.cellMergeMeta.get(col.field)?.root\"\n    [class.igx-grid__td--merged-selected]=\"isSelectionRoot(col)\"\n    [class.igx-grid__td--merged-hovered]=\"isHoveredRoot(col)\"\n    class=\"igx-grid__td igx-grid__td--fw\"\n    [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n    [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n    [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n    [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n    [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n    [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n    [column]=\"col\"\n    [formatter]=\"col.formatter\"\n    [intRow]=\"this\"\n    [active]=\"isCellActive(col.visibleIndex)\"\n    [rowData]=\"data\"\n    [style.min-width]=\"col.resolvedWidth\"\n    [style.max-width]=\"col.resolvedWidth\"\n    [style.flex-basis]=\"col.resolvedWidth\"\n    [width]=\"col.getCellWidth()\"\n    [visibleColumnIndex]=\"col.visibleIndex\"\n    [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n    [cellTemplate]=\"col.bodyTemplate\"\n    [cellValidationErrorTemplate]=\"col.errorTemplate\"\n    [lastSearchInfo]=\"grid.lastSearchInfo\"\n    [cellSelectionMode]=\"grid.cellSelection\"\n    [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\">\n</igx-hierarchical-grid-cell>\n</ng-template>\n","import { AfterContentInit, AfterViewInit, booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, CUSTOM_ELEMENTS_SCHEMA, DoCheck, ElementRef, HostBinding, Input, OnDestroy, OnInit, QueryList, reflectComponentType, SimpleChanges, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, inject } from '@angular/core';\nimport { NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';\n\nimport { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';\nimport { IgxRowIslandComponent } from './row-island.component';\nimport { IgxFilteringService, IgxGridNavigationService, IgxGridValidationService } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent, } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.directive';\nimport { takeUntil } from 'rxjs/operators';\nimport { CellType, GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, RowType } from 'igniteui-angular/grids/core';\nimport { IgxRowIslandAPIService } from './row-island-api.service';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalGridRow } from 'igniteui-angular/grids/core';\nimport { IgxGridCell } from 'igniteui-angular/grids/core';\nimport type { IgxPaginatorComponent } from 'igniteui-angular/paginator';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridHierarchicalPipe, IgxGridHierarchicalPagingPipe } from './hierarchical-grid.pipes';\nimport { IgxSummaryDataPipe } from 'igniteui-angular/grids/core';\nimport { IgxGridTransactionPipe, IgxHasVisibleColumnsPipe, IgxGridRowPinningPipe, IgxGridAddRowPipe, IgxGridRowClassesPipe, IgxGridRowStylesPipe, IgxStringReplacePipe } from 'igniteui-angular/grids/core';\nimport { IgxGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { IgxRowEditTabStopDirective } from 'igniteui-angular/grids/core';\nimport { IgxSummaryRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxHierarchicalRowComponent } from './hierarchical-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { IgxButtonDirective, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxRippleDirective, IgxScrollInertiaDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';\nimport { IgxSnackbarComponent } from 'igniteui-angular/snackbar';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { EntityType, FieldType, IFilteringExpressionsTree, IgxActionStripToken, IgxOverlayOutletDirective, flatten, IGridResourceStrings } from 'igniteui-angular/core';\nimport { IgxPaginatorToken } from 'igniteui-angular/paginator';\nimport { IgxGridCellMergePipe, IgxGridComponent, IgxGridFilteringPipe, IgxGridSortingPipe, IgxGridUnmergeActivePipe } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\n\n/**\n * @hidden @internal\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-child-grid-row',\n    templateUrl: './child-grid-row.component.html',\n    imports: [NgClass]\n})\nexport class IgxChildGridRowComponent implements AfterViewInit, OnInit {\n    /* blazorSuppress */\n    public readonly gridAPI = inject<IgxHierarchicalGridAPIService>(IGX_GRID_SERVICE_BASE);\n    /* blazorSuppress */\n    public element = inject<ElementRef<HTMLElement>>(ElementRef);\n    /* blazorSuppress */\n    public cdr = inject(ChangeDetectorRef);\n\n    @Input()\n    public layout: IgxRowIslandComponent;\n\n    /**\n     * @hidden\n     */\n    public get parentHasScroll() {\n        return !this.parentGrid.verticalScrollContainer.dc.instance.notVirtual;\n    }\n\n\n    /**\n     * @hidden\n     */\n    @Input()\n    public parentGridID: string;\n\n    /**\n     *  The data passed to the row component.\n     *\n     * ```typescript\n     * // get the row data for the first selected row\n     * let selectedRowData = this.grid.selectedRows[0].data;\n     * ```\n     */\n    @Input()\n    public get data(): any {\n        return this._data || [];\n    }\n\n    public set data(value: any) {\n        this._data = value;\n        if (this.hGrid && !this.hGrid.dataSetByUser) {\n            this.hGrid.setDataInternal(this._data.childGridsData[this.layout.key]);\n        }\n    }\n\n    /**\n     * The index of the row.\n     *\n     * ```typescript\n     * // get the index of the second selected row\n     * let selectedRowIndex = this.grid.selectedRows[1].index;\n     * ```\n     */\n    @Input()\n    public index: number;\n\n    /* blazorSuppress */\n    @ViewChild('container', { read: ViewContainerRef, static: true })\n    public container: ViewContainerRef;\n\n    /**\n     * @hidden\n     */\n    public hGrid: IgxHierarchicalGridComponent;\n\n    /* blazorSuppress */\n    /**\n     * Get a reference to the grid that contains the selected row.\n     *\n     * ```typescript\n     * handleRowSelection(event) {\n     *  // the grid on which the rowSelected event was triggered\n     *  const grid = event.row.grid;\n     * }\n     * ```\n     *\n     * ```html\n     *  <igx-grid\n     *    [data]=\"data\"\n     *    (rowSelected)=\"handleRowSelection($event)\">\n     *  </igx-grid>\n     * ```\n     */\n    // TODO: Refactor\n    public get parentGrid(): IgxHierarchicalGridComponent {\n        return this.gridAPI.grid as IgxHierarchicalGridComponent;\n    }\n\n    @HostBinding('attr.aria-level')\n    public get level() {\n        return this.layout.level;\n    }\n\n    /**\n     * The native DOM element representing the row. Could be null in certain environments.\n     *\n     * ```typescript\n     * // get the nativeElement of the second selected row\n     * let selectedRowNativeElement = this.grid.selectedRows[1].nativeElement;\n     * ```\n     */\n    public get nativeElement() {\n        return this.element.nativeElement;\n    }\n\n    /**\n     * Returns whether the row is expanded.\n     * ```typescript\n     * const RowExpanded = this.grid1.rowList.first.expanded;\n     * ```\n     */\n    public expanded = false;\n\n    private _data: any;\n\n    /**\n     * @hidden\n     */\n    public ngOnInit() {\n        const ref = this.container.createComponent(IgxHierarchicalGridComponent, { injector: this.container.injector });\n        this.hGrid = ref.instance;\n        this.hGrid.setDataInternal(this.data.childGridsData[this.layout.key]);\n        this.hGrid.nativeElement[\"__componentRef\"] = ref;\n        this.layout.layoutChange.subscribe((ch) => {\n            this._handleLayoutChanges(ch);\n        });\n        const changes = this.layout.initialChanges;\n        changes.forEach(change => {\n            this._handleLayoutChanges(change);\n        });\n        this.hGrid.parent = this.parentGrid;\n        this.hGrid.parentIsland = this.layout;\n        this.hGrid.childRow = this;\n        // handler logic that re-emits hgrid events on the row island\n        this.setupEventEmitters();\n        this.layout.gridCreated.emit({\n            owner: this.layout,\n            parentID: this.data.rowID,\n            grid: this.hGrid,\n            parentRowData: this.data.parentRowData,\n        });\n    }\n\n    /**\n     * @hidden\n     */\n    public ngAfterViewInit() {\n        this.hGrid.childLayoutList = this.layout.children;\n        const layouts = this.hGrid.childLayoutList.toArray();\n        layouts.forEach((l) => this.hGrid.gridAPI.registerChildRowIsland(l));\n        this.parentGrid.gridAPI.registerChildGrid(this.data.rowID, this.layout.key, this.hGrid);\n        this.layout.rowIslandAPI.registerChildGrid(this.data.rowID, this.hGrid);\n\n        this.layout.gridInitialized.emit({\n            owner: this.layout,\n            parentID: this.data.rowID,\n            grid: this.hGrid,\n            parentRowData: this.data.parentRowData,\n        });\n\n        this.hGrid.cdr.detectChanges();\n    }\n\n    private setupEventEmitters() {\n        const destructor = takeUntil(this.hGrid.destroy$);\n\n        const mirror = reflectComponentType(IgxGridComponent);\n        // exclude outputs related to two-way binding functionality\n        const inputNames = mirror.inputs.map(input => input.propName);\n        const outputs = mirror.outputs.filter(o => {\n            const matchingInputPropName = o.propName.slice(0, o.propName.indexOf('Change'));\n            return inputNames.indexOf(matchingInputPropName) === -1;\n        });\n\n        // TODO: Skip the `rendered` output. Rendered should be called once per grid.\n        outputs.filter(o => o.propName !== 'rendered').forEach(output => {\n            if (this.hGrid[output.propName]) {\n                this.hGrid[output.propName].pipe(destructor).subscribe((args) => {\n                    if (!args) {\n                        args = {};\n                    }\n                    args.owner = this.hGrid;\n                    this.layout[output.propName].emit(args);\n                });\n            }\n        });\n    }\n\n\n    private _handleLayoutChanges(changes: SimpleChanges) {\n        for (const change in changes) {\n            if (changes.hasOwnProperty(change)) {\n                this.hGrid[change] = changes[change].currentValue;\n            }\n        }\n    }\n}\n\n\n/* blazorAdditionalDependency: Column */\n/* blazorAdditionalDependency: ColumnGroup */\n/* blazorAdditionalDependency: ColumnLayout */\n/* blazorAdditionalDependency: GridToolbar */\n/* blazorAdditionalDependency: GridToolbarActions */\n/* blazorAdditionalDependency: GridToolbarTitle */\n/* blazorAdditionalDependency: GridToolbarAdvancedFiltering */\n/* blazorAdditionalDependency: GridToolbarExporter */\n/* blazorAdditionalDependency: GridToolbarHiding */\n/* blazorAdditionalDependency: GridToolbarPinning */\n/* blazorAdditionalDependency: ActionStrip */\n/* blazorAdditionalDependency: GridActionsBaseDirective */\n/* blazorAdditionalDependency: GridEditingActions */\n/* blazorAdditionalDependency: GridPinningActions */\n/* blazorAdditionalDependency: RowIsland */\n/* blazorIndirectRender */\n/**\n * Hierarchical grid\n *\n * @igxModule IgxHierarchicalGridModule\n *\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-hierarchical-grid',\n    templateUrl: 'hierarchical-grid.component.html',\n    providers: [\n        IgxGridCRUDService,\n        IgxGridValidationService,\n        IgxGridSelectionService,\n        { provide: IGX_GRID_SERVICE_BASE, useClass: IgxHierarchicalGridAPIService },\n        { provide: IGX_GRID_BASE, useExisting: IgxHierarchicalGridComponent },\n        IgxGridSummaryService,\n        IgxFilteringService,\n        IgxGridNavigationService,\n        IgxHierarchicalGridNavigationService,\n        IgxColumnResizingService,\n        IgxForOfSyncService,\n        IgxForOfScrollSyncService,\n        IgxRowIslandAPIService\n    ],\n    imports: [\n        NgClass,\n        NgTemplateOutlet,\n        NgStyle,\n        IgxGridHeaderRowComponent,\n        IgxGridBodyDirective,\n        IgxGridDragSelectDirective,\n        IgxColumnMovingDropDirective,\n        IgxGridForOfDirective,\n        IgxTemplateOutletDirective,\n        IgxHierarchicalRowComponent,\n        IgxOverlayOutletDirective,\n        IgxToggleDirective,\n        IgxCircularProgressBarComponent,\n        IgxSnackbarComponent,\n        IgxSummaryRowComponent,\n        IgxButtonDirective,\n        IgxRippleDirective,\n        IgxIconComponent,\n        IgxRowEditTabStopDirective,\n        IgxGridColumnResizerComponent,\n        IgxChildGridRowComponent,\n        IgxGridSortingPipe,\n        IgxGridFilteringPipe,\n        IgxGridTransactionPipe,\n        IgxHasVisibleColumnsPipe,\n        IgxGridRowPinningPipe,\n        IgxGridAddRowPipe,\n        IgxGridRowClassesPipe,\n        IgxGridRowStylesPipe,\n        IgxSummaryDataPipe,\n        IgxGridHierarchicalPipe,\n        IgxGridHierarchicalPagingPipe,\n        IgxStringReplacePipe,\n        IgxGridCellMergePipe,\n        IgxScrollInertiaDirective,\n        IgxGridUnmergeActivePipe\n    ],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirective\n    implements GridType, AfterViewInit, AfterContentInit, OnInit, OnDestroy, DoCheck {\n\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('attr.role')\n    public role = 'grid';\n\n    /* contentChildren */\n    /* blazorInclude */\n    /* blazorTreatAsCollection */\n    /* blazorCollectionName: RowIslandCollection */\n    /* ngQueryListName: childLayoutList */\n    /**\n     * @hidden\n     */\n    @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: false })\n    public childLayoutList: QueryList<IgxRowIslandComponent>;\n\n    /**\n     * @hidden\n     */\n    @ContentChildren(IgxRowIslandComponent, { read: IgxRowIslandComponent, descendants: true })\n    public allLayoutList: QueryList<IgxRowIslandComponent>;\n\n    /** @hidden @internal */\n    @ContentChildren(IgxPaginatorToken, { descendants: true })\n    public paginatorList: QueryList<IgxPaginatorComponent>;\n\n    /** @hidden @internal */\n    @ViewChild('toolbarOutlet', { read: ViewContainerRef })\n    public toolbarOutlet: ViewContainerRef;\n\n    /** @hidden @internal */\n    @ViewChild('paginatorOutlet', { read: ViewContainerRef })\n    public paginatorOutlet: ViewContainerRef;\n    /**\n     * @hidden\n     */\n    @ViewChildren(IgxTemplateOutletDirective, { read: IgxTemplateOutletDirective })\n    public templateOutlets: QueryList<any>;\n\n    /**\n     * @hidden\n     */\n    @ViewChildren(IgxChildGridRowComponent)\n    public hierarchicalRows: QueryList<IgxChildGridRowComponent>;\n\n    @ViewChild('hierarchical_record_template', { read: TemplateRef, static: true })\n    protected hierarchicalRecordTemplate: TemplateRef<any>;\n\n    @ViewChild('child_record_template', { read: TemplateRef, static: true })\n    protected childTemplate: TemplateRef<any>;\n\n    // @ViewChild('headerHierarchyExpander', { read: ElementRef, static: true })\n    protected get headerHierarchyExpander() {\n        return this.theadRow?.headerHierarchyExpander;\n    }\n\n    /**\n     * @hidden\n     */\n    public childLayoutKeys = [];\n\n    /** @hidden @internal */\n    public dataSetByUser = false;\n\n    /**\n     * @hidden\n     */\n    public highlightedRowID = null;\n\n    /**\n     * @hidden\n     */\n    public updateOnRender = false;\n\n    /**\n     * @hidden\n     */\n    public parent: IgxHierarchicalGridComponent = null;\n\n    /**\n     * @hidden @internal\n     */\n    public childRow: IgxChildGridRowComponent;\n\n    @ContentChildren(IgxActionStripToken, { read: IgxActionStripToken, descendants: false })\n    protected override actionStripComponents: QueryList<IgxActionStripToken>;\n\n    /** @hidden @internal */\n    public override get actionStrip() {\n        return this.parentIsland ? this.parentIsland.actionStrip : super.actionStrip;\n    }\n\n    /* blazorCSSuppress */\n    public override get advancedFilteringExpressionsTree(): IFilteringExpressionsTree {\n        return super.advancedFilteringExpressionsTree;\n    }\n\n    public override set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree) {\n        if (!this._hGridSchema) {\n            this._hGridSchema = this.generateSchema();\n        }\n        super.advancedFilteringExpressionsTree = value;\n    }\n\n    private _data;\n    private h_id = `igx-hierarchical-grid-${NEXT_ID++}`;\n    private childGridTemplates: Map<any, any> = new Map();\n\n    /**\n     * Gets/Sets the value of the `id` attribute.\n     *\n     * @remarks\n     * If not provided it will be automatically generated.\n     * @example\n     * ```html\n     * <igx-hierarchical-grid [id]=\"'igx-hgrid-1'\" [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public get id(): string {\n        return this.h_id;\n    }\n    public set id(value: string) {\n        this.h_id = value;\n    }\n\n    /* treatAsRef */\n    /**\n     * Gets/Sets the array of data that populates the component.\n     * ```html\n     * <igx-hierarchical-grid [data]=\"Data\" [autoGenerate]=\"true\"></igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxHierarchicalGridComponent\n     */\n    @Input()\n    public set data(value: any[] | null) {\n        this.setDataInternal(value);\n        this.dataSetByUser = true;\n        this.checkPrimaryKeyField();\n    }\n\n    /**\n     * Returns an array of data set to the `IgxHierarchicalGridComponent`.\n     * ```typescript\n     * let filteredData = this.grid.filteredData;\n     * ```\n     *\n     * @memberof IgxHierarchicalGridComponent\n     */\n    public get data(): any[] | null {\n        return this._data;\n    }\n\n    /** @hidden @internal */\n    public override get paginator() {\n        const id = this.id;\n        return (!this.parentIsland && this.paginationComponents?.first) || this.rootGrid.paginatorList?.find((pg) =>\n            pg.nativeElement.offsetParent?.id === id);\n    }\n\n    /** @hidden @internal */\n    public override get excelStyleFilteringComponent(): IgxGridExcelStyleFilteringComponent {\n        return this.parentIsland ?\n            this.parentIsland.excelStyleFilteringComponents.first :\n            super.excelStyleFilteringComponent;\n    }\n\n    /**\n     * Gets/Sets the total number of records in the data source.\n     *\n     * @remarks\n     * This property is required for remote grid virtualization to function when it is bound to remote data.\n     * @example\n     * ```typescript\n     * const itemCount = this.grid1.totalItemCount;\n     * this.grid1.totalItemCount = 55;\n     * ```\n     */\n    @Input()\n    public set totalItemCount(count) {\n        this.verticalScrollContainer.totalItemCount = count;\n    }\n\n    public get totalItemCount() {\n        return this.verticalScrollContainer.totalItemCount;\n    }\n\n    /**\n     * Sets if all immediate children of the `IgxHierarchicalGridComponent` should be expanded/collapsed.\n     * Default value is false.\n     * ```html\n     * <igx-hierarchical-grid [id]=\"'igx-grid-1'\" [data]=\"Data\" [autoGenerate]=\"true\" [expandChildren]=\"true\"></igx-hierarchical-grid>\n     * ```\n     *\n     * @memberof IgxHierarchicalGridComponent\n     */\n    @Input({ transform: booleanAttribute })\n    public set expandChildren(value: boolean) {\n        this._defaultExpandState = value;\n        this.expansionStates = new Map<any, boolean>();\n    }\n\n    /**\n     * Gets if all immediate children of the `IgxHierarchicalGridComponent` previously have been set to be expanded/collapsed.\n     * If previously set and some rows have been manually expanded/collapsed it will still return the last set value.\n     * ```typescript\n     * const expanded = this.grid.expandChildren;\n     * ```\n     *\n     * @memberof IgxHierarchicalGridComponent\n     */\n    public get expandChildren(): boolean {\n        return this._defaultExpandState;\n    }\n\n    /* blazorSuppress */\n    /**\n     * Gets/Sets the schema for the hierarchical grid.\n     * This schema defines the structure and properties of the data displayed in the grid.\n     * @Input()\n     * @param {EntityType[]} entities - An array of EntityType objects representing the grid's schema.\n     * @remarks\n     * This property is required in remote data filtering scenarios.\n     * @example\n     * ```typescript\n     * const schema = this.grid.schema;\n     * this.grid.schema = [{ name: 'Products', fields: [...], childEntities: [...] }];\n     * ```\n     */\n    @Input()\n    public set schema(entities: EntityType[]) {\n        this._hGridSchema = entities;\n    }\n\n    /* blazorSuppress */\n    public get schema() {\n        if (!this._hGridSchema) {\n            this._hGridSchema = this.generateSchema();\n        }\n\n        return this._hGridSchema;\n    }\n\n    /**\n     * Gets/Sets the resource strings.\n     *\n     * @remarks\n     * By default it uses EN resources.\n     */\n    @Input()\n    public override set resourceStrings(value: IGridResourceStrings) {\n        super.resourceStrings = value;\n        if (!this.parent) {\n            this.gridAPI.getChildGrids(true).forEach((grid) => {\n                grid.resourceStrings = value;\n            });\n        }\n    }\n\n    /* blazorCSSuppress */\n    public override get resourceStrings() {\n        return super.resourceStrings;\n    }\n\n    /**\n     * Gets the unique identifier of the parent row. It may be a `string` or `number` if `primaryKey` of the\n     * parent grid is set or an object reference of the parent record otherwise.\n     * ```typescript\n     * const foreignKey = this.grid.foreignKey;\n     * ```\n     *\n     * @memberof IgxHierarchicalGridComponent\n     */\n    public get foreignKey() {\n        if (!this.parent) {\n            return null;\n        }\n        return this.parent.gridAPI.getParentRowId(this);\n    }\n\n    /**\n     * @hidden\n     */\n    public get hasExpandableChildren() {\n        return !!this.childLayoutKeys.length;\n    }\n\n    /**\n     * @hidden\n     */\n    public get resolveRowEditContainer() {\n        if (this.parentIsland && this.parentIsland.rowEditCustom) {\n            return this.parentIsland.rowEditContainer;\n        }\n        return this.rowEditContainer;\n    }\n\n    /**\n     * @hidden\n     */\n    public get resolveRowEditActions() {\n        return this.parentIsland ? this.parentIsland.rowEditActionsTemplate : this.rowEditActionsTemplate;\n    }\n\n    /**\n     * @hidden\n     */\n    public get resolveRowEditText() {\n        return this.parentIsland ? this.parentIsland.rowEditTextTemplate : this.rowEditTextTemplate;\n    }\n\n    /** @hidden */\n    public override hideActionStrip() {\n        if (!this.parent) {\n            // hide child layout actions strips when\n            // moving outside root grid.\n            super.hideActionStrip();\n            this.allLayoutList.forEach(ri => {\n                ri.actionStrip?.hide();\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public override get parentRowOutletDirective() {\n        // Targeting parent outlet in order to prevent hiding when outlet\n        // is present at a child grid and is attached to a row.\n        return this.parent ? this.parent.rowOutletDirective : this.outlet;\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngOnInit() {\n        // this.expansionStatesChange.pipe(takeUntil(this.destroy$)).subscribe((value: Map<any, boolean>) => {\n        //     const res = Array.from(value.entries()).filter(({1: v}) => v === true).map(([k]) => k);\n        // });\n        this.batchEditing = !!this.rootGrid.batchEditing;\n        if (this.rootGrid !== this) {\n            this.rootGrid.batchEditingChange.pipe(takeUntil(this.destroy$)).subscribe((val: boolean) => {\n                this.batchEditing = val;\n            });\n        }\n        super.ngOnInit();\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngAfterViewInit() {\n        super.ngAfterViewInit();\n        this.verticalScrollContainer.beforeViewDestroyed.pipe(takeUntil(this.destroy$)).subscribe((view) => {\n            const rowData = view.context.$implicit;\n            if (this.isChildGridRecord(rowData)) {\n                const cachedData = this.childGridTemplates.get(rowData.rowID);\n                if (cachedData) {\n                    const tmlpOutlet = cachedData.owner;\n                    tmlpOutlet._viewContainerRef.detach(0);\n                }\n            }\n        });\n\n        if (this.parent) {\n            this.childLayoutKeys = this.parentIsland.children.map((item) => item.key);\n            this._resourceStrings = this.rootGrid._resourceStrings;\n        }\n\n        this.headSelectorsTemplates = this.parentIsland ?\n            this.parentIsland.headSelectorsTemplates :\n            this.headSelectorsTemplates;\n\n        this.rowSelectorsTemplates = this.parentIsland ?\n            this.parentIsland.rowSelectorsTemplates :\n            this.rowSelectorsTemplates;\n        this.dragIndicatorIconTemplate = this.parentIsland ?\n            this.parentIsland.dragIndicatorIconTemplate :\n            this.dragIndicatorIconTemplate;\n        this.rowExpandedIndicatorTemplate = this.rootGrid.rowExpandedIndicatorTemplate;\n        this.rowCollapsedIndicatorTemplate = this.rootGrid.rowCollapsedIndicatorTemplate;\n        this.headerCollapsedIndicatorTemplate = this.rootGrid.headerCollapsedIndicatorTemplate;\n        this.headerExpandedIndicatorTemplate = this.rootGrid.headerExpandedIndicatorTemplate;\n        this.excelStyleHeaderIconTemplate = this.rootGrid.excelStyleHeaderIconTemplate;\n        this.sortAscendingHeaderIconTemplate = this.rootGrid.sortAscendingHeaderIconTemplate;\n        this.sortDescendingHeaderIconTemplate = this.rootGrid.sortDescendingHeaderIconTemplate;\n        this.sortHeaderIconTemplate = this.rootGrid.sortHeaderIconTemplate;\n        this.hasChildrenKey = this.parentIsland ?\n            this.parentIsland.hasChildrenKey || this.rootGrid.hasChildrenKey :\n            this.rootGrid.hasChildrenKey;\n        this.showExpandAll = this.parentIsland ?\n            this.parentIsland.showExpandAll : this.rootGrid.showExpandAll;\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngAfterContentInit() {\n        this.updateColumnList(false);\n        this.childLayoutKeys = this.parent ?\n            this.parentIsland.children.map((item) => item.key) :\n            this.childLayoutKeys = this.childLayoutList.map((item) => item.key);\n        this.childLayoutList.notifyOnChanges();\n        this.childLayoutList.changes.pipe(takeUntil(this.destroy$)).subscribe(() =>\n            this.onRowIslandChange()\n        );\n        super.ngAfterContentInit();\n    }\n\n    /**\n     * Returns the `RowType` by index.\n     *\n     * @example\n     * ```typescript\n     * const myRow = this.grid1.getRowByIndex(1);\n     * ```\n     * @param index\n     */\n    public getRowByIndex(index: number): RowType {\n        if (index < 0 || index >= this.dataView.length) {\n            return undefined;\n        }\n        return this.createRow(index);\n    }\n\n    /**\n     * Returns the `RowType` by key.\n     *\n     * @example\n     * ```typescript\n     * const myRow = this.grid1.getRowByKey(1);\n     * ```\n     * @param key\n     */\n    public getRowByKey(key: any): RowType {\n        const data = this.dataView;\n        const rec = this.primaryKey ?\n            data.find(record => record[this.primaryKey] === key) :\n            data.find(record => record === key);\n        const index = data.indexOf(rec);\n        if (index < 0 || index > data.length) {\n            return undefined;\n        }\n\n        return new IgxHierarchicalGridRow(this as any, index, rec);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public allRows(): RowType[] {\n        return this.dataView.map((rec, index) => this.createRow(index));\n    }\n\n    /**\n     * Returns the collection of `IgxHierarchicalGridRow`s for current page.\n     *\n     * @hidden @internal\n     */\n    public dataRows(): RowType[] {\n        return this.allRows().filter(row => row instanceof IgxHierarchicalGridRow);\n    }\n\n    /**\n     * Returns an array of the selected `IgxGridCell`s.\n     *\n     * @example\n     * ```typescript\n     * const selectedCells = this.grid.selectedCells;\n     * ```\n     */\n    public get selectedCells(): CellType[] {\n        return this.dataRows().map((row) => row.cells.filter((cell) => cell.selected))\n            .reduce((a, b) => a.concat(b), []);\n    }\n\n    /**\n     * Returns a `CellType` object that matches the conditions.\n     *\n     * @example\n     * ```typescript\n     * const myCell = this.grid1.getCellByColumn(2, \"UnitPrice\");\n     * ```\n     * @param rowIndex\n     * @param columnField\n     */\n    public getCellByColumn(rowIndex: number, columnField: string): CellType {\n        const row = this.getRowByIndex(rowIndex);\n        const column = this.columns.find((col) => col.field === columnField);\n        if (row && row instanceof IgxHierarchicalGridRow && column) {\n            return new IgxGridCell(this, rowIndex, column);\n        }\n    }\n\n    /**\n     * Returns a `CellType` object that matches the conditions.\n     *\n     * @remarks\n     * Requires that the primaryKey property is set.\n     * @example\n     * ```typescript\n     * grid.getCellByKey(1, 'index');\n     * ```\n     * @param rowSelector match any rowID\n     * @param columnField\n     */\n    public getCellByKey(rowSelector: any, columnField: string): CellType {\n        const row = this.getRowByKey(rowSelector);\n        const column = this.columns.find((col) => col.field === columnField);\n        if (row && column) {\n            return new IgxGridCell(this, row.index, column);\n        }\n    }\n\n    public override pinRow(rowID: any, index?: number): boolean {\n        const row = this.getRowByKey(rowID);\n        return super.pinRow(rowID, index, row);\n    }\n\n    /** @hidden @internal */\n    public setDataInternal(value: any) {\n        const oldData = this._data;\n        this._data = value || [];\n        this.summaryService.clearSummaryCache();\n        if (!this._init) {\n            this.validation.updateAll(this._data);\n        }\n        if (this.autoGenerate && this._data.length > 0 && this.shouldRecreateColumns(oldData, this._data) && this.gridAPI.grid) {\n            this.setupColumns();\n            this.reflow();\n        }\n        this.cdr.markForCheck();\n        if (this.parent && (this.height === null || this.height.indexOf('%') !== -1)) {\n            // If the height will change based on how much data there is, recalculate sizes in igxForOf.\n            this.notifyChanges(true);\n        }\n    }\n\n    public override unpinRow(rowID: any): boolean {\n        const row = this.getRowByKey(rowID);\n        return super.unpinRow(rowID, row);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public dataLoading(event) {\n        this.dataPreLoad.emit(event);\n    }\n\n    /** @hidden */\n    public override featureColumnsWidth() {\n        return super.featureColumnsWidth(this.headerHierarchyExpander);\n    }\n\n    /**\n     * @hidden\n     */\n    public onRowIslandChange() {\n        if (this.parent) {\n            this.childLayoutKeys = this.parentIsland.children.filter(item => !(item as any)._destroyed).map((item) => item.key);\n        } else {\n            this.childLayoutKeys = this.childLayoutList.filter(item => !(item as any)._destroyed).map((item) => item.key);\n        }\n        if (!(this.cdr as any).destroyed) {\n            this.cdr.detectChanges();\n        }\n    }\n\n    /** @hidden @internal **/\n    public override ngOnDestroy() {\n        if (!this.parent) {\n            this.gridAPI.getChildGrids(true).forEach((grid) => {\n                if (!grid.childRow.cdr.destroyed) {\n                    grid.childRow.cdr.destroy();\n                }\n            });\n        }\n        if (this.parent && this.selectionService.activeElement) {\n            // in case selection is in destroyed child grid, selection should be cleared.\n            this._clearSeletionHighlights();\n        }\n        super.ngOnDestroy();\n    }\n\n    /**\n     * @hidden\n     */\n    public isRowHighlighted(rowData) {\n        return this.highlightedRowID === rowData.rowID;\n    }\n\n    /**\n     * @hidden\n     */\n    public isHierarchicalRecord(record: any): boolean {\n        if (this.isGhostRecord(record)) {\n            record = record.recordRef;\n        }\n        return this.childLayoutList.length !== 0 && record[this.childLayoutList.first.key];\n    }\n\n    /**\n     * @hidden\n     */\n    public override isChildGridRecord(record: any): boolean {\n        // Can be null when there is defined layout but no child data was found\n        return record?.childGridsData !== undefined;\n    }\n\n    /**\n     * @hidden\n     */\n    public trackChanges(index, rec) {\n        if (rec.childGridsData !== undefined) {\n            // if is child rec\n            return rec.rowID;\n        }\n        return rec;\n    }\n\n    /**\n     * @hidden\n     */\n    public getContext(rowData, rowIndex, pinned): any {\n        if (this.isChildGridRecord(rowData)) {\n            const cachedData = this.childGridTemplates.get(rowData.rowID);\n            if (cachedData) {\n                const view = cachedData.view;\n                const tmlpOutlet = cachedData.owner;\n                return {\n                    $implicit: rowData,\n                    moveView: view,\n                    owner: tmlpOutlet,\n                    index: this.dataView.indexOf(rowData)\n                };\n            } else {\n                // child rows contain unique grids, hence should have unique templates\n                return {\n                    $implicit: rowData,\n                    templateID: {\n                        type: 'childRow',\n                        id: rowData.rowID\n                    },\n                    index: this.dataView.indexOf(rowData)\n                };\n            }\n        } else {\n            return {\n                $implicit: this.isGhostRecord(rowData) || this.isRecordMerged(rowData) ? rowData.recordRef : rowData,\n                templateID: {\n                    type: 'dataRow',\n                    id: null\n                },\n                index: this.getDataViewIndex(rowIndex, pinned),\n                disabled: this.isGhostRecord(rowData),\n                metaData: this.isRecordMerged(rowData) ? rowData : null\n            };\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public get rootGrid(): GridType {\n        let currGrid = this as IgxHierarchicalGridComponent;\n        while (currGrid.parent) {\n            currGrid = currGrid.parent;\n        }\n        return currGrid;\n    }\n\n    /**\n     * @hidden\n     */\n    public get iconTemplate() {\n        const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n        if (!expanded && this.showExpandAll) {\n            return this.headerCollapsedIndicatorTemplate || this.defaultCollapsedTemplate;\n        } else {\n            return this.headerExpandedIndicatorTemplate || this.defaultExpandedTemplate;\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override getDragGhostCustomTemplate(): TemplateRef<any> {\n        if (this.parentIsland) {\n            return this.parentIsland.getDragGhostCustomTemplate();\n        }\n        return super.getDragGhostCustomTemplate();\n    }\n\n    /**\n     * @hidden\n     * Gets the visible content height that includes header + tbody + footer.\n     * For hierarchical child grid it may be scrolled and not fully visible.\n     */\n    public override getVisibleContentHeight() {\n        let height = super.getVisibleContentHeight();\n        if (this.parent) {\n            const rootHeight = this.rootGrid.getVisibleContentHeight();\n            const topDiff = this.nativeElement.getBoundingClientRect().top - this.rootGrid.nativeElement.getBoundingClientRect().top;\n            height = rootHeight - topDiff > height ? height : rootHeight - topDiff;\n        }\n        return height;\n    }\n\n    /**\n     * @hidden\n     */\n    public toggleAll() {\n        const expanded = this.hasExpandedRecords() && this.hasExpandableChildren;\n        if (!expanded && this.showExpandAll) {\n            this.expandAll();\n        } else {\n            this.collapseAll();\n        }\n    }\n\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public hasExpandedRecords() {\n        if (this.expandChildren) {\n            return true;\n        }\n        let hasExpandedEntry = false;\n        this.expansionStates.forEach(value => {\n            if (value) {\n                hasExpandedEntry = value;\n            }\n        });\n        return hasExpandedEntry;\n    }\n\n    public override getDefaultExpandState(record: any) {\n        if (this.hasChildrenKey && !record[this.hasChildrenKey]) {\n            return false;\n        }\n        return this.expandChildren;\n\n    }\n\n    /**\n     * @hidden\n     */\n    public isExpanded(record: any): boolean {\n        return this.gridAPI.get_row_expansion_state(record);\n    }\n\n    /**\n     * @hidden\n     */\n    public viewCreatedHandler(args) {\n        if (this.isChildGridRecord(args.context.$implicit)) {\n            const key = args.context.$implicit.rowID;\n            this.childGridTemplates.set(key, args);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    public viewMovedHandler(args) {\n        if (this.isChildGridRecord(args.context.$implicit)) {\n            // view was moved, update owner in cache\n            const key = args.context.$implicit.rowID;\n            const cachedData = this.childGridTemplates.get(key);\n            cachedData.owner = args.owner;\n\n            this.childLayoutList.forEach((layout) => {\n                const relatedGrid = this.gridAPI.getChildGridByID(layout.key, args.context.$implicit.rowID);\n                if (relatedGrid && relatedGrid.updateOnRender) {\n                    // Detect changes if `expandChildren` has changed when the grid wasn't visible. This is for performance reasons.\n                    relatedGrid.notifyChanges(true);\n                    relatedGrid.updateOnRender = false;\n                }\n            });\n        }\n    }\n\n    /** @hidden @internal **/\n    public onContainerScroll() {\n        this.hideOverlays();\n    }\n\n    /**\n     * @hidden\n     */\n    public createRow(index: number, data?: any): RowType {\n        let row: RowType;\n        const dataIndex = this._getDataViewIndex(index);\n        const rec: any = data ?? this.dataView[dataIndex];\n\n        if (!row && rec && !rec.childGridsData) {\n            row = new IgxHierarchicalGridRow(this as any, index, rec);\n        }\n\n        return row;\n    }\n\n    /** @hidden @internal */\n    public getChildGrids(inDeph?: boolean) {\n        return this.gridAPI.getChildGrids(inDeph);\n    }\n\n    protected override generateDataFields(data: any[]): string[] {\n        return super.generateDataFields(data).filter((field) => {\n            const layoutsList = this.parentIsland ? this.parentIsland.children : this.childLayoutList;\n            const keys = layoutsList.map((item) => item.key);\n            return keys.indexOf(field) === -1;\n        });\n    }\n\n    protected resizeNotifyHandler() {\n        // do not trigger reflow if element is detached or if it is child grid.\n        if (this.nativeElement?.isConnected && !this.parent) {\n            this.notifyChanges(true);\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    protected override initColumns(collection: IgxColumnComponent[], cb: (args: any) => void = null) {\n        if (this.hasColumnLayouts) {\n            // invalid configuration - hierarchical grid should not allow column layouts\n            // remove column layouts\n            const nonColumnLayoutColumns = this.columns.filter((col) => !col.columnLayout && !col.columnLayoutChild);\n            this.updateColumns(nonColumnLayoutColumns);\n        }\n        super.initColumns(collection, cb);\n    }\n\n\n    protected override setupColumns() {\n        if (this.parentIsland && this.parentIsland.childColumns.length > 0 && !this.autoGenerate) {\n            this.createColumnsList(this.parentIsland.childColumns.toArray());\n        } else {\n            super.setupColumns();\n        }\n    }\n\n    protected override getColumnList() {\n        const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n        const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n        const colsArray = [].concat.apply([], nestedColumns);\n        if (colsArray.length > 0) {\n            const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n            return topCols;\n        } else {\n            return this.columnList.toArray()\n        }\n    }\n\n    protected override onColumnsChanged() {\n        Promise.resolve().then(() => {\n            this.updateColumnList();\n        });\n    }\n\n    protected override _shouldAutoSize(renderedHeight) {\n        if (this.isPercentHeight && this.parent) {\n            return true;\n        }\n        return super._shouldAutoSize(renderedHeight);\n    }\n\n    private updateColumnList(recalcColSizes = true) {\n        const childLayouts = this.parent ? this.childLayoutList : this.allLayoutList;\n        const nestedColumns = childLayouts.map((layout) => layout.columnList.toArray());\n        const colsArray = [].concat.apply([], nestedColumns);\n        const colLength = this.columns.length;\n        const topCols = this.columnList.filter((item) => colsArray.indexOf(item) === -1);\n        if (topCols.length > 0) {\n            this.initColumns(topCols, (col: IgxColumnComponent) => this.columnInit.emit(col));\n            if (recalcColSizes && this.columns.length !== colLength) {\n                this.calculateGridSizes(false);\n            }\n        }\n    }\n\n    private _clearSeletionHighlights() {\n        [this.rootGrid, ...this.rootGrid.getChildGrids(true)].forEach(grid => {\n            grid.selectionService.clear();\n            grid.selectionService.activeElement = null;\n            grid.nativeElement.classList.remove('igx-grid__tr--highlighted');\n            grid.highlightedRowID = null;\n            grid.cdr.markForCheck();\n        });\n    }\n\n    private generateSchema() {\n        const filterableFields = this.columns.filter((column) => !column.columnGroup && column.filterable);\n        let entities: EntityType[];\n\n        if(filterableFields.length !== 0) {\n            entities = [\n                {\n                    name: null,\n                    fields: filterableFields.map(f => ({\n                            field: f.field,\n                            dataType: f.dataType,\n                            header: f.header,\n                            editorOptions: f.editorOptions,\n                            filters: f.filters,\n                            pipeArgs: f.pipeArgs,\n                            defaultTimeFormat: f.defaultTimeFormat,\n                            defaultDateTimeFormat: f.defaultDateTimeFormat\n                        })) as FieldType[]\n                }\n            ];\n\n            entities[0].childEntities = this.childLayoutList.reduce((acc, rowIsland) => {\n                const childFirstRowData = this.data?.length > 0 && this.data[0][rowIsland.key]?.length > 0 ?\n                    this.data[0][rowIsland.key][0] : null;\n                return acc.concat(this.generateChildEntity(rowIsland, childFirstRowData));\n            }\n            , []);\n        }\n\n        return entities;\n    }\n\n    private generateChildEntity(rowIsland: IgxRowIslandComponent, firstRowData: any[]): EntityType {\n        const entityName = rowIsland.key;\n        let fields = [];\n        let childEntities;\n        if (!rowIsland.autoGenerate) {\n            fields = flatten(rowIsland.childColumns.toArray()).filter(col => col.field)\n                .map(f => ({ field: f.field, dataType: f.dataType })) as FieldType[];\n        } else if (firstRowData) {\n            const rowIslandFields = Object.keys(firstRowData).map(key => {\n                if (firstRowData[key] instanceof Array) {\n                    return null;\n                }\n\n                return {\n                    field: key,\n                    dataType: this.resolveDataTypes(firstRowData[key])\n                }\n            });\n            fields = rowIslandFields.filter(f => f !== null) as FieldType[];\n        }\n\n        const rowIslandChildEntities = rowIsland.childLayoutList.reduce((acc, childRowIsland) => {\n            if (!firstRowData) {\n                return null;\n            }\n            const childFirstRowData = firstRowData.length > 0 && firstRowData[childRowIsland.key]?.length > 0 ?\n                firstRowData[childRowIsland.key][0] : null;\n            return acc.concat(this.generateChildEntity(childRowIsland, childFirstRowData));\n        }, []);\n\n        if (rowIslandChildEntities?.length > 0) {\n            childEntities = rowIslandChildEntities;\n        }\n\n        return {\n            name: entityName,\n            fields: fields,\n            childEntities: childEntities\n        }\n    }\n}\n","<div class=\"igx-grid__hierarchical-indent\" [ngClass]=\"{'igx-grid__hierarchical-indent--scroll': parentHasScroll}\">\n    <ng-container #container></ng-container>\n</div>\n","<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n<ng-container #toolbarOutlet></ng-container>\n\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n    [grid]=\"this\"\n    [hasMRL]=\"hasColumnLayouts\"\n    [width]=\"calcWidth\"\n    [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n    [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n    [unpinnedColumnCollection]=\"unpinnedColumns\"\n    (keydown.meta.c)=\"copyHandler($event)\"\n    (keydown.control.c)=\"copyHandler($event)\"\n    (copy)=\"copyHandler($event)\"\n    (keydown)=\"navigation.headerNavigation($event)\"\n    (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n    <div class=\"igx-grid__tbody-content\"  tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\"\n        (keydown)=\"navigation.handleNavigation($event)\" (dragStop)=\"selectionService.dragMode = $event\"\n        (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n        [style.height.px]=\"totalHeight\" [style.width.px]=\"totalCalcWidth\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody (scroll)=\"preventContainerScroll($event)\">\n        @if (moving && columnInDrag && pinnedColumns.length <= 0) {\n            <span\n                [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n                class=\"igx-grid__scroll-on-drag-left\"></span>\n        }\n        @if (moving && columnInDrag && pinnedColumns.length > 0) {\n            <span\n                [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n                class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n        }\n        @if (mergedDataInView && mergedDataInView.length > 0) {\n            <div igxScrollInertia\n            [IgxScrollInertiaScrollContainer]=\"this.verticalScrollContainer.dc.instance.scrollContainer\"\n            [IgxScrollInertiaDirection]=\"this.verticalScrollContainer.dc.instance.scrollDirection\">\n                @for (rowData of mergedDataInView; track rowData.record;) {\n                    <igx-hierarchical-grid-row class=\"igx-grid__tr--merged-top\" [gridID]=\"id\" [index]=\"rowData.index\" [data]=\"rowData.record.recordRef\" [metaData]=\"rowData.record\" [style.top.px]=\"getMergeCellOffset(rowData)\"\n                    [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowData.index:hasColumnLayouts:hasCellsToMerge:false:rowData.record:pipeTrigger\"\n                    [ngStyle]=\"rowStyles | igxGridRowStyles:rowData.record:rowData.index:pipeTrigger\" #row>\n                    </igx-hierarchical-grid-row>\n                }\n        </div>\n        }\n        <ng-template #pinnedRecordsTemplate>\n            @if (data\n                | gridTransaction:id:pipeTrigger\n                | visibleColumns:hasVisibleColumns\n                | gridAddRow:true:pipeTrigger\n                | gridRowPinning:id:true:pipeTrigger\n                | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n                | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger:true\n                | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n                | gridUnmergeActive:columnsToMerge:activeRowIndexes:true:pipeTrigger; as pinnedData\n            ) {\n                @if (pinnedData.length > 0) {\n                    <div #pinContainer class=\"igx-grid__tr--pinned\"\n                        [ngClass]=\"{ 'igx-grid__tr--pinned-bottom':  !isRowPinningToTop, 'igx-grid__tr--pinned-top': isRowPinningToTop }\"\n                        [style.width.px]=\"calcWidth\">\n                        @for (rowData of pinnedData; track (rowData.recordRef || rowData); let rowIndex = $index) {\n                            <ng-container *ngTemplateOutlet=\"pinned_hierarchical_record_template; context: getContext(rowData, rowIndex, true)\">\n                            </ng-container>\n                        }\n                    </div>\n                }\n            }\n        </ng-template>\n        <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n        </ng-container>\n        <ng-template igxGridFor let-rowData let-rowIndex=\"index\" [igxGridForOf]=\"renderData\n        | gridTransaction:id:pipeTrigger\n        | visibleColumns:hasVisibleColumns\n        | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n        | gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger\n        | gridHierarchicalPaging:!!paginator:page:perPage:id:pipeTrigger\n        | gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger\n        | gridAddRow:false:pipeTrigger\n        | gridRowPinning:id:false:pipeTrigger\n        | gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:pipeTrigger\n        | gridUnmergeActive:columnsToMerge:activeRowIndexes:false:pipeTrigger\"\n            [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n            [igxForContainerSize]=\"calcHeight\" [igxForItemSize]=\"renderedRowHeight\" [igxForTrackBy]=\"trackChanges\"\n            #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n            <div [attr.data-index]=\"rowIndex\">\n            <ng-template\n                [igxTemplateOutlet]=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) ? child_record_template : hierarchical_record_template))\"\n                [igxTemplateOutletContext]=\"getContext(rowData, rowIndex, false)\" (viewCreated)=\"viewCreatedHandler($event)\"\n                (viewMoved)=\"viewMovedHandler($event)\" (cachedViewLoaded)=\"cachedViewLoaded($event)\" (beforeViewDetach)=\"viewDetachHandler($event)\">\n            </ng-template>\n            </div>\n            <!-- <ng-container *igxTemplateOutlet=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) && isExpanded(rowData) ? child_record_template : hierarchical_record_template)); context: getContext(rowData)\"></ng-container> -->\n        </ng-template>\n        <ng-template #hierarchical_record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData let-metaData=\"metaData\">\n            <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [disabled]=\"disabledRow\" [data]=\"rowData\" [metaData]=\"metaData\"\n                [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:hasCellsToMerge:false:rowData:pipeTrigger\"\n                [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n            </igx-hierarchical-grid-row>\n        </ng-template>\n\n        <ng-template #pinned_hierarchical_record_template let-rowIndex=\"index\" let-rowData let-metaData=\"metaData\">\n            <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\" [metaData]=\"metaData\"\n                [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:hasCellsToMerge:false:rowData:pipeTrigger\"\n                [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row #pinnedRow>\n            </igx-hierarchical-grid-row>\n        </ng-template>\n        <ng-template #child_record_template let-rowIndex=\"index\" let-rowData>\n            <div [attr.data-rowindex]=\"rowIndex\" (scroll)=\"onContainerScroll()\"\n                [ngClass]=\"{\n                'igx-grid__tr-container': true,\n                'igx-grid__tr--highlighted':isRowHighlighted(rowData)\n            }\">\n                @for (layout of childLayoutList; track layout) {\n                    <igx-child-grid-row [parentGridID]=\"id\" [index]=\"rowIndex\"\n                        [data]=\"rowData\" [layout]=\"layout\" #row>\n                    </igx-child-grid-row>\n                }\n            </div>\n        </ng-template>\n        <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n        </ng-container>\n        <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n        @if (moving && columnInDrag) {\n            <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n                id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n        }\n        <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n        @if (!this.parent) {\n            <igc-trial-watermark></igc-trial-watermark>\n        }\n    </div>\n    <div igxToggle #loadingOverlay>\n        @if (shouldOverlayLoading) {\n            <igx-circular-bar [indeterminate]=\"true\">\n            </igx-circular-bar>\n        }\n    </div>\n    @if (moving && columnInDrag) {\n        <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n            id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n    }\n    <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n        <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\"isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n        <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n            <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n        </div>\n        <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n    </div>\n    <div class=\"igx-grid__addrow-snackbar\">\n        <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n    </div>\n\n    <div igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]=\"summaryRowHeight\" #tfoot>\n    <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" [attr.aria-activedescendant]=\"activeDescendant\"\n        (keydown)=\"navigation.summaryNav($event)\">\n        @if (hasSummarizedColumns && rootSummariesEnabled) {\n            <igx-grid-summary-row [style.width.px]=\"calcWidth\" [style.height.px]=\"summaryRowHeight\"\n                [gridID]=\"id\" role=\"row\"\n                [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n                class=\"igx-grid__summaries\" #summaryRow>\n            </igx-grid-summary-row>\n        }\n        <div class=\"igx-grid__tfoot-thumb\" [hidden]=\"!hasVerticalScroll()\" [style.height.px]=\"summaryRowHeight\"\n            [style.width.px]=\"scrollSize\"></div>\n    </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n    <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pinnedStartWidth\" [style.min-width.px]=\"pinnedStartWidth\"></div>\n    <div class=\"igx-grid__scroll-main\" [style.width.px]=\"unpinnedWidth\">\n        <ng-template igxGridFor [igxGridForOf]=\"[]\" #scrollContainer>\n        </ng-template>\n    </div>\n    <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pinnedEndWidth\" [style.min-width.px]=\"pinnedEndWidth\" [hidden]=\"pinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n    <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n    <ng-content select=\"igx-paginator,igc-paginator\"></ng-content>\n    <ng-container #paginatorOutlet></ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n    <span class=\"igx-grid__tbody-message\" role=\"cell\">\n        <span>{{emptyFilteredGridMessage}}</span>\n        @if (showAddButton) {\n            <span>\n                <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n            </span>\n        }\n    </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n    <span class=\"igx-grid__tbody-message\" role=\"cell\">\n        <span>{{emptyGridMessage}}</span>\n        @if (showAddButton) {\n            <span>\n                <ng-container *ngTemplateOutlet=\"addRowEmptyTemplate || defaultAddRowEmptyTemplate\"></ng-container>\n            </span>\n        }\n    </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n    <button type=\"button\" igxButton=\"contained\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n        {{resourceStrings.igx_grid_add_row_label}}\n    </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n    <div class=\"igx-grid__loading\">\n        <igx-circular-bar [indeterminate]=\"true\">\n        </igx-circular-bar>\n    </div>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n    <igx-icon family=\"default\" name=\"unfold_more\" role=\"button\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n    <igx-icon\n        family=\"default\"\n        name=\"unfold_less\"\n        role=\"button\"\n        [active]=\"hasExpandedRecords() && hasExpandableChildren\">\n    </igx-icon>\n</ng-template>\n\n@if (rowEditable) {\n    <div igxToggle #rowEditingOverlay>\n        <div [className]=\"bannerClass\">\n            <ng-container\n                *ngTemplateOutlet=\"resolveRowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n            </ng-container>\n        </div>\n    </div>\n}\n<ng-template #defaultRowEditText>\n    {{ this.resourceStrings.igx_grid_row_edit_text | igxStringReplace:'{0}':rowChangesCount.toString() | igxStringReplace:'{1}':hiddenColumnsCount.toString() }}\n</ng-template>\n<ng-template #defaultRowEditActions>\n    <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n    <button type=\"button\" igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n<ng-template #defaultRowEditTemplate>\n    <div class=\"igx-banner__message\">\n        <span class=\"igx-banner__text\">\n            <ng-container\n                *ngTemplateOutlet=\"this.crudService.row?.isAddRow ? rowAddTextTemplate : resolveRowEditText || defaultRowEditText;\n                context: { $implicit: !this.crudService.row?.isAddRow ? rowChangesCount : null }\">\n            </ng-container>\n        </span>\n    </div>\n    <div class=\"igx-banner__actions\">\n        <div class=\"igx-banner__row\">\n            <ng-container\n                *ngTemplateOutlet=\"resolveRowEditActions || defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n            </ng-container>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n    <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n</ng-template>\n\n@if (colResizingService.showResizer) {\n    <igx-grid-column-resizer></igx-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n@if (platform.isElements) {\n    <div #sink style=\"display: none;\"></div>\n    <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n    <ng-content select=\"igx-column,igc-column,igx-column-group,igc-column-group,igx-action-strip,igc-action-strip\"></ng-content>\n    <ng-content select=\"igx-row-island,igc-row-island\"></ng-content>\n}\n","import { NgModule } from '@angular/core';\nimport { IgxHierarchicalGridComponent } from './hierarchical-grid.component';\nimport { IgxRowIslandComponent } from './row-island.component';\n\n/* Imports that cannot be resolved from IGX_GRID_COMMON_DIRECTIVES spread\n    NOTE: Do not remove! Issue: https://github.com/IgniteUI/igniteui-angular/issues/13310\n*/\nimport {\n    IgxRowDirective,\n    IgxRowEditTextDirective,\n    IgxRowAddTextDirective,\n    IgxRowEditActionsDirective,\n    IgxRowEditTabStopDirective,\n    IgxGridFooterComponent,\n    IgxAdvancedFilteringDialogComponent,\n    IgxHeaderCollapsedIndicatorDirective,\n    IgxHeaderExpandedIndicatorDirective,\n    IgxRowCollapsedIndicatorDirective,\n    IgxRowExpandedIndicatorDirective,\n    IgxSortAscendingHeaderIconDirective,\n    IgxSortDescendingHeaderIconDirective,\n    IgxSortHeaderIconDirective,\n    IgxExcelStyleHeaderIconDirective,\n    IgxDragIndicatorIconDirective,\n    IgxRowDragGhostDirective,\n    IgxGridStateDirective,\n    IgxGridHeaderComponent,\n    IgxGridHeaderGroupComponent,\n    IgxGridHeaderRowComponent,\n    IgxFilterCellTemplateDirective,\n    IgxSummaryTemplateDirective,\n    IgxCellTemplateDirective,\n    IgxCellValidationErrorDirective,\n    IgxCellHeaderTemplateDirective,\n    IgxCellFooterTemplateDirective,\n    IgxCellEditorTemplateDirective,\n    IgxCollapsibleIndicatorTemplateDirective,\n    IgxColumnComponent,\n    IgxColumnGroupComponent,\n    IgxColumnLayoutComponent,\n    IgxColumnRequiredValidatorDirective,\n    IgxColumnMinValidatorDirective,\n    IgxColumnMaxValidatorDirective,\n    IgxColumnEmailValidatorDirective,\n    IgxColumnMinLengthValidatorDirective,\n    IgxColumnMaxLengthValidatorDirective,\n    IgxColumnPatternValidatorDirective,\n    IgxColumnActionsComponent,\n    IgxColumnHidingDirective,\n    IgxColumnPinningDirective,\n    IgxRowSelectorDirective,\n    IgxGroupByRowSelectorDirective,\n    IgxHeadSelectorDirective,\n    IgxCSVTextDirective,\n    IgxExcelTextDirective,\n    IgxGridToolbarActionsComponent,\n    IgxGridToolbarAdvancedFilteringComponent,\n    IgxGridToolbarComponent,\n    IgxGridToolbarExporterComponent,\n    IgxGridToolbarHidingComponent,\n    IgxGridToolbarPinningComponent,\n    IgxGridToolbarTitleComponent,\n    IgxGridToolbarDirective,\n    IgxGridExcelStyleFilteringComponent,\n    IgxExcelStyleHeaderComponent,\n    IgxExcelStyleSortingComponent,\n    IgxExcelStylePinningComponent,\n    IgxExcelStyleHidingComponent,\n    IgxExcelStyleSelectingComponent,\n    IgxExcelStyleClearFiltersComponent,\n    IgxExcelStyleConditionalFilterComponent,\n    IgxExcelStyleMovingComponent,\n    IgxExcelStyleSearchComponent,\n    IgxExcelStyleColumnOperationsTemplateDirective,\n    IgxExcelStyleFilterOperationsTemplateDirective,\n    IgxExcelStyleLoadingValuesTemplateDirective,\n    IgxGridActionButtonComponent,\n    IgxGridActionsBaseDirective,\n    IgxGridEditingActionsComponent,\n    IgxGridPinningActionsComponent\n} from \"igniteui-angular/grids/core\";\nimport {\n    IgxPaginatorComponent,\n    IgxPageNavigationComponent,\n    IgxPageSizeSelectorComponent,\n    IgxPaginatorContentDirective,\n    IgxPaginatorDirective\n} from 'igniteui-angular/paginator';\n\n/* NOTE: Hierarchical grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_HIERARCHICAL_GRID_DIRECTIVES = [\n    IgxHierarchicalGridComponent,\n    IgxRowIslandComponent,\n    IgxRowAddTextDirective,\n    IgxRowEditActionsDirective,\n    IgxRowEditTextDirective,\n    IgxRowEditTabStopDirective,\n    // IGX_GRID_COMMON_DIRECTIVES:\n    IgxRowDirective,\n    IgxGridFooterComponent,\n    IgxAdvancedFilteringDialogComponent,\n    IgxRowExpandedIndicatorDirective,\n    IgxRowCollapsedIndicatorDirective,\n    IgxHeaderExpandedIndicatorDirective,\n    IgxHeaderCollapsedIndicatorDirective,\n    IgxExcelStyleHeaderIconDirective,\n    IgxSortAscendingHeaderIconDirective,\n    IgxSortDescendingHeaderIconDirective,\n    IgxSortHeaderIconDirective,\n    IgxDragIndicatorIconDirective,\n    IgxRowDragGhostDirective,\n    IgxGridStateDirective,\n    // IGX_GRID_ACTIONS\n    IgxGridPinningActionsComponent,\n    IgxGridEditingActionsComponent,\n    IgxGridActionsBaseDirective,\n    IgxGridActionButtonComponent,\n    // IGX_GRID_HEADERS_DIRECTIVES:\n    IgxGridHeaderComponent,\n    IgxGridHeaderGroupComponent,\n    IgxGridHeaderRowComponent,\n    // IGX_GRID_COLUMN_DIRECTIVES:\n    IgxFilterCellTemplateDirective,\n    IgxSummaryTemplateDirective,\n    IgxCellTemplateDirective,\n    IgxCellValidationErrorDirective,\n    IgxCellHeaderTemplateDirective,\n    IgxCellFooterTemplateDirective,\n    IgxCellEditorTemplateDirective,\n    IgxCollapsibleIndicatorTemplateDirective,\n    IgxColumnComponent,\n    IgxColumnGroupComponent,\n    IgxColumnLayoutComponent,\n    // IGX_GRID_COLUMN_ACTIONS_DIRECTIVES:\n    IgxColumnActionsComponent,\n    IgxColumnHidingDirective,\n    IgxColumnPinningDirective,\n    // IGX_GRID_SELECTION_DIRECTIVES:\n    IgxRowSelectorDirective,\n    IgxGroupByRowSelectorDirective,\n    IgxHeadSelectorDirective,\n    // IGX_GRID_TOOLBAR_DIRECTIVES:\n    IgxCSVTextDirective,\n    IgxExcelTextDirective,\n    IgxGridToolbarActionsComponent,\n    IgxGridToolbarAdvancedFilteringComponent,\n    IgxGridToolbarComponent,\n    IgxGridToolbarExporterComponent,\n    IgxGridToolbarHidingComponent,\n    IgxGridToolbarPinningComponent,\n    IgxGridToolbarTitleComponent,\n    IgxGridToolbarDirective,\n    // IGX_GRID_EXCEL_STYLE_FILTER_DIRECTIVES:\n    IgxGridExcelStyleFilteringComponent,\n    IgxExcelStyleHeaderComponent,\n    IgxExcelStyleSortingComponent,\n    IgxExcelStylePinningComponent,\n    IgxExcelStyleHidingComponent,\n    IgxExcelStyleSelectingComponent,\n    IgxExcelStyleClearFiltersComponent,\n    IgxExcelStyleConditionalFilterComponent,\n    IgxExcelStyleMovingComponent,\n    IgxExcelStyleSearchComponent,\n    IgxExcelStyleColumnOperationsTemplateDirective,\n    IgxExcelStyleFilterOperationsTemplateDirective,\n    IgxExcelStyleLoadingValuesTemplateDirective,\n    // IGX_GRID_VALIDATION_DIRECTIVES:\n    IgxColumnRequiredValidatorDirective,\n    IgxColumnMinValidatorDirective,\n    IgxColumnMaxValidatorDirective,\n    IgxColumnEmailValidatorDirective,\n    IgxColumnMinLengthValidatorDirective,\n    IgxColumnMaxLengthValidatorDirective,\n    IgxColumnPatternValidatorDirective,\n    // IGX_PAGINATOR_DIRECTIVES:\n    IgxPaginatorComponent,\n    IgxPageNavigationComponent,\n    IgxPageSizeSelectorComponent,\n    IgxPaginatorContentDirective,\n    IgxPaginatorDirective\n] as const;\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_HIERARCHICAL_GRID_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_HIERARCHICAL_GRID_DIRECTIVES\n    ]\n})\nexport class IgxHierarchicalGridModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["flatten"],"mappings":"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"}