@tanstack/table-core 8.0.0-alpha.84 → 8.0.0-alpha.87

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 (46) hide show
  1. package/build/cjs/aggregationFns.js +50 -51
  2. package/build/cjs/aggregationFns.js.map +1 -1
  3. package/build/cjs/features/Expanding.js +0 -1
  4. package/build/cjs/features/Expanding.js.map +1 -1
  5. package/build/cjs/features/Filters.js +1 -2
  6. package/build/cjs/features/Filters.js.map +1 -1
  7. package/build/cjs/features/Grouping.js +5 -5
  8. package/build/cjs/features/Grouping.js.map +1 -1
  9. package/build/cjs/features/Sorting.js.map +1 -1
  10. package/build/cjs/features/Visibility.js +0 -5
  11. package/build/cjs/features/Visibility.js.map +1 -1
  12. package/build/cjs/index.js +0 -1
  13. package/build/cjs/index.js.map +1 -1
  14. package/build/cjs/sortingFns.js +53 -51
  15. package/build/cjs/sortingFns.js.map +1 -1
  16. package/build/cjs/utils/getExpandedRowModel.js +2 -2
  17. package/build/cjs/utils/getExpandedRowModel.js.map +1 -1
  18. package/build/cjs/utils/getGroupedRowModel.js +5 -13
  19. package/build/cjs/utils/getGroupedRowModel.js.map +1 -1
  20. package/build/cjs/utils/getPaginationRowModel.js +1 -1
  21. package/build/cjs/utils/getPaginationRowModel.js.map +1 -1
  22. package/build/esm/index.js +118 -131
  23. package/build/esm/index.js.map +1 -1
  24. package/build/stats-html.html +1 -1
  25. package/build/stats-react.json +324 -324
  26. package/build/types/aggregationFns.d.ts +10 -19
  27. package/build/types/features/Expanding.d.ts +0 -1
  28. package/build/types/features/Filters.d.ts +0 -2
  29. package/build/types/features/Grouping.d.ts +6 -8
  30. package/build/types/features/Sorting.d.ts +3 -3
  31. package/build/types/features/Visibility.d.ts +5 -6
  32. package/build/types/sortingFns.d.ts +7 -14
  33. package/build/umd/index.development.js +117 -131
  34. package/build/umd/index.development.js.map +1 -1
  35. package/build/umd/index.production.js +1 -1
  36. package/build/umd/index.production.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/aggregationFns.ts +44 -40
  39. package/src/features/Expanding.ts +0 -2
  40. package/src/features/Filters.ts +0 -5
  41. package/src/features/Grouping.ts +15 -18
  42. package/src/features/Sorting.ts +4 -4
  43. package/src/features/Visibility.ts +7 -16
  44. package/src/sortingFns.ts +59 -81
  45. package/src/utils/getExpandedRowModel.ts +1 -5
  46. package/src/utils/getGroupedRowModel.ts +8 -17
