@tanstack/table-core 8.0.0-alpha.20 → 8.0.0-alpha.23

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 (53) hide show
  1. package/build/cjs/aggregationTypes.js +21 -19
  2. package/build/cjs/aggregationTypes.js.map +1 -1
  3. package/build/cjs/core.js +8 -8
  4. package/build/cjs/core.js.map +1 -1
  5. package/build/cjs/features/Expanding.js +5 -8
  6. package/build/cjs/features/Expanding.js.map +1 -1
  7. package/build/cjs/features/Filters.js +1 -1
  8. package/build/cjs/features/Filters.js.map +1 -1
  9. package/build/cjs/features/Grouping.js.map +1 -1
  10. package/build/cjs/features/Pinning.js +6 -0
  11. package/build/cjs/features/Pinning.js.map +1 -1
  12. package/build/cjs/features/RowSelection.js +3 -3
  13. package/build/cjs/features/RowSelection.js.map +1 -1
  14. package/build/cjs/utils/columnFilterRowsFn.js +20 -78
  15. package/build/cjs/utils/columnFilterRowsFn.js.map +1 -1
  16. package/build/cjs/utils/filterRowsUtils.js +100 -0
  17. package/build/cjs/utils/filterRowsUtils.js.map +1 -0
  18. package/build/cjs/utils/globalFilterRowsFn.js +10 -62
  19. package/build/cjs/utils/globalFilterRowsFn.js.map +1 -1
  20. package/build/cjs/utils/groupRowsFn.js +15 -15
  21. package/build/cjs/utils/groupRowsFn.js.map +1 -1
  22. package/build/cjs/utils/sortRowsFn.js +1 -1
  23. package/build/cjs/utils/sortRowsFn.js.map +1 -1
  24. package/build/esm/index.js +166 -192
  25. package/build/esm/index.js.map +1 -1
  26. package/build/stats-html.html +1 -1
  27. package/build/stats-react.json +303 -270
  28. package/build/types/aggregationTypes.d.ts +9 -9
  29. package/build/types/core.d.ts +1 -1
  30. package/build/types/features/Expanding.d.ts +1 -0
  31. package/build/types/features/Filters.d.ts +1 -1
  32. package/build/types/features/Grouping.d.ts +1 -1
  33. package/build/types/features/Pinning.d.ts +1 -0
  34. package/build/types/utils/filterRowsUtils.d.ts +3 -0
  35. package/build/types/utils/sortRowsQuicksortFn.d.ts +11 -0
  36. package/build/umd/index.development.js +166 -192
  37. package/build/umd/index.development.js.map +1 -1
  38. package/build/umd/index.production.js +1 -1
  39. package/build/umd/index.production.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/aggregationTypes.ts +23 -19
  42. package/src/core.tsx +3 -5
  43. package/src/features/Expanding.ts +7 -10
  44. package/src/features/Filters.ts +2 -2
  45. package/src/features/Grouping.ts +2 -2
  46. package/src/features/Pinning.ts +7 -0
  47. package/src/features/RowSelection.ts +1 -3
  48. package/src/utils/columnFilterRowsFn.ts +12 -73
  49. package/src/utils/filterRowsUtils.ts +107 -0
  50. package/src/utils/globalFilterRowsFn.ts +10 -66
  51. package/src/utils/groupRowsFn.ts +14 -16
  52. package/src/utils/sortRowsFn.ts +6 -8
  53. package/src/utils/sortRowsQuicksortFn.ts +174 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","sources":["../../../src/features/Filters.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInFilterType, filterTypes } from '../filterTypes'\nimport {\n Column,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n} from '../utils'\n\nexport type ColumnFilter = {\n id: string\n value: unknown\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport type FilterFn<TGenerics extends PartialGenerics> = {\n (rows: Row<TGenerics>[], columnIds: string[], filterValue: any): any\n autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>\n}\n\nexport type ColumnFilterAutoRemoveTestFn<TGenerics extends PartialGenerics> = (\n value: unknown,\n column?: Column<TGenerics>\n) => boolean\n\nexport type CustomFilterTypes<TGenerics extends PartialGenerics> = Record<\n string,\n FilterFn<TGenerics>\n>\n\nexport type FiltersTableState = {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type FilterType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInFilterType\n | TGenerics['FilterFns']\n | FilterFn<TGenerics>\n\nexport type FiltersColumnDef<TGenerics extends PartialGenerics> = {\n filterType?: FilterType<Overwrite<TGenerics, { Value: any }>>\n enableAllFilters?: boolean\n enableColumnFilter?: boolean\n enableGlobalFilter?: boolean\n defaultCanFilter?: boolean\n defaultCanColumnFilter?: boolean\n defaultCanGlobalFilter?: boolean\n}\n\nexport type FiltersColumn<TGenerics extends PartialGenerics> = {\n filterType: FilterType<Overwrite<TGenerics, { Value: any }>>\n getCanColumnFilter: () => boolean\n getCanGlobalFilter: () => boolean\n getColumnFilterIndex: () => number\n getIsColumnFiltered: () => boolean\n getColumnFilterValue: () => unknown\n setColumnFilterValue: (value: any) => void\n getPreFilteredRows: () => Row<TGenerics>[] | undefined\n getPreFilteredUniqueValues: () => Map<any, number>\n getPreFilteredMinMaxValues: () => [any, any]\n}\n\nexport type FiltersOptions<TGenerics extends PartialGenerics> = {\n filterFromChildrenUp?: boolean\n filterTypes?: TGenerics['FilterFns']\n enableFilters?: boolean\n // Column\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n autoResetColumnFilters?: boolean\n enableColumnFilters?: boolean\n columnFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n coreRowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n // Global\n globalFilterType?: FilterType<TGenerics>\n onGlobalFilterChange?: OnChangeFn<any>\n enableGlobalFilters?: boolean\n autoResetGlobalFilter?: boolean\n enableGlobalFilter?: boolean\n globalFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n}\n\nexport type FiltersInstance<TGenerics extends PartialGenerics> = {\n _notifyFiltersReset: () => void\n getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n setColumnFilterValue: (columnId: string, value: any) => void\n resetColumnFilters: () => void\n getColumnCanColumnFilter: (columnId: string) => boolean\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n\n getColumnIsFiltered: (columnId: string) => boolean\n getColumnFilterValue: (columnId: string) => unknown\n getColumnFilterIndex: (columnId: string) => number\n\n // All\n getPreFilteredRowModel: () => RowModel<TGenerics>\n\n // Column Filters\n getPreColumnFilteredRowModel: () => RowModel<TGenerics>\n getColumnFilteredRowModel: () => RowModel<TGenerics>\n\n // Global Filters\n setGlobalFilter: (updater: Updater<any>) => void\n resetGlobalFilter: () => void\n getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined\n getGlobalFilterFn: () => FilterFn<TGenerics> | undefined\n getColumnCanGlobalFilter: (columnId: string) => boolean\n getPreGlobalFilteredRowModel: () => RowModel<TGenerics>\n getGlobalFilteredRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Filters = {\n getDefaultColumn: <\n TGenerics extends PartialGenerics\n >(): FiltersColumnDef<TGenerics> => {\n return {\n filterType: 'auto',\n }\n },\n\n getInitialState: (): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersOptions<TGenerics> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', instance),\n onGlobalFilterChange: makeStateUpdater('globalFilter', instance),\n autoResetColumnFilters: true,\n filterFromChildrenUp: true,\n autoResetGlobalFilter: true,\n globalFilterType: 'auto',\n getColumnCanGlobalFilterFn: column => {\n const value = instance\n .getCoreRowModel()\n .flatRows[0]?.getAllCellsByColumnId()[column.id]?.value\n\n return typeof value === 'string'\n },\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): FiltersColumn<TGenerics> => {\n const getFacetInfo = memo(\n () => [column.getPreFilteredRows()],\n (rows = []) => {\n let preFilteredUniqueValues = new Map<any, number>()\n\n let preFilteredMinMaxValues: [any, any] = [\n rows[0]?.values[column.id] ?? null,\n rows[0]?.values[column.id] ?? null,\n ]\n\n for (let i = 0; i < rows.length; i++) {\n const value = rows[i]?.values[column.id]\n\n if (preFilteredUniqueValues.has(value)) {\n preFilteredUniqueValues.set(\n value,\n (preFilteredUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n preFilteredUniqueValues.set(value, 1)\n }\n\n if (value < preFilteredMinMaxValues[0]) {\n preFilteredMinMaxValues[0] = value\n } else if (value > preFilteredMinMaxValues[1]) {\n preFilteredMinMaxValues[1] = value\n }\n }\n\n return {\n preFilteredUniqueValues,\n preFilteredMinMaxValues,\n }\n },\n {\n key: 'column.getFacetInfo',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n\n return {\n filterType: column.filterType,\n getCanColumnFilter: () => instance.getColumnCanColumnFilter(column.id),\n getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),\n getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),\n getIsColumnFiltered: () => instance.getColumnIsFiltered(column.id),\n getColumnFilterValue: () => instance.getColumnFilterValue(column.id),\n setColumnFilterValue: val =>\n instance.setColumnFilterValue(column.id, val),\n getPreFilteredUniqueValues: () => getFacetInfo().preFilteredUniqueValues,\n getPreFilteredMinMaxValues: () => getFacetInfo().preFilteredMinMaxValues,\n getPreFilteredRows: () => undefined,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyFiltersReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (instance.options.autoResetAll === true) {\n instance.resetSorting()\n } else {\n if (instance.options.autoResetColumnFilters) {\n instance.resetColumnFilters()\n }\n if (instance.options.autoResetGlobalFilter) {\n instance.resetGlobalFilter()\n }\n }\n },\n getColumnAutoFilterFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return filterTypes.includesString\n }\n\n if (typeof value === 'number') {\n return filterTypes.betweenNumberRange\n }\n\n if (value !== null && typeof value === 'object') {\n return filterTypes.equals\n }\n\n if (Array.isArray(value)) {\n return filterTypes.arrIncludes\n }\n\n return filterTypes.weakEquals\n },\n getGlobalAutoFilterFn: () => {\n return filterTypes.includesString\n },\n getColumnFilterFn: columnId => {\n const column = instance.getColumn(columnId)\n const userFilterTypes = instance.options.filterTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.filterType)\n ? column.filterType\n : column.filterType === 'auto'\n ? instance.getColumnAutoFilterFn(columnId)\n : (userFilterTypes as Record<string, any>)?.[\n column.filterType as string\n ] ??\n (filterTypes[\n column.filterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n getGlobalFilterFn: () => {\n const { filterTypes: userFilterTypes, globalFilterType } =\n instance.options\n\n return isFunction(globalFilterType)\n ? globalFilterType\n : globalFilterType === 'auto'\n ? instance.getGlobalAutoFilterFn()\n : (userFilterTypes as Record<string, any>)?.[\n globalFilterType as string\n ] ??\n (filterTypes[\n globalFilterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = instance.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = instance.getColumnFilterFn(column.id)\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n instance.options.onColumnFiltersChange?.(\n updateFn,\n updateFn(instance.getState().columnFilters)\n )\n },\n\n setGlobalFilter: updater => {\n instance.options.onGlobalFilterChange?.(\n updater,\n functionalUpdate(updater, instance.getState().globalFilter)\n )\n },\n\n resetGlobalFilter: () => {\n instance.setGlobalFilter(undefined)\n },\n\n getColumnCanColumnFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableAllFilters ??\n column.enableColumnFilter ??\n instance.options.enableFilters ??\n instance.options.enableColumnFilters ??\n column.defaultCanFilter ??\n column.defaultCanColumnFilter ??\n !!column.accessorFn\n )\n },\n\n getColumnCanGlobalFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n ((instance.options.enableFilters ??\n instance.options.enableGlobalFilter ??\n column.enableAllFilters ??\n column.enableGlobalFilter ??\n column.defaultCanFilter ??\n column.defaultCanGlobalFilter ??\n !!column.accessorFn) &&\n instance.options.getColumnCanGlobalFilterFn?.(column)) ??\n true\n )\n },\n\n getColumnIsFiltered: columnId =>\n instance.getColumnFilterIndex(columnId) > -1,\n\n getColumnFilterValue: columnId =>\n instance.getState().columnFilters?.find(d => d.id === columnId)?.value,\n\n getColumnFilterIndex: columnId =>\n instance.getState().columnFilters?.findIndex(d => d.id === columnId) ??\n -1,\n\n setColumnFilterValue: (columnId, value) => {\n if (!columnId) return\n\n instance.setColumnFilters(old => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Table: Could not find a column with id: ${columnId}`\n )\n }\n throw new Error()\n }\n\n const filterFn = instance.getColumnFilterFn(column.id)\n const previousfilter = old?.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(\n filterFn as FilterFn<TGenerics>,\n newFilter,\n column\n )\n ) {\n return old?.filter(d => d.id !== columnId) ?? []\n }\n\n const newFilterObj = { id: columnId, value: newFilter }\n\n if (previousfilter) {\n return (\n old?.map(d => {\n if (d.id === columnId) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n },\n\n resetColumnFilters: () => {\n instance.setColumnFilters(instance.initialState?.columnFilters ?? [])\n },\n\n getPreFilteredRowModel: () => instance.getCoreRowModel(),\n getPreColumnFilteredRowModel: () => instance.getCoreRowModel(),\n getColumnFilteredRowModel: memo(\n () => [\n instance.getState().columnFilters,\n instance.getCoreRowModel(),\n instance.options.columnFilterRowsFn,\n ],\n (columnFilters, rowModel, columnFiltersFn) => {\n const columnFilteredRowModel = (() => {\n if (!columnFilters?.length || !columnFiltersFn) {\n return rowModel\n }\n\n return columnFiltersFn(instance as any, rowModel)\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => columnFilteredRowModel.rows\n })\n\n return columnFilteredRowModel\n },\n {\n key: 'getColumnFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n getPreGlobalFilteredRowModel: () => instance.getColumnFilteredRowModel(),\n getGlobalFilteredRowModel: memo(\n () => [\n instance.getState().globalFilter,\n instance.getColumnFilteredRowModel(),\n instance.options.globalFilterRowsFn,\n ],\n (globalFilterValue, columnFilteredRowModel, globalFiltersFn) => {\n const globalFilteredRowModel = (() => {\n if (!globalFiltersFn || !globalFilterValue) {\n return columnFilteredRowModel\n }\n\n return globalFiltersFn(\n instance as TableInstance<TGenerics>,\n columnFilteredRowModel\n )\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => globalFilteredRowModel.rows\n })\n\n return globalFilteredRowModel\n },\n {\n key: 'getGlobalFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifySortingReset()\n },\n }\n ),\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TGenerics extends PartialGenerics>(\n filterFn?: FilterFn<TGenerics>,\n value?: any,\n column?: Column<TGenerics>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":["Filters","getDefaultColumn","filterType","getInitialState","columnFilters","globalFilter","undefined","getDefaultOptions","instance","onColumnFiltersChange","makeStateUpdater","onGlobalFilterChange","autoResetColumnFilters","filterFromChildrenUp","autoResetGlobalFilter","globalFilterType","getColumnCanGlobalFilterFn","column","value","getCoreRowModel","flatRows","getAllCellsByColumnId","id","createColumn","getFacetInfo","memo","getPreFilteredRows","rows","preFilteredUniqueValues","Map","preFilteredMinMaxValues","values","i","length","has","set","get","key","debug","options","debugAll","debugColumns","getCanColumnFilter","getColumnCanColumnFilter","getCanGlobalFilter","getColumnCanGlobalFilter","getColumnFilterIndex","getIsColumnFiltered","getColumnIsFiltered","getColumnFilterValue","setColumnFilterValue","val","getPreFilteredUniqueValues","getPreFilteredMinMaxValues","getInstance","registered","_notifyFiltersReset","autoResetAll","resetSorting","resetColumnFilters","resetGlobalFilter","getColumnAutoFilterFn","columnId","firstRow","filterTypes","includesString","betweenNumberRange","equals","Array","isArray","arrIncludes","weakEquals","getGlobalAutoFilterFn","getColumnFilterFn","getColumn","userFilterTypes","Error","isFunction","getGlobalFilterFn","setColumnFilters","updater","leafColumns","getAllLeafColumns","updateFn","old","functionalUpdate","filter","find","d","filterFn","shouldAutoRemoveFilter","getState","setGlobalFilter","enableAllFilters","enableColumnFilter","enableFilters","enableColumnFilters","defaultCanFilter","defaultCanColumnFilter","accessorFn","enableGlobalFilter","defaultCanGlobalFilter","findIndex","process","env","NODE_ENV","console","warn","previousfilter","newFilter","newFilterObj","map","initialState","getPreFilteredRowModel","getPreColumnFilteredRowModel","getColumnFilteredRowModel","columnFilterRowsFn","rowModel","columnFiltersFn","columnFilteredRowModel","nonFilteredColumns","forEach","debugTable","getPreGlobalFilteredRowModel","getGlobalFilteredRowModel","globalFilterRowsFn","globalFilterValue","globalFiltersFn","globalFilteredRowModel","onChange","_notifySortingReset","autoRemove"],"mappings":"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"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../src/features/Filters.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInFilterType, filterTypes } from '../filterTypes'\nimport {\n Column,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n TableInstance,\n Row,\n Updater,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n} from '../utils'\n\nexport type ColumnFilter = {\n id: string\n value: unknown\n}\n\nexport type ColumnFiltersState = ColumnFilter[]\n\nexport type FilterFn<TGenerics extends PartialGenerics> = {\n (rows: Row<TGenerics>[], columnIds: string[], filterValue: any): any\n autoRemove?: ColumnFilterAutoRemoveTestFn<TGenerics>\n}\n\nexport type ColumnFilterAutoRemoveTestFn<TGenerics extends PartialGenerics> = (\n value: unknown,\n column?: Column<TGenerics>\n) => boolean\n\nexport type CustomFilterTypes<TGenerics extends PartialGenerics> = Record<\n string,\n FilterFn<TGenerics>\n>\n\nexport type FiltersTableState = {\n columnFilters: ColumnFiltersState\n globalFilter: any\n}\n\nexport type FilterType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInFilterType\n | TGenerics['FilterFns']\n | FilterFn<TGenerics>\n\nexport type FiltersColumnDef<TGenerics extends PartialGenerics> = {\n filterType?: FilterType<Overwrite<TGenerics, { Value: any }>>\n enableAllFilters?: boolean\n enableColumnFilter?: boolean\n enableGlobalFilter?: boolean\n defaultCanFilter?: boolean\n defaultCanColumnFilter?: boolean\n defaultCanGlobalFilter?: boolean\n}\n\nexport type FiltersColumn<TGenerics extends PartialGenerics> = {\n filterType: FilterType<Overwrite<TGenerics, { Value: any }>>\n getCanColumnFilter: () => boolean\n getCanGlobalFilter: () => boolean\n getColumnFilterIndex: () => number\n getIsColumnFiltered: () => boolean\n getColumnFilterValue: () => unknown\n setColumnFilterValue: (value: any) => void\n getPreFilteredRows: () => Row<TGenerics>[] | undefined\n getPreFilteredUniqueValues: () => Map<any, number>\n getPreFilteredMinMaxValues: () => [any, any]\n}\n\nexport type FiltersOptions<TGenerics extends PartialGenerics> = {\n filterFromLeafRows?: boolean\n filterTypes?: TGenerics['FilterFns']\n enableFilters?: boolean\n // Column\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>\n autoResetColumnFilters?: boolean\n enableColumnFilters?: boolean\n columnFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n coreRowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n // Global\n globalFilterType?: FilterType<TGenerics>\n onGlobalFilterChange?: OnChangeFn<any>\n enableGlobalFilters?: boolean\n autoResetGlobalFilter?: boolean\n enableGlobalFilter?: boolean\n globalFilterRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n}\n\nexport type FiltersInstance<TGenerics extends PartialGenerics> = {\n _notifyFiltersReset: () => void\n getColumnAutoFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n getColumnFilterFn: (columnId: string) => FilterFn<TGenerics> | undefined\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => void\n setColumnFilterValue: (columnId: string, value: any) => void\n resetColumnFilters: () => void\n getColumnCanColumnFilter: (columnId: string) => boolean\n getColumnCanGlobalFilterFn?: (column: Column<TGenerics>) => boolean\n\n getColumnIsFiltered: (columnId: string) => boolean\n getColumnFilterValue: (columnId: string) => unknown\n getColumnFilterIndex: (columnId: string) => number\n\n // All\n getPreFilteredRowModel: () => RowModel<TGenerics>\n\n // Column Filters\n getPreColumnFilteredRowModel: () => RowModel<TGenerics>\n getColumnFilteredRowModel: () => RowModel<TGenerics>\n\n // Global Filters\n setGlobalFilter: (updater: Updater<any>) => void\n resetGlobalFilter: () => void\n getGlobalAutoFilterFn: () => FilterFn<TGenerics> | undefined\n getGlobalFilterFn: () => FilterFn<TGenerics> | undefined\n getColumnCanGlobalFilter: (columnId: string) => boolean\n getPreGlobalFilteredRowModel: () => RowModel<TGenerics>\n getGlobalFilteredRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Filters = {\n getDefaultColumn: <\n TGenerics extends PartialGenerics\n >(): FiltersColumnDef<TGenerics> => {\n return {\n filterType: 'auto',\n }\n },\n\n getInitialState: (): FiltersTableState => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersOptions<TGenerics> => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', instance),\n onGlobalFilterChange: makeStateUpdater('globalFilter', instance),\n autoResetColumnFilters: true,\n filterFromLeafRows: true,\n autoResetGlobalFilter: true,\n globalFilterType: 'auto',\n getColumnCanGlobalFilterFn: column => {\n const value = instance\n .getCoreRowModel()\n .flatRows[0]?.getAllCellsByColumnId()[column.id]?.value\n\n return typeof value === 'string'\n },\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): FiltersColumn<TGenerics> => {\n const getFacetInfo = memo(\n () => [column.getPreFilteredRows()],\n (rows = []) => {\n let preFilteredUniqueValues = new Map<any, number>()\n\n let preFilteredMinMaxValues: [any, any] = [\n rows[0]?.values[column.id] ?? null,\n rows[0]?.values[column.id] ?? null,\n ]\n\n for (let i = 0; i < rows.length; i++) {\n const value = rows[i]?.values[column.id]\n\n if (preFilteredUniqueValues.has(value)) {\n preFilteredUniqueValues.set(\n value,\n (preFilteredUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n preFilteredUniqueValues.set(value, 1)\n }\n\n if (value < preFilteredMinMaxValues[0]) {\n preFilteredMinMaxValues[0] = value\n } else if (value > preFilteredMinMaxValues[1]) {\n preFilteredMinMaxValues[1] = value\n }\n }\n\n return {\n preFilteredUniqueValues,\n preFilteredMinMaxValues,\n }\n },\n {\n key: 'column.getFacetInfo',\n debug: () => instance.options.debugAll ?? instance.options.debugColumns,\n }\n )\n\n return {\n filterType: column.filterType,\n getCanColumnFilter: () => instance.getColumnCanColumnFilter(column.id),\n getCanGlobalFilter: () => instance.getColumnCanGlobalFilter(column.id),\n getColumnFilterIndex: () => instance.getColumnFilterIndex(column.id),\n getIsColumnFiltered: () => instance.getColumnIsFiltered(column.id),\n getColumnFilterValue: () => instance.getColumnFilterValue(column.id),\n setColumnFilterValue: val =>\n instance.setColumnFilterValue(column.id, val),\n getPreFilteredUniqueValues: () => getFacetInfo().preFilteredUniqueValues,\n getPreFilteredMinMaxValues: () => getFacetInfo().preFilteredMinMaxValues,\n getPreFilteredRows: () => undefined,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): FiltersInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyFiltersReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (instance.options.autoResetAll === true) {\n instance.resetSorting()\n } else {\n if (instance.options.autoResetColumnFilters) {\n instance.resetColumnFilters()\n }\n if (instance.options.autoResetGlobalFilter) {\n instance.resetGlobalFilter()\n }\n }\n },\n getColumnAutoFilterFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'string') {\n return filterTypes.includesString\n }\n\n if (typeof value === 'number') {\n return filterTypes.betweenNumberRange\n }\n\n if (value !== null && typeof value === 'object') {\n return filterTypes.equals\n }\n\n if (Array.isArray(value)) {\n return filterTypes.arrIncludes\n }\n\n return filterTypes.weakEquals\n },\n getGlobalAutoFilterFn: () => {\n return filterTypes.includesString\n },\n getColumnFilterFn: columnId => {\n const column = instance.getColumn(columnId)\n const userFilterTypes = instance.options.filterTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.filterType)\n ? column.filterType\n : column.filterType === 'auto'\n ? instance.getColumnAutoFilterFn(columnId)\n : (userFilterTypes as Record<string, any>)?.[\n column.filterType as string\n ] ??\n (filterTypes[\n column.filterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n getGlobalFilterFn: () => {\n const { filterTypes: userFilterTypes, globalFilterType } =\n instance.options\n\n return isFunction(globalFilterType)\n ? globalFilterType\n : globalFilterType === 'auto'\n ? instance.getGlobalAutoFilterFn()\n : (userFilterTypes as Record<string, any>)?.[\n globalFilterType as string\n ] ??\n (filterTypes[\n globalFilterType as BuiltInFilterType\n ] as FilterFn<TGenerics>)\n },\n\n setColumnFilters: (updater: Updater<ColumnFiltersState>) => {\n const leafColumns = instance.getAllLeafColumns()\n\n const updateFn = (old: ColumnFiltersState) => {\n return functionalUpdate(updater, old)?.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id)\n\n if (column) {\n const filterFn = instance.getColumnFilterFn(column.id)\n\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false\n }\n }\n\n return true\n })\n }\n\n instance.options.onColumnFiltersChange?.(\n updateFn,\n updateFn(instance.getState().columnFilters)\n )\n },\n\n setGlobalFilter: updater => {\n instance.options.onGlobalFilterChange?.(\n updater,\n functionalUpdate(updater, instance.getState().globalFilter)\n )\n },\n\n resetGlobalFilter: () => {\n instance.setGlobalFilter(undefined)\n },\n\n getColumnCanColumnFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableAllFilters ??\n column.enableColumnFilter ??\n instance.options.enableFilters ??\n instance.options.enableColumnFilters ??\n column.defaultCanFilter ??\n column.defaultCanColumnFilter ??\n !!column.accessorFn\n )\n },\n\n getColumnCanGlobalFilter: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n ((instance.options.enableFilters ??\n instance.options.enableGlobalFilter ??\n column.enableAllFilters ??\n column.enableGlobalFilter ??\n column.defaultCanFilter ??\n column.defaultCanGlobalFilter ??\n !!column.accessorFn) &&\n instance.options.getColumnCanGlobalFilterFn?.(column)) ??\n true\n )\n },\n\n getColumnIsFiltered: columnId =>\n instance.getColumnFilterIndex(columnId) > -1,\n\n getColumnFilterValue: columnId =>\n instance.getState().columnFilters?.find(d => d.id === columnId)?.value,\n\n getColumnFilterIndex: columnId =>\n instance.getState().columnFilters?.findIndex(d => d.id === columnId) ??\n -1,\n\n setColumnFilterValue: (columnId, value) => {\n if (!columnId) return\n\n instance.setColumnFilters(old => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Table: Could not find a column with id: ${columnId}`\n )\n }\n throw new Error()\n }\n\n const filterFn = instance.getColumnFilterFn(column.id)\n const previousfilter = old?.find(d => d.id === columnId)\n\n const newFilter = functionalUpdate(\n value,\n previousfilter ? previousfilter.value : undefined\n )\n\n //\n if (\n shouldAutoRemoveFilter(\n filterFn as FilterFn<TGenerics>,\n newFilter,\n column\n )\n ) {\n return old?.filter(d => d.id !== columnId) ?? []\n }\n\n const newFilterObj = { id: columnId, value: newFilter }\n\n if (previousfilter) {\n return (\n old?.map(d => {\n if (d.id === columnId) {\n return newFilterObj\n }\n return d\n }) ?? []\n )\n }\n\n if (old?.length) {\n return [...old, newFilterObj]\n }\n\n return [newFilterObj]\n })\n },\n\n resetColumnFilters: () => {\n instance.setColumnFilters(instance.initialState?.columnFilters ?? [])\n },\n\n getPreFilteredRowModel: () => instance.getCoreRowModel(),\n getPreColumnFilteredRowModel: () => instance.getCoreRowModel(),\n getColumnFilteredRowModel: memo(\n () => [\n instance.getState().columnFilters,\n instance.getCoreRowModel(),\n instance.options.columnFilterRowsFn,\n ],\n (columnFilters, rowModel, columnFiltersFn) => {\n const columnFilteredRowModel = (() => {\n if (!columnFilters?.length || !columnFiltersFn) {\n return rowModel\n }\n\n return columnFiltersFn(instance as any, rowModel)\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => columnFilteredRowModel.rows\n })\n\n return columnFilteredRowModel\n },\n {\n key: 'getColumnFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n getPreGlobalFilteredRowModel: () => instance.getColumnFilteredRowModel(),\n getGlobalFilteredRowModel: memo(\n () => [\n instance.getState().globalFilter,\n instance.getColumnFilteredRowModel(),\n instance.options.globalFilterRowsFn,\n ],\n (globalFilterValue, columnFilteredRowModel, globalFiltersFn) => {\n const globalFilteredRowModel = (() => {\n if (!globalFiltersFn || !globalFilterValue) {\n return columnFilteredRowModel\n }\n\n return globalFiltersFn(\n instance as TableInstance<TGenerics>,\n columnFilteredRowModel\n )\n })()\n\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = instance\n .getAllLeafColumns()\n .filter(\n column =>\n !instance\n .getState()\n .columnFilters?.find(d => d.id === column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n\n nonFilteredColumns.forEach(column => {\n column.getPreFilteredRows = () => globalFilteredRowModel.rows\n })\n\n return globalFilteredRowModel\n },\n {\n key: 'getGlobalFilteredRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => {\n instance._notifySortingReset()\n },\n }\n ),\n }\n },\n}\n\nexport function shouldAutoRemoveFilter<TGenerics extends PartialGenerics>(\n filterFn?: FilterFn<TGenerics>,\n value?: any,\n column?: Column<TGenerics>\n) {\n return (\n (filterFn && filterFn.autoRemove\n ? filterFn.autoRemove(value, column)\n : false) ||\n typeof value === 'undefined' ||\n (typeof value === 'string' && !value)\n )\n}\n"],"names":["Filters","getDefaultColumn","filterType","getInitialState","columnFilters","globalFilter","undefined","getDefaultOptions","instance","onColumnFiltersChange","makeStateUpdater","onGlobalFilterChange","autoResetColumnFilters","filterFromLeafRows","autoResetGlobalFilter","globalFilterType","getColumnCanGlobalFilterFn","column","value","getCoreRowModel","flatRows","getAllCellsByColumnId","id","createColumn","getFacetInfo","memo","getPreFilteredRows","rows","preFilteredUniqueValues","Map","preFilteredMinMaxValues","values","i","length","has","set","get","key","debug","options","debugAll","debugColumns","getCanColumnFilter","getColumnCanColumnFilter","getCanGlobalFilter","getColumnCanGlobalFilter","getColumnFilterIndex","getIsColumnFiltered","getColumnIsFiltered","getColumnFilterValue","setColumnFilterValue","val","getPreFilteredUniqueValues","getPreFilteredMinMaxValues","getInstance","registered","_notifyFiltersReset","autoResetAll","resetSorting","resetColumnFilters","resetGlobalFilter","getColumnAutoFilterFn","columnId","firstRow","filterTypes","includesString","betweenNumberRange","equals","Array","isArray","arrIncludes","weakEquals","getGlobalAutoFilterFn","getColumnFilterFn","getColumn","userFilterTypes","Error","isFunction","getGlobalFilterFn","setColumnFilters","updater","leafColumns","getAllLeafColumns","updateFn","old","functionalUpdate","filter","find","d","filterFn","shouldAutoRemoveFilter","getState","setGlobalFilter","enableAllFilters","enableColumnFilter","enableFilters","enableColumnFilters","defaultCanFilter","defaultCanColumnFilter","accessorFn","enableGlobalFilter","defaultCanGlobalFilter","findIndex","process","env","NODE_ENV","console","warn","previousfilter","newFilter","newFilterObj","map","initialState","getPreFilteredRowModel","getPreColumnFilteredRowModel","getColumnFilteredRowModel","columnFilterRowsFn","rowModel","columnFiltersFn","columnFilteredRowModel","nonFilteredColumns","forEach","debugTable","getPreGlobalFilteredRowModel","getGlobalFilteredRowModel","globalFilterRowsFn","globalFilterValue","globalFiltersFn","globalFilteredRowModel","onChange","_notifySortingReset","autoRemove"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationType, aggregationTypes } from '../aggregationTypes'\nimport {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n AnyGenerics,\n PartialGenerics,\n Renderable,\n UseRenderer,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n propGetter,\n} from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends PartialGenerics> = (\n leafValues: TGenerics['Row'][],\n childValues: TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationTypes<TGenerics extends PartialGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInAggregationType\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends PartialGenerics> = {\n aggregationType?: AggregationType<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n value: TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n defaultCanGroup?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends PartialGenerics> = {\n aggregationType?: AggregationType<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n}\n\nexport type GroupingCell<TGenerics extends PartialGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | ReturnType<UseRenderer<TGenerics>>\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n autoResetGrouping: boolean\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends PartialGenerics> = {\n aggregationTypes?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n autoResetGrouping?: boolean\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n groupRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type ToggleGroupingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type GroupingInstance<TGenerics extends PartialGenerics> = {\n _notifyGroupingReset: () => void\n getColumnAutoAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n toggleColumnGrouping: (columnId: string) => void\n getColumnCanGroup: (columnId: string) => boolean\n getColumnIsGrouped: (columnId: string) => boolean\n getColumnGroupedIndex: (columnId: string) => number\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n getRowIsGrouped: (rowId: string) => boolean\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping = {\n getDefaultColumn: <\n TGenerics extends PartialGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationType: 'auto',\n }\n },\n\n getInitialState: (): GroupingTableState => {\n return {\n grouping: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n autoResetGrouping: true,\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n aggregationType: column.aggregationType,\n getCanGroup: () => instance.getColumnCanGroup(column.id),\n getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),\n getIsGrouped: () => instance.getColumnIsGrouped(column.id),\n toggleGrouping: () => instance.toggleColumnGrouping(column.id),\n getToggleGroupingProps: userProps =>\n instance.getToggleGroupingProps(column.id, userProps),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyGroupingReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetGrouping\n ) {\n instance.resetGrouping()\n }\n },\n getColumnAutoAggregationFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'number') {\n return aggregationTypes.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationTypes.extent\n }\n\n return aggregationTypes.count\n },\n getColumnAggregationFn: columnId => {\n const column = instance.getColumn(columnId)\n const userAggregationTypes = instance.options.aggregationTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationType)\n ? column.aggregationType\n : column.aggregationType === 'auto'\n ? instance.getColumnAutoFilterFn(columnId)\n : (userAggregationTypes as Record<string, any>)?.[\n column.aggregationType as string\n ] ??\n (aggregationTypes[\n column.aggregationType as BuiltInAggregationType\n ] as AggregationFn<TGenerics>)\n },\n\n setGrouping: updater =>\n instance.options.onGroupingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().grouping)\n ),\n\n toggleColumnGrouping: columnId => {\n instance.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(columnId)) {\n return old.filter(d => d !== columnId)\n }\n\n return [...(old ?? []), columnId]\n })\n },\n\n getColumnCanGroup: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableGrouping ??\n instance.options.enableGrouping ??\n column.defaultCanGroup ??\n !!column.accessorFn\n )\n },\n\n getColumnIsGrouped: columnId => {\n return instance.getState().grouping?.includes(columnId)\n },\n\n getColumnGroupedIndex: columnId =>\n instance.getState().grouping?.indexOf(columnId),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getToggleGroupingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n const canGroup = column.getCanGroup()\n\n const initialProps: ToggleGroupingProps = {\n title: canGroup ? 'Toggle Grouping' : undefined,\n onClick: canGroup\n ? (e: MouseEvent | TouchEvent) => {\n column.toggleGrouping?.()\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: memo(\n () => [\n instance.getState().grouping,\n instance.getSortedRowModel(),\n instance.options.groupRowsFn,\n ],\n (grouping, rowModel, groupRowsFn) => {\n if (!groupRowsFn || !grouping.length) {\n return rowModel\n }\n\n return groupRowsFn(instance, rowModel)\n },\n {\n key: 'getGroupedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => instance.getRowIsGrouped(row.id),\n }\n },\n\n createCell: <TGenerics extends PartialGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n value: cell.value,\n })\n : null\n },\n }\n },\n\n orderColumns: <TGenerics extends PartialGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n ) => {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n },\n}\n"],"names":["Grouping","getDefaultColumn","aggregationType","getInitialState","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","autoResetGrouping","groupedColumnMode","createColumn","column","getCanGroup","getColumnCanGroup","id","getGroupedIndex","getColumnGroupedIndex","getIsGrouped","getColumnIsGrouped","toggleGrouping","toggleColumnGrouping","getToggleGroupingProps","userProps","getInstance","registered","_notifyGroupingReset","options","autoResetAll","resetGrouping","getColumnAutoAggregationFn","columnId","firstRow","getCoreRowModel","flatRows","value","values","aggregationTypes","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","getColumn","userAggregationTypes","Error","isFunction","getColumnAutoFilterFn","setGrouping","updater","functionalUpdate","getState","old","includes","filter","d","enableGrouping","defaultCanGroup","accessorFn","indexOf","initialState","canGroup","initialProps","title","undefined","onClick","e","propGetter","getRowIsGrouped","rowId","getRow","groupingColumnId","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","memo","groupRowsFn","rowModel","length","key","debug","debugAll","debugTable","onChange","_notifyExpandedReset","createRow","row","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":";;;;;;;;;;;;;;;;;AA2IA;IAEaA,QAAQ,GAAG;AACtBC,EAAAA,gBAAgB,EAAE,4BAEmB;AACnC,WAAO;AACLC,MAAAA,eAAe,EAAE;AADZ,KAAP;AAGD,GAPqB;AAStBC,EAAAA,eAAe,EAAE,2BAA0B;AACzC,WAAO;AACLC,MAAAA,QAAQ,EAAE;AADL,KAAP;AAGD,GAbqB;AAetBC,EAAAA,iBAAiB,EAAE,2BACjBC,QADiB,EAEc;AAC/B,WAAO;AACLC,MAAAA,gBAAgB,EAAEC,sBAAgB,CAAC,UAAD,EAAaF,QAAb,CAD7B;AAELG,MAAAA,iBAAiB,EAAE,IAFd;AAGLC,MAAAA,iBAAiB,EAAE;AAHd,KAAP;AAKD,GAvBqB;AAyBtBC,EAAAA,YAAY,EAAE,sBACZC,MADY,EAEZN,QAFY,EAGkB;AAC9B,WAAO;AACLJ,MAAAA,eAAe,EAAEU,MAAM,CAACV,eADnB;AAELW,MAAAA,WAAW,EAAE;AAAA,eAAMP,QAAQ,CAACQ,iBAAT,CAA2BF,MAAM,CAACG,EAAlC,CAAN;AAAA,OAFR;AAGLC,MAAAA,eAAe,EAAE;AAAA,eAAMV,QAAQ,CAACW,qBAAT,CAA+BL,MAAM,CAACG,EAAtC,CAAN;AAAA,OAHZ;AAILG,MAAAA,YAAY,EAAE;AAAA,eAAMZ,QAAQ,CAACa,kBAAT,CAA4BP,MAAM,CAACG,EAAnC,CAAN;AAAA,OAJT;AAKLK,MAAAA,cAAc,EAAE;AAAA,eAAMd,QAAQ,CAACe,oBAAT,CAA8BT,MAAM,CAACG,EAArC,CAAN;AAAA,OALX;AAMLO,MAAAA,sBAAsB,EAAE,gCAAAC,SAAS;AAAA,eAC/BjB,QAAQ,CAACgB,sBAAT,CAAgCV,MAAM,CAACG,EAAvC,EAA2CQ,SAA3C,CAD+B;AAAA;AAN5B,KAAP;AASD,GAtCqB;AAwCtBC,EAAAA,WAAW,EAAE,qBACXlB,QADW,EAEqB;AAChC,QAAImB,UAAU,GAAG,KAAjB;AAEA,WAAO;AACLC,MAAAA,oBAAoB,EAAE,gCAAM;AAC1B,YAAI,CAACD,UAAL,EAAiB;AACfA,UAAAA,UAAU,GAAG,IAAb;AACA;AACD;;AAED,YAAInB,QAAQ,CAACqB,OAAT,CAAiBC,YAAjB,KAAkC,KAAtC,EAA6C;AAC3C;AACD;;AAED,YACEtB,QAAQ,CAACqB,OAAT,CAAiBC,YAAjB,KAAkC,IAAlC,IACAtB,QAAQ,CAACqB,OAAT,CAAiBlB,iBAFnB,EAGE;AACAH,UAAAA,QAAQ,CAACuB,aAAT;AACD;AACF,OAjBI;AAkBLC,MAAAA,0BAA0B,EAAE,oCAAAC,QAAQ,EAAI;AACtC,YAAMC,QAAQ,GAAG1B,QAAQ,CAAC2B,eAAT,GAA2BC,QAA3B,CAAoC,CAApC,CAAjB;AAEA,YAAMC,KAAK,GAAGH,QAAH,oBAAGA,QAAQ,CAAEI,MAAV,CAAiBL,QAAjB,CAAd;;AAEA,YAAI,OAAOI,KAAP,KAAiB,QAArB,EAA+B;AAC7B,iBAAOE,iCAAgB,CAACC,GAAxB;AACD;;AAED,YAAIC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BP,KAA/B,MAA0C,eAA9C,EAA+D;AAC7D,iBAAOE,iCAAgB,CAACM,MAAxB;AACD;;AAED,eAAON,iCAAgB,CAACO,KAAxB;AACD,OAhCI;AAiCLC,MAAAA,sBAAsB,EAAE,gCAAAd,QAAQ,EAAI;AAAA;;AAClC,YAAMnB,MAAM,GAAGN,QAAQ,CAACwC,SAAT,CAAmBf,QAAnB,CAAf;AACA,YAAMgB,oBAAoB,GAAGzC,QAAQ,CAACqB,OAAT,CAAiBU,gBAA9C;;AAEA,YAAI,CAACzB,MAAL,EAAa;AACX,gBAAM,IAAIoC,KAAJ,EAAN;AACD;;AAED,eAAOC,gBAAU,CAACrC,MAAM,CAACV,eAAR,CAAV,GACHU,MAAM,CAACV,eADJ,GAEHU,MAAM,CAACV,eAAP,KAA2B,MAA3B,GACAI,QAAQ,CAAC4C,qBAAT,CAA+BnB,QAA/B,CADA,WAECgB,oBAFD,oBAECA,oBAAD,CACEnC,MAAM,CAACV,eADT,CAFA,mBAKCmC,iCAAgB,CACfzB,MAAM,CAACV,eADQ,CAPrB;AAUD,OAnDI;AAqDLiD,MAAAA,WAAW,EAAE,qBAAAC,OAAO;AAAA,eAClB9C,QAAQ,CAACqB,OAAT,CAAiBpB,gBADC,oBAClBD,QAAQ,CAACqB,OAAT,CAAiBpB,gBAAjB,CACE6C,OADF,EAEEC,sBAAgB,CAACD,OAAD,EAAU9C,QAAQ,CAACgD,QAAT,GAAoBlD,QAA9B,CAFlB,CADkB;AAAA,OArDf;AA2DLiB,MAAAA,oBAAoB,EAAE,8BAAAU,QAAQ,EAAI;AAChCzB,QAAAA,QAAQ,CAAC6C,WAAT,CAAqB,UAAAI,GAAG,EAAI;AAC1B;AACA,cAAIA,GAAJ,YAAIA,GAAG,CAAEC,QAAL,CAAczB,QAAd,CAAJ,EAA6B;AAC3B,mBAAOwB,GAAG,CAACE,MAAJ,CAAW,UAAAC,CAAC;AAAA,qBAAIA,CAAC,KAAK3B,QAAV;AAAA,aAAZ,CAAP;AACD;;AAED,2BAAYwB,GAAZ,WAAYA,GAAZ,GAAmB,EAAnB,GAAwBxB,QAAxB;AACD,SAPD;AAQD,OApEI;AAsELjB,MAAAA,iBAAiB,EAAE,2BAAAiB,QAAQ,EAAI;AAAA;;AAC7B,YAAMnB,MAAM,GAAGN,QAAQ,CAACwC,SAAT,CAAmBf,QAAnB,CAAf;;AAEA,YAAI,CAACnB,MAAL,EAAa;AACX,gBAAM,IAAIoC,KAAJ,EAAN;AACD;;AAED,0DACEpC,MAAM,CAAC+C,cADT,oCAEErD,QAAQ,CAACqB,OAAT,CAAiBgC,cAFnB,oBAGE/C,MAAM,CAACgD,eAHT,oBAIE,CAAC,CAAChD,MAAM,CAACiD,UAJX;AAMD,OAnFI;AAqFL1C,MAAAA,kBAAkB,EAAE,4BAAAY,QAAQ,EAAI;AAAA;;AAC9B,wCAAOzB,QAAQ,CAACgD,QAAT,GAAoBlD,QAA3B,qBAAO,sBAA8BoD,QAA9B,CAAuCzB,QAAvC,CAAP;AACD,OAvFI;AAyFLd,MAAAA,qBAAqB,EAAE,+BAAAc,QAAQ;AAAA;;AAAA,yCAC7BzB,QAAQ,CAACgD,QAAT,GAAoBlD,QADS,qBAC7B,uBAA8B0D,OAA9B,CAAsC/B,QAAtC,CAD6B;AAAA,OAzF1B;AA4FLF,MAAAA,aAAa,EAAE,yBAAM;AAAA;;AACnBvB,QAAAA,QAAQ,CAAC6C,WAAT,oDAAqB7C,QAAQ,CAACyD,YAA9B,qBAAqB,uBAAuB3D,QAA5C,oCAAwD,EAAxD;AACD,OA9FI;AAgGLkB,MAAAA,sBAAsB,EAAE,gCAACS,QAAD,EAAWR,SAAX,EAAyB;AAC/C,YAAMX,MAAM,GAAGN,QAAQ,CAACwC,SAAT,CAAmBf,QAAnB,CAAf;AAEA,YAAMiC,QAAQ,GAAGpD,MAAM,CAACC,WAAP,EAAjB;AAEA,YAAMoD,YAAiC,GAAG;AACxCC,UAAAA,KAAK,EAAEF,QAAQ,GAAG,iBAAH,GAAuBG,SADE;AAExCC,UAAAA,OAAO,EAAEJ,QAAQ,GACb,UAACK,CAAD,EAAgC;AAC9BzD,YAAAA,MAAM,CAACQ,cAAP,oBAAAR,MAAM,CAACQ,cAAP;AACD,WAHY,GAIb+C;AANoC,SAA1C;AASA,eAAOG,gBAAU,CAACL,YAAD,EAAe1C,SAAf,CAAjB;AACD,OA/GI;AAiHLgD,MAAAA,eAAe,EAAE,yBAAAC,KAAK;AAAA;;AAAA,eAAI,CAAC,sBAAClE,QAAQ,CAACmE,MAAT,CAAgBD,KAAhB,CAAD,aAAC,iBAAwBE,gBAAzB,CAAL;AAAA,OAjHjB;AAmHLC,MAAAA,qBAAqB,EAAE;AAAA,eAAMrE,QAAQ,CAACsE,iBAAT,EAAN;AAAA,OAnHlB;AAoHLC,MAAAA,kBAAkB,EAAEC,UAAI,CACtB;AAAA,eAAM,CACJxE,QAAQ,CAACgD,QAAT,GAAoBlD,QADhB,EAEJE,QAAQ,CAACsE,iBAAT,EAFI,EAGJtE,QAAQ,CAACqB,OAAT,CAAiBoD,WAHb,CAAN;AAAA,OADsB,EAMtB,UAAC3E,QAAD,EAAW4E,QAAX,EAAqBD,WAArB,EAAqC;AACnC,YAAI,CAACA,WAAD,IAAgB,CAAC3E,QAAQ,CAAC6E,MAA9B,EAAsC;AACpC,iBAAOD,QAAP;AACD;;AAED,eAAOD,WAAW,CAACzE,QAAD,EAAW0E,QAAX,CAAlB;AACD,OAZqB,EAatB;AACEE,QAAAA,GAAG,EAAE,oBADP;AAEEC,QAAAA,KAAK,EAAE;AAAA;;AAAA,0CAAM7E,QAAQ,CAACqB,OAAT,CAAiByD,QAAvB,oCAAmC9E,QAAQ,CAACqB,OAAT,CAAiB0D,UAApD;AAAA,SAFT;AAGEC,QAAAA,QAAQ,EAAE;AAAA,iBAAMhF,QAAQ,CAACiF,oBAAT,EAAN;AAAA;AAHZ,OAbsB;AApHnB,KAAP;AAwID,GArLqB;AAuLtBC,EAAAA,SAAS,EAAE,mBACTC,GADS,EAETnF,QAFS,EAGO;AAChB,WAAO;AACLY,MAAAA,YAAY,EAAE;AAAA,eAAMZ,QAAQ,CAACiE,eAAT,CAAyBkB,GAAG,CAAC1E,EAA7B,CAAN;AAAA;AADT,KAAP;AAGD,GA9LqB;AAgMtB2E,EAAAA,UAAU,EAAE,oBACVC,IADU,EAEV/E,MAFU,EAGV6E,GAHU,EAIVnF,QAJU,EAKkB;AAC5B,WAAO;AACLY,MAAAA,YAAY,EAAE;AAAA,eACZN,MAAM,CAACM,YAAP,MAAyBN,MAAM,CAACG,EAAP,KAAc0E,GAAG,CAACf,gBAD/B;AAAA,OADT;AAGLkB,MAAAA,gBAAgB,EAAE;AAAA,eAAM,CAACD,IAAI,CAACzE,YAAL,EAAD,IAAwBN,MAAM,CAACM,YAAP,EAA9B;AAAA,OAHb;AAIL2E,MAAAA,eAAe,EAAE;AAAA;;AAAA,eACf,CAACF,IAAI,CAACzE,YAAL,EAAD,IACA,CAACyE,IAAI,CAACC,gBAAL,EADD,IAEA,iBAAAH,GAAG,CAACK,OAAJ,kCAAab,MAAb,IAAsB,CAHP;AAAA,OAJZ;AAQLc,MAAAA,oBAAoB,EAAE,gCAAM;AAAA;;AAC1B,YAAMC,QAAQ,4BAAGpF,MAAM,CAACqF,cAAV,oCAA4BrF,MAAM,CAAC+E,IAAjD;AAEA,eAAOK,QAAQ,GACX1F,QAAQ,CAAC4F,MAAT,CAAgBF,QAAhB,EAA0B;AACxB1F,UAAAA,QAAQ,EAARA,QADwB;AAExBM,UAAAA,MAAM,EAANA,MAFwB;AAGxB6E,UAAAA,GAAG,EAAHA,GAHwB;AAIxBE,UAAAA,IAAI,EAAJA,IAJwB;AAKxBxD,UAAAA,KAAK,EAAEwD,IAAI,CAACxD;AALY,SAA1B,CADW,GAQX,IARJ;AASD;AApBI,KAAP;AAsBD,GA5NqB;AA8NtBgE,EAAAA,YAAY,EAAE,sBACZC,WADY,EAEZhG,QAFY,EAGZM,iBAHY,EAIT;AACH,QAAI,EAACN,QAAD,YAACA,QAAQ,CAAE6E,MAAX,KAAqB,CAACvE,iBAA1B,EAA6C;AAC3C,aAAO0F,WAAP;AACD;;AAED,QAAMC,kBAAkB,GAAGD,WAAW,CAAC3C,MAAZ,CACzB,UAAA6C,GAAG;AAAA,aAAI,CAAClG,QAAQ,CAACoD,QAAT,CAAkB8C,GAAG,CAACvF,EAAtB,CAAL;AAAA,KADsB,CAA3B;;AAIA,QAAIL,iBAAiB,KAAK,QAA1B,EAAoC;AAClC,aAAO2F,kBAAP;AACD;;AAED,QAAME,eAAe,GAAGnG,QAAQ,CAC7BoG,GADqB,CACjB,UAAAC,CAAC;AAAA,aAAIL,WAAW,CAACM,IAAZ,CAAiB,UAAAJ,GAAG;AAAA,eAAIA,GAAG,CAACvF,EAAJ,KAAW0F,CAAf;AAAA,OAApB,CAAJ;AAAA,KADgB,EAErBhD,MAFqB,CAEdkD,OAFc,CAAxB;AAIA,qBAAWJ,eAAX,EAA+BF,kBAA/B;AACD;AApPqB;;;;"}
1
+ {"version":3,"file":"Grouping.js","sources":["../../../src/features/Grouping.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { BuiltInAggregationType, aggregationTypes } from '../aggregationTypes'\nimport {\n Cell,\n Column,\n Getter,\n OnChangeFn,\n PropGetterValue,\n TableInstance,\n Row,\n Updater,\n AnyGenerics,\n PartialGenerics,\n Renderable,\n UseRenderer,\n} from '../types'\nimport {\n functionalUpdate,\n isFunction,\n makeStateUpdater,\n memo,\n Overwrite,\n propGetter,\n} from '../utils'\n\nexport type GroupingState = string[]\n\nexport type AggregationFn<TGenerics extends PartialGenerics> = (\n getLeafValues: () => TGenerics['Row'][],\n getChildValues: () => TGenerics['Row'][]\n) => any\n\nexport type CustomAggregationTypes<TGenerics extends PartialGenerics> = Record<\n string,\n AggregationFn<TGenerics>\n>\n\nexport type AggregationType<TGenerics extends PartialGenerics> =\n | 'auto'\n | BuiltInAggregationType\n | keyof TGenerics['AggregationFns']\n | AggregationFn<TGenerics>\n\nexport type GroupingTableState = {\n grouping: GroupingState\n}\n\nexport type GroupingColumnDef<TGenerics extends PartialGenerics> = {\n aggregationType?: AggregationType<Overwrite<TGenerics, { Value: any }>>\n aggregateValue?: (columnValue: unknown) => any\n aggregatedCell?: Renderable<\n TGenerics,\n {\n instance: TableInstance<TGenerics>\n row: Row<TGenerics>\n column: Column<TGenerics>\n cell: Cell<TGenerics>\n value: TGenerics['Value']\n }\n >\n enableGrouping?: boolean\n defaultCanGroup?: boolean\n}\n\nexport type GroupingColumn<TGenerics extends PartialGenerics> = {\n aggregationType?: AggregationType<Overwrite<TGenerics, { Value: any }>>\n getCanGroup: () => boolean\n getIsGrouped: () => boolean\n getGroupedIndex: () => number\n toggleGrouping: () => void\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n}\n\nexport type GroupingRow = {\n groupingColumnId?: string\n groupingValue?: any\n getIsGrouped: () => boolean\n}\n\nexport type GroupingCell<TGenerics extends PartialGenerics> = {\n getIsGrouped: () => boolean\n getIsPlaceholder: () => boolean\n getIsAggregated: () => boolean\n renderAggregatedCell: () => string | null | ReturnType<UseRenderer<TGenerics>>\n}\n\nexport type ColumnDefaultOptions = {\n // Column\n onGroupingChange: OnChangeFn<GroupingState>\n autoResetGrouping: boolean\n enableGrouping: boolean\n}\n\nexport type GroupingOptions<TGenerics extends PartialGenerics> = {\n aggregationTypes?: TGenerics['AggregationFns']\n onGroupingChange?: OnChangeFn<GroupingState>\n autoResetGrouping?: boolean\n enableGrouping?: boolean\n enableGroupingRemoval?: boolean\n groupRowsFn?: (\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n ) => RowModel<TGenerics>\n\n groupedColumnMode?: false | 'reorder' | 'remove'\n}\n\nexport type GroupingColumnMode = false | 'reorder' | 'remove'\n\nexport type ToggleGroupingProps = {\n title?: string\n onClick?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport type GroupingInstance<TGenerics extends PartialGenerics> = {\n _notifyGroupingReset: () => void\n getColumnAutoAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n getColumnAggregationFn: (\n columnId: string\n ) => AggregationFn<TGenerics> | undefined\n setGrouping: (updater: Updater<GroupingState>) => void\n resetGrouping: () => void\n toggleColumnGrouping: (columnId: string) => void\n getColumnCanGroup: (columnId: string) => boolean\n getColumnIsGrouped: (columnId: string) => boolean\n getColumnGroupedIndex: (columnId: string) => number\n getToggleGroupingProps: <TGetter extends Getter<ToggleGroupingProps>>(\n columnId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleGroupingProps, TGetter>\n getRowIsGrouped: (rowId: string) => boolean\n getPreGroupedRowModel: () => RowModel<TGenerics>\n getGroupedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const Grouping = {\n getDefaultColumn: <\n TGenerics extends PartialGenerics\n >(): GroupingColumnDef<TGenerics> => {\n return {\n aggregationType: 'auto',\n }\n },\n\n getInitialState: (): GroupingTableState => {\n return {\n grouping: [],\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingOptions<TGenerics> => {\n return {\n onGroupingChange: makeStateUpdater('grouping', instance),\n autoResetGrouping: true,\n groupedColumnMode: 'reorder',\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingColumn<TGenerics> => {\n return {\n aggregationType: column.aggregationType,\n getCanGroup: () => instance.getColumnCanGroup(column.id),\n getGroupedIndex: () => instance.getColumnGroupedIndex(column.id),\n getIsGrouped: () => instance.getColumnIsGrouped(column.id),\n toggleGrouping: () => instance.toggleColumnGrouping(column.id),\n getToggleGroupingProps: userProps =>\n instance.getToggleGroupingProps(column.id, userProps),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): GroupingInstance<TGenerics> => {\n let registered = false\n\n return {\n _notifyGroupingReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetGrouping\n ) {\n instance.resetGrouping()\n }\n },\n getColumnAutoAggregationFn: columnId => {\n const firstRow = instance.getCoreRowModel().flatRows[0]\n\n const value = firstRow?.values[columnId]\n\n if (typeof value === 'number') {\n return aggregationTypes.sum\n }\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationTypes.extent\n }\n\n return aggregationTypes.count\n },\n getColumnAggregationFn: columnId => {\n const column = instance.getColumn(columnId)\n const userAggregationTypes = instance.options.aggregationTypes\n\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.aggregationType)\n ? column.aggregationType\n : column.aggregationType === 'auto'\n ? instance.getColumnAutoFilterFn(columnId)\n : (userAggregationTypes as Record<string, any>)?.[\n column.aggregationType as string\n ] ??\n (aggregationTypes[\n column.aggregationType as BuiltInAggregationType\n ] as AggregationFn<TGenerics>)\n },\n\n setGrouping: updater =>\n instance.options.onGroupingChange?.(\n updater,\n functionalUpdate(updater, instance.getState().grouping)\n ),\n\n toggleColumnGrouping: columnId => {\n instance.setGrouping(old => {\n // Find any existing grouping for this column\n if (old?.includes(columnId)) {\n return old.filter(d => d !== columnId)\n }\n\n return [...(old ?? []), columnId]\n })\n },\n\n getColumnCanGroup: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n return (\n column.enableGrouping ??\n instance.options.enableGrouping ??\n column.defaultCanGroup ??\n !!column.accessorFn\n )\n },\n\n getColumnIsGrouped: columnId => {\n return instance.getState().grouping?.includes(columnId)\n },\n\n getColumnGroupedIndex: columnId =>\n instance.getState().grouping?.indexOf(columnId),\n\n resetGrouping: () => {\n instance.setGrouping(instance.initialState?.grouping ?? [])\n },\n\n getToggleGroupingProps: (columnId, userProps) => {\n const column = instance.getColumn(columnId)\n\n const canGroup = column.getCanGroup()\n\n const initialProps: ToggleGroupingProps = {\n title: canGroup ? 'Toggle Grouping' : undefined,\n onClick: canGroup\n ? (e: MouseEvent | TouchEvent) => {\n column.toggleGrouping?.()\n }\n : undefined,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getRowIsGrouped: rowId => !!instance.getRow(rowId)?.groupingColumnId,\n\n getPreGroupedRowModel: () => instance.getSortedRowModel(),\n getGroupedRowModel: memo(\n () => [\n instance.getState().grouping,\n instance.getSortedRowModel(),\n instance.options.groupRowsFn,\n ],\n (grouping, rowModel, groupRowsFn) => {\n if (!groupRowsFn || !grouping.length) {\n return rowModel\n }\n\n return groupRowsFn(instance, rowModel)\n },\n {\n key: 'getGroupedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingRow => {\n return {\n getIsGrouped: () => instance.getRowIsGrouped(row.id),\n }\n },\n\n createCell: <TGenerics extends PartialGenerics>(\n cell: Cell<TGenerics>,\n column: Column<TGenerics>,\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): GroupingCell<TGenerics> => {\n return {\n getIsGrouped: () =>\n column.getIsGrouped() && column.id === row.groupingColumnId,\n getIsPlaceholder: () => !cell.getIsGrouped() && column.getIsGrouped(),\n getIsAggregated: () =>\n !cell.getIsGrouped() &&\n !cell.getIsPlaceholder() &&\n row.subRows?.length > 1,\n renderAggregatedCell: () => {\n const template = column.aggregatedCell ?? column.cell\n\n return template\n ? instance.render(template, {\n instance,\n column,\n row,\n cell,\n value: cell.value,\n })\n : null\n },\n }\n },\n\n orderColumns: <TGenerics extends PartialGenerics>(\n leafColumns: Column<TGenerics>[],\n grouping: string[],\n groupedColumnMode?: GroupingColumnMode\n ) => {\n if (!grouping?.length || !groupedColumnMode) {\n return leafColumns\n }\n\n const nonGroupingColumns = leafColumns.filter(\n col => !grouping.includes(col.id)\n )\n\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns\n }\n\n const groupingColumns = grouping\n .map(g => leafColumns.find(col => col.id === g)!)\n .filter(Boolean)\n\n return [...groupingColumns, ...nonGroupingColumns]\n },\n}\n"],"names":["Grouping","getDefaultColumn","aggregationType","getInitialState","grouping","getDefaultOptions","instance","onGroupingChange","makeStateUpdater","autoResetGrouping","groupedColumnMode","createColumn","column","getCanGroup","getColumnCanGroup","id","getGroupedIndex","getColumnGroupedIndex","getIsGrouped","getColumnIsGrouped","toggleGrouping","toggleColumnGrouping","getToggleGroupingProps","userProps","getInstance","registered","_notifyGroupingReset","options","autoResetAll","resetGrouping","getColumnAutoAggregationFn","columnId","firstRow","getCoreRowModel","flatRows","value","values","aggregationTypes","sum","Object","prototype","toString","call","extent","count","getColumnAggregationFn","getColumn","userAggregationTypes","Error","isFunction","getColumnAutoFilterFn","setGrouping","updater","functionalUpdate","getState","old","includes","filter","d","enableGrouping","defaultCanGroup","accessorFn","indexOf","initialState","canGroup","initialProps","title","undefined","onClick","e","propGetter","getRowIsGrouped","rowId","getRow","groupingColumnId","getPreGroupedRowModel","getSortedRowModel","getGroupedRowModel","memo","groupRowsFn","rowModel","length","key","debug","debugAll","debugTable","onChange","_notifyExpandedReset","createRow","row","createCell","cell","getIsPlaceholder","getIsAggregated","subRows","renderAggregatedCell","template","aggregatedCell","render","orderColumns","leafColumns","nonGroupingColumns","col","groupingColumns","map","g","find","Boolean"],"mappings":"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"}
@@ -139,6 +139,12 @@ var Pinning = {
139
139
 
140
140
  var position = instance.getColumnIsPinned(columnId);
141
141
  return position ? (_instance$getState$co2 = (_instance$getState$co3 = instance.getState().columnPinning) == null ? void 0 : (_instance$getState$co4 = _instance$getState$co3[position]) == null ? void 0 : _instance$getState$co4.indexOf(columnId)) != null ? _instance$getState$co2 : -1 : 0;
142
+ },
143
+ getIsSomeColumnsPinned: function getIsSomeColumnsPinned() {
144
+ var _instance$getState$co5 = instance.getState().columnPinning,
145
+ left = _instance$getState$co5.left,
146
+ right = _instance$getState$co5.right;
147
+ return Boolean((left == null ? void 0 : left.length) || (right == null ? void 0 : right.length));
142
148
  }
143
149
  };
144
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Pinning.js","sources":["../../../src/features/Pinning.ts"],"sourcesContent":["import {\n OnChangeFn,\n Updater,\n TableInstance,\n Column,\n AnyGenerics,\n PartialGenerics,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater } from '../utils'\n\ntype ColumnPinningPosition = false | 'left' | 'right'\n\nexport type ColumnPinningState = {\n left?: string[]\n right?: string[]\n}\n\nexport type ColumnPinningTableState = {\n columnPinning: ColumnPinningState\n}\n\nexport type ColumnPinningOptions = {\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n enablePinning?: boolean\n}\n\nexport type ColumnPinningDefaultOptions = {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport type ColumnPinningColumnDef = {\n enablePinning?: boolean\n defaultCanPin?: boolean\n}\n\nexport type ColumnPinningColumn = {\n getCanPin: () => boolean\n getPinnedIndex: () => number\n getIsPinned: () => ColumnPinningPosition\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport type ColumnPinningInstance<TGenerics extends PartialGenerics> = {\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n resetColumnPinning: () => void\n pinColumn: (columnId: string, position: ColumnPinningPosition) => void\n getColumnCanPin: (columnId: string) => boolean\n getColumnIsPinned: (columnId: string) => ColumnPinningPosition\n getColumnPinnedIndex: (columnId: string) => number\n}\n\n//\n\nexport const Pinning = {\n getInitialState: (): ColumnPinningTableState => {\n return {\n columnPinning: {\n left: [],\n right: [],\n },\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnPinningDefaultOptions => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', instance),\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ColumnPinningColumn => {\n return {\n getCanPin: () => instance.getColumnCanPin(column.id),\n getPinnedIndex: () => instance.getColumnPinnedIndex(column.id),\n getIsPinned: () => instance.getColumnIsPinned(column.id),\n pin: position => instance.pinColumn(column.id, position),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnPinningInstance<TGenerics> => {\n return {\n setColumnPinning: updater =>\n instance.options.onColumnPinningChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnPinning)\n ),\n\n resetColumnPinning: () =>\n instance.setColumnPinning(instance.initialState?.columnPinning ?? {}),\n\n pinColumn: (columnId, position) => {\n const column = instance.getColumn(columnId)\n\n const columnIds = column\n ?.getLeafColumns()\n .map(d => d.id)\n .filter(Boolean) as string[]\n\n instance.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === 'left') {\n return {\n left: [\n ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n })\n },\n\n getColumnCanPin: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n d =>\n d.enablePinning ??\n instance.options.enablePinning ??\n d.defaultCanPin ??\n !!d.accessorFn\n )\n },\n\n getColumnIsPinned: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumnIds = column.getLeafColumns().map(d => d.id)\n\n const { left, right } = instance.getState().columnPinning\n\n const isLeft = leafColumnIds.some(d => left?.includes(d))\n const isRight = leafColumnIds.some(d => right?.includes(d))\n\n return isLeft ? 'left' : isRight ? 'right' : false\n },\n\n getColumnPinnedIndex: columnId => {\n const position = instance.getColumnIsPinned(columnId)\n\n return position\n ? instance.getState().columnPinning?.[position]?.indexOf(columnId) ??\n -1\n : 0\n },\n }\n },\n}\n"],"names":["Pinning","getInitialState","columnPinning","left","right","getDefaultOptions","instance","onColumnPinningChange","makeStateUpdater","createColumn","column","getCanPin","getColumnCanPin","id","getPinnedIndex","getColumnPinnedIndex","getIsPinned","getColumnIsPinned","pin","position","pinColumn","getInstance","setColumnPinning","updater","options","functionalUpdate","getState","resetColumnPinning","initialState","columnId","getColumn","columnIds","getLeafColumns","map","d","filter","Boolean","old","includes","Error","leafColumns","some","enablePinning","defaultCanPin","accessorFn","leafColumnIds","isLeft","isRight","indexOf"],"mappings":"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"}
1
+ {"version":3,"file":"Pinning.js","sources":["../../../src/features/Pinning.ts"],"sourcesContent":["import {\n OnChangeFn,\n Updater,\n TableInstance,\n Column,\n AnyGenerics,\n PartialGenerics,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater } from '../utils'\n\ntype ColumnPinningPosition = false | 'left' | 'right'\n\nexport type ColumnPinningState = {\n left?: string[]\n right?: string[]\n}\n\nexport type ColumnPinningTableState = {\n columnPinning: ColumnPinningState\n}\n\nexport type ColumnPinningOptions = {\n onColumnPinningChange?: OnChangeFn<ColumnPinningState>\n enablePinning?: boolean\n}\n\nexport type ColumnPinningDefaultOptions = {\n onColumnPinningChange: OnChangeFn<ColumnPinningState>\n}\n\nexport type ColumnPinningColumnDef = {\n enablePinning?: boolean\n defaultCanPin?: boolean\n}\n\nexport type ColumnPinningColumn = {\n getCanPin: () => boolean\n getPinnedIndex: () => number\n getIsPinned: () => ColumnPinningPosition\n pin: (position: ColumnPinningPosition) => void\n}\n\nexport type ColumnPinningInstance<TGenerics extends PartialGenerics> = {\n setColumnPinning: (updater: Updater<ColumnPinningState>) => void\n resetColumnPinning: () => void\n pinColumn: (columnId: string, position: ColumnPinningPosition) => void\n getColumnCanPin: (columnId: string) => boolean\n getColumnIsPinned: (columnId: string) => ColumnPinningPosition\n getColumnPinnedIndex: (columnId: string) => number\n getIsSomeColumnsPinned: () => boolean\n}\n\n//\n\nexport const Pinning = {\n getInitialState: (): ColumnPinningTableState => {\n return {\n columnPinning: {\n left: [],\n right: [],\n },\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnPinningDefaultOptions => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', instance),\n }\n },\n\n createColumn: <TGenerics extends PartialGenerics>(\n column: Column<TGenerics>,\n instance: TableInstance<TGenerics>\n ): ColumnPinningColumn => {\n return {\n getCanPin: () => instance.getColumnCanPin(column.id),\n getPinnedIndex: () => instance.getColumnPinnedIndex(column.id),\n getIsPinned: () => instance.getColumnIsPinned(column.id),\n pin: position => instance.pinColumn(column.id, position),\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): ColumnPinningInstance<TGenerics> => {\n return {\n setColumnPinning: updater =>\n instance.options.onColumnPinningChange?.(\n updater,\n functionalUpdate(updater, instance.getState().columnPinning)\n ),\n\n resetColumnPinning: () =>\n instance.setColumnPinning(instance.initialState?.columnPinning ?? {}),\n\n pinColumn: (columnId, position) => {\n const column = instance.getColumn(columnId)\n\n const columnIds = column\n ?.getLeafColumns()\n .map(d => d.id)\n .filter(Boolean) as string[]\n\n instance.setColumnPinning(old => {\n if (position === 'right') {\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: [\n ...(old?.right ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n }\n }\n\n if (position === 'left') {\n return {\n left: [\n ...(old?.left ?? []).filter(d => !columnIds?.includes(d)),\n ...columnIds,\n ],\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n }\n\n return {\n left: (old?.left ?? []).filter(d => !columnIds?.includes(d)),\n right: (old?.right ?? []).filter(d => !columnIds?.includes(d)),\n }\n })\n },\n\n getColumnCanPin: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumns = column.getLeafColumns()\n\n return leafColumns.some(\n d =>\n d.enablePinning ??\n instance.options.enablePinning ??\n d.defaultCanPin ??\n !!d.accessorFn\n )\n },\n\n getColumnIsPinned: columnId => {\n const column = instance.getColumn(columnId)\n\n if (!column) {\n throw new Error()\n }\n\n const leafColumnIds = column.getLeafColumns().map(d => d.id)\n\n const { left, right } = instance.getState().columnPinning\n\n const isLeft = leafColumnIds.some(d => left?.includes(d))\n const isRight = leafColumnIds.some(d => right?.includes(d))\n\n return isLeft ? 'left' : isRight ? 'right' : false\n },\n\n getColumnPinnedIndex: columnId => {\n const position = instance.getColumnIsPinned(columnId)\n\n return position\n ? instance.getState().columnPinning?.[position]?.indexOf(columnId) ??\n -1\n : 0\n },\n\n getIsSomeColumnsPinned: () => {\n const { left, right } = instance.getState().columnPinning\n\n return Boolean(left?.length || right?.length)\n },\n }\n },\n}\n"],"names":["Pinning","getInitialState","columnPinning","left","right","getDefaultOptions","instance","onColumnPinningChange","makeStateUpdater","createColumn","column","getCanPin","getColumnCanPin","id","getPinnedIndex","getColumnPinnedIndex","getIsPinned","getColumnIsPinned","pin","position","pinColumn","getInstance","setColumnPinning","updater","options","functionalUpdate","getState","resetColumnPinning","initialState","columnId","getColumn","columnIds","getLeafColumns","map","d","filter","Boolean","old","includes","Error","leafColumns","some","enablePinning","defaultCanPin","accessorFn","leafColumnIds","isLeft","isRight","indexOf","getIsSomeColumnsPinned","length"],"mappings":"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"}
@@ -62,10 +62,10 @@ var RowSelection = {
62
62
  },
63
63
  toggleAllRowsSelected: function toggleAllRowsSelected(value) {
64
64
  instance.setRowSelection(function (old) {
65
- value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected(); // Only remove/add the rows that are visible on the screen
66
- // Leave all the other rows that are selected alone.
65
+ value = typeof value !== 'undefined' ? value : !instance.getIsAllRowsSelected();
66
+
67
+ var rowSelection = _rollupPluginBabelHelpers["extends"]({}, old);
67
68
 
68
- var rowSelection = Object.assign({}, old);
69
69
  var preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows; // We don't use `mutateRowIsSelected` here for performance reasons.
70
70
  // All of the rows are flat already, so it wouldn't be worth it
71
71
 
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import {\n Getter,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n RowModel,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TGenerics extends PartialGenerics> = {\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n autoResetRowSelection?: boolean\n enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TGenerics>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: MouseEvent | TouchEvent) => boolean\n // isInclusiveSelectEvent?: (e: MouseEvent | TouchEvent) => boolean\n // selectRowsFn?: (\n // instance: TableInstance<\n // TData,\n // TValue,\n // TFilterFns,\n // TSortingFns,\n // TAggregationFns\n // >,\n // rowModel: RowModel<TGenerics>\n // ) => RowModel<TGenerics>\n}\n\ntype ToggleRowSelectedProps = {\n onChange?: (e: MouseEvent | TouchEvent) => void\n checked?: boolean\n title?: string\n indeterminate?: boolean\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n}\n\nexport type RowSelectionInstance<TGenerics extends PartialGenerics> = {\n _notifyRowSelectionReset: () => void\n getToggleRowSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllPageRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: () => void\n toggleRowSelected: (rowId: string, value?: boolean) => void\n getRowCanSelect: (rowId: string) => boolean\n getRowCanSelectSubRows: (rowId: string) => boolean\n getRowCanMultiSelect: (rowId: string) => boolean\n // getGroupingRowCanSelect: (rowId: string) => boolean\n getRowIsSelected: (rowId: string) => boolean\n getRowIsSomeSelected: (rowId: string) => boolean\n getIsAllRowsSelected: () => boolean\n getIsAllPageRowsSelected: () => boolean\n getIsSomeRowsSelected: () => boolean\n getIsSomePageRowsSelected: () => boolean\n toggleAllRowsSelected: (value: boolean) => void\n toggleAllPageRowsSelected: (value: boolean) => void\n getPreSelectedRowModel: () => RowModel<TGenerics>\n getSelectedRowModel: () => RowModel<TGenerics>\n getFilteredSelectedRowModel: () => RowModel<TGenerics>\n getGroupedSelectedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const RowSelection = {\n getInitialState: (): RowSelectionTableState => {\n return {\n rowSelection: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionOptions<TGenerics> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', instance),\n autoResetRowSelection: true,\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.shiftKey,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionInstance<TGenerics> => {\n let registered = false\n\n // const pageRows = instance.getPageRows()\n\n return {\n _notifyRowSelectionReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetRowSelection\n ) {\n instance.resetRowSelection()\n }\n },\n setRowSelection: updater =>\n instance.options.onRowSelectionChange?.(\n updater,\n functionalUpdate(updater, instance.getState().rowSelection)\n ),\n resetRowSelection: () =>\n instance.setRowSelection(instance.initialState.rowSelection ?? {}),\n toggleAllRowsSelected: value => {\n instance.setRowSelection(old => {\n value =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllRowsSelected()\n\n // Only remove/add the rows that are visible on the screen\n // Leave all the other rows that are selected alone.\n const rowSelection = Object.assign({}, old)\n\n const preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n },\n toggleAllPageRowsSelected: value =>\n instance.setRowSelection(old => {\n const selectAll =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n instance.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, value, instance)\n })\n\n return rowSelection\n }),\n toggleRowSelected: (rowId, value) => {\n const row = instance.getRow(rowId)\n const isSelected = row.getIsSelected()\n\n instance.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(selectedRowIds, rowId, value, instance)\n\n return selectedRowIds\n })\n },\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = instance\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // instance.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // instance.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => instance.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [\n instance.getState().rowSelection,\n instance.getGlobalFilteredRowModel(),\n ],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getFilteredSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getGroupedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getGroupedSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n ///\n\n getRowIsSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === true\n },\n\n getRowIsSomeSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === 'some'\n },\n\n getRowCanSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableRowSelection === 'function') {\n return instance.options.enableRowSelection(row)\n }\n\n return instance.options.enableRowSelection ?? true\n },\n\n getRowCanSelectSubRows: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableSubRowSelection === 'function') {\n return instance.options.enableSubRowSelection(row)\n }\n\n return instance.options.enableSubRowSelection ?? true\n },\n\n getRowCanMultiSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableMultiRowSelection === 'function') {\n return instance.options.enableMultiRowSelection(row)\n }\n\n return instance.options.enableMultiRowSelection ?? true\n },\n\n // getGroupingRowCanSelect: rowId => {\n // const row = instance.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof instance.options.enableGroupingRowSelection === 'function') {\n // return instance.options.enableGroupingRowSelection(row)\n // }\n\n // return instance.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows =\n instance.getPreGlobalFilteredRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllRowsSelected = Boolean(\n preFilteredFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (preFilteredFlatRows.some(row => !rowSelection[row.id])) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n },\n\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n },\n\n getIsSomeRowsSelected: () => {\n return (\n !instance.getIsAllRowsSelected() &&\n !!Object.keys(instance.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n return instance.getIsAllPageRowsSelected()\n ? false\n : !!paginationFlatRows?.length\n },\n\n getToggleRowSelectedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n const isSelected = row.getIsSelected()\n const isSomeSelected = row.getIsSomeSelected()\n const canSelect = row.getCanSelect()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: canSelect\n ? (e: MouseEvent | TouchEvent) => {\n row.toggleSelected((e.target as HTMLInputElement).checked)\n }\n : undefined,\n checked: isSelected,\n title: 'Toggle Row Selected',\n indeterminate: isSomeSelected,\n // onChange: forInput\n // ? (e: Event) => e.stopPropagation()\n // : (e: Event) => {\n // if (instance.options.isAdditiveSelectEvent(e)) {\n // row.toggleSelected()\n // } else if (instance.options.isInclusiveSelectEvent(e)) {\n // instance.addRowSelectionRange(row.id)\n // } else {\n // instance.setRowSelection({})\n // row.toggleSelected()\n // }\n\n // if (props.onClick) props.onClick(e)\n // },\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllRowsSelectedProps: userProps => {\n const isSomeRowsSelected = instance.getIsSomeRowsSelected()\n const isAllRowsSelected = instance.getIsAllRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllRowsSelected(\n (e.target as HTMLInputElement).checked\n )\n },\n checked: isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: isSomeRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllPageRowsSelectedProps: userProps => {\n const isSomePageRowsSelected = instance.getIsSomePageRowsSelected()\n const isAllPageRowsSelected = instance.getIsAllPageRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllPageRowsSelected(\n (e.target as HTMLInputElement).checked\n )\n },\n checked: isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: isSomePageRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): RowSelectionRow => {\n return {\n getIsSelected: () => instance.getRowIsSelected(row.id),\n getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),\n toggleSelected: value => instance.toggleRowSelected(row.id, value),\n getToggleSelectedProps: userProps =>\n instance.getToggleRowSelectedProps(row.id, userProps),\n getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),\n getCanSelect: () => instance.getRowCanSelect(row.id),\n }\n },\n}\n\nconst mutateRowIsSelected = <TGenerics extends PartialGenerics>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n instance: TableInstance<TGenerics>\n) => {\n const row = instance.getRow(id)\n\n const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && instance.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n selectedRowIds[id] = true\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (row.subRows?.length && instance.getRowCanSelectSubRows(row.id)) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n )\n }\n}\n\nexport function selectRowsFn<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n): RowModel<TGenerics> {\n const rowSelection = instance.getState().rowSelection\n\n const newSelectedFlatRows: Row<TGenerics>[] = []\n const newSelectedRowsById: Record<string, Row<TGenerics>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TGenerics>[], depth = 0) => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection, instance) === true\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TGenerics>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n selection: Record<string, boolean>,\n instance: TableInstance<TGenerics>\n): boolean | 'some' {\n if (selection[row.id]) {\n return true\n }\n\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (isRowSelected(subRow, selection, instance)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? true : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","rowSelection","getDefaultOptions","instance","onRowSelectionChange","makeStateUpdater","autoResetRowSelection","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","getInstance","registered","_notifyRowSelectionReset","options","autoResetAll","resetRowSelection","setRowSelection","updater","functionalUpdate","getState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","Object","assign","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","toggleRowSelected","rowId","getRow","isSelected","getIsSelected","selectedRowIds","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","rowModel","keys","length","rowsById","selectRowsFn","key","debug","debugAll","debugTable","onChange","_notifyExpandedReset","getFilteredSelectedRowModel","getGlobalFilteredRowModel","getGroupedSelectedRowModel","getGroupedRowModel","getRowIsSelected","Error","isRowSelected","getRowIsSomeSelected","getRowCanSelect","getRowCanSelectSubRows","getRowCanMultiSelect","preFilteredFlatRows","getPreGlobalFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","getToggleRowSelectedProps","userProps","isSomeSelected","getIsSomeSelected","canSelect","getCanSelect","initialProps","e","toggleSelected","target","checked","undefined","title","indeterminate","propGetter","getToggleAllRowsSelectedProps","isSomeRowsSelected","getToggleAllPageRowsSelectedProps","isSomePageRowsSelected","createRow","getToggleSelectedProps","getCanMultiSelect","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}
1
+ {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import {\n Getter,\n OnChangeFn,\n AnyGenerics,\n PartialGenerics,\n PropGetterValue,\n TableInstance,\n Row,\n RowModel,\n Updater,\n} from '../types'\nimport { functionalUpdate, makeStateUpdater, memo, propGetter } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TGenerics extends PartialGenerics> = {\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n autoResetRowSelection?: boolean\n enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TGenerics>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: MouseEvent | TouchEvent) => boolean\n // isInclusiveSelectEvent?: (e: MouseEvent | TouchEvent) => boolean\n // selectRowsFn?: (\n // instance: TableInstance<\n // TData,\n // TValue,\n // TFilterFns,\n // TSortingFns,\n // TAggregationFns\n // >,\n // rowModel: RowModel<TGenerics>\n // ) => RowModel<TGenerics>\n}\n\ntype ToggleRowSelectedProps = {\n onChange?: (e: MouseEvent | TouchEvent) => void\n checked?: boolean\n title?: string\n indeterminate?: boolean\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n}\n\nexport type RowSelectionInstance<TGenerics extends PartialGenerics> = {\n _notifyRowSelectionReset: () => void\n getToggleRowSelectedProps: <TGetter extends Getter<ToggleRowSelectedProps>>(\n rowId: string,\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n getToggleAllPageRowsSelectedProps: <\n TGetter extends Getter<ToggleRowSelectedProps>\n >(\n userProps?: TGetter\n ) => undefined | PropGetterValue<ToggleRowSelectedProps, TGetter>\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: () => void\n toggleRowSelected: (rowId: string, value?: boolean) => void\n getRowCanSelect: (rowId: string) => boolean\n getRowCanSelectSubRows: (rowId: string) => boolean\n getRowCanMultiSelect: (rowId: string) => boolean\n // getGroupingRowCanSelect: (rowId: string) => boolean\n getRowIsSelected: (rowId: string) => boolean\n getRowIsSomeSelected: (rowId: string) => boolean\n getIsAllRowsSelected: () => boolean\n getIsAllPageRowsSelected: () => boolean\n getIsSomeRowsSelected: () => boolean\n getIsSomePageRowsSelected: () => boolean\n toggleAllRowsSelected: (value: boolean) => void\n toggleAllPageRowsSelected: (value: boolean) => void\n getPreSelectedRowModel: () => RowModel<TGenerics>\n getSelectedRowModel: () => RowModel<TGenerics>\n getFilteredSelectedRowModel: () => RowModel<TGenerics>\n getGroupedSelectedRowModel: () => RowModel<TGenerics>\n}\n\n//\n\nexport const RowSelection = {\n getInitialState: (): RowSelectionTableState => {\n return {\n rowSelection: {},\n }\n },\n\n getDefaultOptions: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionOptions<TGenerics> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', instance),\n autoResetRowSelection: true,\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: MouseEvent | TouchEvent) => !!e.shiftKey,\n }\n },\n\n getInstance: <TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionInstance<TGenerics> => {\n let registered = false\n\n // const pageRows = instance.getPageRows()\n\n return {\n _notifyRowSelectionReset: () => {\n if (!registered) {\n registered = true\n return\n }\n\n if (instance.options.autoResetAll === false) {\n return\n }\n\n if (\n instance.options.autoResetAll === true ||\n instance.options.autoResetRowSelection\n ) {\n instance.resetRowSelection()\n }\n },\n setRowSelection: updater =>\n instance.options.onRowSelectionChange?.(\n updater,\n functionalUpdate(updater, instance.getState().rowSelection)\n ),\n resetRowSelection: () =>\n instance.setRowSelection(instance.initialState.rowSelection ?? {}),\n toggleAllRowsSelected: value => {\n instance.setRowSelection(old => {\n value =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = instance.getPreGroupedRowModel().flatRows\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n rowSelection[row.id] = true\n })\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id]\n })\n }\n\n return rowSelection\n })\n },\n toggleAllPageRowsSelected: value =>\n instance.setRowSelection(old => {\n const selectAll =\n typeof value !== 'undefined'\n ? value\n : !instance.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n instance.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, value, instance)\n })\n\n return rowSelection\n }),\n toggleRowSelected: (rowId, value) => {\n const row = instance.getRow(rowId)\n const isSelected = row.getIsSelected()\n\n instance.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(selectedRowIds, rowId, value, instance)\n\n return selectedRowIds\n })\n },\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = instance\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // instance.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // instance.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => instance.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [\n instance.getState().rowSelection,\n instance.getGlobalFilteredRowModel(),\n ],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getFilteredSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [instance.getState().rowSelection, instance.getGroupedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(instance, rowModel)\n },\n {\n key: 'getGroupedSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n onChange: () => instance._notifyExpandedReset(),\n }\n ),\n\n ///\n\n getRowIsSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === true\n },\n\n getRowIsSomeSelected: rowId => {\n const { rowSelection } = instance.getState()\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n return isRowSelected(row, rowSelection, instance) === 'some'\n },\n\n getRowCanSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableRowSelection === 'function') {\n return instance.options.enableRowSelection(row)\n }\n\n return instance.options.enableRowSelection ?? true\n },\n\n getRowCanSelectSubRows: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableSubRowSelection === 'function') {\n return instance.options.enableSubRowSelection(row)\n }\n\n return instance.options.enableSubRowSelection ?? true\n },\n\n getRowCanMultiSelect: rowId => {\n const row = instance.getRow(rowId)\n\n if (!row) {\n throw new Error()\n }\n\n if (typeof instance.options.enableMultiRowSelection === 'function') {\n return instance.options.enableMultiRowSelection(row)\n }\n\n return instance.options.enableMultiRowSelection ?? true\n },\n\n // getGroupingRowCanSelect: rowId => {\n // const row = instance.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof instance.options.enableGroupingRowSelection === 'function') {\n // return instance.options.enableGroupingRowSelection(row)\n // }\n\n // return instance.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows =\n instance.getPreGlobalFilteredRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllRowsSelected = Boolean(\n preFilteredFlatRows.length && Object.keys(rowSelection).length\n )\n\n if (isAllRowsSelected) {\n if (preFilteredFlatRows.some(row => !rowSelection[row.id])) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n },\n\n getIsAllPageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n const { rowSelection } = instance.getState()\n\n let isAllPageRowsSelected = !!paginationFlatRows.length\n\n if (\n isAllPageRowsSelected &&\n paginationFlatRows.some(row => !rowSelection[row.id])\n ) {\n isAllPageRowsSelected = false\n }\n\n return isAllPageRowsSelected\n },\n\n getIsSomeRowsSelected: () => {\n return (\n !instance.getIsAllRowsSelected() &&\n !!Object.keys(instance.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = instance.getPaginationRowModel().flatRows\n return instance.getIsAllPageRowsSelected()\n ? false\n : !!paginationFlatRows?.length\n },\n\n getToggleRowSelectedProps: (rowId, userProps) => {\n const row = instance.getRow(rowId)\n\n const isSelected = row.getIsSelected()\n const isSomeSelected = row.getIsSomeSelected()\n const canSelect = row.getCanSelect()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: canSelect\n ? (e: MouseEvent | TouchEvent) => {\n row.toggleSelected((e.target as HTMLInputElement).checked)\n }\n : undefined,\n checked: isSelected,\n title: 'Toggle Row Selected',\n indeterminate: isSomeSelected,\n // onChange: forInput\n // ? (e: Event) => e.stopPropagation()\n // : (e: Event) => {\n // if (instance.options.isAdditiveSelectEvent(e)) {\n // row.toggleSelected()\n // } else if (instance.options.isInclusiveSelectEvent(e)) {\n // instance.addRowSelectionRange(row.id)\n // } else {\n // instance.setRowSelection({})\n // row.toggleSelected()\n // }\n\n // if (props.onClick) props.onClick(e)\n // },\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllRowsSelectedProps: userProps => {\n const isSomeRowsSelected = instance.getIsSomeRowsSelected()\n const isAllRowsSelected = instance.getIsAllRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllRowsSelected(\n (e.target as HTMLInputElement).checked\n )\n },\n checked: isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n indeterminate: isSomeRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n\n getToggleAllPageRowsSelectedProps: userProps => {\n const isSomePageRowsSelected = instance.getIsSomePageRowsSelected()\n const isAllPageRowsSelected = instance.getIsAllPageRowsSelected()\n\n const initialProps: ToggleRowSelectedProps = {\n onChange: (e: MouseEvent | TouchEvent) => {\n instance.toggleAllPageRowsSelected(\n (e.target as HTMLInputElement).checked\n )\n },\n checked: isAllPageRowsSelected,\n title: 'Toggle All Current Page Rows Selected',\n indeterminate: isSomePageRowsSelected,\n }\n\n return propGetter(initialProps, userProps)\n },\n }\n },\n\n createRow: <TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): RowSelectionRow => {\n return {\n getIsSelected: () => instance.getRowIsSelected(row.id),\n getIsSomeSelected: () => instance.getRowIsSomeSelected(row.id),\n toggleSelected: value => instance.toggleRowSelected(row.id, value),\n getToggleSelectedProps: userProps =>\n instance.getToggleRowSelectedProps(row.id, userProps),\n getCanMultiSelect: () => instance.getRowCanMultiSelect(row.id),\n getCanSelect: () => instance.getRowCanSelect(row.id),\n }\n },\n}\n\nconst mutateRowIsSelected = <TGenerics extends PartialGenerics>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n instance: TableInstance<TGenerics>\n) => {\n const row = instance.getRow(id)\n\n const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && instance.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n selectedRowIds[id] = true\n } else {\n delete selectedRowIds[id]\n }\n // }\n\n if (row.subRows?.length && instance.getRowCanSelectSubRows(row.id)) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n )\n }\n}\n\nexport function selectRowsFn<TGenerics extends PartialGenerics>(\n instance: TableInstance<TGenerics>,\n rowModel: RowModel<TGenerics>\n): RowModel<TGenerics> {\n const rowSelection = instance.getState().rowSelection\n\n const newSelectedFlatRows: Row<TGenerics>[] = []\n const newSelectedRowsById: Record<string, Row<TGenerics>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TGenerics>[], depth = 0) => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection, instance) === true\n\n if (isSelected) {\n newSelectedFlatRows.push(row)\n newSelectedRowsById[row.id] = row\n }\n\n if (row.subRows?.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows, depth + 1),\n }\n }\n\n if (isSelected) {\n return row\n }\n })\n .filter(Boolean) as Row<TGenerics>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TGenerics extends PartialGenerics>(\n row: Row<TGenerics>,\n selection: Record<string, boolean>,\n instance: TableInstance<TGenerics>\n): boolean | 'some' {\n if (selection[row.id]) {\n return true\n }\n\n if (row.subRows && row.subRows.length) {\n let allChildrenSelected = true\n let someSelected = false\n\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return\n }\n\n if (isRowSelected(subRow, selection, instance)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? true : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","rowSelection","getDefaultOptions","instance","onRowSelectionChange","makeStateUpdater","autoResetRowSelection","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","getInstance","registered","_notifyRowSelectionReset","options","autoResetAll","resetRowSelection","setRowSelection","updater","functionalUpdate","getState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","toggleRowSelected","rowId","getRow","isSelected","getIsSelected","selectedRowIds","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","rowModel","Object","keys","length","rowsById","selectRowsFn","key","debug","debugAll","debugTable","onChange","_notifyExpandedReset","getFilteredSelectedRowModel","getGlobalFilteredRowModel","getGroupedSelectedRowModel","getGroupedRowModel","getRowIsSelected","Error","isRowSelected","getRowIsSomeSelected","getRowCanSelect","getRowCanSelectSubRows","getRowCanMultiSelect","preFilteredFlatRows","getPreGlobalFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","getToggleRowSelectedProps","userProps","isSomeSelected","getIsSomeSelected","canSelect","getCanSelect","initialProps","e","toggleSelected","target","checked","undefined","title","indeterminate","propGetter","getToggleAllRowsSelectedProps","isSomeRowsSelected","getToggleAllPageRowsSelectedProps","isSomePageRowsSelected","createRow","getToggleSelectedProps","getCanMultiSelect","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}