{"version":3,"file":"seniorsistemas-angular-components-table.mjs","sources":["../../projects/angular-components/table/src/lib/table/navigation/navigation.directive.ts","../../projects/angular-components/table/src/lib/table/row-toggler/row-toggler.directive.ts","../../projects/angular-components/table/src/lib/table/table-column/models/enum-column-field-type.ts","../../projects/angular-components/table/src/lib/table/table-column/models/enum-badge-colors.ts","../../projects/angular-components/table/src/lib/locale-utils.ts","../../projects/angular-components/table/src/lib/table/table-column/table-columns.component.ts","../../projects/angular-components/table/src/lib/table/table-column/table-columns.component.html","../../projects/angular-components/table/src/lib/table/table-paging/models/export-number-format.enum.ts","../../projects/angular-components/table/src/lib/table/export-utils.ts","../../projects/angular-components/table/src/lib/table/table-column/column-number-format.utils.ts","../../projects/angular-components/table/src/lib/table/table-paging/export-number-format.ts","../../projects/angular-components/table/src/lib/table/table-paging/table-paging.component.ts","../../projects/angular-components/table/src/lib/table/table-paging/table-paging.component.html","../../projects/angular-components/table/src/lib/table/table.module.ts","../../projects/angular-components/table/src/seniorsistemas-angular-components-table.ts"],"sourcesContent":["import { Directive, HostListener } from '@angular/core';\n\n@Directive({ selector: '[sNavigation]', standalone: true })\nexport class NavigationDirective {\n    @HostListener('keydown', ['$event'])\n    public onKeyDown(event: KeyboardEvent): void {\n        switch (event.key) {\n            case 'Right': // IE 11\n            case 'ArrowRight':\n                if (this._isRow(event.target as HTMLTableElement)) {\n                    this._focusFirstColFromCurrentRow(event.target as HTMLTableRowElement);\n                } else if (this._isCol(event.target as HTMLTableElement)) {\n                    this._focusNextSelectableCol(event.target as HTMLTableColElement);\n                }\n                event.preventDefault();\n                break;\n            case 'Left': // IE 11\n            case 'ArrowLeft':\n                if (this._isRow(event.target as HTMLTableElement)) {\n                    this._focusLastColFromPrevRow(event.target as HTMLTableRowElement);\n                } else if (this._isCol(event.target as HTMLTableElement)) {\n                    this._focusPrevSelectableCol(event.target as HTMLTableColElement);\n                }\n                event.preventDefault();\n                break;\n            case 'Up': // IE 11\n            case 'ArrowUp':\n                if (this._isRow(event.target as HTMLTableElement)) {\n                    this._setPrevRowFocus(event.target as HTMLTableRowElement);\n                } else if (this._isCol(event.target as HTMLTableElement)) {\n                    this._setAboveColFocus(event.target as HTMLTableColElement);\n                }\n                event.preventDefault();\n                break;\n            case 'Down': // IE 11\n            case 'ArrowDown':\n                if (this._isRow(event.target as HTMLTableElement)) {\n                    this._setNextRowFocus(event.target as HTMLTableRowElement);\n                } else if (this._isCol(event.target as HTMLTableElement)) {\n                    this._setUnderColFocus(event.target as HTMLTableColElement);\n                }\n                event.preventDefault();\n                break;\n        }\n    }\n\n    private _focusLastColFromPrevRow(event: HTMLTableRowElement): void {\n        const prevRow = this._findPrevSelectableRow(event);\n\n        if (prevRow) {\n            (prevRow.lastElementChild as HTMLTableColElement).focus();\n        }\n    }\n\n    private _focusFirstColFromCurrentRow(row: HTMLTableRowElement): void {\n        const firstCol = row.firstElementChild as HTMLTableColElement;\n\n        if (firstCol) {\n            firstCol.focus();\n        }\n    }\n\n    private _focusNextSelectableCol(col: HTMLTableColElement): void {\n        const nextCol = col.nextElementSibling as HTMLTableColElement;\n\n        if (nextCol) {\n            nextCol.focus();\n        } else {\n            const currentRow = col.parentElement as HTMLTableRowElement;\n            return this._setNextRowFocus(currentRow);\n        }\n    }\n\n    private _focusPrevSelectableCol(col: HTMLTableColElement): void {\n        const prevCol = col.previousElementSibling as HTMLTableColElement;\n\n        if (prevCol) {\n            prevCol.focus();\n        } else {\n            const currentRow = col.parentElement as HTMLTableRowElement;\n            return currentRow.focus();\n        }\n    }\n\n    private _setAboveColFocus(currentCol: HTMLTableColElement): void {\n        const cellIndex = (currentCol as any)['cellIndex'];\n        const currentRow = currentCol.parentElement;\n        const prevRow = this._findPrevSelectableRow(currentRow as HTMLTableRowElement);\n\n        if (prevRow) (prevRow.cells[cellIndex] as HTMLTableDataCellElement).focus();\n    }\n\n    private _setUnderColFocus(currentCol: HTMLTableColElement): void {\n        const cellIndex = (currentCol as any)['cellIndex'];\n        const currentRow = currentCol.parentElement;\n        const nextRow = this._findNextSelectableRow(currentRow as HTMLTableRowElement);\n        if (nextRow) (nextRow.cells[cellIndex] as HTMLTableDataCellElement).focus();\n    }\n\n    private _setNextRowFocus(row: HTMLTableRowElement): void {\n        const nextRow = this._findNextSelectableRow(row);\n        if (nextRow) {\n            nextRow.focus();\n        }\n    }\n\n    private _setPrevRowFocus(row: HTMLTableRowElement): void {\n        const prevRow = this._findPrevSelectableRow(row);\n        if (prevRow) {\n            prevRow.focus();\n        }\n    }\n\n    private _isRow(event: HTMLTableElement): boolean {\n        return event.tagName.toLocaleLowerCase() === 'tr';\n    }\n\n    private _isCol(event: HTMLTableElement): boolean {\n        return event.tagName.toLocaleLowerCase() === 'td';\n    }\n\n    private _findPrevSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement {\n        const prevRow = <HTMLTableRowElement>row.previousElementSibling;\n        return prevRow ?? null;\n    }\n\n    private _findNextSelectableRow(row: HTMLTableRowElement): HTMLTableRowElement | null {\n        const nextRow = <HTMLTableRowElement>row.nextElementSibling;\n        return nextRow ?? null;\n    }\n}\n\n","import { Directive, HostListener, Input, inject } from '@angular/core';\n\nimport { RowToggler, Table } from 'primeng/table';\n\n@Directive({ selector: '[sRowToggler]' })\nexport class RowTogllerDirective extends RowToggler {\n    override readonly dt: Table;\n\n    @Input({ alias: 'sRowToggler', required: true })\n    public override data: any = null;\n\n    constructor() {\n        const dt = inject(Table);\n\n        super(dt);\n        this.dt = dt;\n\n    }\n\n    @HostListener('keydown', ['$event'])\n    public onKeydown(event: KeyboardEvent) {\n        if (this.isEnabled()) {\n            switch (event.key) {\n                case 'Enter':\n                    this.dt.toggleRow(this.data, event);\n                    event.preventDefault();\n                    break;\n                default:\n                    event.preventDefault();\n                    break;\n            }\n        }\n    }\n}\n","export enum EnumColumnFieldType {\n    STRING = 'STRING',\n    NUMBER = 'NUMBER',\n    BOOLEAN = 'BOOLEAN',\n    DATE = 'DATE',\n    CURRENCY = 'CURRENCY',\n    ENUM = 'ENUM',\n    LOOKUP = 'LOOKUP',\n    LINK = 'LINK',\n    TOKENS = 'TOKENS'\n}\n","export enum EnumBadgeColors {\n    RED = 'red',\n    ORANGE = 'orange',\n    YELLOW = 'yellow',\n    GREEN = 'green',\n    BLUE = 'blue',\n    GRAY = 'gray',\n}\n","export const convertToMomentDateFormat = (format: string): string => {\n    // A ordem dos replaces é importante.\n    return format\n        .replace(/\\bd\\b/, \"D\") // day of month (no leading zero)\n        .replace(/\\bdd\\b/, \"DD\") // day of month\n        .replace(/\\bo\\b/, \"DDD\") // day of the year (no leading zero)\n        .replace(/\\boo\\b/, \"DDDD\") // day of the year\n        .replace(/\\bM\\b/, \"MMM\") // month name short\n        .replace(/\\bMM\\b/, \"MMMM\") // month name long\n        .replace(/\\bm\\b/, \"M\") // month of year (no leading)\n        .replace(/\\bmm\\b/, \"MM\") // month of year\n        .replace(/\\by\\b/, \"YY\") // year (two digits)\n        .replace(/\\byy\\b/, \"YYYY\"); // year (four digits)\n}","import { Component, Input, OnChanges, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, inject } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { HostProjectConfigs, HostProjectConfigsInjectionToken } from '@seniorsistemas/angular-components/common';\nimport {\n    applyLocalizedMask,\n    LocaleService,\n    LocalizedBignumberOptions,\n} from '@seniorsistemas/angular-components/locale';\nimport { NumericService } from '@seniorsistemas/angular-components/numeric';\nimport { IToken } from '@seniorsistemas/angular-components/token-list';\nimport { deepClone, isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport BigNumber from 'bignumber.js';\nimport moment from 'moment';\n\nimport { convertToMomentDateFormat } from '../../locale-utils';\nimport { Column, ColumnValues, EnumColumnFieldType, TableColumnLocaleOptions } from './models';\n\n/**\n * @description Componente interno que renderiza uma linha de colunas da tabela,\n * aplicando formatação localizada (data, número, moeda, token, etc.) para cada coluna.\n * Normalmente usado dentro do contexto de uma tabela PrimeNG.\n *\n * @example\n * ```html\n * <s-table-columns [columns]=\"colunas\" [rowValue]=\"linha\" />\n * ```\n *\n * @category Data\n */\n@Component({\n    templateUrl: './table-columns.component.html',\n    styleUrls: ['./table-columns.component.scss'],\n    selector: 's-table-columns',\n})\nexport class TableColumnsComponent implements OnChanges {\n    private readonly localeService = inject(LocaleService);\n    private readonly viewContainerRef = inject(ViewContainerRef);\n    private readonly translate = inject(TranslateService);\n    private readonly numericService = inject(NumericService);\n    private readonly hostProjectConfigs = inject<HostProjectConfigs>(HostProjectConfigsInjectionToken);\n\n    @ViewChild('columnsTemplate', { static: true })\n    public columnsTemplate: TemplateRef<any> | null = null;\n\n    /** @description Lista de configurações das colunas a serem renderizadas. @default [] */\n    @Input()\n    public columns: Column[] = [];\n\n    /** @description Objeto da linha com os valores a serem exibidos nas colunas. Campo obrigatório. */\n    @Input()\n    public rowValue!: any;\n\n    /** @description Opções de localização (calendário e número) usadas para formatação. @default null */\n    @Input()\n    public locale: TableColumnLocaleOptions | null = null;\n\n    cellsData: (CellData | null)[] = [];\n\n    formattedColumns: ColumnValues[] = [];\n\n    constructor() {\n        this.locale = {\n            calendar: {\n                ...this.localeService.getLocaleOptions()?.calendar,\n                dateFormat: convertToMomentDateFormat(this.localeService.getLocaleOptions()?.calendar.dateFormat ?? ''),\n            },\n            number: {\n                ...this.localeService.getLocaleOptions()?.number,\n                scale: 0,\n            },\n        };\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.validateComponentAttributes(changes);\n\n        if (changes['columns'] && changes['columns'].currentValue !== changes['columns'].previousValue) {\n            this.columns = this.sortColumnsBySequence(changes['columns'].currentValue);\n        }\n        this.createColumnsTemplate(changes);\n    }\n\n    public isArray(value: any): boolean {\n        return Array.isArray(value);\n    }\n\n    public getTokensByColumn(column: ColumnValues) {\n        return column.columnValue as IToken[];\n    }\n\n    private getCellData(column: ColumnValues): CellData | null {\n        const { columnValue, separator, uninformed } = column;\n\n        if (typeof columnValue === 'string') {\n            const splittedString = columnValue.split(separator);\n\n            return splittedString.map((string, index) => {\n                const isLastIndex = splittedString.length - 1 === index;\n\n                return {\n                    value: string,\n                    isUninformed: string === uninformed,\n                    separator: !isLastIndex ? separator : null,\n                };\n            });\n        }\n\n        return null;\n    }\n\n    private validateComponentAttributes(changes: SimpleChanges): void {\n        if (!this.columns && !changes['columns']?.currentValue) {\n            throw new Error(\"The 'columns' attribute must be informed!\");\n        }\n        if (!this.rowValue && !changes['rowValue']?.currentValue) {\n            throw new Error(\"The 'rowValue' attribute must be informed!\");\n        }\n    }\n\n    private createColumnsTemplate(changes: SimpleChanges): void {\n        this.viewContainerRef.clear();\n\n        const columns: Column[] = changes['columns']?.currentValue || this.columns;\n\n        const rowValue: object = deepClone(changes['rowValue']?.currentValue ?? this.rowValue);\n\n        const locale: TableColumnLocaleOptions = changes['locale']?.currentValue || this.locale;\n\n        this.formattedColumns = columns.map((column) => this.getColumnValue(column, rowValue, locale));\n\n        this.cellsData = this.formattedColumns.map((column) => this.getCellData(column));\n\n        if (!isNullOrUndefined(this.columnsTemplate)) {\n            this.viewContainerRef.createEmbeddedView(this.columnsTemplate);\n        }\n    }\n\n    private getColumnSeparator(column: Column) {\n        return column.separator ? column.separator : ' - ';\n    }\n\n    private getTranslationPrefix(column: Column) {\n        return column.prefix ? column.prefix : `${this.hostProjectConfigs.domain}.${this.hostProjectConfigs.service}.`;\n    }\n\n    private isAttributeValueInvalid(attributeValue: any) {\n        return (\n            attributeValue === null ||\n            attributeValue === undefined ||\n            (attributeValue?.options?.numberFormatOptions && isNullOrUndefined(attributeValue?.value)) ||\n            (this.isArray(attributeValue) && !attributeValue.length) ||\n            (typeof attributeValue === 'string' && attributeValue.trim() === '')\n        );\n    }\n\n    private getFormattedColumnValue(\n        column: Column,\n        columnValue: any[],\n        unifiedColumnValues: string,\n        uninformedText: string,\n        uninformedNumber: number,\n    ) {\n        if (uninformedNumber === column.attributes.length) {\n            return uninformedText;\n        }\n\n        if (column.type === EnumColumnFieldType.TOKENS) {\n            return [].concat.apply(\n                [],\n                columnValue.filter((values) => values !== uninformedText),\n            );\n        }\n\n        return unifiedColumnValues;\n    }\n\n    private getAttributeValue(attribute: string, rowValue: any) {\n        let attributeValue!: any;\n\n        attribute.split('/').forEach((value: string) => {\n            if (!attributeValue) {\n                value.split('.').forEach((val: string, i) => {\n                    if (!rowValue) {\n                        return;\n                    }\n\n                    if (i === 0) {\n                        attributeValue = rowValue[val];\n                    } else {\n                        if (attributeValue) {\n                            attributeValue = attributeValue[val];\n                        }\n                    }\n                });\n            }\n        });\n\n        return attributeValue;\n    }\n\n    private getNumberConfigs(column: Column): LocalizedBignumberOptions {\n        return {\n            ...this.locale?.number,\n            scale:\n                column.scale !== null && column.scale !== undefined\n                    ? this.getColumnScale(column.scale)\n                    : this.locale?.number.scale,\n            prefix: `${this.locale?.number.currencySymbol} `,\n        };\n    }\n\n    private getDateFormat(column: Column, locale: TableColumnLocaleOptions) {\n        return column.dateFormat ? column.dateFormat : locale.calendar.dateFormat;\n    }\n\n    private getColumnValue(column: Column, rowValue: any, locale: TableColumnLocaleOptions): ColumnValues {\n        const prefix = this.getTranslationPrefix(column);\n        const separator = this.getColumnSeparator(column);\n        const uninformed = this.translate.instant(prefix + 'empty_label');\n        const style = column.style;\n\n        const columnValue = column.attributes.map((attribute: string | number | symbol) => {\n            const attributeValue = this.getAttributeValue(attribute as string, rowValue);\n\n            if (this.isAttributeValueInvalid(attributeValue)) {\n                return uninformed;\n            }\n\n            const numberConfigs = this.getNumberConfigs(column);\n\n            switch (column.type) {\n                case EnumColumnFieldType.ENUM:\n                    return this.translate.instant(column.enumPrefix + attributeValue.toString().toLowerCase());\n\n                case EnumColumnFieldType.CURRENCY: {\n                    const numberFormatOptions = attributeValue?.options?.numberFormatOptions\n                        ? attributeValue.options.numberFormatOptions\n                        : typeof column.numberFormatOptions === 'function'\n                          ? column.numberFormatOptions({\n                                rowData: rowValue,\n                            })\n                          : column.numberFormatOptions;\n\n                    return numberFormatOptions\n                        ? this.numericService.instant(attributeValue, {\n                              numberFormatOptions,\n                          })\n                        : applyLocalizedMask(\n                              attributeValue,\n                              {\n                                  decimalSeparator: '.',\n                                  thousandsSeparator: ',',\n                                  scale: 2,\n                                  prefix: '',\n                                  suffix: '',\n                                  allowNegative: true,\n                                  ...numberConfigs,\n                              },\n                              this.isNumber(attributeValue),\n                          );\n                }\n\n                case EnumColumnFieldType.DATE:\n                    const dateFormat = this.getDateFormat(column, locale);\n                    return moment(attributeValue).format(dateFormat);\n\n                case EnumColumnFieldType.BOOLEAN:\n                    const value = attributeValue ? 'yes' : 'no';\n                    return this.translate.instant(prefix + value);\n\n                case EnumColumnFieldType.NUMBER: {\n                    numberConfigs.prefix = '';\n\n                    const numberFormatOptions = attributeValue?.options?.numberFormatOptions\n                        ? attributeValue.options.numberFormatOptions\n                        : typeof column.numberFormatOptions === 'function'\n                          ? column.numberFormatOptions({\n                                rowData: rowValue,\n                            })\n                          : column.numberFormatOptions;\n\n                    return numberFormatOptions\n                        ? this.numericService.instant(attributeValue, {\n                              numberFormatOptions,\n                          })\n                        : applyLocalizedMask(\n                              attributeValue,\n                              {\n                                  decimalSeparator: '.',\n                                  thousandsSeparator: ',',\n                                  scale: 2,\n                                  prefix: '',\n                                  suffix: '',\n                                  allowNegative: true,\n                                  ...numberConfigs,\n                              },\n                              this.isNumber(attributeValue),\n                          );\n                }\n                case EnumColumnFieldType.TOKENS:\n                    return this.getTokens(attributeValue);\n\n                default:\n                    return attributeValue;\n            }\n        });\n\n        const unifiedColumnValues = columnValue.join(separator);\n        const uninformedNumber = unifiedColumnValues.split(separator).filter((value) => value === uninformed).length;\n        const formattedColumnValue = this.getFormattedColumnValue(\n            column,\n            columnValue,\n            unifiedColumnValues,\n            uninformed,\n            uninformedNumber,\n        );\n\n        return {\n            style,\n            columnValue: formattedColumnValue,\n            separator,\n            uninformed,\n            badgeConfigs: column?.badgeConfigs?.find(\n                (badgeConfig) => badgeConfig.enumValue === rowValue[column.attributes[0] ?? column.field],\n            ),\n            color: column.color?.(rowValue),\n            type: column.type,\n            tooltip: this.getColumnTooltip(column.tooltip),\n            infoSign: this.getColumnInfoSign(column.infoSign),\n            onLinkClick: column.onLinkClick,\n            onColumnClick: column.onColumnClick,\n            compact: column.compact,\n        };\n    }\n\n    private getColumnScale(scale: number | ((rowValue: any) => number)): number {\n        if (typeof scale === 'function') {\n            return scale(deepClone(this.rowValue));\n        }\n        return scale;\n    }\n\n    private getColumnInfoSign(infoSign?: string | ((rowValue: any) => string | null)): string | null {\n        if (!isNullOrUndefined(infoSign)) {\n            if (typeof infoSign === 'function') {\n                return infoSign(deepClone(this.rowValue));\n            }\n            return infoSign;\n        }\n        return null;\n    }\n\n    private getColumnTooltip(tooltip?: string | ((rowValue: any) => string)): string {\n        if (!isNullOrUndefined(tooltip)) {\n            if (typeof tooltip === 'function') {\n                return tooltip(deepClone(this.rowValue));\n            }\n            return tooltip;\n        }\n        return '';\n    }\n\n    private isNumber(value: any): boolean {\n        return !new BigNumber(value).isNaN();\n    }\n\n    private getTokens(values: any): IToken[] {\n        if (!this.isArray(values)) {\n            throw new Error('To use tokens an array must be informed');\n        }\n\n        if (!this.isValidTokenArray(values)) {\n            throw new Error(\n                'Not a valid token array. Must be a primitive values array or an objects with label attribute array',\n            );\n        }\n\n        if (this.isLabelObjectArray(values)) {\n            return values;\n        }\n\n        return values\n            .filter((value: any) => value !== undefined && value !== null)\n            .map((value: any) => {\n                const label = typeof value === 'symbol' ? value.toString() : `${value}`;\n                return {\n                    label,\n                };\n            });\n    }\n\n    private isValidTokenArray(values: any[]): boolean {\n        return this.isPrimitiveValuesArray(values) || this.isLabelObjectArray(values);\n    }\n\n    private isPrimitiveValuesArray(values: any[]): boolean {\n        return values.filter((value) => value !== Object(value)).length === values.length;\n    }\n\n    private isLabelObjectArray(values: any[]): boolean {\n        return values.filter((value) => value?.label !== null && value?.label !== undefined).length === values.length;\n    }\n\n    private sortColumnsBySequence(columns: Column[]): Column[] {\n        return columns.sort((a, b) => (a.sequence ?? 0) - (b.sequence ?? 0));\n    }\n}\n\ntype CellData = { value: string; isUninformed: boolean; separator: string | null }[];\n\n","<ng-template #columnsTemplate>\n    @for (column of formattedColumns; track $index; let i = $index) {\n        <td\n            [ngStyle]=\"column.style\"\n            (click)=\"column.onColumnClick ? column.onColumnClick(rowValue) : null\"\n        >\n            @if (column.type !== 'TOKENS' || !isArray(column.columnValue)) {\n                <div [ngClass]=\"{ 'compact-column': column.compact }\">\n                    @if (column.type !== 'LINK') {\n                        <span\n                            [sTooltip]=\"column.tooltip\"\n                            [escape]=\"false\"\n                        >\n                            <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n                        </span>\n                    }\n\n                    @if (column.type === 'LINK') {\n                        @if (cellsData[i]?.[0]?.isUninformed) {\n                            <span class=\"sds-empty-value\">{{ cellsData[i]?.[0]?.value }}</span>\n                        } @else {\n                            <a\n                                [sTooltip]=\"column.tooltip\"\n                                [escape]=\"false\"\n                                (click)=\"column.onLinkClick ? column.onLinkClick(rowValue) : null\"\n                            >\n                                <ng-container *ngTemplateOutlet=\"columnValueTemplate\"></ng-container>\n                            </a>\n                        }\n                    }\n\n                    <ng-template #columnValueTemplate>\n                        @for (cellData of cellsData[i]; track $index) {\n                            @if (cellData.isUninformed) {\n                                <span class=\"sds-empty-value\">{{ cellData.value }}</span>\n                            } @else {\n                                @if (column.badgeConfigs) {\n                                    <s-badge\n                                        [sTooltip]=\"column.tooltip\"\n                                        [color]=\"column.badgeConfigs.color\"\n                                        [text]=\"cellData.value\"\n                                    ></s-badge>\n                                } @else {\n                                    <span\n                                        [ngClass]=\"{\n                                            'column-cell-red': column.color === 'Red',\n                                            'column-cell-orange': column.color === 'Orange',\n                                            'column-cell-yellow': column.color === 'Yellow',\n                                            'column-cell-green': column.color === 'Green',\n                                            'column-cell-blue': column.color === 'Blue',\n                                        }\"\n                                        >{{ cellData.value }}</span\n                                    >\n                                }\n                            }\n\n                            @if (cellData.separator) {\n                                <span>{{ cellData.separator }}</span>\n                            }\n                        }\n\n                        @if (!!column.infoSign) {\n                            <span *sInfoSign=\"column.infoSign\"></span>\n                        }\n                    </ng-template>\n                </div>\n            } @else {\n                <s-token-list\n                    [tokens]=\"getTokensByColumn(column)\"\n                    [hidePointerEvents]=\"true\"\n                ></s-token-list>\n\n                @if (!!column.infoSign) {\n                    <span *sInfoSign=\"column.infoSign\"></span>\n                }\n            }\n        </td>\n    }\n</ng-template>\n\n","export enum ExportNumberFormat {\n    Raw = 'raw',\n    Localized = 'localized',\n}\n","import { ElementRef } from '@angular/core';\nimport { Column } from '../table/table-column/models/column.interface';\nimport { EnumColumnFieldType } from '../table/table-column/models/enum-column-field-type';\n\ndeclare global {\n    interface Navigator {\n        msSaveOrOpenBlob(blob: Blob, name: string): void;\n    }\n}\n\nexport abstract class ExportUtils {\n    public static addClass(element: ElementRef, className: string) {\n        element.nativeElement.className = `${element.nativeElement.className} ${className}`;\n    }\n\n    public static removeClass(element: ElementRef, className: string) {\n        if (element.nativeElement.className.includes(className)) {\n            element.nativeElement.className = element.nativeElement.className.replace(className, '');\n        }\n    }\n\n    public static exportCSV(\n        columns: Partial<Column>[] = [],\n        data: any[] = [],\n        csvSeparator: string = ';',\n        documentName: string = 'download',\n    ) {\n        let csv = '\\ufeff';\n\n        columns\n            .filter((column: any) => column.exportable && column.field)\n            .forEach((column: any, i: number) => {\n                csv += `\"${column.header || column.field}\"`;\n\n                if (i < columns.length - 1) csv += csvSeparator;\n            });\n\n        data.forEach((record: any) => {\n            csv += '\\n';\n\n            columns\n                .filter((column: any) => column.exportable && column.field)\n                .forEach((column: any, i: number) => {\n                    let cellData;\n                    if (Array.isArray(column.field)) {\n                        const fieldValues = column.field.map((col: string) =>\n                            this._resolveFieldData(record, col, column),\n                        );\n\n                        cellData = fieldValues\n                            .flat()\n                            .filter((value: string) => value !== null && value !== undefined)\n                            .join(column.separator);\n                    } else {\n                        cellData = this._resolveFieldData(record, column.field, column);\n                    }\n\n                    if (cellData !== null) cellData = String(cellData).replace(/\"/g, '\"\"');\n                    else cellData = '';\n\n                    csv += `\"${cellData}\"`;\n\n                    if (i < columns.length - 1) csv += csvSeparator;\n                });\n        });\n\n        const blob = new Blob([csv], {\n            type: 'text/csv;charset=utf-8;',\n        });\n\n        if (typeof window.navigator.msSaveOrOpenBlob === 'function') {\n            navigator.msSaveOrOpenBlob(blob, documentName + '.csv');\n        } else {\n            const link = document.createElement('a');\n            link.style.display = 'none';\n            document.body.appendChild(link);\n            if (link.download !== undefined) {\n                link.setAttribute('href', URL.createObjectURL(blob));\n                link.setAttribute('download', documentName + '.csv');\n                link.click();\n            } else {\n                csv = 'data:text/csv;charset=utf-8,' + csv;\n                window.open(encodeURI(csv));\n            }\n            document.body.removeChild(link);\n        }\n    }\n\n    private static _resolveFieldData(data: any, field: any, column: Column): string | null {\n        if (!data && !field) {\n            return null;\n        }\n        const needSplitValues = field.includes('.');\n        if (this._isFunction(field)) {\n            return field(data);\n        } else if (!needSplitValues) {\n            return data[field];\n        } else {\n            const fields: string[] = field.split('.');\n            let value = data;\n            for (let i = 0, len = fields.length; i < len; ++i) {\n                if (value === null || value === undefined) {\n                    return null;\n                }\n                value = value[fields[i]];\n            }\n            return ExportUtils._extractData(value, column);\n        }\n    }\n\n    private static _isFunction(obj: any) {\n        return !!(obj && obj.constructor && obj.call && obj.apply);\n    }\n\n    private static _extractData(data: any, column: Column) {\n        const _data = Array.isArray(data) ? data : [data];\n        switch (column.type) {\n            case EnumColumnFieldType.TOKENS:\n                return _data.map((d: any) => ExportUtils._parseToken(d));\n            default:\n                return data;\n        }\n    }\n\n    private static _parseToken(data: any) {\n        if (isObject(data)) {\n            return data['label'];\n        } else {\n            return data;\n        }\n    }\n}\n\nconst isObject = (obj: any) => obj !== null && typeof obj === 'object';\n","import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport BigNumber from 'bignumber.js';\n\nimport { Column, EnumColumnFieldType } from './models';\n\nexport function isNumericColumnType(type?: EnumColumnFieldType): boolean {\n    return type === EnumColumnFieldType.NUMBER || type === EnumColumnFieldType.CURRENCY;\n}\n\nexport function isNumericValue(value: any): boolean {\n    return !new BigNumber(value).isNaN();\n}\n\nexport function resolveColumnNumberFormatOptions(\n    column: Pick<Column, 'numberFormatOptions'>,\n    rowValue: any,\n    cellNumberFormatOptions?: Intl.NumberFormatOptions,\n): Intl.NumberFormatOptions | undefined {\n    if (cellNumberFormatOptions) {\n        return cellNumberFormatOptions;\n    }\n\n    return typeof column.numberFormatOptions === 'function'\n        ? column.numberFormatOptions({ rowData: rowValue })\n        : column.numberFormatOptions;\n}\n\nexport function resolveColumnScale(column: Pick<Column, 'scale'>, rowValue: any, fallback = 0): number {\n    if (isNullOrUndefined(column.scale)) {\n        return fallback;\n    }\n\n    return typeof column.scale === 'function' ? column.scale(rowValue) : (column.scale as number);\n}\n\n","import { applyLocalizedMask, LocaleOptions } from '@seniorsistemas/angular-components/locale';\nimport { NumericService } from '@seniorsistemas/angular-components/numeric';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport BigNumber from 'bignumber.js';\n\nimport {\n    isNumericColumnType,\n    isNumericValue,\n    resolveColumnNumberFormatOptions,\n    resolveColumnScale,\n} from '../table-column/column-number-format.utils';\nimport { Column } from '../table-column/models';\n\nexport type RowValueFormatOption = {\n    value?: number;\n    options?: {\n        numberFormatOptions?: Intl.NumberFormatOptions;\n    };\n};\n\ntype RowRecord = { [key: string]: RowValueFormatOption | number | string | null | undefined };\n\nfunction isRowValueFormatOption(cell: unknown): cell is RowValueFormatOption {\n    return !isNullOrUndefined(cell) && typeof cell === 'object' && 'value' in (cell as object);\n}\n\nfunction swapDecimalSeparator(value: number | string, decimalSeparator: string): string {\n    // toFixed() (sem argumento) preserva a precisão total e nunca usa notação exponencial,\n    // ao contrário de toString(), que passa a notação científica para valores muito grandes/pequenos.\n    return new BigNumber(value).toFixed().replace('.', decimalSeparator);\n}\n\n// column.attributes é a fonte preferencial (é o que table-columns.component.ts usa pra formatar\n// a mesma coluna na tela), mas colunas configuradas só com `field` (sem `attributes`) também\n// precisam ser resolvidas — mesmo fallback que mapCustomExport/mapColumnsTranslations já usam.\nfunction resolveColumnAttributes(column: Partial<Column>): string[] {\n    if (column.attributes?.length) {\n        return column.attributes as string[];\n    }\n\n    const field = column.field as unknown as string | string[] | undefined;\n\n    if (isNullOrUndefined(field)) {\n        return [];\n    }\n\n    return Array.isArray(field) ? field : [field];\n}\n\nexport function mapExportValuesRaw(columns: Partial<Column>[], tableData: RowRecord[]): RowRecord[] {\n    const numericColumns = columns.filter((column) => isNumericColumnType(column.type));\n\n    if (!numericColumns.length) {\n        return tableData;\n    }\n\n    return tableData.map((rowData) => {\n        const newRow = { ...rowData };\n\n        for (const column of numericColumns) {\n            for (const attribute of resolveColumnAttributes(column)) {\n                const cell = newRow[attribute];\n\n                if (isRowValueFormatOption(cell)) {\n                    newRow[attribute] = cell.value ?? null;\n                }\n            }\n        }\n\n        return newRow;\n    });\n}\n\nexport function mapExportValuesLocalized(\n    columns: Partial<Column>[],\n    tableData: RowRecord[],\n    numericService: Pick<NumericService, 'instant'>,\n    localeOptions: LocaleOptions | undefined,\n): RowRecord[] {\n    const numericColumns = columns.filter((column) => isNumericColumnType(column.type));\n\n    if (!numericColumns.length) {\n        return tableData;\n    }\n\n    return tableData.map((rowData) => {\n        const newRow = { ...rowData };\n\n        for (const column of numericColumns) {\n            for (const attribute of resolveColumnAttributes(column)) {\n                const cell = newRow[attribute];\n\n                if (isNullOrUndefined(cell)) {\n                    continue;\n                }\n\n                const isRichValue = isRowValueFormatOption(cell);\n                const rawValue = isRichValue ? cell.value : cell;\n\n                if (isNullOrUndefined(rawValue)) {\n                    // Rich-value com value ausente representa um número \"não informado\" — desembrulha\n                    // pra null em vez de deixar o objeto { value, options } intocado (viraria\n                    // \"[object Object]\" no CSV), igual ao que mapExportValuesRaw já faz.\n                    newRow[attribute] = null;\n                    continue;\n                }\n\n                const cellNumberFormatOptions = isRichValue ? cell.options?.numberFormatOptions : undefined;\n                const numberFormatOptions = resolveColumnNumberFormatOptions(column, rowData, cellNumberFormatOptions);\n\n                if (numberFormatOptions) {\n                    const valueToFormat =\n                        numberFormatOptions.style === 'percent'\n                            ? new BigNumber(rawValue as number).times(100).toNumber()\n                            : rawValue;\n\n                    newRow[attribute] = numericService.instant(valueToFormat as number | string, {\n                        locale: localeOptions?.locale,\n                        numberFormatOptions: {\n                            ...numberFormatOptions,\n                            style: 'decimal',\n                            useGrouping: false,\n                        },\n                    });\n                    continue;\n                }\n\n                const decimalSeparator = localeOptions?.number.decimalSeparator ?? ',';\n\n                if (isNullOrUndefined(column.scale)) {\n                    // Sem scale configurado, não há uma quantidade de casas decimais \"correta\" a impor:\n                    // só troca o separador, preservando a precisão original do dado (evita perda de dados no export).\n                    newRow[attribute] = isNumericValue(rawValue)\n                        ? swapDecimalSeparator(rawValue as number | string, decimalSeparator)\n                        : rawValue;\n                    continue;\n                }\n\n                newRow[attribute] = applyLocalizedMask(\n                    rawValue,\n                    {\n                        decimalSeparator,\n                        thousandsSeparator: '',\n                        scale: resolveColumnScale(column, rowData),\n                        prefix: '',\n                        suffix: '',\n                        allowNegative: true,\n                    },\n                    isNumericValue(rawValue),\n                );\n            }\n        }\n\n        return newRow;\n    });\n}\n","import { Component, Input, OnChanges, SimpleChanges, inject, input } from '@angular/core';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { HostProjectConfigs, HostProjectConfigsInjectionToken } from '@seniorsistemas/angular-components/common';\nimport { LocaleService } from '@seniorsistemas/angular-components/locale';\nimport { NumericService } from '@seniorsistemas/angular-components/numeric';\nimport { TieredMenuItemData } from '@seniorsistemas/angular-components/tiered-menu';\nimport { deepClone } from '@seniorsistemas/angular-components/utils';\nimport { Table } from 'primeng/table';\n\nimport { ExportUtils } from '../export-utils';\nimport { Column } from '../table-column/models';\nimport { mapExportValuesLocalized, mapExportValuesRaw } from './export-number-format';\nimport { CustomAction, ExportNumberFormat } from './models';\n\n@Component({\n    templateUrl: './table-paging.component.html',\n    styleUrls: ['./table-paging.component.scss'],\n    selector: 's-table-paging',\n})\nexport class TablePagingComponent implements OnChanges {\n    private readonly translate = inject(TranslateService);\n    private readonly hostProjectConfigs = inject<HostProjectConfigs>(HostProjectConfigsInjectionToken);\n\n    @Input()\n    public totalRecords!: number;\n\n    @Input()\n    public exportFileName?: string;\n\n    @Input()\n    public table!: Table;\n\n    @Input()\n    public exportable = true;\n\n    @Input()\n    public enableExportSelectedRecords = true;\n\n    @Input()\n    public customActions?: CustomAction[];\n\n    @Input()\n    public loadAllRecords?: () => Promise<any[]>;\n\n    @Input()\n    public loadCurrentPageRecords?: () => any[];\n\n    @Input()\n    public loadSelectedRecords?: () => any[];\n\n    public exportNumberFormat = input<ExportNumberFormat>();\n\n    public totalRecordsText = '';\n\n    private readonly localeService = inject(LocaleService);\n    private readonly numericService = inject(NumericService);\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['totalRecords']?.currentValue) {\n            this.totalRecordsText = this.translate.instant(`${this.getTranslatePrefix()}total_records`, {\n                value: changes['totalRecords'].currentValue,\n            });\n        }\n    }\n\n    private getTranslatePrefix() {\n        return `${this.hostProjectConfigs.domain}.${this.hostProjectConfigs.service}.`;\n    }\n\n    public getTooltipText() {\n        return this.translate.instant(`${this.getTranslatePrefix()}export_to_csv`);\n    }\n\n    public getActions(): TieredMenuItemData[] {\n        const actions: TieredMenuItemData[] = [\n            this.buildScopeAction('exportCurrentPage', `${this.getTranslatePrefix()}export_current_page`, (format) =>\n                this.exportCurrentPage(format),\n            ),\n        ];\n\n        if (this.enableExportSelectedRecords) {\n            actions.push(\n                this.buildScopeAction(\n                    'exportSelected',\n                    `${this.getTranslatePrefix()}export_selected_records`,\n                    (format) => this.exportSelectedRecords(format),\n                ),\n            );\n        }\n\n        if (this.loadAllRecords) {\n            actions.push(\n                this.buildScopeAction('exportAll', `${this.getTranslatePrefix()}export_all_records`, (format) =>\n                    this.exportAllRecords(format),\n                ),\n            );\n        }\n\n        if (this.customActions?.length) {\n            const customMenus = this.customActions.map((p, $index) => ({\n                dataKey: `customAction_${$index}`,\n                label: p.label,\n                command: p.command,\n            }));\n            actions.push(...customMenus);\n        }\n\n        return actions;\n    }\n\n    private buildScopeAction(\n        dataKey: string,\n        label: string,\n        run: (format: ExportNumberFormat) => void,\n    ): TieredMenuItemData {\n        const fixedFormat = this.exportNumberFormat();\n        if (fixedFormat) {\n            return {\n                dataKey,\n                label: this.translate.instant(label),\n                command: () => run(fixedFormat),\n            };\n        }\n\n        return {\n            dataKey,\n            label: this.translate.instant(label),\n            submenu: [\n                {\n                    dataKey: `${dataKey}_raw`,\n                    label: this.translate.instant('platform.angular_components.export_raw_data'),\n                    command: () => run(ExportNumberFormat.Raw),\n                },\n                {\n                    dataKey: `${dataKey}_localized`,\n                    label: this.translate.instant('platform.angular_components.export_localized_data'),\n                    command: () => run(ExportNumberFormat.Localized),\n                },\n            ],\n        };\n    }\n\n    private validateComponent() {\n        if (!this.table) {\n            throw new Error('Table component not defined');\n        }\n    }\n\n    public getColumnsToExport() {\n        return [...(this.table.columns ?? [])].map((column) => {\n            const exportColumn = {\n                ...column,\n                header: column.header,\n                exportable: true,\n                field: column.field,\n                separator: column.separator ?? ' - ',\n                enumPrefix: column.enumPrefix,\n                customExport: column.customExport,\n            };\n\n            if (column.exportable === false) {\n                exportColumn.exportable = false;\n            }\n\n            if (column.attributes && column.attributes.length) {\n                if (column.attributes.length === 1) {\n                    exportColumn.field = column.attributes[0];\n                } else {\n                    exportColumn.field = column.attributes;\n                }\n            }\n\n            return exportColumn;\n        });\n    }\n\n    private getCurrentPageRowsToExport(columns: any[], format: ExportNumberFormat) {\n        let tableData = deepClone(this.table.value);\n\n        if (this.loadCurrentPageRecords) {\n            tableData = this.loadCurrentPageRecords();\n        }\n\n        tableData = this.mapCustomExport(columns, tableData);\n        tableData = this.mapNumberFormat(columns, tableData, format);\n        return this.mapColumnsTranslations(columns, tableData);\n    }\n\n    private getSelectedRowsToExport(columns: any[], format: ExportNumberFormat) {\n        let tableData = deepClone(this.table.selection);\n        if (this.loadSelectedRecords) {\n            tableData = this.loadSelectedRecords();\n        }\n\n        tableData = this.mapCustomExport(columns, tableData);\n        tableData = this.mapNumberFormat(columns, tableData, format);\n        return this.mapColumnsTranslations(columns, tableData);\n    }\n\n    private mapNumberFormat(columns: Partial<Column>[], tableData: any[], format: ExportNumberFormat) {\n        return format === ExportNumberFormat.Raw\n            ? mapExportValuesRaw(columns, tableData)\n            : mapExportValuesLocalized(columns, tableData, this.numericService, this.localeService.getLocaleOptions());\n    }\n\n    private getPropertyValue(obj: any, path: string) {\n        return path\n            .split('.')\n            .reduce((result: any, prop: any) => (result[prop] === undefined ? undefined : result[prop]), obj);\n    }\n\n    private setPropertyValue(obj: any, path: string, value: any) {\n        this.recursionSetValue(obj, path.split('.'), value);\n    }\n\n    private recursionSetValue(obj: any, keysList: string[], value: any): any {\n        const key = keysList[0];\n        if (keysList.length === 1) {\n            obj[key] = value;\n            return obj;\n        }\n        obj[key] = this.recursionSetValue(obj?.[key] || {}, keysList.slice(1), value);\n        return obj;\n    }\n\n    public mapColumnsTranslations(columns: any[], rows: any[]) {\n        const enumColumns = columns.filter((p) => p.enumPrefix);\n        if (!enumColumns.length) {\n            return rows;\n        }\n\n        return [...rows].map((row) => {\n            const newRow = { ...row };\n            enumColumns.forEach((column) => {\n                const fields = !Array.isArray(column.field) ? [column.field] : column.field;\n                fields.forEach((fieldName: string) => {\n                    const columnData = this.getPropertyValue(row, fieldName);\n                    if (columnData === null || columnData === undefined) {\n                        return;\n                    }\n\n                    const newValue = this.translateValue(column, columnData);\n                    this.setPropertyValue(newRow, fieldName, newValue);\n                });\n            });\n\n            return newRow;\n        });\n    }\n\n    public mapCustomExport(columns: any[], rows: any[]) {\n        const customColumns = columns.filter((p) => p.customExport);\n        if (!customColumns.length) {\n            return rows;\n        }\n\n        return [...rows].map((row) => {\n            const newRow = { ...row };\n            customColumns.forEach((column) => {\n                const fields = !Array.isArray(column.field) ? [column.field] : column.field;\n                fields.forEach((fieldName: string) => {\n                    const columnData = this.getPropertyValue(row, fieldName);\n                    if (columnData === null || columnData === undefined) {\n                        return;\n                    }\n                    const newValue = column.customExport(columnData);\n                    this.setPropertyValue(newRow, fieldName, newValue);\n                });\n            });\n\n            return newRow;\n        });\n    }\n\n    private translateValue(column: any, columnData: any) {\n        // Default usage: ENUM_VALUE -> domain.service.enum_value\n        const enumValue = columnData.toString().toLowerCase();\n        let translationKey = column.enumPrefix + enumValue;\n        let translatedValue = this.translate.instant(translationKey);\n\n        // Custom usage 1: V9 -> domain.service.v_9\n        if (translationKey === translatedValue && enumValue.length > 1) {\n            translationKey = `${column.enumPrefix}${enumValue.substring(0, 1)}_${enumValue.substr(1)}`;\n            translatedValue = this.translate.instant(translationKey);\n        }\n\n        // Custom usage 2: EnumValue -> domain.service.enum_value\n        if (translationKey === translatedValue) {\n            const enumKey = this.convertToSnakeCase(columnData.toString());\n            translationKey = `${column.enumPrefix}${enumKey}`;\n            translatedValue = this.translate.instant(translationKey);\n        }\n\n        return translatedValue;\n    }\n\n    private convertToSnakeCase(str: string) {\n        return str.replace(/([A-Z])/g, (_match, group) => `_${group.toLowerCase()}`).replace(/^_/, '');\n    }\n\n    private getExportFileName() {\n        const lang = this.translate.currentLang ?? 'pt-BR';\n        const date = new Date();\n\n        const fileName = this.exportFileName ?? 'download';\n        const formattedDate = date.toLocaleDateString(lang).replace('_', '-');\n        const formattedTime = date.toLocaleTimeString(lang).replace(' ', '-');\n\n        return `${fileName}_${formattedDate}_${formattedTime}`;\n    }\n\n    public exportCurrentPage(format: ExportNumberFormat = ExportNumberFormat.Localized) {\n        this.validateComponent();\n        const columns = this.getColumnsToExport();\n        const dataToExport = this.getCurrentPageRowsToExport(columns, format);\n        ExportUtils.exportCSV(columns, dataToExport, undefined, this.getExportFileName());\n    }\n\n    public exportSelectedRecords(format: ExportNumberFormat = ExportNumberFormat.Localized) {\n        this.validateComponent();\n        const columns = this.getColumnsToExport();\n        const dataToExport = this.getSelectedRowsToExport(columns, format);\n        ExportUtils.exportCSV(columns, dataToExport, undefined, this.getExportFileName());\n    }\n\n    public async exportAllRecords(format: ExportNumberFormat = ExportNumberFormat.Localized) {\n        this.validateComponent();\n\n        if (!this.loadAllRecords) {\n            return;\n        }\n        let serverData = await this.loadAllRecords();\n\n        const columns = this.getColumnsToExport();\n\n        serverData = this.mapCustomExport(columns, serverData);\n\n        serverData = this.mapNumberFormat(columns, serverData, format);\n\n        const dataToExport = this.mapColumnsTranslations(columns, serverData);\n\n        ExportUtils.exportCSV(columns, dataToExport, undefined, this.getExportFileName());\n    }\n}\n","<div class=\"paging-container\">\n    <span class=\"total-records\">\n        {{ totalRecordsText }}\n    </span>\n    @if (exportable) {\n        <s-button\n            class=\"export-button\"\n            priority=\"default\"\n            iconClass=\"fa fa-fw fa-file-export\"\n            [disabled]=\"false\"\n            [auxiliary]=\"true\"\n            [tooltip]=\"getTooltipText()\"\n            [menuOptions]=\"getActions()\"\n        >\n        </s-button>\n    }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NavigationDirective } from './navigation/navigation.directive';\nimport { RowTogllerDirective } from './row-toggler/row-toggler.directive';\nimport { TableColumnsComponent } from './table-column/table-columns.component';\nimport { TablePagingComponent } from './table-paging/table-paging.component';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { TokenListModule } from '@seniorsistemas/angular-components/token-list';\n\n@NgModule({\n    declarations: [RowTogllerDirective, TableColumnsComponent, TablePagingComponent],\n    imports: [\n        CommonModule,\n        TooltipModule,\n        TokenListModule,\n        TranslateModule,\n        ButtonModule,\n        InfoSignModule,\n        BadgeModule,\n        NavigationDirective,\n    ],\n    exports: [RowTogllerDirective, TableColumnsComponent, TablePagingComponent, NavigationDirective],\n})\nexport class TableModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}