@@ -1 +1 @@
1
- {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/instance'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } 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 SortingFn<TGenerics extends TableGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingFns<TGenerics extends TableGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInSortingFn\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends TableGenerics> = {\n sortingFn?: SortingFnOption<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends TableGenerics> = {\n getAutoSortingFn: () => SortingFn<TGenerics>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TGenerics>\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<TGenerics extends TableGenerics> = {\n manualSorting?: boolean\n sortingFns?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TGenerics extends TableGenerics> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n _getSortedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <\n TGenerics extends TableGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = instance.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 = instance.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 const userSortingFn = instance.options.sortingFns\n\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 : (userSortingFn as Record<string, any>)?.[\n column.columnDef.sortingFn as string\n ] ??\n (sortingFns[\n column.columnDef.sortingFn as BuiltInSortingFn\n ] as SortingFn<TGenerics>)\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.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 const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (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 const sortDescFirst =\n column.columnDef.sortDescFirst ??\n instance.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== column.id)\n }\n\n return newSorting\n })\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (instance.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n instance.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 ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n setSorting: updater => instance.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n instance.setSorting(\n defaultState ? [] : instance.initialState?.sorting ?? []\n )\n },\n getPreSortedRowModel: () => instance.getFilteredRowModel(),\n getSortedRowModel: () => {\n if (\n !instance._getSortedRowModel &&\n instance.options.getSortedRowModel\n ) {\n instance._getSortedRowModel =\n instance.options.getSortedRowModel(instance)\n }\n\n if (instance.options.manualSorting || !instance._getSortedRowModel) {\n return instance.getPreSortedRowModel()\n }\n\n return instance._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","instance","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","userSortingFn","options","Error","isFunction","columnDef","toggleSorting","desc","multi","setSorting","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","getCanMultiSort","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getCanSort","enableSorting","accessorFn","enableMultiSort","getIsSorted","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createInstance","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","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/instance'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } 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<TGenerics extends TableGenerics> = {\n (rowA: Row<TGenerics>, rowB: Row<TGenerics>, columnId: string): number\n}\n\nexport type CustomSortingFns<TGenerics extends TableGenerics> = Record<\n string,\n SortingFn<TGenerics>\n>\n\nexport type SortingFnOption<TGenerics extends TableGenerics> =\n | 'auto'\n | BuiltInSortingFn\n | keyof TGenerics['SortingFns']\n | SortingFn<TGenerics>\n\nexport type SortingColumnDef<TGenerics extends TableGenerics> = {\n sortingFn?: SortingFnOption<Overwrite<TGenerics, { Value: any }>>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TGenerics extends TableGenerics> = {\n getAutoSortingFn: () => SortingFn<TGenerics>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TGenerics>\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<TGenerics extends TableGenerics> = {\n manualSorting?: boolean\n sortingFns?: TGenerics['SortingFns']\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (\n instance: TableInstance<TGenerics>\n ) => () => RowModel<TGenerics>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TGenerics extends TableGenerics> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TGenerics>\n getSortedRowModel: () => RowModel<TGenerics>\n _getSortedRowModel?: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <\n TGenerics extends TableGenerics\n >(): SortingColumnDef<TGenerics> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingOptions<TGenerics> => {\n return {\n onSortingChange: makeStateUpdater('sorting', instance),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): SortingColumn<TGenerics> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = instance.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 = instance.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 const userSortingFn = instance.options.sortingFns\n\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 : (userSortingFn as Record<string, any>)?.[\n column.columnDef.sortingFn as string\n ] ??\n (sortingFns[\n column.columnDef.sortingFn as BuiltInSortingFn\n ] as SortingFn<TGenerics>)\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // instance.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n instance.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 const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction\n\n if (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 const sortDescFirst =\n column.columnDef.sortDescFirst ??\n instance.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (instance.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? instance.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n (existingSorting?.desc // Finally, detect if it should indeed be removed\n ? !sortDescFirst\n : sortDescFirst)\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: hasDescDefined ? desc! : !!sortDescFirst,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (instance.options.maxMultiSortColCount ??\n Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : !existingSorting?.desc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== column.id)\n }\n\n return newSorting\n })\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (instance.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n instance.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = instance\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n instance.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n instance.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 ? instance.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): SortingInstance<TGenerics> => {\n let registered = false\n\n return {\n setSorting: updater => instance.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n instance.setSorting(\n defaultState ? [] : instance.initialState?.sorting ?? []\n )\n },\n getPreSortedRowModel: () => instance.getFilteredRowModel(),\n getSortedRowModel: () => {\n if (\n !instance._getSortedRowModel &&\n instance.options.getSortedRowModel\n ) {\n instance._getSortedRowModel =\n instance.options.getSortedRowModel(instance)\n }\n\n if (instance.options.manualSorting || !instance._getSortedRowModel) {\n return instance.getPreSortedRowModel()\n }\n\n return instance._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","instance","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","userSortingFn","options","Error","isFunction","columnDef","toggleSorting","desc","multi","setSorting","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","getCanMultiSort","sortDescFirst","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getCanSort","enableSorting","accessorFn","enableMultiSort","getIsSorted","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createInstance","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
@@ -27,11 +27,6 @@ const Visibility = {
27
27
  onColumnVisibilityChange: utils.makeStateUpdater('columnVisibility', instance)
28
28
  };
29
29
  },
30
- getDefaultColumnDef: () => {
31
- return {
32
- defaultIsVisible: true
33
- };
34
- },
35
30
  createColumn: (column, instance) => {
36
31
  return {
37
32
  toggleVisibility: value => {
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","sources":["../../../src/features/Visibility.ts"],"sourcesContent":["import { TableFeature } from '../core/instance'\nimport {\n Cell,\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Updater,\n Row,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type VisibilityOptions = {\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>\n enableHiding?: boolean\n}\n\nexport type VisibilityDefaultOptions = {\n onColumnVisibilityChange: OnChangeFn<VisibilityState>\n}\n\nexport type VisibilityState = Record<string, boolean>\n\nexport type VisibilityTableState = {\n columnVisibility: VisibilityState\n}\n\nexport type VisibilityInstance<TGenerics extends TableGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n getLeftVisibleLeafColumns: () => Column<TGenerics>[]\n getRightVisibleLeafColumns: () => Column<TGenerics>[]\n getCenterVisibleLeafColumns: () => Column<TGenerics>[]\n setColumnVisibility: (updater: Updater<VisibilityState>) => void\n resetColumnVisibility: (defaultState?: boolean) => void\n toggleAllColumnsVisible: (value?: boolean) => void\n getIsAllColumnsVisible: () => boolean\n getIsSomeColumnsVisible: () => boolean\n getToggleAllColumnsVisibilityHandler: () =>\n | undefined\n | ((event: unknown) => void)\n}\n\nexport type VisibilityColumnDef = {\n enableHiding?: boolean\n defaultIsVisible?: boolean\n}\n\nexport type VisibilityRow<TGenerics extends TableGenerics> = {\n _getAllVisibleCells: () => Cell<TGenerics>[]\n getVisibleCells: () => Cell<TGenerics>[]\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: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n getDefaultColumnDef: () => {\n return {\n defaultIsVisible: true,\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n instance.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return instance.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (instance.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: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityRow<TGenerics> => {\n return {\n _getAllVisibleCells: memo(\n () => [\n row\n .getAllCells()\n .filter(cell => cell.column.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n _ => {\n return row.getAllCells().filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => instance.options.debugAll ?? instance.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: () => instance.options.debugAll ?? instance.options.debugRows,\n }\n ),\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TGenerics>[]\n ): (() => Column<TGenerics>[]) => {\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: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => instance.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => instance.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => instance.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => instance.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => instance.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n instance.setColumnVisibility(\n defaultState ? {} : instance.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n instance.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","getDefaultColumnDef","defaultIsVisible","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","filter","cell","map","d","join","_","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createInstance","makeVisibleColumnsMethod","getColumns","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/instance'\nimport {\n Cell,\n Column,\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Updater,\n Row,\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<TGenerics extends TableGenerics> = {\n getVisibleFlatColumns: () => Column<TGenerics>[]\n getVisibleLeafColumns: () => Column<TGenerics>[]\n getLeftVisibleLeafColumns: () => Column<TGenerics>[]\n getRightVisibleLeafColumns: () => Column<TGenerics>[]\n getCenterVisibleLeafColumns: () => Column<TGenerics>[]\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<TGenerics extends TableGenerics> = {\n _getAllVisibleCells: () => Cell<TGenerics>[]\n getVisibleCells: () => Cell<TGenerics>[]\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: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityDefaultOptions => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', instance),\n }\n },\n\n createColumn: <TGenerics extends TableGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityColumn => {\n return {\n toggleVisibility: value => {\n if (column.getCanHide()) {\n instance.setColumnVisibility(old => ({\n ...old,\n [column.id]: value ?? !column.getIsVisible(),\n }))\n }\n },\n getIsVisible: () => {\n return instance.getState().columnVisibility?.[column.id] ?? true\n },\n\n getCanHide: () => {\n return (\n (column.columnDef.enableHiding ?? true) &&\n (instance.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: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): VisibilityRow<TGenerics> => {\n return {\n _getAllVisibleCells: memo(\n () => [\n row\n .getAllCells()\n .filter(cell => cell.column.getIsVisible())\n .map(d => d.id)\n .join('_'),\n ],\n _ => {\n return row.getAllCells().filter(cell => cell.column.getIsVisible())\n },\n {\n key:\n process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => instance.options.debugAll ?? instance.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: () => instance.options.debugAll ?? instance.options.debugRows,\n }\n ),\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): VisibilityInstance<TGenerics> => {\n const makeVisibleColumnsMethod = (\n key: string,\n getColumns: () => Column<TGenerics>[]\n ): (() => Column<TGenerics>[]) => {\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: () =>\n instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n }\n\n return {\n getVisibleFlatColumns: makeVisibleColumnsMethod(\n 'getVisibleFlatColumns',\n () => instance.getAllFlatColumns()\n ),\n getVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getVisibleLeafColumns',\n () => instance.getAllLeafColumns()\n ),\n getLeftVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getLeftVisibleLeafColumns',\n () => instance.getLeftLeafColumns()\n ),\n getRightVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getRightVisibleLeafColumns',\n () => instance.getRightLeafColumns()\n ),\n getCenterVisibleLeafColumns: makeVisibleColumnsMethod(\n 'getCenterVisibleLeafColumns',\n () => instance.getCenterLeafColumns()\n ),\n\n setColumnVisibility: updater =>\n instance.options.onColumnVisibilityChange?.(updater),\n\n resetColumnVisibility: defaultState => {\n instance.setColumnVisibility(\n defaultState ? {} : instance.initialState.columnVisibility ?? {}\n )\n },\n\n toggleAllColumnsVisible: value => {\n value = value ?? !instance.getIsAllColumnsVisible()\n\n instance.setColumnVisibility(\n instance.getAllLeafColumns().reduce(\n (obj, column) => ({\n ...obj,\n [column.id]: !value ? !column.getCanHide?.() : value,\n }),\n {}\n )\n )\n },\n\n getIsAllColumnsVisible: () =>\n !instance.getAllLeafColumns().some(column => !column.getIsVisible?.()),\n\n getIsSomeColumnsVisible: () =>\n instance.getAllLeafColumns().some(column => column.getIsVisible?.()),\n\n getToggleAllColumnsVisibilityHandler: () => {\n return (e: unknown) => {\n instance.toggleAllColumnsVisible(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n"],"names":["Visibility","getInitialState","state","columnVisibility","getDefaultOptions","instance","onColumnVisibilityChange","makeStateUpdater","createColumn","column","toggleVisibility","value","getCanHide","setColumnVisibility","old","id","getIsVisible","getState","columnDef","enableHiding","options","getToggleVisibilityHandler","e","target","checked","createRow","row","_getAllVisibleCells","memo","getAllCells","filter","cell","map","d","join","_","key","process","env","NODE_ENV","debug","debugAll","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","left","center","right","createInstance","makeVisibleColumnsMethod","getColumns","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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"}
@@ -69,7 +69,6 @@ exports.filterFns = filterFns.filterFns;
69
69
  exports.reSplitAlphaNumeric = sortingFns.reSplitAlphaNumeric;
70
70
  exports.sortingFns = sortingFns.sortingFns;
71
71
  exports.aggregationFns = aggregationFns.aggregationFns;
72
- exports.mean = aggregationFns.mean;
73
72
  exports.flattenBy = utils.flattenBy;
74
73
  exports.functionalUpdate = utils.functionalUpdate;
75
74
  exports.isFunction = utils.isFunction;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -13,21 +13,54 @@
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
15
  const reSplitAlphaNumeric = /([0-9]+)/gm;
16
- const sortingFns = {
17
- alphanumeric,
18
- alphanumericCaseSensitive,
19
- text,
20
- textCaseSensitive,
21
- datetime,
22
- basic
23
- };
24
16
 
25
- function alphanumeric(rowA, rowB, columnId) {
17
+ const alphanumeric = (rowA, rowB, columnId) => {
26
18
  return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
27
- }
19
+ };
28
20
 
29
- function alphanumericCaseSensitive(rowA, rowB, columnId) {
21
+ const alphanumericCaseSensitive = (rowA, rowB, columnId) => {
30
22
  return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
23
+ }; // The text filter is more basic (less numeric support)
24
+ // but is much faster
25
+
26
+
27
+ const text = (rowA, rowB, columnId) => {
28
+ return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
29
+ }; // The text filter is more basic (less numeric support)
30
+ // but is much faster
31
+
32
+
33
+ const textCaseSensitive = (rowA, rowB, columnId) => {
34
+ return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
35
+ };
36
+
37
+ const datetime = (rowA, rowB, columnId) => {
38
+ return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
39
+ };
40
+
41
+ const basic = (rowA, rowB, columnId) => {
42
+ return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
43
+ }; // Utils
44
+
45
+
46
+ function compareBasic(a, b) {
47
+ return a === b ? 0 : a > b ? 1 : -1;
48
+ }
49
+
50
+ function toString(a) {
51
+ if (typeof a === 'number') {
52
+ if (isNaN(a) || a === Infinity || a === -Infinity) {
53
+ return '';
54
+ }
55
+
56
+ return String(a);
57
+ }
58
+
59
+ if (typeof a === 'string') {
60
+ return a;
61
+ }
62
+
63
+ return '';
31
64
  } // Mixed sorting is slow, but very inclusive of many edge cases.
32
65
  // It handles numbers, mixed alphanumeric combinations, and even
33
66
  // null, undefined, and Infinity
@@ -74,48 +107,17 @@ function compareAlphanumeric(aStr, bStr) {
74
107
  }
75
108
 
76
109
  return a.length - b.length;
77
- } // The text filter is more basic (less numeric support)
78
- // but is much faster
79
-
80
-
81
- function text(rowA, rowB, columnId) {
82
- return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
83
- } // The text filter is more basic (less numeric support)
84
- // but is much faster
85
-
86
-
87
- function textCaseSensitive(rowA, rowB, columnId) {
88
- return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
89
- }
90
-
91
- function datetime(rowA, rowB, columnId) {
92
- return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
93
- }
94
-
95
- function basic(rowA, rowB, columnId) {
96
- return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
97
- } // Utils
98
-
99
-
100
- function compareBasic(a, b) {
101
- return a === b ? 0 : a > b ? 1 : -1;
102
- }
103
-
104
- function toString(a) {
105
- if (typeof a === 'number') {
106
- if (isNaN(a) || a === Infinity || a === -Infinity) {
107
- return '';
108
- }
110
+ } // Exports
109
111
 
110
- return String(a);
111
- }
112
-
113
- if (typeof a === 'string') {
114
- return a;
115
- }
116
112
 
117
- return '';
118
- }
113
+ const sortingFns = {
114
+ alphanumeric,
115
+ alphanumericCaseSensitive,
116
+ text,
117
+ textCaseSensitive,
118
+ datetime,
119
+ basic
120
+ };
119
121
 
120
122
  exports.reSplitAlphaNumeric = reSplitAlphaNumeric;
121
123
  exports.sortingFns = sortingFns;
@@ -1 +1 @@
1
- {"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { TableGenerics, Row } from './types'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n\nfunction alphanumeric<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nfunction alphanumericCaseSensitive<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nfunction text<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nfunction textCaseSensitive<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nfunction datetime<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(\n (rowA.getValue(columnId) as Date).getTime(),\n (rowB.getValue(columnId) as Date).getTime()\n )\n}\n\nfunction basic<TGenerics extends TableGenerics>(\n rowA: Row<TGenerics>,\n rowB: Row<TGenerics>,\n columnId: string\n) {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n"],"names":["reSplitAlphaNumeric","sortingFns","alphanumeric","alphanumericCaseSensitive","text","textCaseSensitive","datetime","basic","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","aStr","bStr","a","split","filter","Boolean","b","length","aa","shift","bb","an","parseInt","bn","combo","sort","isNaN","compareBasic","getTime","Infinity","String"],"mappings":"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"}
1
+ {"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n (rowA.getValue(columnId) as Date).getTime(),\n (rowB.getValue(columnId) as Date).getTime()\n )\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","getTime","basic","a","b","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":"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"}
@@ -21,7 +21,7 @@ function getExpandedRowModel() {
21
21
  return rowModel;
22
22
  }
23
23
 
24
- return expandRows(rowModel, instance);
24
+ return expandRows(rowModel);
25
25
  }, {
26
26
  key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',
27
27
  debug: () => {
@@ -39,7 +39,7 @@ function expandRows(rowModel, instance) {
39
39
 
40
40
  expandedRows.push(row);
41
41
 
42
- if (instance.options.expandSubRows && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
42
+ if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {
43
43
  row.subRows.forEach(handleRow);
44
44
  }
45
45
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getExpandedRowModel.js","sources":["../../../src/utils/getExpandedRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getExpandedRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().expanded,\n instance.getPreExpandedRowModel(),\n instance.options.paginateExpandedRows,\n ],\n (expanded, rowModel, paginateExpandedRows) => {\n if (\n !rowModel.rows.length ||\n // Do not expand if rows are not included in pagination\n !paginateExpandedRows ||\n (expanded !== true && !Object.keys(expanded ?? {}).length)\n ) {\n return rowModel\n }\n\n return expandRows(rowModel, instance)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n\nexport function expandRows<TGenerics extends TableGenerics>(\n rowModel: RowModel<TGenerics>,\n instance: TableInstance<TGenerics>\n) {\n const expandedRows: Row<TGenerics>[] = []\n\n const handleRow = (row: Row<TGenerics>) => {\n expandedRows.push(row)\n\n if (\n instance.options.expandSubRows &&\n row.subRows?.length &&\n row.getIsExpanded()\n ) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rowModel.rows.forEach(handleRow)\n\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById,\n }\n}\n"],"names":["getExpandedRowModel","instance","memo","getState","expanded","getPreExpandedRowModel","options","paginateExpandedRows","rowModel","rows","length","Object","keys","expandRows","key","process","env","NODE_ENV","debug","debugAll","debugTable","expandedRows","handleRow","row","push","expandSubRows","subRows","getIsExpanded","forEach","flatRows","rowsById"],"mappings":";;;;;;;;;;;;;;;;AAGO,SAASA,mBAAT,GAEwB;AAC7B,EAAA,OAAOC,QAAQ,IACbC,UAAI,CACF,MAAM,CACJD,QAAQ,CAACE,QAAT,EAAA,CAAoBC,QADhB,EAEJH,QAAQ,CAACI,sBAAT,EAFI,EAGJJ,QAAQ,CAACK,OAAT,CAAiBC,oBAHb,CADJ,EAMF,CAACH,QAAD,EAAWI,QAAX,EAAqBD,oBAArB,KAA8C;AAC5C,IAAA,IACE,CAACC,QAAQ,CAACC,IAAT,CAAcC,MAAf;AAEA,IAAA,CAACH,oBAFD,IAGCH,QAAQ,KAAK,IAAb,IAAqB,CAACO,MAAM,CAACC,IAAP,CAAYR,QAAZ,IAAYA,IAAAA,GAAAA,QAAZ,GAAwB,EAAxB,CAAA,CAA4BM,MAJrD,EAKE;AACA,MAAA,OAAOF,QAAP,CAAA;AACD,KAAA;;AAED,IAAA,OAAOK,UAAU,CAACL,QAAD,EAAWP,QAAX,CAAjB,CAAA;AACD,GAjBC,EAkBF;AACEa,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,qBADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAMjB,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACK,OAAT,CAAiBa,QAAvB,oCAAmClB,QAAQ,CAACK,OAAT,CAAiBc,UAApD,CAAA;AAAA,KAAA;AAFT,GAlBE,CADN,CAAA;AAwBD,CAAA;AAEM,SAASP,UAAT,CACLL,QADK,EAELP,QAFK,EAGL;AACA,EAAMoB,MAAAA,YAA8B,GAAG,EAAvC,CAAA;;AAEA,EAAMC,MAAAA,SAAS,GAAIC,GAAD,IAAyB;AAAA,IAAA,IAAA,YAAA,CAAA;;AACzCF,IAAAA,YAAY,CAACG,IAAb,CAAkBD,GAAlB,CAAA,CAAA;;AAEA,IAAA,IACEtB,QAAQ,CAACK,OAAT,CAAiBmB,aAAjB,oBACAF,GAAG,CAACG,OADJ,KAAA,IAAA,IACA,aAAahB,MADb,IAEAa,GAAG,CAACI,aAAJ,EAHF,EAIE;AACAJ,MAAAA,GAAG,CAACG,OAAJ,CAAYE,OAAZ,CAAoBN,SAApB,CAAA,CAAA;AACD,KAAA;AACF,GAVD,CAAA;;AAYAd,EAAAA,QAAQ,CAACC,IAAT,CAAcmB,OAAd,CAAsBN,SAAtB,CAAA,CAAA;AAEA,EAAO,OAAA;AACLb,IAAAA,IAAI,EAAEY,YADD;AAELQ,IAAAA,QAAQ,EAAErB,QAAQ,CAACqB,QAFd;AAGLC,IAAAA,QAAQ,EAAEtB,QAAQ,CAACsB,QAAAA;AAHd,GAAP,CAAA;AAKD;;;;;"}
1
+ {"version":3,"file":"getExpandedRowModel.js","sources":["../../../src/utils/getExpandedRowModel.ts"],"sourcesContent":["import { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\n\nexport function getExpandedRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().expanded,\n instance.getPreExpandedRowModel(),\n instance.options.paginateExpandedRows,\n ],\n (expanded, rowModel, paginateExpandedRows) => {\n if (\n !rowModel.rows.length ||\n // Do not expand if rows are not included in pagination\n !paginateExpandedRows ||\n (expanded !== true && !Object.keys(expanded ?? {}).length)\n ) {\n return rowModel\n }\n\n return expandRows(rowModel, instance)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n\nexport function expandRows<TGenerics extends TableGenerics>(\n rowModel: RowModel<TGenerics>,\n instance: TableInstance<TGenerics>\n) {\n const expandedRows: Row<TGenerics>[] = []\n\n const handleRow = (row: Row<TGenerics>) => {\n expandedRows.push(row)\n\n if (row.subRows?.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rowModel.rows.forEach(handleRow)\n\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById,\n }\n}\n"],"names":["getExpandedRowModel","instance","memo","getState","expanded","getPreExpandedRowModel","options","paginateExpandedRows","rowModel","rows","length","Object","keys","expandRows","key","process","env","NODE_ENV","debug","debugAll","debugTable","expandedRows","handleRow","row","push","subRows","getIsExpanded","forEach","flatRows","rowsById"],"mappings":";;;;;;;;;;;;;;;;AAGO,SAASA,mBAAT,GAEwB;AAC7B,EAAA,OAAOC,QAAQ,IACbC,UAAI,CACF,MAAM,CACJD,QAAQ,CAACE,QAAT,EAAA,CAAoBC,QADhB,EAEJH,QAAQ,CAACI,sBAAT,EAFI,EAGJJ,QAAQ,CAACK,OAAT,CAAiBC,oBAHb,CADJ,EAMF,CAACH,QAAD,EAAWI,QAAX,EAAqBD,oBAArB,KAA8C;AAC5C,IAAA,IACE,CAACC,QAAQ,CAACC,IAAT,CAAcC,MAAf;AAEA,IAAA,CAACH,oBAFD,IAGCH,QAAQ,KAAK,IAAb,IAAqB,CAACO,MAAM,CAACC,IAAP,CAAYR,QAAZ,IAAYA,IAAAA,GAAAA,QAAZ,GAAwB,EAAxB,CAAA,CAA4BM,MAJrD,EAKE;AACA,MAAA,OAAOF,QAAP,CAAA;AACD,KAAA;;AAED,IAAA,OAAOK,UAAU,CAACL,QAAD,CAAjB,CAAA;AACD,GAjBC,EAkBF;AACEM,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,qBADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAMjB,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACK,OAAT,CAAiBa,QAAvB,oCAAmClB,QAAQ,CAACK,OAAT,CAAiBc,UAApD,CAAA;AAAA,KAAA;AAFT,GAlBE,CADN,CAAA;AAwBD,CAAA;AAEM,SAASP,UAAT,CACLL,QADK,EAELP,QAFK,EAGL;AACA,EAAMoB,MAAAA,YAA8B,GAAG,EAAvC,CAAA;;AAEA,EAAMC,MAAAA,SAAS,GAAIC,GAAD,IAAyB;AAAA,IAAA,IAAA,YAAA,CAAA;;AACzCF,IAAAA,YAAY,CAACG,IAAb,CAAkBD,GAAlB,CAAA,CAAA;;AAEA,IAAI,IAAA,CAAA,YAAA,GAAAA,GAAG,CAACE,OAAJ,KAAA,IAAA,IAAA,YAAA,CAAaf,MAAb,IAAuBa,GAAG,CAACG,aAAJ,EAA3B,EAAgD;AAC9CH,MAAAA,GAAG,CAACE,OAAJ,CAAYE,OAAZ,CAAoBL,SAApB,CAAA,CAAA;AACD,KAAA;AACF,GAND,CAAA;;AAQAd,EAAAA,QAAQ,CAACC,IAAT,CAAckB,OAAd,CAAsBL,SAAtB,CAAA,CAAA;AAEA,EAAO,OAAA;AACLb,IAAAA,IAAI,EAAEY,YADD;AAELO,IAAAA,QAAQ,EAAEpB,QAAQ,CAACoB,QAFd;AAGLC,IAAAA,QAAQ,EAAErB,QAAQ,CAACqB,QAAAA;AAHd,GAAP,CAAA;AAKD;;;;;"}
@@ -74,25 +74,17 @@ function getGroupedRowModel() {
74
74
  return row$1._valuesCache[columnId];
75
75
  }
76
76
 
77
- if (row$1.groupingValuesCache.hasOwnProperty(columnId)) {
78
- return row$1.groupingValuesCache[columnId];
77
+ if (row$1._groupingValuesCache.hasOwnProperty(columnId)) {
78
+ return row$1._groupingValuesCache[columnId];
79
79
  } // Aggregate the values
80
80
 
81
81
 
82
82
  const column = instance.getColumn(columnId);
83
- const aggregateFn = column.getColumnAggregationFn();
83
+ const aggregateFn = column.getAggregationFn();
84
84
 
85
85
  if (aggregateFn) {
86
- row$1.groupingValuesCache[columnId] = aggregateFn(() => leafRows.map(row => {
87
- let columnValue = row.getValue(columnId);
88
-
89
- if (!depth && column.columnDef.aggregateValue) {
90
- columnValue = column.columnDef.aggregateValue(columnValue);
91
- }
92
-
93
- return columnValue;
94
- }), () => groupedRows.map(row => row.getValue(columnId)));
95
- return row$1.groupingValuesCache[columnId];
86
+ row$1._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);
87
+ return row$1._groupingValuesCache[columnId];
96
88
  } else if (column.aggregationFn) {
97
89
  console.info({
98
90
  column
@@ -1 +1 @@
1
- {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().grouping, instance.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 instance.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TGenerics>[] = []\n const groupedRowsById: Record<string, Row<TGenerics>> = {}\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<TGenerics>[],\n depth = 0,\n parentId: string\n ) => {\n // This is the last level, just return the rows\n if (depth === existingGrouping.length) {\n return rows\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(instance, id, undefined, index, depth)\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 = instance.getColumn(columnId)\n const aggregateFn = column.getColumnAggregationFn()\n\n if (aggregateFn) {\n row.groupingValuesCache[columnId] = aggregateFn(\n () =>\n leafRows.map(row => {\n let columnValue = row.getValue(columnId)\n\n if (!depth && column.columnDef.aggregateValue) {\n columnValue =\n column.columnDef.aggregateValue(columnValue)\n }\n\n return columnValue\n }),\n () => groupedRows.map(row => row.getValue(columnId))\n )\n\n return row.groupingValuesCache[columnId]\n } else if (column.aggregationFn) {\n console.info({ column })\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Table: Invalid column.aggregateType option for column listed above`\n : ''\n )\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: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._queue(() => {\n instance._autoResetExpanded()\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TGenerics extends TableGenerics>(\n rows: Row<TGenerics>[],\n columnId: string\n) {\n const groupMap = new Map<any, Row<TGenerics>[]>()\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","instance","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","map","index","groupingValue","groupedRows","id","subRows","leafRows","flattenBy","row","createRow","undefined","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","groupingValuesCache","column","aggregateFn","getColumnAggregationFn","columnValue","columnDef","aggregateValue","aggregationFn","console","info","Error","process","env","NODE_ENV","forEach","subRow","push","flatRows","rowsById","key","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 { TableInstance, Row, RowModel, TableGenerics } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TGenerics extends TableGenerics>(): (\n instance: TableInstance<TGenerics>\n) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [instance.getState().grouping, instance.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 instance.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TGenerics>[] = []\n const groupedRowsById: Record<string, Row<TGenerics>> = {}\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<TGenerics>[],\n depth = 0,\n parentId: string\n ) => {\n // This is the last level, just return the rows\n if (depth === existingGrouping.length) {\n return rows\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(instance, id, undefined, index, depth)\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 = instance.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 } else if (column.aggregationFn) {\n console.info({ column })\n throw new Error(\n process.env.NODE_ENV !== 'production'\n ? `Table: Invalid column.aggregateType option for column listed above`\n : ''\n )\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: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._queue(() => {\n instance._autoResetExpanded()\n instance._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TGenerics extends TableGenerics>(\n rows: Row<TGenerics>[],\n columnId: string\n) {\n const groupMap = new Map<any, Row<TGenerics>[]>()\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","instance","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","map","index","groupingValue","groupedRows","id","subRows","leafRows","flattenBy","row","createRow","undefined","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","_groupingValuesCache","column","aggregateFn","getAggregationFn","aggregationFn","console","info","Error","process","env","NODE_ENV","forEach","subRow","push","flatRows","rowsById","key","debug","options","debugAll","debugTable","onChange","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,kBAAT,GAEwB;AAC7B,EAAOC,OAAAA,QAAQ,IACbC,UAAI,CACF,MAAM,CAACD,QAAQ,CAACE,QAAT,EAAoBC,CAAAA,QAArB,EAA+BH,QAAQ,CAACI,qBAAT,EAA/B,CADJ,EAEF,CAACD,QAAD,EAAWE,QAAX,KAAwB;AACtB,IAAI,IAAA,CAACA,QAAQ,CAACC,IAAT,CAAcC,MAAf,IAAyB,CAACJ,QAAQ,CAACI,MAAvC,EAA+C;AAC7C,MAAA,OAAOF,QAAP,CAAA;AACD,KAHqB;;;AAMtB,IAAA,MAAMG,gBAAgB,GAAGL,QAAQ,CAACM,MAAT,CAAgBC,QAAQ,IAC/CV,QAAQ,CAACW,SAAT,CAAmBD,QAAnB,CADuB,CAAzB,CAAA;AAIA,IAAME,MAAAA,eAAiC,GAAG,EAA1C,CAAA;AACA,IAAA,MAAMC,eAA+C,GAAG,EAAxD,CAXsB;AAatB;AACA;AACA;AAEA;;AACA,IAAMC,MAAAA,kBAAkB,GAAG,UACzBR,IADyB,EAEzBS,KAFyB,EAGzBC,QAHyB,EAItB;AAAA,MAAA,IAFHD,KAEG,KAAA,KAAA,CAAA,EAAA;AAFHA,QAAAA,KAEG,GAFK,CAEL,CAAA;AAAA,OAAA;;AACH;AACA,MAAA,IAAIA,KAAK,KAAKP,gBAAgB,CAACD,MAA/B,EAAuC;AACrC,QAAA,OAAOD,IAAP,CAAA;AACD,OAAA;;AAED,MAAA,MAAMI,QAAQ,GAAGF,gBAAgB,CAACO,KAAD,CAAjC,CANG;;AASH,MAAME,MAAAA,YAAY,GAAGC,OAAO,CAACZ,IAAD,EAAOI,QAAP,CAA5B,CATG;;AAYH,MAAA,MAAMS,qBAAqB,GAAGC,KAAK,CAACC,IAAN,CAAWJ,YAAY,CAACK,OAAb,EAAX,CAAmCC,CAAAA,GAAnC,CAC5B,CAAA,IAAA,EAA+BC,KAA/B,KAAyC;AAAA,QAAA,IAAxC,CAACC,aAAD,EAAgBC,WAAhB,CAAwC,GAAA,IAAA,CAAA;AACvC,QAAA,IAAIC,EAAE,GAAMjB,QAAN,GAAA,GAAA,GAAkBe,aAAxB,CAAA;AACAE,QAAAA,EAAE,GAAGX,QAAQ,GAAMA,QAAN,SAAkBW,EAAlB,GAAyBA,EAAtC,CAFuC;;AAKvC,QAAA,MAAMC,OAAO,GAAGd,kBAAkB,CAACY,WAAD,EAAcX,KAAK,GAAG,CAAtB,EAAyBY,EAAzB,CAAlC,CALuC;;AAQvC,QAAA,MAAME,QAAQ,GAAGd,KAAK,GAClBe,eAAS,CAACJ,WAAD,EAAcK,GAAG,IAAIA,GAAG,CAACH,OAAzB,CADS,GAElBF,WAFJ,CAAA;AAIA,QAAA,MAAMK,KAAG,GAAGC,aAAS,CAAChC,QAAD,EAAW2B,EAAX,EAAeM,SAAf,EAA0BT,KAA1B,EAAiCT,KAAjC,CAArB,CAAA;AAEAmB,QAAAA,MAAM,CAACC,MAAP,CAAcJ,KAAd,EAAmB;AACjBK,UAAAA,gBAAgB,EAAE1B,QADD;AAEjBe,UAAAA,aAFiB;AAGjBG,UAAAA,OAHiB;AAIjBC,UAAAA,QAJiB;AAKjBQ,UAAAA,QAAQ,EAAG3B,QAAD,IAAsB;AAC9B;AACA,YAAA,IAAIF,gBAAgB,CAAC8B,QAAjB,CAA0B5B,QAA1B,CAAJ,EAAyC;AACvC,cAAIqB,IAAAA,KAAG,CAACQ,YAAJ,CAAiBC,cAAjB,CAAgC9B,QAAhC,CAAJ,EAA+C;AAC7C,gBAAA,OAAOqB,KAAG,CAACQ,YAAJ,CAAiB7B,QAAjB,CAAP,CAAA;AACD,eAAA;;AAED,cAAA,IAAIgB,WAAW,CAAC,CAAD,CAAf,EAAoB;AAAA,gBAAA,IAAA,qBAAA,CAAA;;AAClBK,gBAAAA,KAAG,CAACQ,YAAJ,CAAiB7B,QAAjB,6BACEgB,WAAW,CAAC,CAAD,CAAX,CAAeW,QAAf,CAAwB3B,QAAxB,CADF,oCACuCuB,SADvC,CAAA;AAED,eAAA;;AAED,cAAA,OAAOF,KAAG,CAACQ,YAAJ,CAAiB7B,QAAjB,CAAP,CAAA;AACD,aAAA;;AAED,YAAIqB,IAAAA,KAAG,CAACU,oBAAJ,CAAyBD,cAAzB,CAAwC9B,QAAxC,CAAJ,EAAuD;AACrD,cAAA,OAAOqB,KAAG,CAACU,oBAAJ,CAAyB/B,QAAzB,CAAP,CAAA;AACD,aAjB6B;;;AAoB9B,YAAA,MAAMgC,MAAM,GAAG1C,QAAQ,CAACW,SAAT,CAAmBD,QAAnB,CAAf,CAAA;AACA,YAAA,MAAMiC,WAAW,GAAGD,MAAM,CAACE,gBAAP,EAApB,CAAA;;AAEA,YAAA,IAAID,WAAJ,EAAiB;AACfZ,cAAAA,KAAG,CAACU,oBAAJ,CAAyB/B,QAAzB,CAAA,GAAqCiC,WAAW,CAC9CjC,QAD8C,EAE9CmB,QAF8C,EAG9CH,WAH8C,CAAhD,CAAA;AAMA,cAAA,OAAOK,KAAG,CAACU,oBAAJ,CAAyB/B,QAAzB,CAAP,CAAA;AACD,aARD,MAQO,IAAIgC,MAAM,CAACG,aAAX,EAA0B;AAC/BC,cAAAA,OAAO,CAACC,IAAR,CAAa;AAAEL,gBAAAA,MAAAA;AAAF,eAAb,CAAA,CAAA;AACA,cAAA,MAAM,IAAIM,KAAJ,CACJC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAEI,oEAAA,GAAA,EAHA,CAAN,CAAA;AAKD,aAAA;AACF,WAAA;AA5CgB,SAAnB,CAAA,CAAA;AA+CAvB,QAAAA,OAAO,CAACwB,OAAR,CAAgBC,MAAM,IAAI;AACxBzC,UAAAA,eAAe,CAAC0C,IAAhB,CAAqBD,MAArB,CAAA,CAAA;AACAxC,UAAAA,eAAe,CAACwC,MAAM,CAAC1B,EAAR,CAAf,GAA6B0B,MAA7B,CAFwB;AAIxB;AACA;AACA;AACA;AACA;AACA;AACD,SAVD,CAAA,CAAA;AAYA,QAAA,OAAOtB,KAAP,CAAA;AACD,OA3E2B,CAA9B,CAAA;AA8EA,MAAA,OAAOZ,qBAAP,CAAA;AACD,KA/FD,CAAA;;AAiGA,IAAMO,MAAAA,WAAW,GAAGZ,kBAAkB,CAACT,QAAQ,CAACC,IAAV,EAAgB,CAAhB,EAAmB,EAAnB,CAAtC,CAAA;AAEAoB,IAAAA,WAAW,CAAC0B,OAAZ,CAAoBC,MAAM,IAAI;AAC5BzC,MAAAA,eAAe,CAAC0C,IAAhB,CAAqBD,MAArB,CAAA,CAAA;AACAxC,MAAAA,eAAe,CAACwC,MAAM,CAAC1B,EAAR,CAAf,GAA6B0B,MAA7B,CAF4B;AAI5B;AACA;AACA;AACA;AACA;AACA;AACD,KAVD,CAAA,CAAA;AAYA,IAAO,OAAA;AACL/C,MAAAA,IAAI,EAAEoB,WADD;AAEL6B,MAAAA,QAAQ,EAAE3C,eAFL;AAGL4C,MAAAA,QAAQ,EAAE3C,eAAAA;AAHL,KAAP,CAAA;AAKD,GAxIC,EAyIF;AACE4C,IAAAA,GAAG,EAAER,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,oBADjD;AAEEO,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAM1D,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAAC2D,OAAT,CAAiBC,QAAvB,oCAAmC5D,QAAQ,CAAC2D,OAAT,CAAiBE,UAApD,CAAA;AAAA,KAFT;AAGEC,IAAAA,QAAQ,EAAE,MAAM;AACd9D,MAAAA,QAAQ,CAAC+D,MAAT,CAAgB,MAAM;AACpB/D,QAAAA,QAAQ,CAACgE,kBAAT,EAAA,CAAA;;AACAhE,QAAAA,QAAQ,CAACiE,mBAAT,EAAA,CAAA;AACD,OAHD,CAAA,CAAA;AAID,KAAA;AARH,GAzIE,CADN,CAAA;AAqJD,CAAA;;AAED,SAAS/C,OAAT,CACEZ,IADF,EAEEI,QAFF,EAGE;AACA,EAAA,MAAMwD,QAAQ,GAAG,IAAIC,GAAJ,EAAjB,CAAA;AAEA,EAAO7D,OAAAA,IAAI,CAAC8D,MAAL,CAAY,CAAC7C,GAAD,EAAMQ,GAAN,KAAc;AAC/B,IAAA,MAAMsC,MAAM,GAAMtC,EAAAA,GAAAA,GAAG,CAACM,QAAJ,CAAa3B,QAAb,CAAlB,CAAA;AACA,IAAA,MAAM4D,QAAQ,GAAG/C,GAAG,CAACgD,GAAJ,CAAQF,MAAR,CAAjB,CAAA;;AACA,IAAI,IAAA,CAACC,QAAL,EAAe;AACb/C,MAAAA,GAAG,CAACiD,GAAJ,CAAQH,MAAR,EAAgB,CAACtC,GAAD,CAAhB,CAAA,CAAA;AACD,KAFD,MAEO;AACLR,MAAAA,GAAG,CAACiD,GAAJ,CAAQH,MAAR,EAAgB,CAAC,GAAGC,QAAJ,EAAcvC,GAAd,CAAhB,CAAA,CAAA;AACD,KAAA;;AACD,IAAA,OAAOR,GAAP,CAAA;AACD,GATM,EASJ2C,QATI,CAAP,CAAA;AAUD;;;;"}
@@ -39,7 +39,7 @@ function getPaginationRowModel(opts) {
39
39
  rows,
40
40
  flatRows,
41
41
  rowsById
42
- }, instance);
42
+ });
43
43
  }
44
44
 
45
45
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { TableInstance, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {\n initialSync: boolean\n}): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().pagination,\n instance.getPrePaginationRowModel(),\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n if (!instance.options.paginateExpandedRows) {\n return expandRows(\n {\n rows,\n flatRows,\n rowsById,\n },\n instance\n )\n }\n\n return {\n rows,\n flatRows,\n rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n"],"names":["getPaginationRowModel","opts","instance","memo","getState","pagination","getPrePaginationRowModel","rowModel","rows","length","pageSize","pageIndex","flatRows","rowsById","pageStart","pageEnd","slice","options","paginateExpandedRows","expandRows","key","process","env","NODE_ENV","debug","debugAll","debugTable"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,qBAAT,CAAgEC,IAAhE,EAE+D;AACpE,EAAOC,OAAAA,QAAQ,IACbC,UAAI,CACF,MAAM,CACJD,QAAQ,CAACE,QAAT,EAAoBC,CAAAA,UADhB,EAEJH,QAAQ,CAACI,wBAAT,EAFI,CADJ,EAKF,CAACD,UAAD,EAAaE,QAAb,KAA0B;AACxB,IAAA,IAAI,CAACA,QAAQ,CAACC,IAAT,CAAcC,MAAnB,EAA2B;AACzB,MAAA,OAAOF,QAAP,CAAA;AACD,KAAA;;AAED,IAAM,MAAA;AAAEG,MAAAA,QAAF;AAAYC,MAAAA,SAAAA;AAAZ,KAAA,GAA0BN,UAAhC,CAAA;AACA,IAAI,IAAA;AAAEG,MAAAA,IAAF;AAAQI,MAAAA,QAAR;AAAkBC,MAAAA,QAAAA;AAAlB,KAAA,GAA+BN,QAAnC,CAAA;AACA,IAAA,MAAMO,SAAS,GAAGJ,QAAQ,GAAGC,SAA7B,CAAA;AACA,IAAA,MAAMI,OAAO,GAAGD,SAAS,GAAGJ,QAA5B,CAAA;AAEAF,IAAAA,IAAI,GAAGA,IAAI,CAACQ,KAAL,CAAWF,SAAX,EAAsBC,OAAtB,CAAP,CAAA;;AAEA,IAAA,IAAI,CAACb,QAAQ,CAACe,OAAT,CAAiBC,oBAAtB,EAA4C;AAC1C,MAAA,OAAOC,8BAAU,CACf;AACEX,QAAAA,IADF;AAEEI,QAAAA,QAFF;AAGEC,QAAAA,QAAAA;AAHF,OADe,EAMfX,QANe,CAAjB,CAAA;AAQD,KAAA;;AAED,IAAO,OAAA;AACLM,MAAAA,IADK;AAELI,MAAAA,QAFK;AAGLC,MAAAA,QAAAA;AAHK,KAAP,CAAA;AAKD,GAjCC,EAkCF;AACEO,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,uBADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAMtB,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACe,OAAT,CAAiBQ,QAAvB,oCAAmCvB,QAAQ,CAACe,OAAT,CAAiBS,UAApD,CAAA;AAAA,KAAA;AAFT,GAlCE,CADN,CAAA;AAwCD;;;;"}
1
+ {"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { TableInstance, RowModel, TableGenerics } from '../types'\nimport { memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TGenerics extends TableGenerics>(opts?: {\n initialSync: boolean\n}): (instance: TableInstance<TGenerics>) => () => RowModel<TGenerics> {\n return instance =>\n memo(\n () => [\n instance.getState().pagination,\n instance.getPrePaginationRowModel(),\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n if (!instance.options.paginateExpandedRows) {\n return expandRows(\n {\n rows,\n flatRows,\n rowsById,\n },\n instance\n )\n }\n\n return {\n rows,\n flatRows,\n rowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n )\n}\n"],"names":["getPaginationRowModel","opts","instance","memo","getState","pagination","getPrePaginationRowModel","rowModel","rows","length","pageSize","pageIndex","flatRows","rowsById","pageStart","pageEnd","slice","options","paginateExpandedRows","expandRows","key","process","env","NODE_ENV","debug","debugAll","debugTable"],"mappings":";;;;;;;;;;;;;;;;;AAIO,SAASA,qBAAT,CAAgEC,IAAhE,EAE+D;AACpE,EAAOC,OAAAA,QAAQ,IACbC,UAAI,CACF,MAAM,CACJD,QAAQ,CAACE,QAAT,EAAoBC,CAAAA,UADhB,EAEJH,QAAQ,CAACI,wBAAT,EAFI,CADJ,EAKF,CAACD,UAAD,EAAaE,QAAb,KAA0B;AACxB,IAAA,IAAI,CAACA,QAAQ,CAACC,IAAT,CAAcC,MAAnB,EAA2B;AACzB,MAAA,OAAOF,QAAP,CAAA;AACD,KAAA;;AAED,IAAM,MAAA;AAAEG,MAAAA,QAAF;AAAYC,MAAAA,SAAAA;AAAZ,KAAA,GAA0BN,UAAhC,CAAA;AACA,IAAI,IAAA;AAAEG,MAAAA,IAAF;AAAQI,MAAAA,QAAR;AAAkBC,MAAAA,QAAAA;AAAlB,KAAA,GAA+BN,QAAnC,CAAA;AACA,IAAA,MAAMO,SAAS,GAAGJ,QAAQ,GAAGC,SAA7B,CAAA;AACA,IAAA,MAAMI,OAAO,GAAGD,SAAS,GAAGJ,QAA5B,CAAA;AAEAF,IAAAA,IAAI,GAAGA,IAAI,CAACQ,KAAL,CAAWF,SAAX,EAAsBC,OAAtB,CAAP,CAAA;;AAEA,IAAA,IAAI,CAACb,QAAQ,CAACe,OAAT,CAAiBC,oBAAtB,EAA4C;AAC1C,MAAA,OAAOC,8BAAU,CACf;AACEX,QAAAA,IADF;AAEEI,QAAAA,QAFF;AAGEC,QAAAA,QAAAA;AAHF,OADe,CAAjB,CAAA;AAQD,KAAA;;AAED,IAAO,OAAA;AACLL,MAAAA,IADK;AAELI,MAAAA,QAFK;AAGLC,MAAAA,QAAAA;AAHK,KAAP,CAAA;AAKD,GAjCC,EAkCF;AACEO,IAAAA,GAAG,EAAEC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0C,uBADjD;AAEEC,IAAAA,KAAK,EAAE,MAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAAA,MAAMtB,OAAAA,CAAAA,qBAAAA,GAAAA,QAAQ,CAACe,OAAT,CAAiBQ,QAAvB,oCAAmCvB,QAAQ,CAACe,OAAT,CAAiBS,UAApD,CAAA;AAAA,KAAA;AAFT,GAlCE,CADN,CAAA;AAwCD;;;;"}