@tanstack/table-core 8.5.20 → 8.5.22

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.
Files changed (49) hide show
  1. package/build/cjs/columnHelper.js.map +1 -1
  2. package/build/cjs/core/cell.js.map +1 -1
  3. package/build/cjs/core/column.js.map +1 -1
  4. package/build/cjs/core/headers.js.map +1 -1
  5. package/build/cjs/core/row.js.map +1 -1
  6. package/build/cjs/core/table.js.map +1 -1
  7. package/build/cjs/features/ColumnSizing.js.map +1 -1
  8. package/build/cjs/features/Expanding.js.map +1 -1
  9. package/build/cjs/features/Filters.js.map +1 -1
  10. package/build/cjs/features/Grouping.js.map +1 -1
  11. package/build/cjs/features/Ordering.js.map +1 -1
  12. package/build/cjs/features/Pagination.js.map +1 -1
  13. package/build/cjs/features/Pinning.js.map +1 -1
  14. package/build/cjs/features/RowSelection.js.map +1 -1
  15. package/build/cjs/features/Sorting.js.map +1 -1
  16. package/build/cjs/features/Visibility.js.map +1 -1
  17. package/build/cjs/utils/getGroupedRowModel.js +1 -1
  18. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  19. package/build/cjs/utils.js +4 -0
  20. package/build/cjs/utils.js.map +1 -1
  21. package/build/esm/index.js +5 -1
  22. package/build/esm/index.js.map +1 -1
  23. package/build/stats-html.html +1 -1
  24. package/build/stats-react.json +314 -314
  25. package/build/types/index.d.ts +199 -253
  26. package/build/umd/index.development.js +5 -1
  27. package/build/umd/index.development.js.map +1 -1
  28. package/build/umd/index.production.js +1 -1
  29. package/build/umd/index.production.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/columnHelper.ts +20 -27
  32. package/src/core/cell.ts +3 -3
  33. package/src/core/column.ts +5 -2
  34. package/src/core/headers.ts +5 -5
  35. package/src/core/row.ts +1 -1
  36. package/src/core/table.ts +7 -6
  37. package/src/features/ColumnSizing.ts +8 -8
  38. package/src/features/Expanding.ts +4 -4
  39. package/src/features/Filters.ts +11 -17
  40. package/src/features/Grouping.ts +10 -16
  41. package/src/features/Ordering.ts +5 -5
  42. package/src/features/Pagination.ts +6 -6
  43. package/src/features/Pinning.ts +8 -8
  44. package/src/features/RowSelection.ts +4 -4
  45. package/src/features/Sorting.ts +9 -15
  46. package/src/features/Visibility.ts +7 -7
  47. package/src/types.ts +110 -133
  48. package/src/utils/getGroupedRowModel.ts +1 -1
  49. package/src/utils.ts +46 -59
