{"version":3,"file":"mosaic-design-infosec-components-components-grid-groups.mjs","sources":["../../../libs/components/grid-groups/src/lib/utils/grid-api.ts","../../../libs/components/grid-groups/src/lib/components/grid-groups/grid-groups.component.ts","../../../libs/components/grid-groups/src/lib/components/grid-groups/grid-groups.component.html","../../../libs/components/grid-groups/src/lib/grid-groups.module.ts","../../../libs/components/grid-groups/mosaic-design-infosec-components-components-grid-groups.ts"],"sourcesContent":["import { GridApi } from 'ag-grid-community';\n\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nexport function isNonNullableGridApiWithSelectedRows(api: GridApi | undefined): api is GridApi {\n    return isNonNullable(api) && api.getSelectedRows().length > 0;\n}\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChildren,\n    ViewChild\n} from '@angular/core';\nimport * as agGrid from 'ag-grid-community';\nimport { GridApi, ColumnApi } from 'ag-grid-community';\n\nimport { Range } from '@mosaic-design/infosec-components/types';\nimport { isNonNullable } from '@mosaic-design/infosec-components/utils';\n\nimport {\n    DefaultAgGridEvent,\n    FirstDataRenderedEvent,\n    GridGroupDefinition,\n    GridGroupDefinitionId,\n    GridGroupEvent,\n    GridGroupsRowData,\n    GridGroupTemplateContext,\n    GridReadyEvent,\n    OpenedChangeEvent,\n    RowDoubleClickedEvent,\n    RowEvent,\n    SelectionChangedEvent\n} from '../../types';\nimport { GridGroupsSelection } from '../../types/grid-groups-selection';\nimport { isNonNullableGridApiWithSelectedRows } from '../../utils';\n\n@Component({\n    selector: 'ic-grid-groups',\n    templateUrl: './grid-groups.component.html',\n    styleUrls: ['./grid-groups.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'ic-grid-groups'\n    }\n})\nexport class GridGroupsComponent<T> {\n    @Input() definitions: GridGroupDefinition[] = [];\n    @Input() rowData: GridGroupsRowData<T> = {};\n    @Input() isMultipleGridSelectionAllowed = false;\n    @Input() headerContentTemplate!: TemplateRef<GridGroupTemplateContext<T>>;\n    @Input() headerAdditionalContentTemplate: TemplateRef<GridGroupTemplateContext<T>> | undefined;\n    @Input() contentLoadingTemplate: TemplateRef<GridGroupTemplateContext<T>> | undefined;\n    @Input() contentLoadingOverlayTemplate: TemplateRef<GridGroupTemplateContext<T>> | undefined;\n    @Input() subHeaderContentTemplate: TemplateRef<GridGroupTemplateContext<T>> | undefined;\n    @Input() virtualScrollBuffer = 300;\n    @Input() notHaveGridContentTemplate: TemplateRef<GridGroupTemplateContext<T>> | undefined;\n\n    get selection(): Record<GridGroupDefinitionId, T[]> {\n        return this._selection;\n    }\n\n    @Input() set selection(value: GridGroupsSelection<T>) {\n        this._selection = value;\n        this.applySelection();\n    }\n\n    private _selection: GridGroupsSelection<T> = {};\n\n    @Output() isOpenedChange = new EventEmitter<OpenedChangeEvent<T>>();\n\n    @Output() gridReady = new EventEmitter<GridReadyEvent<T>>();\n    @Output() selectionChange = new EventEmitter<SelectionChangedEvent<T>>();\n    @Output() firstDataRendered = new EventEmitter<FirstDataRenderedEvent<T>>();\n    @Output() rowDoubleClicked = new EventEmitter<RowDoubleClickedEvent<T>>();\n    @Output() scrolledIndexChange = new EventEmitter<number>();\n    @Output() scrolledToEnd = new EventEmitter<void>();\n    @Output() renderedRangeChange = new EventEmitter<Range>();\n\n    @ViewChildren('item') items!: QueryList<ElementRef<HTMLDivElement>>;\n\n    @ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport | undefined;\n\n    get gridApi(): Record<GridGroupDefinitionId, GridApi> {\n        return this._gridApi;\n    }\n\n    private _gridApi: Record<GridGroupDefinitionId, GridApi> = {};\n\n    get columnApi(): Record<GridGroupDefinitionId, ColumnApi> {\n        return this._columnApi;\n    }\n\n    private _columnApi: Record<GridGroupDefinitionId, ColumnApi> = {};\n\n    private isSelectionApplying = false;\n    private isSelectionChangeStarted = false;\n    private groupIdsToClearSelection: GridGroupDefinitionId[] = [];\n\n    scrollToIndex(index: number): void {\n        this.virtualScroll?.scrollToIndex(index);\n    }\n\n    wrapAgGridEvent(groupDefinition: GridGroupDefinition, event: agGrid.AgGridEvent): DefaultAgGridEvent<T> {\n        return this.wrapEvent<agGrid.AgGridEvent, DefaultAgGridEvent<T>>(groupDefinition, event);\n    }\n\n    wrapRowEvent(groupDefinition: GridGroupDefinition, event: agGrid.RowEvent): RowEvent<T> {\n        return this.wrapEvent<agGrid.RowEvent, RowEvent<T>>(groupDefinition, event);\n    }\n\n    onIsOpenedChange(isOpened: boolean, definition: GridGroupDefinition): void {\n        this.isOpenedChange.emit({\n            isOpened,\n            definition,\n            rowData: this.rowData[definition.id] ?? []\n        });\n\n        delete this._gridApi[definition.id];\n        delete this._columnApi[definition.id];\n    }\n\n    getTemplateContext(definition: GridGroupDefinition): GridGroupTemplateContext<T> {\n        return {\n            definition,\n            rowData: this.rowData[definition.id] ?? []\n        };\n    }\n\n    trackById(index: number, definition: GridGroupDefinition): GridGroupDefinitionId {\n        return definition.id;\n    }\n\n    onGridReady(definition: GridGroupDefinition, event: agGrid.GridReadyEvent): void {\n        this._gridApi[definition.id] = event.api;\n        this._columnApi[definition.id] = event.columnApi;\n\n        event.api.setDomLayout('autoHeight');\n\n        this.gridReady.emit(this.wrapAgGridEvent(definition, event));\n    }\n\n    private wrapEvent<Event extends agGrid.AgGridEvent, Result extends GridGroupEvent<T>>(\n        definition: GridGroupDefinition,\n        event: Event\n    ): Result {\n        return {\n            ...event,\n            definition,\n            groupRowData: this.rowData[definition.id]\n        } as unknown as Result;\n    }\n\n    onSelectionChanged(definition: GridGroupDefinition): void {\n        if (this.isSelectionApplying) {\n            return;\n        }\n\n        //region misc\n        const emitSelection = (): void =>\n            this.selectionChange.emit({\n                selection: { ...this.selection }\n            });\n\n        const hasSelectedRowsInOtherGrid = (): boolean =>\n            this.definitions\n                .filter((def) => def.id !== definition.id)\n                .map((def) => this.gridApi[def.id])\n                .some((api) => api && api.getSelectedRows().length > 0);\n\n        const saveGroupIdsToClear = (): void => {\n            this.definitions\n                .filter((def) => def.id !== definition.id)\n                .forEach((def) => {\n                    const api = this.gridApi[def.id];\n                    if (api && api.getSelectedRows().length > 0) {\n                        this.groupIdsToClearSelection.push(def.id);\n                    }\n                });\n        };\n\n        const clearOtherGridsSelection = (): void => {\n            this.definitions\n                .filter((def) => def.id !== definition.id)\n                .map((def) => this.gridApi[def.id])\n                .filter(isNonNullableGridApiWithSelectedRows)\n                .forEach((api) => api.deselectAll());\n        };\n\n        const markGroupIdAsCleared = (): void => {\n            this.groupIdsToClearSelection = this.groupIdsToClearSelection.filter((id) => id !== definition.id);\n        };\n        //endregion\n        this.updateGridApiAndGroupSelection(definition.id);\n\n        if (this.isMultipleGridSelectionAllowed) {\n            emitSelection();\n        } else {\n            try {\n                if (!this.isSelectionChangeStarted) {\n                    if (hasSelectedRowsInOtherGrid()) {\n                        this.isSelectionChangeStarted = true;\n                        saveGroupIdsToClear();\n                        clearOtherGridsSelection();\n                    } else {\n                        emitSelection();\n                    }\n                } else {\n                    markGroupIdAsCleared();\n                    if (this.groupIdsToClearSelection.length === 0) {\n                        this.isSelectionChangeStarted = false;\n                        emitSelection();\n                    }\n                }\n            } catch (error) {\n                // eslint-disable-next-line no-console\n                console.error(error);\n                this.groupIdsToClearSelection = [];\n                this.isSelectionChangeStarted = false;\n            }\n        }\n    }\n\n    private updateGridApiAndGroupSelection(id: GridGroupDefinitionId): void {\n        this.removeDestroyedGridApiAndGroupsSelection(id);\n        const api = this._gridApi[id];\n        if (api) {\n            const selectedRows = api.getSelectedRows() as T[];\n\n            if (selectedRows.length) {\n                this._selection[id] = selectedRows;\n            } else {\n                delete this._selection[id];\n            }\n        }\n    }\n\n    private removeDestroyedGridApiAndGroupsSelection(defId: GridGroupDefinitionId): void {\n        const destroyedDefs = this.definitions\n            .filter((def) => def.id !== defId && this.isDestroyedGridApi(this.gridApi[def.id]))\n            .map((def) => def.id);\n\n        for (const def of destroyedDefs) {\n            delete this._gridApi[def];\n            delete this._selection[def];\n            delete this._columnApi[def];\n        }\n    }\n\n    private isDestroyedGridApi(api: GridApi | undefined): boolean {\n        // флаг приватный, поэтому через ключ\n        // eslint-disable-next-line @typescript-eslint/dot-notation\n        return !!api && !!api['destroyCalled'];\n    }\n\n    private applySelection(): void {\n        this.isSelectionApplying = true;\n\n        this.definitions.forEach((definition) => {\n            const api = this.gridApi[definition.id];\n            const columnApi = this.columnApi[definition.id];\n            if (api && columnApi) {\n                api.deselectAll();\n\n                const getRowId = (row: unknown): string => {\n                    const rowIdGetter = definition.gridOptions.getRowId;\n\n                    if (rowIdGetter) {\n                        return rowIdGetter({\n                            api,\n                            level: 0,\n                            columnApi,\n                            data: row,\n                            context: null\n                        });\n                    } else {\n                        return '';\n                    }\n                };\n\n                const rows = this.selection[definition.id];\n                if (isNonNullable(rows) && rows.length) {\n                    rows.map((row) => api.getRowNode(getRowId(row))).forEach((node) => {\n                        node?.setSelected(true);\n                    });\n                }\n            }\n        });\n\n        this.isSelectionApplying = false;\n    }\n}\n","<cdk-virtual-scroll-viewport\n    icVirtualScrollAutosize\n    [buffer]=\"virtualScrollBuffer\"\n    class=\"ic-grid-groups__virtual-viewport\"\n    (scrolledIndexChange)=\"scrolledIndexChange.emit($event)\"\n    (scrolledToEnd)=\"scrolledToEnd.emit()\"\n    (renderedRangeChange)=\"renderedRangeChange.emit($event)\"\n>\n    <div\n        #item\n        class=\"ic-grid-groups__item\"\n        *cdkVirtualFor=\"let definition of definitions; trackBy: trackById\"\n        [ngClass]=\"{ 'ic-grid-groups__item_loading': definition.isLoading }\"\n    >\n        <ic-collapse\n            [(isOpened)]=\"definition.isOpened\"\n            [headerContentTemplate]=\"gridGroupContentTemplate\"\n            [headerAdditionalContentTemplate]=\"gridGroupAdditionalContentTemplate\"\n            [contentTemplate]=\"contentTemplate\"\n            [disabled]=\"definition.isCollapseDisabled\"\n            (isOpenedChange)=\"onIsOpenedChange($event, definition)\"\n        >\n            <ng-template #gridGroupContentTemplate>\n                <ng-container *ngTemplateOutlet=\"headerContentTemplate; context: getTemplateContext(definition)\">\n                </ng-container>\n            </ng-template>\n\n            <ng-template #gridGroupAdditionalContentTemplate>\n                <ng-container *ngIf=\"headerAdditionalContentTemplate\">\n                    <ng-container\n                        *ngTemplateOutlet=\"headerAdditionalContentTemplate; context: getTemplateContext(definition)\"\n                    >\n                    </ng-container>\n                </ng-container>\n            </ng-template>\n\n            <ng-template #contentTemplate>\n                <ng-container *ngIf=\"subHeaderContentTemplate\">\n                    <ng-container *ngTemplateOutlet=\"subHeaderContentTemplate; context: getTemplateContext(definition)\"></ng-container>\n                </ng-container>\n\n                <ng-container *ngIf=\"definition.isLoading && contentLoadingTemplate; else gridContainerTemplate\">\n                    <ng-container *ngTemplateOutlet=\"contentLoadingTemplate\"></ng-container>\n                </ng-container>\n                <ng-template #gridContainerTemplate>\n                    <ng-container *ngIf=\"!rowData[definition.id]?.length && notHaveGridContentTemplate; else gridTemplate\">\n                        <ng-container *ngTemplateOutlet=\"notHaveGridContentTemplate\">\n                        </ng-container>\n                    </ng-container>\n\n                    <ng-template #gridTemplate>\n                        <ag-grid-angular\n                            icAgGrid\n                            [agGridAdditionalOptions]=\"definition.gridAdditionalOptions\"\n                            [clipboardCopyParams]=\"definition.clipboardCopyParams\"\n                            class=\"ic-grid-groups__grid\"\n                            [columnDefs]=\"definition.columnDefinitions\"\n                            [gridOptions]=\"definition.gridOptions\"\n                            [components]=\"definition.frameworkComponents\"\n                            [rowData]=\"rowData[definition.id] || []\"\n                            (selectionChanged)=\"onSelectionChanged(definition)\"\n                            (rowDoubleClicked)=\"rowDoubleClicked.emit(wrapRowEvent(definition, $event))\"\n                            (gridReady)=\"onGridReady(definition, $event)\"\n                        >\n                        </ag-grid-angular>\n\n                        <ng-container *ngIf=\"definition.isLoading && contentLoadingOverlayTemplate\">\n                            <ng-container *ngTemplateOutlet=\"contentLoadingOverlayTemplate\"></ng-container>\n                        </ng-container>\n                    </ng-template>\n                </ng-template>\n            </ng-template>\n        </ic-collapse>\n    </div>\n</cdk-virtual-scroll-viewport>\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AgGridModule } from 'ag-grid-angular';\n\nimport { IcCollapseModule } from '@mosaic-design/infosec-components/components/collapse';\nimport { IcAgGridDirective } from '@mosaic-design/infosec-components/external/ag-grid/directives';\nimport { IcVirtualScrollAutosizeDirective } from '@mosaic-design/infosec-components/external/object-hash/directives';\n\nimport { GridGroupsComponent } from './components';\n\n/**\n * @deprecated Будет удален в 19 версии. Компоненты будут standalone\n */\n@NgModule({\n    imports: [\n        CommonModule,\n        IcCollapseModule,\n        AgGridModule,\n        ScrollingModule,\n        IcVirtualScrollAutosizeDirective,\n        IcAgGridDirective\n    ],\n    declarations: [GridGroupsComponent],\n    exports: [GridGroupsComponent]\n})\nexport class IcGridGroupsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}