{"version":3,"file":"toColumnDefs.mjs","names":[],"sources":["../../../src/base-ui/Table/toColumnDefs.ts"],"sourcesContent":["import type { ColumnDef, RowData } from '@tanstack/react-table';\n\nimport type { TableFeatureSet } from './features';\nimport type { FilterValue, TableColumn } from './type';\n\nexport const getColumnId = (column: TableColumn<any>, index: number): string =>\n  String(column.key ?? column.dataIndex ?? `__column_${index}`);\n\nexport const getCellValue = <T>(record: T, column: TableColumn<T>): unknown =>\n  column.dataIndex ? record[column.dataIndex] : undefined;\n\nconst isEmptyFilter = (value: unknown) => !Array.isArray(value) || value.length === 0;\n\nexport const toColumnDefs = <T extends RowData>(\n  columns: TableColumn<T>[],\n): ColumnDef<TableFeatureSet, T, unknown>[] =>\n  columns.map((column, index) => {\n    const needsStableId = Boolean(column.sorter) || Boolean(column.filters?.length);\n    if (needsStableId && column.key == null && column.dataIndex == null) {\n      throw new Error('[Table] sortable or filterable columns need a `key` or `dataIndex`');\n    }\n\n    const comparator = typeof column.sorter === 'function' ? column.sorter : undefined;\n    const { onFilter } = column;\n\n    const filterFn = onFilter\n      ? Object.assign(\n          (row: { original: T }, _columnId: string, filterValue: FilterValue[]) =>\n            filterValue.some((value) => onFilter(value, row.original)),\n          { autoRemove: isEmptyFilter },\n        )\n      : undefined;\n\n    return {\n      accessorFn: (record: T) => getCellValue(record, column),\n      enableColumnFilter: Boolean(column.filters?.length),\n      enableSorting: Boolean(column.sorter),\n      filterFn,\n      id: getColumnId(column, index),\n      sortDescFirst: column.sortDirections?.[0] === 'descend',\n      ...(comparator && {\n        sortFn: (rowA: { original: T }, rowB: { original: T }) =>\n          comparator(rowA.original, rowB.original),\n        sortUndefined: false,\n      }),\n    } as unknown as ColumnDef<TableFeatureSet, T, unknown>;\n  });\n"],"mappings":";AAKA,MAAa,eAAe,QAA0B,UACpD,OAAO,OAAO,OAAO,OAAO,aAAa,YAAY,OAAO;AAE9D,MAAa,gBAAmB,QAAW,WACzC,OAAO,YAAY,OAAO,OAAO,aAAa,KAAA;AAEhD,MAAM,iBAAiB,UAAmB,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAEpF,MAAa,gBACX,YAEA,QAAQ,KAAK,QAAQ,UAAU;CAE7B,KADsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,OAAO,SAAS,MAAM,MACzD,OAAO,OAAO,QAAQ,OAAO,aAAa,MAC7D,MAAM,IAAI,MAAM,oEAAoE;CAGtF,MAAM,aAAa,OAAO,OAAO,WAAW,aAAa,OAAO,SAAS,KAAA;CACzE,MAAM,EAAE,aAAa;CAErB,MAAM,WAAW,WACb,OAAO,QACJ,KAAsB,WAAmB,gBACxC,YAAY,MAAM,UAAU,SAAS,OAAO,IAAI,QAAQ,CAAC,GAC3D,EAAE,YAAY,cAAc,CAC9B,IACA,KAAA;CAEJ,OAAO;EACL,aAAa,WAAc,aAAa,QAAQ,MAAM;EACtD,oBAAoB,QAAQ,OAAO,SAAS,MAAM;EAClD,eAAe,QAAQ,OAAO,MAAM;EACpC;EACA,IAAI,YAAY,QAAQ,KAAK;EAC7B,eAAe,OAAO,iBAAiB,OAAO;EAC9C,GAAI,cAAc;GAChB,SAAS,MAAuB,SAC9B,WAAW,KAAK,UAAU,KAAK,QAAQ;GACzC,eAAe;EACjB;CACF;AACF,CAAC"}