@@ -1 +1 @@
1
- {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport interface ColumnSort {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport interface SortingTableState {\n sorting: SortingState\n}\n\nexport interface SortingFn<TData extends RowData> {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport interface SortingColumnDef<TData extends RowData> {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport interface SortingColumn<TData extends RowData> {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\ninterface SortingOptionsBase {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\ntype ResolvedSortingFns = keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n }\n\nexport interface SortingOptions<TData extends RowData>\n extends SortingOptionsBase,\n ResolvedSortingFns {}\n\nexport interface SortingInstance<TData extends RowData> {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
1
+ {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n Table,\n Row,\n Updater,\n RowData,\n SortingFns,\n} from '../types'\n\nimport { isFunction, makeStateUpdater } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFn<TData extends RowData> = {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | keyof SortingFns\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport type SortingColumnDef<TData extends RowData> = {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TData extends RowData> = {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TData extends RowData> = {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n} & (keyof SortingFns extends never\n ? {\n sortingFns?: Record<string, SortingFn<any>>\n }\n : {\n sortingFns: Record<keyof SortingFns, SortingFn<any>>\n })\n\nexport type SortingInstance<TData extends RowData> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : table.options.sortingFns?.[column.columnDef.sortingFn as string] ??\n sortingFns[column.columnDef.sortingFn as BuiltInSortingFn]\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","options","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport interface VisibilityTableState {\n columnVisibility: VisibilityState\n}\n\nexport interface VisibilityOptions {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport interface VisibilityDefaultOptions {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport interface VisibilityInstance<TData extends RowData> {\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n resetColumnVisibility: (defaultState?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n}\n\nexport interface VisibilityColumnDef {\n enableHiding?: boolean\n}\n\nexport interface VisibilityRow<TData extends RowData> {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport interface VisibilityColumn {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityHandler: () => (event: unknown) => void\n}\n\n//\n\nexport const Visibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return table.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n },\n getToggleVisibilityHandler: () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): VisibilityRow<TData> => {\n return {\n _getAllVisibleCells: memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n getVisibleCells: memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityInstance<TData> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n table.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","table","onColumnVisibilityChange","makeStateUpdater","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","cells","filter","cell","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createTable","makeVisibleColumnsMethod","getColumns","d","map","join","columns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getVisibleLeafColumns","getAllLeafColumns","getLeftVisibleLeafColumns","getLeftLeafColumns","getRightVisibleLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","updater","resetColumnVisibility","defaultState","initialState","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler"],"mappings":"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"}
1
+ {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n Cell,\n Column,\n OnChangeFn,\n Table,\n Updater,\n Row,\n RowData,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityInstance<TData extends RowData> = {\n getVisibleFlatColumns: () => Column<TData, unknown>[]\n getVisibleLeafColumns: () => Column<TData, unknown>[]\n getLeftVisibleLeafColumns: () => Column<TData, unknown>[]\n getRightVisibleLeafColumns: () => Column<TData, unknown>[]\n getCenterVisibleLeafColumns: () => Column<TData, unknown>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n resetColumnVisibility: (defaultState?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityHandler: () => (event: unknown) => void\n}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n}\n\nexport type VisibilityRow<TData extends RowData> = {\n _getAllVisibleCells: () => Cell<TData, unknown>[]\n getVisibleCells: () => Cell<TData, unknown>[]\n}\n\nexport type VisibilityColumn = {\n getCanHide: () => boolean\n getIsVisible: () => boolean\n toggleVisibility: (value?: boolean) => void\n getToggleVisibilityHandler: () => (event: unknown) => void\n}\n\n//\n\nexport const Visibility: TableFeature = {\n getInitialState: (state): VisibilityTableState => {\n return {\n columnVisibility: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return table.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (table.options.enableHiding ?? true)\n )\n },\n getToggleVisibilityHandler: () => {\n return (e: unknown) => {\n column.toggleVisibility?.(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): VisibilityRow<TData> => {\n return {\n _getAllVisibleCells: memo(\n () => [row.getAllCells(), table.getState().columnVisibility],\n cells => {\n return cells.filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n getVisibleCells: memo(\n () => [\n row.getLeftVisibleCells(),\n row.getCenterVisibleCells(),\n row.getRightVisibleCells(),\n ],\n (left, center, right) => [...left, ...center, ...right],\n {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => table.options.debugAll ?? table.options.debugRows,\n }\n ),\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): VisibilityInstance<TData> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TData, unknown>[]\n ): (() => Column<TData, unknown>[]) => {\n return memo(\n () => [\n getColumns(),\n getColumns()\n .filter(d => d.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n columns => {\n return columns.filter(d => d.getIsVisible?.())\n },\n {\n key,\n debug: () => table.options.debugAll ?? table.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => table.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => table.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => table.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => table.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => table.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n table.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n table.setColumnVisibility(\n defaultState ? {} : table.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !table.getIsAllColumnsVisible()\n\n table.setColumnVisibility(\n table.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !table.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n table.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n table.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","table","onColumnVisibilityChange","makeStateUpdater","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","cells","filter","cell","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createTable","makeVisibleColumnsMethod","getColumns","d","map","join","columns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getVisibleLeafColumns","getAllLeafColumns","getLeftVisibleLeafColumns","getLeftLeafColumns","getRightVisibleLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","updater","resetColumnVisibility","defaultState","initialState","toggleAllColumnsVisible","getIsAllColumnsVisible","reduce","obj","some","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler"],"mappings":"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"}
@@ -147,7 +147,7 @@ function groupBy(rows, columnId) {
147
147
  if (!previous) {
148
148
  map.set(resKey, [row]);
149
149
  } else {
150
- map.set(resKey, [...previous, row]);
150
+ previous.push(row);
151
151
  }
152
152
  return map;
153
153
  }, groupMap);
@@ -1 +1 @@
1
- {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n map.set(resKey, [...previous, row])\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","map","row","push","id","subRows","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","index","groupingValue","groupedRows","leafRows","flattenBy","createRow","original","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","undefined","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
1
+ {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","map","row","push","id","subRows","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","index","groupingValue","groupedRows","leafRows","flattenBy","createRow","original","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","undefined","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
@@ -12,6 +12,10 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
+ // Is this type a tuple?
16
+
17
+ // If this type is a tuple, what indices are allowed?
18
+
15
19
  ///
16
20
 
17
21
  function functionalUpdate(updater, input) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { TableState, Updater } from './types'\n\nexport type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<T>\nexport type RequiredKeys<T, K extends keyof T> = T & { [P in K]-?: T[P] }\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 IndexableData = Record<string | number, any>\nexport type DeepValue<T, TProp> = T extends IndexableData\n ? TProp extends `${infer TBranch}.${infer TDeepProp}`\n ? DeepValue<T[TBranch], TDeepProp>\n : TProp extends keyof T\n ? T[TProp]\n : never\n : never\n\ntype Join<K, P> = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never\n\ntype Prev = [\n never,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n ...0[]\n]\n\ntype ExplicitLeaves =\n | Date\n | Number\n | BigInt\n | String\n | Set<unknown>\n | Map<unknown, unknown>\n | WeakSet<object>\n | WeakMap<object, unknown>\n\nexport type DeepKeys<T, D extends number = 10> = [D] extends [never]\n ? never\n : T extends ExplicitLeaves\n ? never\n : T extends object\n ? {\n [K in keyof T]-?: K extends string | number\n ? `${K}` | Join<K, DeepKeys<T[K], Prev[D]>>\n : never\n }[keyof T]\n : ''\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 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[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\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"],"names":["functionalUpdate","updater","input","noop","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { 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> = unknown extends T\n ? keyof T\n : object extends T\n ? string\n : T extends readonly any[] & IsTuple<T>\n ? AllowedIndexes<T> | DeepKeysPrefix<T, AllowedIndexes<T>>\n : T extends any[]\n ? never & 'Dynamic length array indexing is not supported'\n : T extends Date\n ? never\n : T extends object\n ? (keyof T & string) | DeepKeysPrefix<T, keyof T>\n : never\n\ntype DeepKeysPrefix<T, TPrefix> = TPrefix extends keyof T & (number | string)\n ? `${TPrefix}.${DeepKeys<T[TPrefix]> & string}`\n : never\n\nexport type DeepValue<T, TProp> = 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 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[], TResult>(\n getDeps: () => [...TDeps],\n fn: (...args: NoInfer<[...TDeps]>) => TResult,\n opts: {\n key: any\n debug?: () => any\n onChange?: (result: TResult) => void\n }\n): () => TResult {\n let deps: any[] = []\n let result: TResult | undefined\n\n return () => {\n let depTime: number\n if (opts.key && opts.debug) depTime = Date.now()\n\n const newDeps = getDeps()\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"],"names":["functionalUpdate","updater","input","noop","makeStateUpdater","key","instance","setState","old","isFunction","d","Function","flattenBy","arr","getChildren","flat","recurse","subArr","forEach","item","push","children","length","memo","getDeps","fn","opts","deps","result","depTime","debug","Date","now","newDeps","depsChanged","some","dep","index","resultTime","onChange","depEndTime","Math","round","resultEndTime","resultFpsPercentage","pad","str","num","String","console","info","max","min"],"mappings":"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"}
@@ -8,6 +8,10 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
+ // Is this type a tuple?
12
+
13
+ // If this type is a tuple, what indices are allowed?
14
+
11
15
  ///
12
16
 
13
17
  function functionalUpdate(updater, input) {
@@ -3277,7 +3281,7 @@ function groupBy(rows, columnId) {
3277
3281
  if (!previous) {
3278
3282
  map.set(resKey, [row]);
3279
3283
  } else {
3280
- map.set(resKey, [...previous, row]);
3284
+ previous.push(row);
3281
3285
  }
3282
3286
  return map;
3283
3287
  }, groupMap);