{"version":3,"file":"ironsource-fusion-ui-components-table-common-services.mjs","sources":["../../../projects/fusion-ui/components/table/common/services/table.service.ts","../../../projects/fusion-ui/components/table/common/services/table.utils.ts","../../../projects/fusion-ui/components/table/common/services/ironsource-fusion-ui-components-table-common-services.ts"],"sourcesContent":["import {EventEmitter, Injectable} from '@angular/core';\nimport {isNullOrUndefined, isNumber, isUndefined} from '@ironsource/fusion-ui/utils';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {LogService} from '@ironsource/fusion-ui/services/log';\nimport {\n    DEFAULT_EXPANDABLE_LEVEL,\n    MAXIMUM_EXPANDABLE_LEVEL,\n    TableCellAlign,\n    TableColumn,\n    TableColumnTypeEnum,\n    TableOptions,\n    TableRow,\n    TableRowChangedData,\n    TableRowMetaData,\n    TableRowsExpandableOptions\n} from '@ironsource/fusion-ui/components/table/common/entities';\nimport {MenuDropItem} from '@ironsource/fusion-ui/components/menu-drop';\nimport {UniqueIdService} from '@ironsource/fusion-ui/services/unique-id';\nimport {InlineInputType} from '@ironsource/fusion-ui/components/input-inline';\n\n@Injectable()\nexport class TableService {\n    private selectedRows: any[] = [];\n    public selectionChanged = new EventEmitter();\n    public tableScrolled = new EventEmitter<Event>();\n    public rowModelChange: EventEmitter<TableRowChangedData> = new EventEmitter();\n    public rowActionClicked = new EventEmitter<{action: MenuDropItem; rowIndex: string | number; row: TableRow}>();\n    public expandLevels: number;\n    public hasRowspanRows = false;\n    public rowsExpandableKey: string;\n    public rowsMetadata: {[rowId: string]: TableRowMetaData} = {};\n\n    constructor(private sanitizer: DomSanitizer, private logService: LogService, private uniqueService: UniqueIdService) {}\n\n    onRowsSelectChanged(isGroupedTable, rows, isChecked: boolean): void {\n        if (isGroupedTable) {\n            this.selectionChanged.emit({isAllSelected: isChecked});\n        } else {\n            this.selectedRows = [];\n            rows.forEach(row => {\n                if (!row.isRowTotal) {\n                    row.checkbox = isChecked;\n                    if (isChecked) {\n                        this.selectedRows.push(row);\n                    }\n                }\n            });\n            this.selectionChanged.emit(this.selectedRows);\n        }\n    }\n\n    onRowSelectChanged(isChecked: boolean, row: any): void {\n        this.setRowSelectionState(isChecked, row);\n        this.selectionChanged.emit(this.selectedRows);\n    }\n\n    removeRow({rows, rowIndex, row, options = {}}: {rows?: any; rowIndex?: number; row?: any; options?: TableOptions}): void {\n        if (options.remove && options.remove.active) {\n            if (rowIndex !== -1) {\n                let rowToRemove = row;\n                if (options.isGroupedTable) {\n                    // in grouped table we emit the data until the main parent\n                    let rowLevel = row.data.length;\n                    for (let i = rowIndex - 1; i >= 0; i--) {\n                        if (rows[i].data.length > rowLevel) {\n                            rowLevel = rows[i].data.length;\n                            rowToRemove = {parent: rows[i], child: rowToRemove};\n                        }\n                    }\n                }\n\n                // if onRemove event emitter is set we emit event to subscribers\n                if (options.remove.onRemove) {\n                    options.remove.onRemove.emit({rowIndex, rowToRemove});\n                } else if (!options.isGroupedTable) {\n                    rows.splice(rowIndex, 1);\n                }\n            } else {\n                this.logService.error(new Error('Row Not found'));\n            }\n        }\n    }\n\n    initSelectedRows(rows: any[]) {\n        this.selectedRows = [];\n        rows.forEach(row => {\n            this.setRowSelectionState(row.checkbox, row);\n        });\n    }\n\n    setRowsMetadata(rows: any[]): any[] {\n        return rows.map((row, idx) => {\n            const rowId = idx + '_' + this.uniqueService.getUniqueId();\n            this.rowsMetadata[rowId] = row.rowMetaData ?? {};\n            if (!!this.rowsExpandableKey && row[this.rowsExpandableKey]) {\n                row[this.rowsExpandableKey] = this.setRowsMetadata(row[this.rowsExpandableKey]);\n            }\n            return {...row, _rowId: rowId};\n        });\n    }\n\n    clearSelectedRows(): void {\n        this.selectedRows.forEach(row => {\n            row.checkbox = false;\n        });\n        this.selectedRows = [];\n    }\n\n    replaceSelectedRows({selectedTableRows, iditicationFunc}: {selectedTableRows: any[]; iditicationFunc: (row: any) => number}): void {\n        if (Array.isArray(selectedTableRows)) {\n            selectedTableRows.forEach(row => {\n                const id = iditicationFunc(row);\n                const selectedRowIndex = this.selectedRows.findIndex(selectedRow => iditicationFunc(selectedRow) === id);\n                if (selectedRowIndex !== -1) {\n                    this.selectedRows.splice(selectedRowIndex, 1);\n                    this.selectedRows.push(row);\n                }\n            });\n        }\n    }\n\n    isAllRowsSelected(rows): boolean {\n        return rows.length === this.selectedRows.length;\n    }\n\n    isPartialSelected(rows): boolean {\n        return this.selectedRows.length && rows.length !== this.selectedRows.length;\n    }\n\n    getColumnStyle(col: TableColumn): any {\n        const style = col.style || {};\n        if (col.stickyLeftMargin) {\n            style.left = col.stickyLeftMargin;\n        } else if (col.stickyRightMargin) {\n            style.right = col.stickyRightMargin;\n        }\n        return style;\n    }\n\n    getColumnClasses(col: any, isHeader = false): string[] {\n        const classes = [];\n        classes.push(!!col.groupName ? 'fu-border-left' : '');\n        if (isHeader) {\n            classes.push(this.isColumnSortable(col) ? `is-sort ${col.sort}` : '');\n            classes.push(this.getHeaderStickyClass(col));\n            classes.push(this.isTypeCheckbox(col) ? 'is-checkbox-holder' : '');\n        } else {\n            classes.push(`${col.class || ''} ${this.isColumnSortable(col) ? 'is-sorted' : ''}`.trim());\n        }\n        return classes.filter(Boolean);\n    }\n\n    isRowSelected(row: any): boolean {\n        return this.isInSelected(row) !== -1;\n    }\n\n    isColumnSortable(col: TableColumn): boolean {\n        return !isUndefined(col.sort);\n    }\n\n    isTableEmpty(rows, isGroupedTable, hasTotalRow = false): boolean {\n        return !isGroupedTable ? rows.length - (!!hasTotalRow ? 1 : 0) < 1 : !rows.value && (!rows.children || !rows.children.length);\n    }\n\n    isTypeComponent(column): boolean {\n        return TableColumnTypeEnum.Component === column.type;\n    }\n\n    isTypeString(column): boolean {\n        return !column.type || TableColumnTypeEnum.String === column.type;\n    }\n\n    isTypeCurrency(column): boolean {\n        return column.type && TableColumnTypeEnum.Currency === column.type;\n    }\n\n    isTypeNumber(column): boolean {\n        return column.type && TableColumnTypeEnum.Number === column.type;\n    }\n\n    isTypePercent(column): boolean {\n        return column.type && TableColumnTypeEnum.Percent === column.type;\n    }\n\n    isTypeDate(column): boolean {\n        return TableColumnTypeEnum.Date === column.type;\n    }\n\n    isTypeCheckbox(column): boolean {\n        return TableColumnTypeEnum.Checkbox === column.type;\n    }\n\n    isTypeToggleButton(column): boolean {\n        return TableColumnTypeEnum.ToggleButton === column.type;\n    }\n\n    isTypeInputEdit(column): boolean {\n        return TableColumnTypeEnum.InputEdit === column.type;\n    }\n\n    isInTotalTypeString(column): boolean {\n        let defaultAsString = false;\n        if (isNullOrUndefined(column.totalRowTypeAsString)) {\n            switch (column.type) {\n                case TableColumnTypeEnum.Component:\n                case TableColumnTypeEnum.Checkbox:\n                case TableColumnTypeEnum.ToggleButton:\n                case TableColumnTypeEnum.InputEdit:\n                    defaultAsString = true;\n            }\n        }\n        return defaultAsString || column.totalRowTypeAsString;\n    }\n\n    isRemove(isLast: boolean, tableOptions: TableOptions, rowOptions: any = {}) {\n        return tableOptions?.remove?.active && isLast && !rowOptions.hideRemoveIcon;\n    }\n\n    setWidth(isLast: boolean, width: string) {\n        return !isLast && width ? width : '';\n    }\n\n    getWidth(columns, column) {\n        if (column.width) {\n            return column.width;\n        } else {\n            let columnToCalc = columns.length;\n            const widthToReduce = columns.reduce((sum, currentColumn) => {\n                if (currentColumn.width) {\n                    columnToCalc--;\n                    return (sum ? `${sum} -` : '') + currentColumn.width;\n                } else {\n                    return sum;\n                }\n            }, '');\n\n            return this.sanitizer.bypassSecurityTrustStyle(`calc((100% - ${widthToReduce}) / ${columnToCalc})`);\n        }\n    }\n\n    getHeaderStickyClass(col: TableColumn): string {\n        let headerClass = '';\n        if (col.sticky) {\n            headerClass += ' sticky-left';\n        } else if (col.stickyRight) {\n            headerClass += ' sticky-right';\n        }\n        if (col.class && col.class.indexOf('display-shadow-on-scroll') !== -1) {\n            headerClass += ' display-shadow-on-scroll';\n        }\n        return headerClass;\n    }\n\n    setExpandLevelByExpandOptions(expandOptions: TableRowsExpandableOptions): void {\n        if (!!expandOptions.expandLevels) {\n            // check that it <= 2 or throw exception\n            if (expandOptions.expandLevels > MAXIMUM_EXPANDABLE_LEVEL) {\n                throw new Error(`Maximum table rows expandable level is: ${MAXIMUM_EXPANDABLE_LEVEL}`);\n            } else {\n                this.expandLevels = expandOptions.expandLevels;\n            }\n        } else {\n            this.expandLevels = DEFAULT_EXPANDABLE_LEVEL;\n        }\n    }\n\n    getExpandLevelByRowIndex(rowIndex: number | string): number {\n        if (isNumber(rowIndex)) {\n            return 1;\n        }\n        return (rowIndex as string).split('_').length;\n    }\n\n    isRowReadOnly(row: any): boolean {\n        return row.hasOwnProperty('_rowId')\n            ? !!this.rowsMetadata[row['_rowId']]?.readonly // for style v1 and 2\n            : !!row.rowMetaData?.readonly; // for style v3\n    }\n\n    toggleRowInRequest(row: any, isInRequest) {\n        this.rowsMetadata[row['_rowId']].inRequest = isInRequest;\n    }\n\n    setRowspanColumnsData(rows: any[], columnsKeys: string[]) {\n        rows.forEach(row => {\n            if (Object.values(row).some(val => Array.isArray(val))) {\n                if (!this.hasRowspanRows) {\n                    this.hasRowspanRows = true;\n                }\n                const rowId = row['_rowId'];\n                this.rowsMetadata[rowId].rowspanColumnsData = this.getRowspanColumns(row, columnsKeys);\n                this.rowsMetadata[rowId].maxRowspanInColumn = Math.max(\n                    ...(Object.values(this.rowsMetadata[rowId].rowspanColumnsData) as number[])\n                );\n            }\n        });\n    }\n\n    getRowspanColumnsData(row: any): {[key: string]: number} {\n        return this.rowsMetadata[row['_rowId']]?.rowspanColumnsData;\n    }\n\n    getMaxRowspanInColumn(row: any): number {\n        return this.rowsMetadata[row['_rowId']]?.maxRowspanInColumn ?? 0;\n    }\n\n    getCellAlignByColumnType(column: TableColumn): TableCellAlign | null {\n        const inputTypeAlignRight =\n            this.isTypeInputEdit(column) && column.inputType !== InlineInputType.Text && column.inputType !== InlineInputType.Dropdown;\n        return this.isTypeCurrency(column) || this.isTypeNumber(column) || this.isTypePercent(column) || inputTypeAlignRight\n            ? 'right'\n            : null;\n    }\n\n    private getRowspanColumns(row: any, columnsKeys: string[]): {[key: string]: number} {\n        const multiRows = {};\n        columnsKeys.forEach(cell => {\n            if (Array.isArray(row[cell])) {\n                multiRows[cell] = (row[cell] as []).length;\n            } else {\n                multiRows[cell] = 0;\n            }\n        });\n        return multiRows;\n    }\n\n    private setRowSelectionState(isChecked: boolean, row: any) {\n        const idx = this.isInSelected(row);\n        if (isChecked && idx === -1) {\n            row.checkbox = true;\n            this.selectedRows.push(row);\n        }\n        if (!isChecked && idx !== -1) {\n            row.checkbox = false;\n            this.selectedRows.splice(idx, 1);\n        }\n    }\n\n    private isInSelected(row: any) {\n        if (row.hasOwnProperty('checkbox')) {\n            return this.selectedRows.findIndex(item => {\n                return Object.keys(row).every(key => {\n                    if (key !== 'checkbox') {\n                        return row[key] == item[key];\n                    }\n                    return true;\n                });\n            });\n        }\n        return this.selectedRows.indexOf(row);\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\nimport {TableOptions, TableRowChangedData, TableRowClassesEnum} from '@ironsource/fusion-ui/components/table/common/entities';\nimport {BehaviorSubject} from 'rxjs';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class TableUtils {\n    public onTableRowDataChanged(options, tableOptions: TableOptions, tableRows$: BehaviorSubject<any[]>): TableRowChangedData {\n        const rowIndex = options.cellPosition.x;\n        const tableRowOptions = !isNullOrUndefined(tableOptions.rowsOptions) ? tableOptions.rowsOptions : (tableOptions.rowsOptions = {});\n\n        tableRowOptions[rowIndex] = {class: TableRowClassesEnum.Loading};\n        return {\n            rowIndex,\n            rowModel: tableRows$.getValue()[rowIndex],\n            keyChanged: options.keyChanged,\n            newValue: options.newValue,\n            prevValue: options.prevValue,\n            onRequestDone: (state: boolean, error: {message: string; status: number}, stayInEditOnCancel = false) => {\n                const rowOptionsByIndex = tableRowOptions[rowIndex];\n                if (!!rowOptionsByIndex) {\n                    delete rowOptionsByIndex.class;\n                    if (!Object.keys(rowOptionsByIndex).length) {\n                        delete tableRowOptions[rowIndex];\n                    }\n                }\n                // callback to cell\n                if (options.onCellRequestDone) {\n                    options.onCellRequestDone(state, error, stayInEditOnCancel);\n                }\n            }\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}