@tanstack/table-core 8.19.2 → 9.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/aggregationFns.cjs +94 -0
- package/dist/cjs/aggregationFns.cjs.map +1 -0
- package/dist/cjs/aggregationFns.d.cts +14 -0
- package/dist/cjs/columnHelper.cjs +19 -0
- package/dist/cjs/columnHelper.cjs.map +1 -0
- package/dist/cjs/columnHelper.d.cts +9 -0
- package/dist/cjs/core/cell.cjs +38 -0
- package/dist/cjs/core/cell.cjs.map +1 -0
- package/dist/cjs/core/cell.d.cts +50 -0
- package/dist/cjs/core/column.cjs +81 -0
- package/dist/cjs/core/column.cjs.map +1 -0
- package/dist/cjs/core/column.d.cts +56 -0
- package/dist/cjs/core/headers.cjs +310 -0
- package/dist/cjs/core/headers.cjs.map +1 -0
- package/dist/cjs/core/headers.d.cts +195 -0
- package/dist/cjs/core/row.cjs +92 -0
- package/dist/cjs/core/row.cjs.map +1 -0
- package/dist/cjs/core/row.d.cts +92 -0
- package/dist/cjs/core/table.cjs +232 -0
- package/dist/cjs/core/table.cjs.map +1 -0
- package/dist/cjs/core/table.d.cts +229 -0
- package/dist/cjs/features/ColumnFaceting.cjs +29 -0
- package/dist/cjs/features/ColumnFaceting.cjs.map +1 -0
- package/dist/cjs/features/ColumnFaceting.d.cts +35 -0
- package/dist/cjs/features/ColumnFiltering.cjs +137 -0
- package/dist/cjs/features/ColumnFiltering.cjs.map +1 -0
- package/dist/cjs/features/ColumnFiltering.d.cts +195 -0
- package/dist/cjs/features/ColumnGrouping.cjs +133 -0
- package/dist/cjs/features/ColumnGrouping.cjs.map +1 -0
- package/dist/cjs/features/ColumnGrouping.d.cts +202 -0
- package/dist/cjs/features/ColumnOrdering.cjs +76 -0
- package/dist/cjs/features/ColumnOrdering.cjs.map +1 -0
- package/dist/cjs/features/ColumnOrdering.d.cts +54 -0
- package/dist/cjs/features/ColumnPinning.cjs +145 -0
- package/dist/cjs/features/ColumnPinning.cjs.map +1 -0
- package/dist/cjs/features/ColumnPinning.d.cts +127 -0
- package/dist/cjs/features/ColumnSizing.cjs +307 -0
- package/dist/cjs/features/ColumnSizing.cjs.map +1 -0
- package/dist/cjs/features/ColumnSizing.d.cts +194 -0
- package/dist/cjs/features/ColumnVisibility.cjs +144 -0
- package/dist/cjs/features/ColumnVisibility.cjs.map +1 -0
- package/dist/cjs/features/ColumnVisibility.d.cts +130 -0
- package/dist/cjs/features/GlobalFaceting.cjs +29 -0
- package/dist/cjs/features/GlobalFaceting.cjs.map +1 -0
- package/dist/cjs/features/GlobalFaceting.d.cts +27 -0
- package/dist/cjs/features/GlobalFiltering.cjs +50 -0
- package/dist/cjs/features/GlobalFiltering.cjs.map +1 -0
- package/dist/cjs/features/GlobalFiltering.d.cts +80 -0
- package/dist/cjs/features/RowExpanding.cjs +152 -0
- package/dist/cjs/features/RowExpanding.cjs.map +1 -0
- package/dist/cjs/features/RowExpanding.d.cts +155 -0
- package/dist/cjs/features/RowPagination.cjs +161 -0
- package/dist/cjs/features/RowPagination.cjs.map +1 -0
- package/dist/cjs/features/RowPagination.d.cts +166 -0
- package/dist/cjs/features/RowPinning.cjs +132 -0
- package/dist/cjs/features/RowPinning.cjs.map +1 -0
- package/dist/cjs/features/RowPinning.d.cts +99 -0
- package/dist/cjs/features/RowSelection.cjs +296 -0
- package/dist/cjs/features/RowSelection.cjs.map +1 -0
- package/dist/cjs/features/RowSelection.d.cts +177 -0
- package/dist/cjs/features/RowSorting.cjs +200 -0
- package/dist/cjs/features/RowSorting.cjs.map +1 -0
- package/dist/cjs/features/RowSorting.d.cts +238 -0
- package/dist/cjs/filterFns.cjs +88 -0
- package/dist/cjs/filterFns.cjs.map +1 -0
- package/dist/cjs/filterFns.d.cts +14 -0
- package/{build/lib/index.js → dist/cjs/index.cjs} +41 -53
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +34 -0
- package/{build/lib/sortingFns.js → dist/cjs/sortingFns.cjs} +23 -52
- package/dist/cjs/sortingFns.cjs.map +1 -0
- package/dist/cjs/sortingFns.d.cts +12 -0
- package/dist/cjs/types.d.cts +120 -0
- package/{build/lib/utils/filterRowsUtils.js → dist/cjs/utils/filterRowsUtils.cjs} +34 -46
- package/dist/cjs/utils/filterRowsUtils.cjs.map +1 -0
- package/dist/cjs/utils/filterRowsUtils.d.cts +3 -0
- package/dist/cjs/utils/getCoreRowModel.cjs +54 -0
- package/dist/cjs/utils/getCoreRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getCoreRowModel.d.cts +3 -0
- package/dist/cjs/utils/getExpandedRowModel.cjs +41 -0
- package/dist/cjs/utils/getExpandedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getExpandedRowModel.d.cts +8 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs +35 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +3 -0
- package/dist/cjs/utils/getFacetedRowModel.cjs +35 -0
- package/dist/cjs/utils/getFacetedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedRowModel.d.cts +3 -0
- package/dist/cjs/utils/getFacetedUniqueValues.cjs +37 -0
- package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +1 -0
- package/dist/cjs/utils/getFacetedUniqueValues.d.cts +3 -0
- package/dist/cjs/utils/getFilteredRowModel.cjs +116 -0
- package/dist/cjs/utils/getFilteredRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getFilteredRowModel.d.cts +3 -0
- package/dist/cjs/utils/getGroupedRowModel.cjs +118 -0
- package/dist/cjs/utils/getGroupedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getGroupedRowModel.d.cts +3 -0
- package/dist/cjs/utils/getPaginationRowModel.cjs +49 -0
- package/dist/cjs/utils/getPaginationRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getPaginationRowModel.d.cts +5 -0
- package/dist/cjs/utils/getSortedRowModel.cjs +88 -0
- package/dist/cjs/utils/getSortedRowModel.cjs.map +1 -0
- package/dist/cjs/utils/getSortedRowModel.d.cts +3 -0
- package/{build/lib/utils.js → dist/cjs/utils.cjs} +26 -39
- package/dist/cjs/utils.cjs.map +1 -0
- package/dist/cjs/utils.d.cts +39 -0
- package/{build/lib → dist/esm}/aggregationFns.d.ts +2 -1
- package/dist/esm/aggregationFns.js +94 -0
- package/dist/esm/aggregationFns.js.map +1 -0
- package/{build/lib → dist/esm}/columnHelper.d.ts +3 -2
- package/dist/esm/columnHelper.js +19 -0
- package/{build/lib → dist/esm}/columnHelper.js.map +1 -1
- package/{build/lib → dist/esm}/core/cell.d.ts +2 -1
- package/dist/esm/core/cell.js +38 -0
- package/dist/esm/core/cell.js.map +1 -0
- package/{build/lib → dist/esm}/core/column.d.ts +2 -1
- package/dist/esm/core/column.js +81 -0
- package/dist/esm/core/column.js.map +1 -0
- package/{build/lib → dist/esm}/core/headers.d.ts +1 -0
- package/dist/esm/core/headers.js +310 -0
- package/dist/esm/core/headers.js.map +1 -0
- package/{build/lib → dist/esm}/core/row.d.ts +2 -1
- package/dist/esm/core/row.js +92 -0
- package/dist/esm/core/row.js.map +1 -0
- package/{build/lib → dist/esm}/core/table.d.ts +10 -1
- package/dist/esm/core/table.js +232 -0
- package/dist/esm/core/table.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnFaceting.d.ts +1 -0
- package/{build/lib → dist/esm}/features/ColumnFaceting.js +6 -19
- package/{build/lib → dist/esm}/features/ColumnFaceting.js.map +1 -1
- package/{build/lib → dist/esm}/features/ColumnFiltering.d.ts +1 -0
- package/dist/esm/features/ColumnFiltering.js +137 -0
- package/dist/esm/features/ColumnFiltering.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnGrouping.d.ts +1 -0
- package/dist/esm/features/ColumnGrouping.js +133 -0
- package/dist/esm/features/ColumnGrouping.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnOrdering.d.ts +1 -0
- package/dist/esm/features/ColumnOrdering.js +76 -0
- package/dist/esm/features/ColumnOrdering.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnPinning.d.ts +1 -0
- package/dist/esm/features/ColumnPinning.js +145 -0
- package/dist/esm/features/ColumnPinning.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnSizing.d.ts +2 -1
- package/dist/esm/features/ColumnSizing.js +307 -0
- package/dist/esm/features/ColumnSizing.js.map +1 -0
- package/{build/lib → dist/esm}/features/ColumnVisibility.d.ts +1 -0
- package/dist/esm/features/ColumnVisibility.js +144 -0
- package/dist/esm/features/ColumnVisibility.js.map +1 -0
- package/{build/lib → dist/esm}/features/GlobalFaceting.d.ts +1 -0
- package/{build/lib → dist/esm}/features/GlobalFaceting.js +8 -21
- package/dist/esm/features/GlobalFaceting.js.map +1 -0
- package/{build/lib → dist/esm}/features/GlobalFiltering.d.ts +1 -0
- package/dist/esm/features/GlobalFiltering.js +50 -0
- package/dist/esm/features/GlobalFiltering.js.map +1 -0
- package/{build/lib → dist/esm}/features/RowExpanding.d.ts +1 -0
- package/{build/lib → dist/esm}/features/RowExpanding.js +37 -58
- package/dist/esm/features/RowExpanding.js.map +1 -0
- package/{build/lib → dist/esm}/features/RowPagination.d.ts +1 -0
- package/dist/esm/features/RowPagination.js +161 -0
- package/dist/esm/features/RowPagination.js.map +1 -0
- package/{build/lib → dist/esm}/features/RowPinning.d.ts +1 -0
- package/dist/esm/features/RowPinning.js +132 -0
- package/dist/esm/features/RowPinning.js.map +1 -0
- package/{build/lib → dist/esm}/features/RowSelection.d.ts +1 -0
- package/dist/esm/features/RowSelection.js +296 -0
- package/dist/esm/features/RowSelection.js.map +1 -0
- package/{build/lib → dist/esm}/features/RowSorting.d.ts +1 -0
- package/dist/esm/features/RowSorting.js +200 -0
- package/dist/esm/features/RowSorting.js.map +1 -0
- package/{build/lib → dist/esm}/filterFns.d.ts +2 -1
- package/dist/esm/filterFns.js +88 -0
- package/dist/esm/filterFns.js.map +1 -0
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.js +88 -0
- package/dist/esm/index.js.map +1 -0
- package/{build/lib → dist/esm}/sortingFns.d.ts +2 -1
- package/dist/esm/sortingFns.js +91 -0
- package/dist/esm/sortingFns.js.map +1 -0
- package/{build/lib → dist/esm}/types.d.ts +29 -28
- package/{build/lib → dist/esm}/utils/filterRowsUtils.d.ts +1 -0
- package/dist/esm/utils/filterRowsUtils.js +99 -0
- package/dist/esm/utils/filterRowsUtils.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getCoreRowModel.d.ts +1 -0
- package/dist/esm/utils/getCoreRowModel.js +54 -0
- package/dist/esm/utils/getCoreRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getExpandedRowModel.d.ts +1 -0
- package/dist/esm/utils/getExpandedRowModel.js +41 -0
- package/dist/esm/utils/getExpandedRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFacetedMinMaxValues.d.ts +1 -0
- package/dist/esm/utils/getFacetedMinMaxValues.js +35 -0
- package/dist/esm/utils/getFacetedMinMaxValues.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFacetedRowModel.d.ts +1 -0
- package/dist/esm/utils/getFacetedRowModel.js +35 -0
- package/{build/lib → dist/esm}/utils/getFacetedRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getFacetedUniqueValues.d.ts +1 -0
- package/dist/esm/utils/getFacetedUniqueValues.js +37 -0
- package/dist/esm/utils/getFacetedUniqueValues.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getFilteredRowModel.d.ts +1 -0
- package/dist/esm/utils/getFilteredRowModel.js +116 -0
- package/{build/lib → dist/esm}/utils/getFilteredRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils/getGroupedRowModel.d.ts +1 -0
- package/dist/esm/utils/getGroupedRowModel.js +118 -0
- package/dist/esm/utils/getGroupedRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getPaginationRowModel.d.ts +1 -0
- package/dist/esm/utils/getPaginationRowModel.js +49 -0
- package/dist/esm/utils/getPaginationRowModel.js.map +1 -0
- package/{build/lib → dist/esm}/utils/getSortedRowModel.d.ts +1 -0
- package/dist/esm/utils/getSortedRowModel.js +88 -0
- package/{build/lib → dist/esm}/utils/getSortedRowModel.js.map +1 -1
- package/{build/lib → dist/esm}/utils.d.ts +2 -1
- package/dist/esm/utils.js +98 -0
- package/{build/lib → dist/esm}/utils.js.map +1 -1
- package/package.json +14 -10
- package/src/core/cell.ts +2 -2
- package/src/core/column.ts +2 -2
- package/src/core/headers.ts +5 -5
- package/src/core/row.ts +4 -4
- package/src/core/table.ts +43 -7
- package/src/features/ColumnFaceting.ts +1 -1
- package/src/features/ColumnFiltering.ts +6 -6
- package/src/features/ColumnGrouping.ts +7 -7
- package/src/features/ColumnOrdering.ts +4 -4
- package/src/features/ColumnPinning.ts +5 -5
- package/src/features/ColumnSizing.ts +6 -6
- package/src/features/ColumnVisibility.ts +5 -5
- package/src/features/GlobalFaceting.ts +1 -1
- package/src/features/GlobalFiltering.ts +4 -4
- package/src/features/RowExpanding.ts +4 -4
- package/src/features/RowPagination.ts +3 -3
- package/src/features/RowPinning.ts +4 -4
- package/src/features/RowSelection.ts +4 -4
- package/src/features/RowSorting.ts +5 -5
- package/src/types.ts +8 -8
- package/src/utils/filterRowsUtils.ts +3 -3
- package/src/utils/getCoreRowModel.ts +2 -2
- package/src/utils/getGroupedRowModel.ts +2 -2
- package/build/lib/aggregationFns.js +0 -108
- package/build/lib/aggregationFns.js.map +0 -1
- package/build/lib/columnHelper.js +0 -71
- package/build/lib/core/cell.js +0 -42
- package/build/lib/core/cell.js.map +0 -1
- package/build/lib/core/column.js +0 -80
- package/build/lib/core/column.js.map +0 -1
- package/build/lib/core/headers.js +0 -270
- package/build/lib/core/headers.js.map +0 -1
- package/build/lib/core/row.js +0 -89
- package/build/lib/core/row.js.map +0 -1
- package/build/lib/core/table.js +0 -212
- package/build/lib/core/table.js.map +0 -1
- package/build/lib/features/ColumnFiltering.js +0 -151
- package/build/lib/features/ColumnFiltering.js.map +0 -1
- package/build/lib/features/ColumnGrouping.js +0 -142
- package/build/lib/features/ColumnGrouping.js.map +0 -1
- package/build/lib/features/ColumnOrdering.js +0 -84
- package/build/lib/features/ColumnOrdering.js.map +0 -1
- package/build/lib/features/ColumnPinning.js +0 -130
- package/build/lib/features/ColumnPinning.js.map +0 -1
- package/build/lib/features/ColumnSizing.js +0 -270
- package/build/lib/features/ColumnSizing.js.map +0 -1
- package/build/lib/features/ColumnVisibility.js +0 -99
- package/build/lib/features/ColumnVisibility.js.map +0 -1
- package/build/lib/features/GlobalFaceting.js.map +0 -1
- package/build/lib/features/GlobalFiltering.js +0 -63
- package/build/lib/features/GlobalFiltering.js.map +0 -1
- package/build/lib/features/RowExpanding.js.map +0 -1
- package/build/lib/features/RowPagination.js +0 -169
- package/build/lib/features/RowPagination.js.map +0 -1
- package/build/lib/features/RowPinning.js +0 -145
- package/build/lib/features/RowPinning.js.map +0 -1
- package/build/lib/features/RowSelection.js +0 -391
- package/build/lib/features/RowSelection.js.map +0 -1
- package/build/lib/features/RowSorting.js +0 -226
- package/build/lib/features/RowSorting.js.map +0 -1
- package/build/lib/filterFns.js +0 -96
- package/build/lib/filterFns.js.map +0 -1
- package/build/lib/index.d.ts +0 -34
- package/build/lib/index.esm.js +0 -3522
- package/build/lib/index.esm.js.map +0 -1
- package/build/lib/index.js.map +0 -1
- package/build/lib/index.mjs +0 -3522
- package/build/lib/index.mjs.map +0 -1
- package/build/lib/sortingFns.js.map +0 -1
- package/build/lib/utils/filterRowsUtils.js.map +0 -1
- package/build/lib/utils/getCoreRowModel.js +0 -65
- package/build/lib/utils/getCoreRowModel.js.map +0 -1
- package/build/lib/utils/getExpandedRowModel.js +0 -46
- package/build/lib/utils/getExpandedRowModel.js.map +0 -1
- package/build/lib/utils/getFacetedMinMaxValues.js +0 -43
- package/build/lib/utils/getFacetedMinMaxValues.js.map +0 -1
- package/build/lib/utils/getFacetedRowModel.js +0 -36
- package/build/lib/utils/getFacetedUniqueValues.js +0 -39
- package/build/lib/utils/getFacetedUniqueValues.js.map +0 -1
- package/build/lib/utils/getFilteredRowModel.js +0 -111
- package/build/lib/utils/getGroupedRowModel.js +0 -150
- package/build/lib/utils/getGroupedRowModel.js.map +0 -1
- package/build/lib/utils/getPaginationRowModel.js +0 -60
- package/build/lib/utils/getPaginationRowModel.js.map +0 -1
- package/build/lib/utils/getSortedRowModel.js +0 -102
- package/build/umd/index.development.js +0 -3578
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -12
- package/build/umd/index.production.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSortedRowModel.cjs","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort =>\n table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":["memo","getMemoOptions"],"mappings":";;;AAIO,SAAS,oBAEW;AACzB,SAAO,CACL,UAAAA,MAAA;AAAA,IACE,MAAM,CAAC,MAAM,SAAA,EAAW,SAAS,MAAM,sBAAsB;AAAA,IAC7D,CAAC,SAAS,aAAa;AACrB,UAAI,CAAC,SAAS,KAAK,UAAU,EAAC,mCAAS,SAAQ;AACtC,eAAA;AAAA,MACT;AAEM,YAAA,eAAe,MAAM,SAAA,EAAW;AAEtC,YAAM,iBAA+B,CAAA;AAGrC,YAAM,mBAAmB,aAAa;AAAA,QAAO,UAC3C;;AAAA,6BAAM,UAAU,KAAK,EAAE,MAAvB,mBAA0B;AAAA;AAAA,MAAW;AAGvC,YAAM,iBAOF,CAAA;AAEJ,uBAAiB,QAAQ,CAAa,cAAA;AACpC,cAAM,SAAS,MAAM,UAAU,UAAU,EAAE;AAC3C,YAAI,CAAC,OAAQ;AAEE,uBAAA,UAAU,EAAE,IAAI;AAAA,UAC7B,eAAe,OAAO,UAAU;AAAA,UAChC,eAAe,OAAO,UAAU;AAAA,UAChC,WAAW,OAAO,aAAa;AAAA,QAAA;AAAA,MACjC,CACD;AAEK,YAAA,WAAW,CAAC,SAAuB;AAGvC,cAAM,aAAa,KAAK,IAAI,UAAQ,EAAE,GAAG,IAAM,EAAA;AAEpC,mBAAA,KAAK,CAAC,MAAM,SAAS;AAC9B,mBAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AAC7C,kBAAA,YAAY,iBAAiB,CAAC;AAC9B,kBAAA,aAAa,eAAe,UAAU,EAAE;AAC9C,kBAAM,gBAAgB,WAAW;AAC3B,kBAAA,UAAS,uCAAW,SAAQ;AAElC,gBAAI,UAAU;AAGd,gBAAI,eAAe;AACjB,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AACzC,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AAEzC,oBAAM,aAAa,WAAW;AAC9B,oBAAM,aAAa,WAAW;AAE9B,kBAAI,cAAc,YAAY;AAC5B,oBAAI,kBAAkB,QAAgB,QAAA,aAAa,KAAK;AACxD,oBAAI,kBAAkB,OAAe,QAAA,aAAa,IAAI;AACtD,0BACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;AAAA,cACX;AAAA,YACF;AAEA,gBAAI,YAAY,GAAG;AACjB,wBAAU,WAAW,UAAU,MAAM,MAAM,UAAU,EAAE;AAAA,YACzD;AAGA,gBAAI,YAAY,GAAG;AACjB,kBAAI,QAAQ;AACC,2BAAA;AAAA,cACb;AAEA,kBAAI,WAAW,eAAe;AACjB,2BAAA;AAAA,cACb;AAEO,qBAAA;AAAA,YACT;AAAA,UACF;AAEO,iBAAA,KAAK,QAAQ,KAAK;AAAA,QAAA,CAC1B;AAGD,mBAAW,QAAQ,CAAO,QAAA;;AACxB,yBAAe,KAAK,GAAG;AACnB,eAAA,SAAI,YAAJ,mBAAa,QAAQ;AACnB,gBAAA,UAAU,SAAS,IAAI,OAAO;AAAA,UACpC;AAAA,QAAA,CACD;AAEM,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,QACL,MAAM,SAAS,SAAS,IAAI;AAAA,QAC5B,UAAU;AAAA,QACV,UAAU,SAAS;AAAA,MAAA;AAAA,IAEvB;AAAA,IACAC,MAAA;AAAA,MAAe,MAAM;AAAA,MAAS;AAAA,MAAc;AAAA,MAAqB,MAC/D,MAAM,oBAAoB;AAAA,IAC5B;AAAA,EAAA;AAEN;;"}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
// Is this type a tuple?
|
|
14
|
-
|
|
15
|
-
// If this type is a tuple, what indices are allowed?
|
|
16
|
-
|
|
17
|
-
///
|
|
18
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
19
3
|
function functionalUpdate(updater, input) {
|
|
20
|
-
return typeof updater ===
|
|
4
|
+
return typeof updater === "function" ? updater(input) : updater;
|
|
21
5
|
}
|
|
22
6
|
function noop() {
|
|
23
|
-
//
|
|
24
7
|
}
|
|
25
8
|
function makeStateUpdater(key, instance) {
|
|
26
|
-
return updater => {
|
|
27
|
-
instance.setState(old => {
|
|
9
|
+
return (updater) => {
|
|
10
|
+
instance.setState((old) => {
|
|
28
11
|
return {
|
|
29
12
|
...old,
|
|
30
13
|
[key]: functionalUpdate(updater, old[key])
|
|
@@ -36,15 +19,15 @@ function isFunction(d) {
|
|
|
36
19
|
return d instanceof Function;
|
|
37
20
|
}
|
|
38
21
|
function isNumberArray(d) {
|
|
39
|
-
return Array.isArray(d) && d.every(val => typeof val ===
|
|
22
|
+
return Array.isArray(d) && d.every((val) => typeof val === "number");
|
|
40
23
|
}
|
|
41
24
|
function flattenBy(arr, getChildren) {
|
|
42
25
|
const flat = [];
|
|
43
|
-
const recurse = subArr => {
|
|
44
|
-
subArr.forEach(item => {
|
|
26
|
+
const recurse = (subArr) => {
|
|
27
|
+
subArr.forEach((item) => {
|
|
45
28
|
flat.push(item);
|
|
46
29
|
const children = getChildren(item);
|
|
47
|
-
if (children
|
|
30
|
+
if (children == null ? void 0 : children.length) {
|
|
48
31
|
recurse(children);
|
|
49
32
|
}
|
|
50
33
|
});
|
|
@@ -55,7 +38,8 @@ function flattenBy(arr, getChildren) {
|
|
|
55
38
|
function memo(getDeps, fn, opts) {
|
|
56
39
|
let deps = [];
|
|
57
40
|
let result;
|
|
58
|
-
return depArgs => {
|
|
41
|
+
return (depArgs) => {
|
|
42
|
+
var _a;
|
|
59
43
|
let depTime;
|
|
60
44
|
if (opts.key && opts.debug) depTime = Date.now();
|
|
61
45
|
const newDeps = getDeps(depArgs);
|
|
@@ -67,23 +51,30 @@ function memo(getDeps, fn, opts) {
|
|
|
67
51
|
let resultTime;
|
|
68
52
|
if (opts.key && opts.debug) resultTime = Date.now();
|
|
69
53
|
result = fn(...newDeps);
|
|
70
|
-
opts == null
|
|
54
|
+
(_a = opts == null ? void 0 : opts.onChange) == null ? void 0 : _a.call(opts, result);
|
|
71
55
|
if (opts.key && opts.debug) {
|
|
72
|
-
if (opts
|
|
56
|
+
if (opts == null ? void 0 : opts.debug()) {
|
|
73
57
|
const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
|
|
74
58
|
const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;
|
|
75
59
|
const resultFpsPercentage = resultEndTime / 16;
|
|
76
60
|
const pad = (str, num) => {
|
|
77
61
|
str = String(str);
|
|
78
62
|
while (str.length < num) {
|
|
79
|
-
str =
|
|
63
|
+
str = " " + str;
|
|
80
64
|
}
|
|
81
65
|
return str;
|
|
82
66
|
};
|
|
83
|
-
console.info(
|
|
67
|
+
console.info(
|
|
68
|
+
`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,
|
|
69
|
+
`
|
|
84
70
|
font-size: .6rem;
|
|
85
71
|
font-weight: bold;
|
|
86
|
-
color: hsl(${Math.max(
|
|
72
|
+
color: hsl(${Math.max(
|
|
73
|
+
0,
|
|
74
|
+
Math.min(120 - 120 * resultFpsPercentage, 120)
|
|
75
|
+
)}deg 100% 31%);`,
|
|
76
|
+
opts == null ? void 0 : opts.key
|
|
77
|
+
);
|
|
87
78
|
}
|
|
88
79
|
}
|
|
89
80
|
return result;
|
|
@@ -91,15 +82,11 @@ function memo(getDeps, fn, opts) {
|
|
|
91
82
|
}
|
|
92
83
|
function getMemoOptions(tableOptions, debugLevel, key, onChange) {
|
|
93
84
|
return {
|
|
94
|
-
debug: () =>
|
|
95
|
-
|
|
96
|
-
return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];
|
|
97
|
-
},
|
|
98
|
-
key: process.env.NODE_ENV === 'development' && key,
|
|
85
|
+
debug: () => (tableOptions == null ? void 0 : tableOptions.debugAll) ?? tableOptions[debugLevel],
|
|
86
|
+
key: process.env.NODE_ENV === "development" && key,
|
|
99
87
|
onChange
|
|
100
88
|
};
|
|
101
89
|
}
|
|
102
|
-
|
|
103
90
|
exports.flattenBy = flattenBy;
|
|
104
91
|
exports.functionalUpdate = functionalUpdate;
|
|
105
92
|
exports.getMemoOptions = getMemoOptions;
|
|
@@ -108,4 +95,4 @@ exports.isNumberArray = isNumberArray;
|
|
|
108
95
|
exports.makeStateUpdater = makeStateUpdater;
|
|
109
96
|
exports.memo = memo;
|
|
110
97
|
exports.noop = noop;
|
|
111
|
-
//# sourceMappingURL=utils.
|
|
98
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["import { TableOptionsResolved, TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type RequiredKeys<T, K extends keyof T> = Omit<T, K> &\n Required<Pick<T, K>>\nexport type Overwrite<T, U extends { [TKey in keyof T]?: any }> = Omit<\n T,\n keyof U\n> &\n U\n\nexport type UnionToIntersection<T> = (\n T extends any ? (x: T) => any : never\n) extends (x: infer R) => any\n ? R\n : never\n\nexport type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N\nexport type IsKnown<T, Y, N> = unknown extends T ? N : Y\n\ntype ComputeRange<\n N extends number,\n Result extends Array<unknown> = [],\n> = Result['length'] extends N\n ? Result\n : ComputeRange<N, [...Result, Result['length']]>\ntype Index40 = ComputeRange<40>[number]\n\n// Is this type a tuple?\ntype IsTuple<T> = T extends readonly any[] & { length: infer Length }\n ? Length extends Index40\n ? T\n : never\n : never\n\n// If this type is a tuple, what indices are allowed?\ntype AllowedIndexes<\n Tuple extends ReadonlyArray<any>,\n Keys extends number = never,\n> = Tuple extends readonly []\n ? Keys\n : Tuple extends readonly [infer _, ...infer Tail]\n ? AllowedIndexes<Tail, Keys | Tail['length']>\n : Keys\n\nexport type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5\n ? never\n : unknown extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth>\n : T extends any[]\n ? DeepKeys<T[number], [...TDepth, any]>\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth>\n : never\n\ntype DeepKeysPrefix<\n T,\n TPrefix,\n TDepth extends any[],\n> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}`\n : never\n\nexport type DeepValue<T, TProp> =\n T extends Record<string | number, any>\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : T[TProp & string]\n : never\n\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>\n\n///\n\nexport function functionalUpdate<T>(updater: Updater<T>, input: T): T {\n return typeof updater === 'function'\n ? (updater as (input: T) => T)(input)\n : updater\n}\n\nexport function noop() {\n //\n}\n\nexport function makeStateUpdater<K extends keyof TableState>(\n key: K,\n instance: unknown\n) {\n return (updater: Updater<TableState[K]>) => {\n ;(instance as any).setState(<TTableState>(old: TTableState) => {\n return {\n ...old,\n [key]: functionalUpdate(updater, (old as any)[key]),\n }\n })\n }\n}\n\ntype AnyFunction = (...args: any) => any\n\nexport function isFunction<T extends AnyFunction>(d: any): d is T {\n return d instanceof Function\n}\n\nexport function isNumberArray(d: any): d is number[] {\n return Array.isArray(d) && d.every(val => typeof val === 'number')\n}\n\nexport function flattenBy<TNode>(\n arr: TNode[],\n getChildren: (item: TNode) => TNode[]\n) {\n const flat: TNode[] = []\n\n const recurse = (subArr: TNode[]) => {\n subArr.forEach(item => {\n flat.push(item)\n const children = getChildren(item)\n if (children?.length) {\n recurse(children)\n }\n })\n }\n\n recurse(arr)\n\n return flat\n}\n\nexport function memo<TDeps extends readonly any[], TDepArgs, TResult>(\n getDeps: (depArgs?: TDepArgs) => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): (depArgs?: TDepArgs) => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return depArgs => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps(depArgs)\n\n const depsChanged =\n newDeps.length !== deps.length ||\n newDeps.some((dep: any, index: number) => deps[index] !== dep)\n\n if (!depsChanged) {\n return result!\n }\n\n deps = newDeps\n\n let resultTime: number\n if (opts.key && opts.debug) resultTime = Date.now()\n\n result = fn(...newDeps)\n opts?.onChange?.(result)\n\n if (opts.key && opts.debug) {\n if (opts?.debug()) {\n const depEndTime = Math.round((Date.now() - depTime!) * 100) / 100\n const resultEndTime = Math.round((Date.now() - resultTime!) * 100) / 100\n const resultFpsPercentage = resultEndTime / 16\n\n const pad = (str: number | string, num: number) => {\n str = String(str)\n while (str.length < num) {\n str = ' ' + str\n }\n return str\n }\n\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts?.key\n )\n }\n }\n\n return result!\n }\n}\n\nexport function getMemoOptions(\n tableOptions: Partial<TableOptionsResolved<any>>,\n debugLevel:\n | 'debugAll'\n | 'debugCells'\n | 'debugTable'\n | 'debugColumns'\n | 'debugRows'\n | 'debugHeaders',\n key: string,\n onChange?: (result: any) => void\n) {\n return {\n debug: () => tableOptions?.debugAll ?? tableOptions[debugLevel],\n key: process.env.NODE_ENV === 'development' && key,\n onChange,\n }\n}\n"],"names":[],"mappings":";;AAgFgB,SAAA,iBAAoB,SAAqB,OAAa;AACpE,SAAO,OAAO,YAAY,aACrB,QAA4B,KAAK,IAClC;AACN;AAEO,SAAS,OAAO;AAEvB;AAEgB,SAAA,iBACd,KACA,UACA;AACA,SAAO,CAAC,YAAoC;AACxC,aAAiB,SAAS,CAAc,QAAqB;AACtD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,CAAC,GAAG,GAAG,iBAAiB,SAAU,IAAY,GAAG,CAAC;AAAA,MAAA;AAAA,IACpD,CACD;AAAA,EAAA;AAEL;AAIO,SAAS,WAAkC,GAAgB;AAChE,SAAO,aAAa;AACtB;AAEO,SAAS,cAAc,GAAuB;AAC5C,SAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA,QAAO,OAAO,QAAQ,QAAQ;AACnE;AAEgB,SAAA,UACd,KACA,aACA;AACA,QAAM,OAAgB,CAAA;AAEhB,QAAA,UAAU,CAAC,WAAoB;AACnC,WAAO,QAAQ,CAAQ,SAAA;AACrB,WAAK,KAAK,IAAI;AACR,YAAA,WAAW,YAAY,IAAI;AACjC,UAAI,qCAAU,QAAQ;AACpB,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA,CACD;AAAA,EAAA;AAGH,UAAQ,GAAG;AAEJ,SAAA;AACT;AAEgB,SAAA,KACd,SACA,IACA,MAKiC;AACjC,MAAI,OAAc,CAAA;AACd,MAAA;AAEJ,SAAO,CAAW,YAAA;;AACZ,QAAA;AACJ,QAAI,KAAK,OAAO,KAAK,MAAO,WAAU,KAAK;AAErC,UAAA,UAAU,QAAQ,OAAO;AAE/B,UAAM,cACJ,QAAQ,WAAW,KAAK,UACxB,QAAQ,KAAK,CAAC,KAAU,UAAkB,KAAK,KAAK,MAAM,GAAG;AAE/D,QAAI,CAAC,aAAa;AACT,aAAA;AAAA,IACT;AAEO,WAAA;AAEH,QAAA;AACJ,QAAI,KAAK,OAAO,KAAK,MAAO,cAAa,KAAK;AAErC,aAAA,GAAG,GAAG,OAAO;AACtB,uCAAM,aAAN,8BAAiB;AAEb,QAAA,KAAK,OAAO,KAAK,OAAO;AACtB,UAAA,6BAAM,SAAS;AACX,cAAA,aAAa,KAAK,OAAO,KAAK,QAAQ,WAAY,GAAG,IAAI;AACzD,cAAA,gBAAgB,KAAK,OAAO,KAAK,QAAQ,cAAe,GAAG,IAAI;AACrE,cAAM,sBAAsB,gBAAgB;AAEtC,cAAA,MAAM,CAAC,KAAsB,QAAgB;AACjD,gBAAM,OAAO,GAAG;AACT,iBAAA,IAAI,SAAS,KAAK;AACvB,kBAAM,MAAM;AAAA,UACd;AACO,iBAAA;AAAA,QAAA;AAGD,gBAAA;AAAA,UACN,OAAO,IAAI,eAAe,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC;AAAA,UACnD;AAAA;AAAA;AAAA,yBAGe,KAAK;AAAA,YAChB;AAAA,YACA,KAAK,IAAI,MAAM,MAAM,qBAAqB,GAAG;AAAA,UAC9C,CAAA;AAAA,UACH,6BAAM;AAAA,QAAA;AAAA,MAEV;AAAA,IACF;AAEO,WAAA;AAAA,EAAA;AAEX;AAEO,SAAS,eACd,cACA,YAOA,KACA,UACA;AACO,SAAA;AAAA,IACL,OAAO,OAAM,6CAAc,aAAY,aAAa,UAAU;AAAA,IAC9D,KAAK,QAAQ,IAAI,aAAa,iBAAiB;AAAA,IAC/C;AAAA,EAAA;AAEJ;;;;;;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TableOptionsResolved, TableState, Updater } from './types.cjs';
|
|
2
|
+
|
|
3
|
+
export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
4
|
+
export type RequiredKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
5
|
+
export type Overwrite<T, U extends {
|
|
6
|
+
[TKey in keyof T]?: any;
|
|
7
|
+
}> = Omit<T, keyof U> & U;
|
|
8
|
+
export type UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? R : never;
|
|
9
|
+
export type IsAny<T, Y, N> = 1 extends 0 & T ? Y : N;
|
|
10
|
+
export type IsKnown<T, Y, N> = unknown extends T ? N : Y;
|
|
11
|
+
type ComputeRange<N extends number, Result extends Array<unknown> = []> = Result['length'] extends N ? Result : ComputeRange<N, [...Result, Result['length']]>;
|
|
12
|
+
type Index40 = ComputeRange<40>[number];
|
|
13
|
+
type IsTuple<T> = T extends readonly any[] & {
|
|
14
|
+
length: infer Length;
|
|
15
|
+
} ? Length extends Index40 ? T : never : never;
|
|
16
|
+
type AllowedIndexes<Tuple extends ReadonlyArray<any>, Keys extends number = never> = Tuple extends readonly [] ? Keys : Tuple extends readonly [infer _, ...infer Tail] ? AllowedIndexes<Tail, Keys | Tail['length']> : Keys;
|
|
17
|
+
export type DeepKeys<T, TDepth extends any[] = []> = TDepth['length'] extends 5 ? never : unknown extends T ? string : T extends readonly any[] & IsTuple<T> ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>, TDepth> : T extends any[] ? DeepKeys<T[number], [...TDepth, any]> : T extends Date ? never : T extends object ? (keyof T & string) | DeepKeysPrefix<T, keyof T, TDepth> : never;
|
|
18
|
+
type DeepKeysPrefix<T, TPrefix, TDepth extends any[]> = TPrefix extends keyof T & (number | string) ? `${TPrefix}.${DeepKeys<T[TPrefix], [...TDepth, any]> & string}` : never;
|
|
19
|
+
export type DeepValue<T, TProp> = T extends Record<string | number, any> ? TProp extends `${infer TBranch}.${infer TDeepProp}` ? DeepValue<T[TBranch], TDeepProp> : T[TProp & string] : never;
|
|
20
|
+
export type NoInfer<T> = [T][T extends any ? 0 : never];
|
|
21
|
+
export type Getter<TValue> = <TTValue = TValue>() => NoInfer<TTValue>;
|
|
22
|
+
export declare function functionalUpdate<T>(updater: Updater<T>, input: T): T;
|
|
23
|
+
export declare function noop(): void;
|
|
24
|
+
export declare function makeStateUpdater<K extends keyof TableState>(key: K, instance: unknown): (updater: Updater<TableState[K]>) => void;
|
|
25
|
+
type AnyFunction = (...args: any) => any;
|
|
26
|
+
export declare function isFunction<T extends AnyFunction>(d: any): d is T;
|
|
27
|
+
export declare function isNumberArray(d: any): d is number[];
|
|
28
|
+
export declare function flattenBy<TNode>(arr: TNode[], getChildren: (item: TNode) => TNode[]): TNode[];
|
|
29
|
+
export declare function memo<TDeps extends readonly any[], TDepArgs, TResult>(getDeps: (depArgs?: TDepArgs) => [...TDeps], fn: (...args: NoInfer<[...TDeps]>) => TResult, opts: {
|
|
30
|
+
key: any;
|
|
31
|
+
debug?: () => any;
|
|
32
|
+
onChange?: (result: TResult) => void;
|
|
33
|
+
}): (depArgs?: TDepArgs) => TResult;
|
|
34
|
+
export declare function getMemoOptions(tableOptions: Partial<TableOptionsResolved<any>>, debugLevel: 'debugAll' | 'debugCells' | 'debugTable' | 'debugColumns' | 'debugRows' | 'debugHeaders', key: string, onChange?: (result: any) => void): {
|
|
35
|
+
debug: () => boolean | undefined;
|
|
36
|
+
key: string | false;
|
|
37
|
+
onChange: ((result: any) => void) | undefined;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { isNumberArray } from "./utils.js";
|
|
2
|
+
const sum = (columnId, _leafRows, childRows) => {
|
|
3
|
+
return childRows.reduce((sum2, next) => {
|
|
4
|
+
const nextValue = next.getValue(columnId);
|
|
5
|
+
return sum2 + (typeof nextValue === "number" ? nextValue : 0);
|
|
6
|
+
}, 0);
|
|
7
|
+
};
|
|
8
|
+
const min = (columnId, _leafRows, childRows) => {
|
|
9
|
+
let min2;
|
|
10
|
+
childRows.forEach((row) => {
|
|
11
|
+
const value = row.getValue(columnId);
|
|
12
|
+
if (value != null && (min2 > value || min2 === void 0 && value >= value)) {
|
|
13
|
+
min2 = value;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return min2;
|
|
17
|
+
};
|
|
18
|
+
const max = (columnId, _leafRows, childRows) => {
|
|
19
|
+
let max2;
|
|
20
|
+
childRows.forEach((row) => {
|
|
21
|
+
const value = row.getValue(columnId);
|
|
22
|
+
if (value != null && (max2 < value || max2 === void 0 && value >= value)) {
|
|
23
|
+
max2 = value;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return max2;
|
|
27
|
+
};
|
|
28
|
+
const extent = (columnId, _leafRows, childRows) => {
|
|
29
|
+
let min2;
|
|
30
|
+
let max2;
|
|
31
|
+
childRows.forEach((row) => {
|
|
32
|
+
const value = row.getValue(columnId);
|
|
33
|
+
if (value != null) {
|
|
34
|
+
if (min2 === void 0) {
|
|
35
|
+
if (value >= value) min2 = max2 = value;
|
|
36
|
+
} else {
|
|
37
|
+
if (min2 > value) min2 = value;
|
|
38
|
+
if (max2 < value) max2 = value;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return [min2, max2];
|
|
43
|
+
};
|
|
44
|
+
const mean = (columnId, leafRows) => {
|
|
45
|
+
let count2 = 0;
|
|
46
|
+
let sum2 = 0;
|
|
47
|
+
leafRows.forEach((row) => {
|
|
48
|
+
let value = row.getValue(columnId);
|
|
49
|
+
if (value != null && (value = +value) >= value) {
|
|
50
|
+
++count2, sum2 += value;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
if (count2) return sum2 / count2;
|
|
54
|
+
return;
|
|
55
|
+
};
|
|
56
|
+
const median = (columnId, leafRows) => {
|
|
57
|
+
if (!leafRows.length) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const values = leafRows.map((row) => row.getValue(columnId));
|
|
61
|
+
if (!isNumberArray(values)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (values.length === 1) {
|
|
65
|
+
return values[0];
|
|
66
|
+
}
|
|
67
|
+
const mid = Math.floor(values.length / 2);
|
|
68
|
+
const nums = values.sort((a, b) => a - b);
|
|
69
|
+
return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
|
|
70
|
+
};
|
|
71
|
+
const unique = (columnId, leafRows) => {
|
|
72
|
+
return Array.from(new Set(leafRows.map((d) => d.getValue(columnId))).values());
|
|
73
|
+
};
|
|
74
|
+
const uniqueCount = (columnId, leafRows) => {
|
|
75
|
+
return new Set(leafRows.map((d) => d.getValue(columnId))).size;
|
|
76
|
+
};
|
|
77
|
+
const count = (_columnId, leafRows) => {
|
|
78
|
+
return leafRows.length;
|
|
79
|
+
};
|
|
80
|
+
const aggregationFns = {
|
|
81
|
+
sum,
|
|
82
|
+
min,
|
|
83
|
+
max,
|
|
84
|
+
extent,
|
|
85
|
+
mean,
|
|
86
|
+
median,
|
|
87
|
+
unique,
|
|
88
|
+
uniqueCount,
|
|
89
|
+
count
|
|
90
|
+
};
|
|
91
|
+
export {
|
|
92
|
+
aggregationFns
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=aggregationFns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregationFns.js","sources":["../../src/aggregationFns.ts"],"sourcesContent":["import { AggregationFn } from './features/ColumnGrouping'\nimport { isNumberArray } from './utils'\n\nconst sum: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId)\n return sum + (typeof nextValue === 'number' ? nextValue : 0)\n }, 0)\n}\n\nconst min: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n\n if (\n value != null &&\n (min! > value || (min === undefined && value >= value))\n ) {\n min = value\n }\n })\n\n return min\n}\n\nconst max: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (\n value != null &&\n (max! < value || (max === undefined && value >= value))\n ) {\n max = value\n }\n })\n\n return max\n}\n\nconst extent: AggregationFn<any> = (columnId, _leafRows, childRows) => {\n let min: number | undefined\n let max: number | undefined\n\n childRows.forEach(row => {\n const value = row.getValue<number>(columnId)\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value\n } else {\n if (min > value) min = value\n if (max! < value) max = value\n }\n }\n })\n\n return [min, max]\n}\n\nconst mean: AggregationFn<any> = (columnId, leafRows) => {\n let count = 0\n let sum = 0\n\n leafRows.forEach(row => {\n let value = row.getValue<number>(columnId)\n if (value != null && (value = +value) >= value) {\n ++count, (sum += value)\n }\n })\n\n if (count) return sum / count\n\n return\n}\n\nconst median: AggregationFn<any> = (columnId, leafRows) => {\n if (!leafRows.length) {\n return\n }\n\n const values = leafRows.map(row => row.getValue(columnId))\n if (!isNumberArray(values)) {\n return\n }\n if (values.length === 1) {\n return values[0]\n }\n\n const mid = Math.floor(values.length / 2)\n const nums = values.sort((a, b) => a - b)\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1]! + nums[mid]!) / 2\n}\n\nconst unique: AggregationFn<any> = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values())\n}\n\nconst uniqueCount: AggregationFn<any> = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size\n}\n\nconst count: AggregationFn<any> = (_columnId, leafRows) => {\n return leafRows.length\n}\n\nexport const aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count,\n}\n\nexport type BuiltInAggregationFn = keyof typeof aggregationFns\n"],"names":["sum","min","max","count"],"mappings":";AAGA,MAAM,MAA0B,CAAC,UAAU,WAAW,cAAc;AAGlE,SAAO,UAAU,OAAO,CAACA,MAAK,SAAS;AAC/B,UAAA,YAAY,KAAK,SAAS,QAAQ;AACxC,WAAOA,QAAO,OAAO,cAAc,WAAW,YAAY;AAAA,KACzD,CAAC;AACN;AAEA,MAAM,MAA0B,CAAC,UAAU,WAAW,cAAc;AAC9DC,MAAAA;AAEJ,YAAU,QAAQ,CAAO,QAAA;AACjB,UAAA,QAAQ,IAAI,SAAiB,QAAQ;AAE3C,QACE,SAAS,SACRA,OAAO,SAAUA,SAAQ,UAAa,SAAS,QAChD;AACAA,aAAM;AAAA,IACR;AAAA,EAAA,CACD;AAEMA,SAAAA;AACT;AAEA,MAAM,MAA0B,CAAC,UAAU,WAAW,cAAc;AAC9DC,MAAAA;AAEJ,YAAU,QAAQ,CAAO,QAAA;AACjB,UAAA,QAAQ,IAAI,SAAiB,QAAQ;AAC3C,QACE,SAAS,SACRA,OAAO,SAAUA,SAAQ,UAAa,SAAS,QAChD;AACAA,aAAM;AAAA,IACR;AAAA,EAAA,CACD;AAEMA,SAAAA;AACT;AAEA,MAAM,SAA6B,CAAC,UAAU,WAAW,cAAc;AACjED,MAAAA;AACAC,MAAAA;AAEJ,YAAU,QAAQ,CAAO,QAAA;AACjB,UAAA,QAAQ,IAAI,SAAiB,QAAQ;AAC3C,QAAI,SAAS,MAAM;AACjB,UAAID,SAAQ,QAAW;AACrB,YAAI,SAAS,MAAOA,QAAMC,OAAM;AAAA,MAAA,OAC3B;AACDD,YAAAA,OAAM,MAAOA,QAAM;AACnBC,YAAAA,OAAO,MAAOA,QAAM;AAAA,MAC1B;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA,CAACD,MAAKC,IAAG;AAClB;AAEA,MAAM,OAA2B,CAAC,UAAU,aAAa;AACvD,MAAIC,SAAQ;AACZ,MAAIH,OAAM;AAEV,WAAS,QAAQ,CAAO,QAAA;AAClB,QAAA,QAAQ,IAAI,SAAiB,QAAQ;AACzC,QAAI,SAAS,SAAS,QAAQ,CAAC,UAAU,OAAO;AAC9C,QAAEG,QAAQH,QAAO;AAAA,IACnB;AAAA,EAAA,CACD;AAEGG,MAAAA,eAAcH,OAAMG;AAExB;AACF;AAEA,MAAM,SAA6B,CAAC,UAAU,aAAa;AACrD,MAAA,CAAC,SAAS,QAAQ;AACpB;AAAA,EACF;AAEA,QAAM,SAAS,SAAS,IAAI,SAAO,IAAI,SAAS,QAAQ,CAAC;AACrD,MAAA,CAAC,cAAc,MAAM,GAAG;AAC1B;AAAA,EACF;AACI,MAAA,OAAO,WAAW,GAAG;AACvB,WAAO,OAAO,CAAC;AAAA,EACjB;AAEA,QAAM,MAAM,KAAK,MAAM,OAAO,SAAS,CAAC;AACxC,QAAM,OAAO,OAAO,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACxC,SAAO,OAAO,SAAS,MAAM,IAAI,KAAK,GAAG,KAAK,KAAK,MAAM,CAAC,IAAK,KAAK,GAAG,KAAM;AAC/E;AAEA,MAAM,SAA6B,CAAC,UAAU,aAAa;AACzD,SAAO,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,CAAA,MAAK,EAAE,SAAS,QAAQ,CAAC,CAAC,EAAE,OAAQ,CAAA;AAC7E;AAEA,MAAM,cAAkC,CAAC,UAAU,aAAa;AACvD,SAAA,IAAI,IAAI,SAAS,IAAI,CAAA,MAAK,EAAE,SAAS,QAAQ,CAAC,CAAC,EAAE;AAC1D;AAEA,MAAM,QAA4B,CAAC,WAAW,aAAa;AACzD,SAAO,SAAS;AAClB;AAEO,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { AccessorFn, AccessorFnColumnDef, AccessorKeyColumnDef, DisplayColumnDef, GroupColumnDef, IdentifiedColumnDef, RowData } from './types';
|
|
2
|
-
import { DeepKeys, DeepValue } from './utils';
|
|
1
|
+
import { AccessorFn, AccessorFnColumnDef, AccessorKeyColumnDef, DisplayColumnDef, GroupColumnDef, IdentifiedColumnDef, RowData } from './types.js';
|
|
2
|
+
import { DeepKeys, DeepValue } from './utils.js';
|
|
3
|
+
|
|
3
4
|
export type ColumnHelper<TData extends RowData> = {
|
|
4
5
|
accessor: <TAccessor extends AccessorFn<TData> | DeepKeys<TData>, TValue extends TAccessor extends AccessorFn<TData, infer TReturn> ? TReturn : TAccessor extends DeepKeys<TData> ? DeepValue<TData, TAccessor> : never>(accessor: TAccessor, column: TAccessor extends AccessorFn<TData> ? DisplayColumnDef<TData, TValue> : IdentifiedColumnDef<TData, TValue>) => TAccessor extends AccessorFn<TData> ? AccessorFnColumnDef<TData, TValue> : AccessorKeyColumnDef<TData, TValue>;
|
|
5
6
|
display: (column: DisplayColumnDef<TData>) => DisplayColumnDef<TData, unknown>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function createColumnHelper() {
|
|
2
|
+
return {
|
|
3
|
+
accessor: (accessor, column) => {
|
|
4
|
+
return typeof accessor === "function" ? {
|
|
5
|
+
...column,
|
|
6
|
+
accessorFn: accessor
|
|
7
|
+
} : {
|
|
8
|
+
...column,
|
|
9
|
+
accessorKey: accessor
|
|
10
|
+
};
|
|
11
|
+
},
|
|
12
|
+
display: (column) => column,
|
|
13
|
+
group: (column) => column
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
createColumnHelper
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=columnHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnHelper.js","sources":["../../src/columnHelper.ts"],"sourcesContent":["import {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from './types'\nimport { DeepKeys, DeepValue } from './utils'\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TData, TValue>\n : AccessorKeyColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => DisplayColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => GroupColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData,\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: column => column,\n group: column => column,\n }\n}\n"],"names":[
|
|
1
|
+
{"version":3,"file":"columnHelper.js","sources":["../../src/columnHelper.ts"],"sourcesContent":["import {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n DisplayColumnDef,\n GroupColumnDef,\n IdentifiedColumnDef,\n RowData,\n} from './types'\nimport { DeepKeys, DeepValue } from './utils'\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nexport type ColumnHelper<TData extends RowData> = {\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? DisplayColumnDef<TData, TValue>\n : IdentifiedColumnDef<TData, TValue>\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TData, TValue>\n : AccessorKeyColumnDef<TData, TValue>\n display: (column: DisplayColumnDef<TData>) => DisplayColumnDef<TData, unknown>\n group: (column: GroupColumnDef<TData>) => GroupColumnDef<TData, unknown>\n}\n\nexport function createColumnHelper<\n TData extends RowData,\n>(): ColumnHelper<TData> {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function'\n ? ({\n ...column,\n accessorFn: accessor,\n } as any)\n : {\n ...column,\n accessorKey: accessor,\n }\n },\n display: column => column,\n group: column => column,\n }\n}\n"],"names":[],"mappings":"AAwEO,SAAS,qBAES;AAChB,SAAA;AAAA,IACL,UAAU,CAAC,UAAU,WAAW;AACvB,aAAA,OAAO,aAAa,aACtB;AAAA,QACC,GAAG;AAAA,QACH,YAAY;AAAA,MAAA,IAEd;AAAA,QACE,GAAG;AAAA,QACH,aAAa;AAAA,MAAA;AAAA,IAErB;AAAA,IACA,SAAS,CAAU,WAAA;AAAA,IACnB,OAAO,CAAU,WAAA;AAAA,EAAA;AAErB;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { RowData, Cell, Column, Row, Table } from '../types';
|
|
2
2
|
import { Getter } from '../utils';
|
|
3
|
+
|
|
3
4
|
export interface CellContext<TData extends RowData, TValue> {
|
|
4
5
|
cell: Cell<TData, TValue>;
|
|
5
6
|
column: Column<TData, TValue>;
|
|
@@ -46,4 +47,4 @@ export interface CoreCell<TData extends RowData, TValue> {
|
|
|
46
47
|
*/
|
|
47
48
|
row: Row<TData>;
|
|
48
49
|
}
|
|
49
|
-
export declare function
|
|
50
|
+
export declare function _createCell<TData extends RowData, TValue>(table: Table<TData>, row: Row<TData>, column: Column<TData, TValue>, columnId: string): Cell<TData, TValue>;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
function _createCell(table, row, column, columnId) {
|
|
3
|
+
const getRenderValue = () => cell.getValue() ?? table.options.renderFallbackValue;
|
|
4
|
+
const cell = {
|
|
5
|
+
id: `${row.id}_${column.id}`,
|
|
6
|
+
row,
|
|
7
|
+
column,
|
|
8
|
+
getValue: () => row.getValue(columnId),
|
|
9
|
+
renderValue: getRenderValue,
|
|
10
|
+
getContext: memo(
|
|
11
|
+
() => [table, column, row, cell],
|
|
12
|
+
(table2, column2, row2, cell2) => ({
|
|
13
|
+
table: table2,
|
|
14
|
+
column: column2,
|
|
15
|
+
row: row2,
|
|
16
|
+
cell: cell2,
|
|
17
|
+
getValue: cell2.getValue,
|
|
18
|
+
renderValue: cell2.renderValue
|
|
19
|
+
}),
|
|
20
|
+
getMemoOptions(table.options, "debugCells", "cell.getContext")
|
|
21
|
+
)
|
|
22
|
+
};
|
|
23
|
+
table._features.forEach((feature) => {
|
|
24
|
+
var _a;
|
|
25
|
+
(_a = feature._createCell) == null ? void 0 : _a.call(
|
|
26
|
+
feature,
|
|
27
|
+
cell,
|
|
28
|
+
column,
|
|
29
|
+
row,
|
|
30
|
+
table
|
|
31
|
+
);
|
|
32
|
+
}, {});
|
|
33
|
+
return cell;
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
_createCell
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.js","sources":["../../../src/core/cell.ts"],"sourcesContent":["import { RowData, Cell, Column, Row, Table } from '../types'\nimport { Getter, getMemoOptions, memo } from '../utils'\n\nexport interface CellContext<TData extends RowData, TValue> {\n cell: Cell<TData, TValue>\n column: Column<TData, TValue>\n getValue: Getter<TValue>\n renderValue: Getter<TValue | null>\n row: Row<TData>\n table: Table<TData>\n}\n\nexport interface CoreCell<TData extends RowData, TValue> {\n /**\n * The associated Column object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#column)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n column: Column<TData, TValue>\n /**\n * Returns the rendering context (or props) for cell-based components like cells and aggregated cells. Use these props with your framework's `flexRender` utility to render these using the template of your choice:\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getcontext)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getContext: () => CellContext<TData, TValue>\n /**\n * Returns the value for the cell, accessed via the associated column's accessor key or accessor function.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#getvalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n getValue: CellContext<TData, TValue>['getValue']\n /**\n * The unique ID for the cell across the entire table.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n id: string\n /**\n * Renders the value for a cell the same as `getValue`, but will return the `renderFallbackValue` if no value is found.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#rendervalue)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n renderValue: CellContext<TData, TValue>['renderValue']\n /**\n * The associated Row object for the cell.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/cell#row)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/cells)\n */\n row: Row<TData>\n}\n\nexport function _createCell<TData extends RowData, TValue>(\n table: Table<TData>,\n row: Row<TData>,\n column: Column<TData, TValue>,\n columnId: string\n): Cell<TData, TValue> {\n const getRenderValue = () =>\n cell.getValue() ?? table.options.renderFallbackValue\n\n const cell: CoreCell<TData, TValue> = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(\n () => [table, column, row, cell],\n (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell as Cell<TData, TValue>,\n getValue: cell.getValue,\n renderValue: cell.renderValue,\n }),\n getMemoOptions(table.options, 'debugCells', 'cell.getContext')\n ),\n }\n\n table._features.forEach(feature => {\n feature._createCell?.(\n cell as Cell<TData, TValue>,\n column,\n row as Row<TData>,\n table\n )\n }, {})\n\n return cell as Cell<TData, TValue>\n}\n"],"names":["table","column","row","cell"],"mappings":";AAmDO,SAAS,YACd,OACA,KACA,QACA,UACqB;AACrB,QAAM,iBAAiB,MACrB,KAAK,SAAS,KAAK,MAAM,QAAQ;AAEnC,QAAM,OAAgC;AAAA,IACpC,IAAI,GAAG,IAAI,EAAE,IAAI,OAAO,EAAE;AAAA,IAC1B;AAAA,IACA;AAAA,IACA,UAAU,MAAM,IAAI,SAAS,QAAQ;AAAA,IACrC,aAAa;AAAA,IACb,YAAY;AAAA,MACV,MAAM,CAAC,OAAO,QAAQ,KAAK,IAAI;AAAA,MAC/B,CAACA,QAAOC,SAAQC,MAAKC,WAAU;AAAA,QAC7B,OAAAH;AAAAA,QACA,QAAAC;AAAAA,QACA,KAAAC;AAAAA,QACA,MAAMC;AAAAA,QACN,UAAUA,MAAK;AAAA,QACf,aAAaA,MAAK;AAAA,MAAA;AAAA,MAEpB,eAAe,MAAM,SAAS,cAAc,iBAAiB;AAAA,IAC/D;AAAA,EAAA;AAGI,QAAA,UAAU,QAAQ,CAAW,YAAA;;AACzB,kBAAA,gBAAA;AAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EAEJ,GAAG,CAAE,CAAA;AAEE,SAAA;AACT;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Column, Table, AccessorFn, ColumnDef, RowData } from '../types';
|
|
2
|
+
|
|
2
3
|
export interface CoreColumn<TData extends RowData, TValue> {
|
|
3
4
|
/**
|
|
4
5
|
* The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.
|
|
@@ -52,4 +53,4 @@ export interface CoreColumn<TData extends RowData, TValue> {
|
|
|
52
53
|
*/
|
|
53
54
|
parent?: Column<TData, TValue>;
|
|
54
55
|
}
|
|
55
|
-
export declare function
|
|
56
|
+
export declare function _createColumn<TData extends RowData, TValue>(table: Table<TData>, columnDef: ColumnDef<TData, TValue>, depth: number, parent?: Column<TData, TValue>): Column<TData, TValue>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { memo, getMemoOptions } from "../utils.js";
|
|
2
|
+
function _createColumn(table, columnDef, depth, parent) {
|
|
3
|
+
var _a;
|
|
4
|
+
const defaultColumn = table._getDefaultColumnDef();
|
|
5
|
+
const resolvedColumnDef = {
|
|
6
|
+
...defaultColumn,
|
|
7
|
+
...columnDef
|
|
8
|
+
};
|
|
9
|
+
const accessorKey = resolvedColumnDef.accessorKey;
|
|
10
|
+
let id = resolvedColumnDef.id ?? (accessorKey ? accessorKey.replace(".", "_") : void 0) ?? (typeof resolvedColumnDef.header === "string" ? resolvedColumnDef.header : void 0);
|
|
11
|
+
let accessorFn;
|
|
12
|
+
if (resolvedColumnDef.accessorFn) {
|
|
13
|
+
accessorFn = resolvedColumnDef.accessorFn;
|
|
14
|
+
} else if (accessorKey) {
|
|
15
|
+
if (accessorKey.includes(".")) {
|
|
16
|
+
accessorFn = (originalRow) => {
|
|
17
|
+
let result = originalRow;
|
|
18
|
+
for (const key of accessorKey.split(".")) {
|
|
19
|
+
result = result == null ? void 0 : result[key];
|
|
20
|
+
if (process.env.NODE_ENV !== "production" && result === void 0) {
|
|
21
|
+
console.warn(
|
|
22
|
+
`"${key}" in deeply nested key "${accessorKey}" returned undefined.`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
} else {
|
|
29
|
+
accessorFn = (originalRow) => originalRow[resolvedColumnDef.accessorKey];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (!id) {
|
|
33
|
+
if (process.env.NODE_ENV !== "production") {
|
|
34
|
+
throw new Error(
|
|
35
|
+
resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
throw new Error();
|
|
39
|
+
}
|
|
40
|
+
let column = {
|
|
41
|
+
id: `${String(id)}`,
|
|
42
|
+
accessorFn,
|
|
43
|
+
parent,
|
|
44
|
+
depth,
|
|
45
|
+
columnDef: resolvedColumnDef,
|
|
46
|
+
columns: [],
|
|
47
|
+
getFlatColumns: memo(
|
|
48
|
+
() => [true],
|
|
49
|
+
() => {
|
|
50
|
+
var _a2;
|
|
51
|
+
return [
|
|
52
|
+
column,
|
|
53
|
+
...(_a2 = column.columns) == null ? void 0 : _a2.flatMap((d) => d.getFlatColumns())
|
|
54
|
+
];
|
|
55
|
+
},
|
|
56
|
+
getMemoOptions(table.options, "debugColumns", "column.getFlatColumns")
|
|
57
|
+
),
|
|
58
|
+
getLeafColumns: memo(
|
|
59
|
+
() => [table._getOrderColumnsFn()],
|
|
60
|
+
(orderColumns) => {
|
|
61
|
+
var _a2;
|
|
62
|
+
if ((_a2 = column.columns) == null ? void 0 : _a2.length) {
|
|
63
|
+
let leafColumns = column.columns.flatMap(
|
|
64
|
+
(column2) => column2.getLeafColumns()
|
|
65
|
+
);
|
|
66
|
+
return orderColumns(leafColumns);
|
|
67
|
+
}
|
|
68
|
+
return [column];
|
|
69
|
+
},
|
|
70
|
+
getMemoOptions(table.options, "debugColumns", "column.getLeafColumns")
|
|
71
|
+
)
|
|
72
|
+
};
|
|
73
|
+
for (const feature of table._features) {
|
|
74
|
+
(_a = feature._createColumn) == null ? void 0 : _a.call(feature, column, table);
|
|
75
|
+
}
|
|
76
|
+
return column;
|
|
77
|
+
}
|
|
78
|
+
export {
|
|
79
|
+
_createColumn
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.js","sources":["../../../src/core/column.ts"],"sourcesContent":["import {\n Column,\n Table,\n AccessorFn,\n ColumnDef,\n RowData,\n ColumnDefResolved,\n} from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport interface CoreColumn<TData extends RowData, TValue> {\n /**\n * The resolved accessor function to use when extracting the value for the column from each row. Will only be defined if the column def has a valid accessor key or function defined.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#accessorfn)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n accessorFn?: AccessorFn<TData, TValue>\n /**\n * The original column def used to create the column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columndef)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columnDef: ColumnDef<TData, TValue>\n /**\n * The child column (if the column is a group column). Will be an empty array if the column is not a group column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#columns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n columns: Column<TData, TValue>[]\n /**\n * The depth of the column (if grouped) relative to the root column def array.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#depth)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n depth: number\n /**\n * Returns the flattened array of this column and all child/grand-child columns for this column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getflatcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getFlatColumns: () => Column<TData, TValue>[]\n /**\n * Returns an array of all leaf-node columns for this column. If a column has no children, it is considered the only leaf-node column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#getleafcolumns)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n getLeafColumns: () => Column<TData, TValue>[]\n /**\n * The resolved unique identifier for the column resolved in this priority:\n - A manual `id` property from the column def\n - The accessor key from the column def\n - The header string from the column def\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#id)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n id: string\n /**\n * The parent column for this column. Will be undefined if this is a root column.\n * @link [API Docs](https://tanstack.com/table/v8/docs/api/core/column#parent)\n * @link [Guide](https://tanstack.com/table/v8/docs/guide/column-defs)\n */\n parent?: Column<TData, TValue>\n}\n\nexport function _createColumn<TData extends RowData, TValue>(\n table: Table<TData>,\n columnDef: ColumnDef<TData, TValue>,\n depth: number,\n parent?: Column<TData, TValue>\n): Column<TData, TValue> {\n const defaultColumn = table._getDefaultColumnDef()\n\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef,\n } as ColumnDefResolved<TData>\n\n const accessorKey = resolvedColumnDef.accessorKey\n\n let id =\n resolvedColumnDef.id ??\n (accessorKey ? accessorKey.replace('.', '_') : undefined) ??\n (typeof resolvedColumnDef.header === 'string'\n ? resolvedColumnDef.header\n : undefined)\n\n let accessorFn: AccessorFn<TData> | undefined\n\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = (originalRow: TData) => {\n let result = originalRow as Record<string, any>\n\n for (const key of accessorKey.split('.')) {\n result = result?.[key]\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(\n `\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`\n )\n }\n }\n\n return result\n }\n } else {\n accessorFn = (originalRow: TData) =>\n (originalRow as any)[resolvedColumnDef.accessorKey]\n }\n }\n\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n resolvedColumnDef.accessorFn\n ? `Columns require an id when using an accessorFn`\n : `Columns require an id when using a non-string header`\n )\n }\n throw new Error()\n }\n\n let column: CoreColumn<TData, any> = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent as any,\n depth,\n columnDef: resolvedColumnDef as ColumnDef<TData, any>,\n columns: [],\n getFlatColumns: memo(\n () => [true],\n () => {\n return [\n column as Column<TData, TValue>,\n ...column.columns?.flatMap(d => d.getFlatColumns()),\n ]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')\n ),\n getLeafColumns: memo(\n () => [table._getOrderColumnsFn()],\n orderColumns => {\n if (column.columns?.length) {\n let leafColumns = column.columns.flatMap(column =>\n column.getLeafColumns()\n )\n\n return orderColumns(leafColumns)\n }\n\n return [column as Column<TData, TValue>]\n },\n getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns')\n ),\n }\n\n for (const feature of table._features) {\n feature._createColumn?.(column as Column<TData, TValue>, table)\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column as Column<TData, TValue>\n}\n"],"names":["_a","column"],"mappings":";AAgEO,SAAS,cACd,OACA,WACA,OACA,QACuB;;AACjB,QAAA,gBAAgB,MAAM;AAE5B,QAAM,oBAAoB;AAAA,IACxB,GAAG;AAAA,IACH,GAAG;AAAA,EAAA;AAGL,QAAM,cAAc,kBAAkB;AAEtC,MAAI,KACF,kBAAkB,OACjB,cAAc,YAAY,QAAQ,KAAK,GAAG,IAAI,YAC9C,OAAO,kBAAkB,WAAW,WACjC,kBAAkB,SAClB;AAEF,MAAA;AAEJ,MAAI,kBAAkB,YAAY;AAChC,iBAAa,kBAAkB;AAAA,aACtB,aAAa;AAElB,QAAA,YAAY,SAAS,GAAG,GAAG;AAC7B,mBAAa,CAAC,gBAAuB;AACnC,YAAI,SAAS;AAEb,mBAAW,OAAO,YAAY,MAAM,GAAG,GAAG;AACxC,mBAAS,iCAAS;AAClB,cAAI,QAAQ,IAAI,aAAa,gBAAgB,WAAW,QAAW;AACzD,oBAAA;AAAA,cACN,IAAI,GAAG,2BAA2B,WAAW;AAAA,YAAA;AAAA,UAEjD;AAAA,QACF;AAEO,eAAA;AAAA,MAAA;AAAA,IACT,OACK;AACL,mBAAa,CAAC,gBACX,YAAoB,kBAAkB,WAAW;AAAA,IACtD;AAAA,EACF;AAEA,MAAI,CAAC,IAAI;AACH,QAAA,QAAQ,IAAI,aAAa,cAAc;AACzC,YAAM,IAAI;AAAA,QACR,kBAAkB,aACd,mDACA;AAAA,MAAA;AAAA,IAER;AACA,UAAM,IAAI,MAAM;AAAA,EAClB;AAEA,MAAI,SAAiC;AAAA,IACnC,IAAI,GAAG,OAAO,EAAE,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,SAAS,CAAC;AAAA,IACV,gBAAgB;AAAA,MACd,MAAM,CAAC,IAAI;AAAA,MACX,MAAM;;AACG,eAAA;AAAA,UACL;AAAA,UACA,IAAGA,MAAA,OAAO,YAAP,gBAAAA,IAAgB,QAAQ,CAAK,MAAA,EAAE;QAAgB;AAAA,MAEtD;AAAA,MACA,eAAe,MAAM,SAAS,gBAAgB,uBAAuB;AAAA,IACvE;AAAA,IACA,gBAAgB;AAAA,MACd,MAAM,CAAC,MAAM,oBAAoB;AAAA,MACjC,CAAgB,iBAAA;;AACV,aAAAA,MAAA,OAAO,YAAP,gBAAAA,IAAgB,QAAQ;AACtB,cAAA,cAAc,OAAO,QAAQ;AAAA,YAAQ,CAAAC,YACvCA,QAAO,eAAe;AAAA,UAAA;AAGxB,iBAAO,aAAa,WAAW;AAAA,QACjC;AAEA,eAAO,CAAC,MAA+B;AAAA,MACzC;AAAA,MACA,eAAe,MAAM,SAAS,gBAAgB,uBAAuB;AAAA,IACvE;AAAA,EAAA;AAGS,aAAA,WAAW,MAAM,WAAW;AAC7B,kBAAA,kBAAA,iCAAgB,QAAiC;AAAA,EAC3D;AAGO,SAAA;AACT;"}
|