@tanstack/table-core 8.0.0-alpha.9 → 8.0.0-beta.0

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 (186) hide show
  1. package/build/cjs/aggregationFns.js +120 -0
  2. package/build/cjs/aggregationFns.js.map +1 -0
  3. package/build/cjs/core/cell.js +40 -0
  4. package/build/cjs/core/cell.js.map +1 -0
  5. package/build/cjs/core/column.js +88 -0
  6. package/build/cjs/core/column.js.map +1 -0
  7. package/build/cjs/core/headers.js +403 -0
  8. package/build/cjs/core/headers.js.map +1 -0
  9. package/build/cjs/core/instance.js +255 -0
  10. package/build/cjs/core/instance.js.map +1 -0
  11. package/build/cjs/core/row.js +77 -0
  12. package/build/cjs/core/row.js.map +1 -0
  13. package/build/cjs/createTable.js +36 -29
  14. package/build/cjs/createTable.js.map +1 -1
  15. package/build/cjs/features/ColumnSizing.js +157 -189
  16. package/build/cjs/features/ColumnSizing.js.map +1 -1
  17. package/build/cjs/features/Expanding.js +103 -155
  18. package/build/cjs/features/Expanding.js.map +1 -1
  19. package/build/cjs/features/Filters.js +155 -304
  20. package/build/cjs/features/Filters.js.map +1 -1
  21. package/build/cjs/features/Grouping.js +97 -157
  22. package/build/cjs/features/Grouping.js.map +1 -1
  23. package/build/cjs/features/Ordering.js +30 -41
  24. package/build/cjs/features/Ordering.js.map +1 -1
  25. package/build/cjs/features/Pagination.js +102 -105
  26. package/build/cjs/features/Pagination.js.map +1 -1
  27. package/build/cjs/features/Pinning.js +131 -89
  28. package/build/cjs/features/Pinning.js.map +1 -1
  29. package/build/cjs/features/RowSelection.js +138 -267
  30. package/build/cjs/features/RowSelection.js.map +1 -1
  31. package/build/cjs/features/Sorting.js +82 -167
  32. package/build/cjs/features/Sorting.js.map +1 -1
  33. package/build/cjs/features/Visibility.js +69 -115
  34. package/build/cjs/features/Visibility.js.map +1 -1
  35. package/build/cjs/filterFns.js +107 -0
  36. package/build/cjs/filterFns.js.map +1 -0
  37. package/build/cjs/index.js +36 -23
  38. package/build/cjs/index.js.map +1 -1
  39. package/build/cjs/sortingFns.js +124 -0
  40. package/build/cjs/sortingFns.js.map +1 -0
  41. package/build/cjs/utils/filterRowsUtils.js +117 -0
  42. package/build/cjs/utils/filterRowsUtils.js.map +1 -0
  43. package/build/cjs/utils/getCoreRowModel.js +79 -0
  44. package/build/cjs/utils/getCoreRowModel.js.map +1 -0
  45. package/build/cjs/utils/getExpandedRowModel.js +57 -0
  46. package/build/cjs/utils/getExpandedRowModel.js.map +1 -0
  47. package/build/cjs/utils/getFacetedMinMaxValues.js +54 -0
  48. package/build/cjs/utils/getFacetedMinMaxValues.js.map +1 -0
  49. package/build/cjs/utils/getFacetedRowModel.js +50 -0
  50. package/build/cjs/utils/getFacetedRowModel.js.map +1 -0
  51. package/build/cjs/utils/getFacetedUniqueValues.js +48 -0
  52. package/build/cjs/utils/getFacetedUniqueValues.js.map +1 -0
  53. package/build/cjs/utils/getFilteredRowModel.js +139 -0
  54. package/build/cjs/utils/getFilteredRowModel.js.map +1 -0
  55. package/build/cjs/utils/getGroupedRowModel.js +161 -0
  56. package/build/cjs/utils/getGroupedRowModel.js.map +1 -0
  57. package/build/cjs/utils/getPaginationRowModel.js +61 -0
  58. package/build/cjs/utils/getPaginationRowModel.js.map +1 -0
  59. package/build/cjs/utils/getSortedRowModel.js +110 -0
  60. package/build/cjs/utils/getSortedRowModel.js.map +1 -0
  61. package/build/cjs/utils.js +38 -107
  62. package/build/cjs/utils.js.map +1 -1
  63. package/build/esm/index.js +2976 -3853
  64. package/build/esm/index.js.map +1 -1
  65. package/build/stats-html.html +1 -1
  66. package/build/stats-react.json +586 -408
  67. package/build/types/aggregationFns.d.ts +13 -0
  68. package/build/types/core/cell.d.ts +9 -0
  69. package/build/types/core/column.d.ts +40 -0
  70. package/build/types/core/headers.d.ts +46 -0
  71. package/build/types/core/instance.d.ts +57 -0
  72. package/build/types/core/row.d.ts +15 -0
  73. package/build/types/createTable.d.ts +47 -26
  74. package/build/types/features/ColumnSizing.d.ts +32 -44
  75. package/build/types/features/Expanding.d.ts +15 -26
  76. package/build/types/features/Filters.d.ts +64 -63
  77. package/build/types/features/Grouping.d.ts +32 -46
  78. package/build/types/features/Ordering.d.ts +7 -10
  79. package/build/types/features/Pagination.d.ts +16 -15
  80. package/build/types/features/Pinning.d.ts +16 -17
  81. package/build/types/features/RowSelection.d.ts +13 -33
  82. package/build/types/features/Sorting.d.ts +25 -44
  83. package/build/types/features/Visibility.d.ts +16 -25
  84. package/build/types/filterFns.d.ts +13 -0
  85. package/build/types/index.d.ts +16 -10
  86. package/build/types/sortingFns.d.ts +11 -0
  87. package/build/types/types.d.ts +37 -122
  88. package/build/types/utils/filterRowsUtils.d.ts +4 -0
  89. package/build/types/utils/getCoreRowModel.d.ts +2 -0
  90. package/build/types/utils/getExpandedRowModel.d.ts +7 -0
  91. package/build/types/utils/getFacetedMinMaxValues.d.ts +2 -0
  92. package/build/types/utils/getFacetedRowModel.d.ts +2 -0
  93. package/build/types/utils/getFacetedUniqueValues.d.ts +2 -0
  94. package/build/types/utils/getFilteredRowModel.d.ts +2 -0
  95. package/build/types/utils/getGroupedRowModel.d.ts +2 -0
  96. package/build/types/utils/getPaginationRowModel.d.ts +4 -0
  97. package/build/types/utils/getSortedRowModel.d.ts +2 -0
  98. package/build/types/utils.d.ts +7 -11
  99. package/build/umd/index.development.js +3024 -3893
  100. package/build/umd/index.development.js.map +1 -1
  101. package/build/umd/index.production.js +1 -1
  102. package/build/umd/index.production.js.map +1 -1
  103. package/package.json +9 -10
  104. package/src/.DS_Store +0 -0
  105. package/src/aggregationFns.ts +123 -0
  106. package/src/core/cell.ts +48 -0
  107. package/src/core/column.ts +147 -0
  108. package/src/core/headers.ts +575 -0
  109. package/src/core/instance.ts +361 -0
  110. package/src/core/row.ts +85 -0
  111. package/src/createTable.ts +188 -0
  112. package/src/features/ColumnSizing.ts +170 -185
  113. package/src/features/Expanding.ts +122 -194
  114. package/src/features/Filters.ts +301 -381
  115. package/src/features/Grouping.ts +160 -220
  116. package/src/features/Ordering.ts +24 -25
  117. package/src/features/Pagination.ts +90 -73
  118. package/src/features/Pinning.ts +186 -63
  119. package/src/features/RowSelection.ts +107 -245
  120. package/src/features/Sorting.ts +127 -225
  121. package/src/features/Visibility.ts +116 -132
  122. package/src/filterFns.ts +135 -0
  123. package/src/index.ts +29 -0
  124. package/src/{sortTypes.ts → sortingFns.ts} +63 -85
  125. package/src/types.ts +62 -168
  126. package/src/utils/filterRowsUtils.ts +112 -0
  127. package/src/utils/getCoreRowModel.ts +84 -0
  128. package/src/utils/getExpandedRowModel.ts +54 -0
  129. package/src/utils/getFacetedMinMaxValues.ts +40 -0
  130. package/src/utils/getFacetedRowModel.ts +50 -0
  131. package/src/utils/getFacetedUniqueValues.ts +37 -0
  132. package/src/utils/getFilteredRowModel.ts +159 -0
  133. package/src/utils/getGroupedRowModel.ts +175 -0
  134. package/src/utils/getPaginationRowModel.ts +48 -0
  135. package/src/utils/getSortedRowModel.ts +116 -0
  136. package/src/utils.ts +126 -0
  137. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -112
  138. package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  139. package/build/cjs/aggregationTypes.js +0 -130
  140. package/build/cjs/aggregationTypes.js.map +0 -1
  141. package/build/cjs/core.js +0 -545
  142. package/build/cjs/core.js.map +0 -1
  143. package/build/cjs/features/Headers.js +0 -630
  144. package/build/cjs/features/Headers.js.map +0 -1
  145. package/build/cjs/filterTypes.js +0 -172
  146. package/build/cjs/filterTypes.js.map +0 -1
  147. package/build/cjs/sortTypes.js +0 -122
  148. package/build/cjs/sortTypes.js.map +0 -1
  149. package/build/cjs/types.js +0 -22
  150. package/build/cjs/types.js.map +0 -1
  151. package/build/cjs/utils/columnFilterRowsFn.js +0 -131
  152. package/build/cjs/utils/columnFilterRowsFn.js.map +0 -1
  153. package/build/cjs/utils/expandRowsFn.js +0 -38
  154. package/build/cjs/utils/expandRowsFn.js.map +0 -1
  155. package/build/cjs/utils/globalFilterRowsFn.js +0 -101
  156. package/build/cjs/utils/globalFilterRowsFn.js.map +0 -1
  157. package/build/cjs/utils/groupRowsFn.js +0 -155
  158. package/build/cjs/utils/groupRowsFn.js.map +0 -1
  159. package/build/cjs/utils/paginateRowsFn.js +0 -44
  160. package/build/cjs/utils/paginateRowsFn.js.map +0 -1
  161. package/build/cjs/utils/sortRowsFn.js +0 -94
  162. package/build/cjs/utils/sortRowsFn.js.map +0 -1
  163. package/build/types/aggregationTypes.d.ts +0 -22
  164. package/build/types/core.d.ts +0 -105
  165. package/build/types/features/Headers.d.ts +0 -43
  166. package/build/types/filterTypes.d.ts +0 -50
  167. package/build/types/sortTypes.d.ts +0 -18
  168. package/build/types/utils/columnFilterRowsFn.d.ts +0 -2
  169. package/build/types/utils/expandRowsFn.d.ts +0 -2
  170. package/build/types/utils/globalFilterRowsFn.d.ts +0 -2
  171. package/build/types/utils/groupRowsFn.d.ts +0 -2
  172. package/build/types/utils/paginateRowsFn.d.ts +0 -2
  173. package/build/types/utils/sortRowsFn.d.ts +0 -2
  174. package/src/aggregationTypes.ts +0 -115
  175. package/src/core.tsx +0 -763
  176. package/src/createTable.tsx +0 -137
  177. package/src/features/Headers.ts +0 -747
  178. package/src/filterTypes.ts +0 -188
  179. package/src/index.tsx +0 -23
  180. package/src/utils/columnFilterRowsFn.ts +0 -113
  181. package/src/utils/expandRowsFn.ts +0 -30
  182. package/src/utils/globalFilterRowsFn.ts +0 -89
  183. package/src/utils/groupRowsFn.ts +0 -170
  184. package/src/utils/paginateRowsFn.ts +0 -28
  185. package/src/utils/sortRowsFn.ts +0 -95
  186. package/src/utils.tsx +0 -221
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import React, { MouseEvent, TouchEvent } from 'react'\nimport {\n Getter,\n OnChangeFn,\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 { TableFeature } from '../core/instance'\nimport {\n OnChangeFn,\n TableGenerics,\n TableInstance,\n Row,\n RowModel,\n Updater,\n} from '../types'\nimport { makeStateUpdater, memo } from '../utils'\n\nexport type RowSelectionState = Record<string, boolean>\n\nexport type RowSelectionTableState = {\n rowSelection: RowSelectionState\n}\n\nexport type RowSelectionOptions<TGenerics extends TableGenerics> = {\n enableRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TGenerics>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TGenerics>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => 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\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getCanSelect: () => boolean\n getCanMultiSelect: () => boolean\n getCanSelectSubRows: () => boolean\n toggleSelected: (value?: boolean) => void\n getToggleSelectedHandler: () => (event: unknown) => void\n}\n\nexport type RowSelectionInstance<TGenerics extends TableGenerics> = {\n getToggleAllRowsSelectedHandler: () => (event: unknown) => void\n getToggleAllPageRowsSelectedHandler: () => (event: unknown) => void\n setRowSelection: (updater: Updater<RowSelectionState>) => void\n resetRowSelection: (defaultState?: boolean) => void\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: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionOptions<TGenerics> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', instance),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true,\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n }\n },\n\n createInstance: <TGenerics extends TableGenerics>(\n instance: TableInstance<TGenerics>\n ): RowSelectionInstance<TGenerics> => {\n return {\n setRowSelection: updater =>\n instance.options.onRowSelectionChange?.(updater),\n resetRowSelection: defaultState =>\n instance.setRowSelection(\n defaultState ? {} : instance.initialState.rowSelection ?? {}\n ),\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\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: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [\n instance.getState().rowSelection,\n instance.getFilteredRowModel(),\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:\n process.env.NODE_ENV === 'production' &&\n 'getFilteredSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\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:\n process.env.NODE_ENV === 'production' &&\n 'getGroupedSelectedRowModel',\n debug: () => instance.options.debugAll ?? instance.options.debugTable,\n }\n ),\n\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 = instance.getPreFilteredRowModel().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 getToggleAllRowsSelectedHandler: () => {\n return (e: unknown) => {\n instance.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n\n getToggleAllPageRowsSelectedHandler: () => {\n return (e: unknown) => {\n instance.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TGenerics extends TableGenerics>(\n row: Row<TGenerics>,\n instance: TableInstance<TGenerics>\n ): RowSelectionRow => {\n return {\n toggleSelected: value => {\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, row.id, value, instance)\n\n return selectedRowIds\n })\n },\n getIsSelected: () => {\n const { rowSelection } = instance.getState()\n return isRowSelected(row, rowSelection, instance) === true\n },\n\n getIsSomeSelected: () => {\n const { rowSelection } = instance.getState()\n return isRowSelected(row, rowSelection, instance) === 'some'\n },\n\n getCanSelect: () => {\n if (typeof instance.options.enableRowSelection === 'function') {\n return instance.options.enableRowSelection(row)\n }\n\n return instance.options.enableRowSelection ?? true\n },\n\n getCanSelectSubRows: () => {\n if (typeof instance.options.enableSubRowSelection === 'function') {\n return instance.options.enableSubRowSelection(row)\n }\n\n return instance.options.enableSubRowSelection ?? true\n },\n\n getCanMultiSelect: () => {\n if (typeof instance.options.enableMultiRowSelection === 'function') {\n return instance.options.enableMultiRowSelection(row)\n }\n\n return instance.options.enableMultiRowSelection ?? true\n },\n getToggleSelectedHandler: () => {\n const canSelect = row.getCanSelect()\n\n return (e: unknown) => {\n if (!canSelect) return\n row.toggleSelected(\n ((e as MouseEvent).target as HTMLInputElement)?.checked\n )\n }\n },\n }\n },\n}\n\nconst mutateRowIsSelected = <TGenerics extends TableGenerics>(\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 && row.getCanSelectSubRows()) {\n row.subRows.forEach(row =>\n mutateRowIsSelected(selectedRowIds, row.id, value, instance)\n )\n }\n}\n\nexport function selectRowsFn<TGenerics extends TableGenerics>(\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): Row<TGenerics>[] => {\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 TableGenerics>(\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","state","rowSelection","getDefaultOptions","instance","onRowSelectionChange","makeStateUpdater","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","createInstance","setRowSelection","updater","options","resetRowSelection","defaultState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","id","toggleAllPageRowsSelected","getIsAllPageRowsSelected","getRowModel","rows","mutateRowIsSelected","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","memo","getState","rowModel","Object","keys","length","rowsById","selectRowsFn","key","process","env","NODE_ENV","debug","debugAll","debugTable","getFilteredSelectedRowModel","getFilteredRowModel","getGroupedSelectedRowModel","getGroupedRowModel","preFilteredFlatRows","getPreFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","getToggleAllRowsSelectedHandler","e","target","checked","getToggleAllPageRowsSelectedHandler","createRow","toggleSelected","isSelected","getIsSelected","selectedRowIds","isRowSelected","getIsSomeSelected","getCanSelect","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","getIsGrouped","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}
@@ -12,101 +12,61 @@
12
12
 
13
13
  Object.defineProperty(exports, '__esModule', { value: true });
14
14
 
15
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
16
- var sortTypes = require('../sortTypes.js');
15
+ var sortingFns = require('../sortingFns.js');
17
16
  var utils = require('../utils.js');
18
17
 
19
18
  //
20
- var Sorting = {
21
- getDefaultColumn: function getDefaultColumn() {
19
+ const Sorting = {
20
+ getInitialState: state => {
22
21
  return {
23
- sortType: 'auto'
22
+ sorting: [],
23
+ ...state
24
24
  };
25
25
  },
26
- getInitialState: function getInitialState() {
26
+ getDefaultColumnDef: () => {
27
27
  return {
28
- sorting: []
28
+ sortingFn: 'auto'
29
29
  };
30
30
  },
31
- getDefaultOptions: function getDefaultOptions(instance) {
31
+ getDefaultOptions: instance => {
32
32
  return {
33
33
  onSortingChange: utils.makeStateUpdater('sorting', instance),
34
- autoResetSorting: true,
35
- isMultiSortEvent: function isMultiSortEvent(e) {
34
+ isMultiSortEvent: e => {
36
35
  return e.shiftKey;
37
36
  }
38
37
  };
39
38
  },
40
- createColumn: function createColumn(column, instance) {
39
+ createColumn: (column, instance) => {
41
40
  return {
42
- sortType: column.sortType,
43
- getCanSort: function getCanSort() {
44
- return instance.getColumnCanSort(column.id);
45
- },
46
- getCanMultiSort: function getCanMultiSort() {
47
- return instance.getColumnCanMultiSort(column.id);
48
- },
49
- getSortIndex: function getSortIndex() {
50
- return instance.getColumnSortIndex(column.id);
51
- },
52
- getIsSorted: function getIsSorted() {
53
- return instance.getColumnIsSorted(column.id);
54
- },
55
- toggleSorting: function toggleSorting(desc, isMulti) {
56
- return instance.toggleColumnSorting(column.id, desc, isMulti);
57
- },
58
- getToggleSortingProps: function getToggleSortingProps(userProps) {
59
- return instance.getToggleSortingProps(column.id, userProps);
60
- }
61
- };
62
- },
63
- getInstance: function getInstance(instance) {
64
- var registered = false;
65
- return {
66
- _notifySortingReset: function _notifySortingReset() {
67
- if (!registered) {
68
- registered = true;
69
- return;
70
- }
71
-
72
- if (instance.options.autoResetAll === false) {
73
- return;
74
- }
41
+ getAutoSortingFn: () => {
42
+ const firstRows = instance.getFilteredRowModel().flatRows.slice(10);
43
+ let isString = false;
75
44
 
76
- if (instance.options.autoResetAll === true || instance.options.autoResetSorting) {
77
- instance.resetSorting();
78
- }
79
- },
80
- getColumnAutoSortingFn: function getColumnAutoSortingFn(columnId) {
81
- var firstRows = instance.getGlobalFilteredRowModel().flatRows.slice(100);
82
- var isString = false;
83
-
84
- for (var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelperLoose(firstRows), _step; !(_step = _iterator()).done;) {
85
- var row = _step.value;
86
- var value = row == null ? void 0 : row.values[columnId];
45
+ for (const row of firstRows) {
46
+ const value = row == null ? void 0 : row.getValue(column.id);
87
47
 
88
48
  if (Object.prototype.toString.call(value) === '[object Date]') {
89
- return sortTypes.sortTypes.datetime;
49
+ return sortingFns.sortingFns.datetime;
90
50
  }
91
51
 
92
52
  if (typeof value === 'string') {
93
53
  isString = true;
94
54
 
95
- if (value.split(sortTypes.reSplitAlphaNumeric).length > 1) {
96
- return sortTypes.sortTypes.alphanumeric;
55
+ if (value.split(sortingFns.reSplitAlphaNumeric).length > 1) {
56
+ return sortingFns.sortingFns.alphanumeric;
97
57
  }
98
58
  }
99
59
  }
100
60
 
101
61
  if (isString) {
102
- return sortTypes.sortTypes.text;
62
+ return sortingFns.sortingFns.text;
103
63
  }
104
64
 
105
- return sortTypes.sortTypes.basic;
65
+ return sortingFns.sortingFns.basic;
106
66
  },
107
- getColumnAutoSortDir: function getColumnAutoSortDir(columnId) {
108
- var firstRow = instance.getGlobalFilteredRowModel().flatRows[0];
109
- var value = firstRow == null ? void 0 : firstRow.values[columnId];
67
+ getAutoSortDir: () => {
68
+ const firstRow = instance.getFilteredRowModel().flatRows[0];
69
+ const value = firstRow == null ? void 0 : firstRow.getValue(column.id);
110
70
 
111
71
  if (typeof value === 'string') {
112
72
  return 'asc';
@@ -114,27 +74,19 @@ var Sorting = {
114
74
 
115
75
  return 'desc';
116
76
  },
117
- getColumnSortingFn: function getColumnSortingFn(columnId) {
77
+ getSortingFn: () => {
118
78
  var _ref;
119
79
 
120
- var column = instance.getColumn(columnId);
121
- var userSortTypes = instance.options.sortTypes;
80
+ const userSortingFn = instance.options.sortingFns;
122
81
 
123
82
  if (!column) {
124
83
  throw new Error();
125
84
  }
126
85
 
127
- return utils.isFunction(column.sortType) ? column.sortType : column.sortType === 'auto' ? instance.getColumnAutoSortingFn(columnId) : (_ref = userSortTypes == null ? void 0 : userSortTypes[column.sortType]) != null ? _ref : sortTypes.sortTypes[column.sortType];
86
+ return utils.isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_ref = userSortingFn == null ? void 0 : userSortingFn[column.columnDef.sortingFn]) != null ? _ref : sortingFns.sortingFns[column.columnDef.sortingFn];
128
87
  },
129
- setSorting: function setSorting(updater) {
130
- return instance.options.onSortingChange == null ? void 0 : instance.options.onSortingChange(updater, utils.functionalUpdate(updater, instance.getState().sorting));
131
- },
132
- toggleColumnSorting: function toggleColumnSorting(columnId, desc, multi) {
133
- var column = instance.getColumn(columnId);
134
-
135
- if (!column) {
136
- throw new Error();
137
- } // if (column.columns.length) {
88
+ toggleSorting: (desc, multi) => {
89
+ // if (column.columns.length) {
138
90
  // column.columns.forEach((c, i) => {
139
91
  // if (c.id) {
140
92
  // instance.toggleColumnSorting(c.id, undefined, multi || !!i)
@@ -142,22 +94,16 @@ var Sorting = {
142
94
  // })
143
95
  // return
144
96
  // }
145
-
146
-
147
- instance.setSorting(function (old) {
148
- var _ref2, _column$sortDescFirst, _instance$options$ena, _instance$options$ena2;
97
+ instance.setSorting(old => {
98
+ var _ref2, _column$columnDef$sor, _instance$options$ena, _instance$options$ena2;
149
99
 
150
100
  // Find any existing sorting for this column
151
- var existingSorting = old == null ? void 0 : old.find(function (d) {
152
- return d.id === columnId;
153
- });
154
- var existingIndex = old == null ? void 0 : old.findIndex(function (d) {
155
- return d.id === columnId;
156
- });
157
- var hasDescDefined = typeof desc !== 'undefined' && desc !== null;
158
- var newSorting = []; // What should we do with this sort action?
101
+ const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
102
+ const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);
103
+ const hasDescDefined = typeof desc !== 'undefined' && desc !== null;
104
+ let newSorting = []; // What should we do with this sort action?
159
105
 
160
- var sortAction;
106
+ let sortAction;
161
107
 
162
108
  if (column.getCanMultiSort() && multi) {
163
109
  if (existingSorting) {
@@ -176,7 +122,7 @@ var Sorting = {
176
122
  }
177
123
  }
178
124
 
179
- var sortDescFirst = (_ref2 = (_column$sortDescFirst = column.sortDescFirst) != null ? _column$sortDescFirst : instance.options.sortDescFirst) != null ? _ref2 : instance.getColumnAutoSortDir(columnId) === 'desc'; // Handle toggle states that will remove the sorting
125
+ const sortDescFirst = (_ref2 = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc'; // Handle toggle states that will remove the sorting
180
126
 
181
127
  if (sortAction === 'toggle' && ( // Must be toggling
182
128
  (_instance$options$ena = instance.options.enableSortingRemoval) != null ? _instance$options$ena : true) && // If enableSortRemove, enable in general
@@ -189,122 +135,91 @@ var Sorting = {
189
135
 
190
136
  if (sortAction === 'replace') {
191
137
  newSorting = [{
192
- id: columnId,
138
+ id: column.id,
193
139
  desc: hasDescDefined ? desc : !!sortDescFirst
194
140
  }];
195
141
  } else if (sortAction === 'add' && old != null && old.length) {
196
142
  var _instance$options$max;
197
143
 
198
- newSorting = [].concat(old, [{
199
- id: columnId,
144
+ newSorting = [...old, {
145
+ id: column.id,
200
146
  desc: hasDescDefined ? desc : !!sortDescFirst
201
- }]); // Take latest n columns
147
+ }]; // Take latest n columns
202
148
 
203
149
  newSorting.splice(0, newSorting.length - ((_instance$options$max = instance.options.maxMultiSortColCount) != null ? _instance$options$max : Number.MAX_SAFE_INTEGER));
204
150
  } else if (sortAction === 'toggle' && old != null && old.length) {
205
151
  // This flips (or sets) the
206
- newSorting = old.map(function (d) {
207
- if (d.id === columnId) {
208
- return _rollupPluginBabelHelpers["extends"]({}, d, {
152
+ newSorting = old.map(d => {
153
+ if (d.id === column.id) {
154
+ return { ...d,
209
155
  desc: hasDescDefined ? desc : !(existingSorting != null && existingSorting.desc)
210
- });
156
+ };
211
157
  }
212
158
 
213
159
  return d;
214
160
  });
215
161
  } else if (sortAction === 'remove' && old != null && old.length) {
216
- newSorting = old.filter(function (d) {
217
- return d.id !== columnId;
218
- });
162
+ newSorting = old.filter(d => d.id !== column.id);
219
163
  }
220
164
 
221
165
  return newSorting;
222
166
  });
223
167
  },
224
- getColumnCanSort: function getColumnCanSort(columnId) {
225
- var _ref3, _ref4, _column$enableSorting;
226
-
227
- var column = instance.getColumn(columnId);
228
-
229
- if (!column) {
230
- throw new Error();
231
- }
168
+ getCanSort: () => {
169
+ var _column$columnDef$ena, _instance$options$ena3;
232
170
 
233
- return (_ref3 = (_ref4 = (_column$enableSorting = column.enableSorting) != null ? _column$enableSorting : instance.options.enableSorting) != null ? _ref4 : column.defaultCanSort) != null ? _ref3 : !!column.accessorFn // (!!column.accessorFn ||
234
- // column.columns?.some(c => c.id && instance.getColumnCanSort(c.id))) ??
235
- // false
236
- ;
171
+ return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_instance$options$ena3 = instance.options.enableSorting) != null ? _instance$options$ena3 : true) && !!column.accessorFn;
237
172
  },
238
- getColumnCanMultiSort: function getColumnCanMultiSort(columnId) {
239
- var _ref5, _column$enableMultiSo;
240
-
241
- var column = instance.getColumn(columnId);
242
-
243
- if (!column) {
244
- throw new Error();
245
- }
173
+ getCanMultiSort: () => {
174
+ var _ref3, _column$columnDef$ena2;
246
175
 
247
- return (_ref5 = (_column$enableMultiSo = column.enableMultiSort) != null ? _column$enableMultiSo : instance.options.enableMultiSort) != null ? _ref5 : !!column.accessorFn;
176
+ return (_ref3 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : instance.options.enableMultiSort) != null ? _ref3 : !!column.accessorFn;
248
177
  },
249
- getColumnIsSorted: function getColumnIsSorted(columnId) {
178
+ getIsSorted: () => {
250
179
  var _instance$getState$so;
251
180
 
252
- var columnSort = (_instance$getState$so = instance.getState().sorting) == null ? void 0 : _instance$getState$so.find(function (d) {
253
- return d.id === columnId;
254
- });
181
+ const columnSort = (_instance$getState$so = instance.getState().sorting) == null ? void 0 : _instance$getState$so.find(d => d.id === column.id);
255
182
  return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';
256
183
  },
257
- getColumnSortIndex: function getColumnSortIndex(columnId) {
184
+ getSortIndex: () => {
258
185
  var _instance$getState$so2, _instance$getState$so3;
259
186
 
260
- return (_instance$getState$so2 = (_instance$getState$so3 = instance.getState().sorting) == null ? void 0 : _instance$getState$so3.findIndex(function (d) {
261
- return d.id === columnId;
262
- })) != null ? _instance$getState$so2 : -1;
187
+ return (_instance$getState$so2 = (_instance$getState$so3 = instance.getState().sorting) == null ? void 0 : _instance$getState$so3.findIndex(d => d.id === column.id)) != null ? _instance$getState$so2 : -1;
263
188
  },
264
- resetSorting: function resetSorting() {
189
+ clearSorting: () => {
190
+ //clear sorting for just 1 column
191
+ instance.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);
192
+ },
193
+ getToggleSortingHandler: () => {
194
+ const canSort = column.getCanSort();
195
+ return e => {
196
+ if (!canSort) return;
197
+ e.persist == null ? void 0 : e.persist();
198
+ column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
199
+ };
200
+ }
201
+ };
202
+ },
203
+ createInstance: instance => {
204
+ return {
205
+ setSorting: updater => instance.options.onSortingChange == null ? void 0 : instance.options.onSortingChange(updater),
206
+ resetSorting: defaultState => {
265
207
  var _instance$initialStat, _instance$initialStat2;
266
208
 
267
- instance.setSorting((_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
209
+ instance.setSorting(defaultState ? [] : (_instance$initialStat = (_instance$initialStat2 = instance.initialState) == null ? void 0 : _instance$initialStat2.sorting) != null ? _instance$initialStat : []);
268
210
  },
269
- getToggleSortingProps: function getToggleSortingProps(columnId, userProps) {
270
- var column = instance.getColumn(columnId);
271
-
272
- if (!column) {
273
- throw new Error();
211
+ getPreSortedRowModel: () => instance.getFilteredRowModel(),
212
+ getSortedRowModel: () => {
213
+ if (!instance._getSortedRowModel && instance.options.getSortedRowModel) {
214
+ instance._getSortedRowModel = instance.options.getSortedRowModel(instance);
274
215
  }
275
216
 
276
- var canSort = column.getCanSort();
277
- var initialProps = {
278
- title: canSort ? 'Toggle Sorting' : undefined,
279
- onClick: canSort ? function (e) {
280
- e.persist();
281
- column.toggleSorting == null ? void 0 : column.toggleSorting(undefined, column.getCanMultiSort() ? instance.options.isMultiSortEvent == null ? void 0 : instance.options.isMultiSortEvent(e) : false);
282
- } : undefined
283
- };
284
- return utils.propGetter(initialProps, userProps);
285
- },
286
- getPreSortedRowModel: function getPreSortedRowModel() {
287
- return instance.getGlobalFilteredRowModel();
288
- },
289
- getSortedRowModel: utils.memo(function () {
290
- return [instance.getState().sorting, instance.getGlobalFilteredRowModel(), instance.options.sortRowsFn];
291
- }, function (sorting, rowModel, sortingFn) {
292
- if (!sortingFn || !(sorting != null && sorting.length)) {
293
- return rowModel;
217
+ if (instance.options.manualSorting || !instance._getSortedRowModel) {
218
+ return instance.getPreSortedRowModel();
294
219
  }
295
220
 
296
- return sortingFn(instance, rowModel);
297
- }, {
298
- key: 'getSortedRowModel',
299
- debug: function debug() {
300
- var _instance$options$deb;
301
-
302
- return (_instance$options$deb = instance.options.debugAll) != null ? _instance$options$deb : instance.options.debugTable;
303
- },
304
- onChange: function onChange() {
305
- instance._notifyGroupingReset();
306
- }
307
- })
221
+ return instance._getSortedRowModel();
222
+ }
308
223
  };
309
224
  }
310
225
  };