@tanstack/table-core 8.2.3 → 8.2.4

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.
@@ -318,8 +318,8 @@ const RowSelection = {
318
318
  const mutateRowIsSelected = (selectedRowIds, id, value, table) => {
319
319
  var _row$subRows;
320
320
 
321
- const row = table.getRow(id);
322
- row.getIsGrouped(); // if ( // TODO: enforce grouping row selection rules
321
+ const row = table.getRow(id); // const isGrouped = row.getIsGrouped()
322
+ // if ( // TODO: enforce grouping row selection rules
323
323
  // !isGrouped ||
324
324
  // (isGrouped && table.options.enableGroupingRowSelection)
325
325
  // ) {
@@ -1 +1 @@
1
- {"version":3,"file":"RowSelection.js","sources":["../../../src/features/RowSelection.ts"],"sourcesContent":["import { TableFeature } from '../core/table'\nimport {\n OnChangeFn,\n TableGenerics,\n Table,\n Row,\n RowModel,\n Updater,\n RowData,\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<TData extends RowData> = {\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TData>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // table: Table<TData>,\n // rowModel: RowModel<TData>\n // ) => RowModel<TData>\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getIsAllSubRowsSelected: () => 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<TData extends RowData> = {\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<TData>\n getSelectedRowModel: () => RowModel<TData>\n getFilteredSelectedRowModel: () => RowModel<TData>\n getGroupedSelectedRowModel: () => RowModel<TData>\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionOptions<TData> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\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 createTable: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionInstance<TData> => {\n return {\n setRowSelection: updater => table.options.onRowSelectionChange?.(updater),\n resetRowSelection: defaultState =>\n table.setRowSelection(\n defaultState ? {} : table.initialState.rowSelection ?? {}\n ),\n toggleAllRowsSelected: value => {\n table.setRowSelection(old => {\n value =\n typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = table.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 if (!row.getCanSelect()) {\n return\n }\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 table.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, table)\n })\n\n return rowSelection\n }),\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\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 // table.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 // table.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => table.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getFilteredSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getGroupedSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows = table.getPreFilteredRowModel().flatRows\n const { rowSelection } = table.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 = table.getPaginationRowModel().flatRows\n const { rowSelection } = table.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 !table.getIsAllRowsSelected() &&\n !!Object.keys(table.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows.some(\n d => d.getIsSelected() || d.getIsSomeSelected()\n )\n },\n\n getToggleAllRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n\n getToggleAllPageRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): RowSelectionRow => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected()\n\n table.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, table)\n\n return selectedRowIds\n })\n },\n getIsSelected: () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection)\n },\n\n getIsSomeSelected: () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'some'\n },\n\n getIsAllSubRowsSelected: () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'all'\n },\n\n getCanSelect: () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n },\n\n getCanSelectSubRows: () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n },\n\n getCanMultiSelect: () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.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 = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n table: Table<TData>\n) => {\n const row = table.getRow(id)\n\n const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true\n }\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, table)\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: Table<TData>,\n rowModel: RowModel<TData>\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection)\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<TData>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>\n): boolean {\n return selection[row.id] ?? false\n}\n\nexport function isSubRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>,\n table: Table<TData>\n): boolean | 'some' | 'all' {\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)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","state","rowSelection","getDefaultOptions","table","onRowSelectionChange","makeStateUpdater","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","createTable","setRowSelection","updater","options","resetRowSelection","defaultState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","getCanSelect","id","toggleAllPageRowsSelected","resolvedValue","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","getSortedRowModel","preFilteredFlatRows","getPreFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","d","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","e","target","checked","getToggleAllPageRowsSelectedHandler","createRow","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","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/table'\nimport {\n OnChangeFn,\n TableGenerics,\n Table,\n Row,\n RowModel,\n Updater,\n RowData,\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<TData extends RowData> = {\n enableRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableMultiRowSelection?: boolean | ((row: Row<TData>) => boolean)\n enableSubRowSelection?: boolean | ((row: Row<TData>) => boolean)\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n // enableGroupingRowSelection?:\n // | boolean\n // | ((\n // row: Row<TData>\n // ) => boolean)\n // isAdditiveSelectEvent?: (e: unknown) => boolean\n // isInclusiveSelectEvent?: (e: unknown) => boolean\n // selectRowsFn?: (\n // table: Table<TData>,\n // rowModel: RowModel<TData>\n // ) => RowModel<TData>\n}\n\nexport type RowSelectionRow = {\n getIsSelected: () => boolean\n getIsSomeSelected: () => boolean\n getIsAllSubRowsSelected: () => 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<TData extends RowData> = {\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<TData>\n getSelectedRowModel: () => RowModel<TData>\n getFilteredSelectedRowModel: () => RowModel<TData>\n getGroupedSelectedRowModel: () => RowModel<TData>\n}\n\n//\n\nexport const RowSelection: TableFeature = {\n getInitialState: (state): RowSelectionTableState => {\n return {\n rowSelection: {},\n ...state,\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionOptions<TData> => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\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 createTable: <TData extends RowData>(\n table: Table<TData>\n ): RowSelectionInstance<TData> => {\n return {\n setRowSelection: updater => table.options.onRowSelectionChange?.(updater),\n resetRowSelection: defaultState =>\n table.setRowSelection(\n defaultState ? {} : table.initialState.rowSelection ?? {}\n ),\n toggleAllRowsSelected: value => {\n table.setRowSelection(old => {\n value =\n typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected()\n\n const rowSelection = { ...old }\n\n const preGroupedFlatRows = table.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 if (!row.getCanSelect()) {\n return\n }\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 table.setRowSelection(old => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table.getIsAllPageRowsSelected()\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, table)\n })\n\n return rowSelection\n }),\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\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 // table.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 // table.setRowSelection(selectedRowIds)\n // },\n getPreSelectedRowModel: () => table.getCoreRowModel(),\n getSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getCoreRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getFilteredSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getFilteredRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getFilteredSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n getGroupedSelectedRowModel: memo(\n () => [table.getState().rowSelection, table.getSortedRowModel()],\n (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(table, rowModel)\n },\n {\n key:\n process.env.NODE_ENV === 'production' &&\n 'getGroupedSelectedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n }\n ),\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n getIsAllRowsSelected: () => {\n const preFilteredFlatRows = table.getPreFilteredRowModel().flatRows\n const { rowSelection } = table.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 = table.getPaginationRowModel().flatRows\n const { rowSelection } = table.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 !table.getIsAllRowsSelected() &&\n !!Object.keys(table.getState().rowSelection ?? {}).length\n )\n },\n\n getIsSomePageRowsSelected: () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows\n return table.getIsAllPageRowsSelected()\n ? false\n : paginationFlatRows.some(\n d => d.getIsSelected() || d.getIsSomeSelected()\n )\n },\n\n getToggleAllRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n\n getToggleAllPageRowsSelectedHandler: () => {\n return (e: unknown) => {\n table.toggleAllPageRowsSelected(\n ((e as MouseEvent).target as HTMLInputElement).checked\n )\n }\n },\n }\n },\n\n createRow: <TData extends RowData>(\n row: Row<TData>,\n table: Table<TData>\n ): RowSelectionRow => {\n return {\n toggleSelected: value => {\n const isSelected = row.getIsSelected()\n\n table.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, table)\n\n return selectedRowIds\n })\n },\n getIsSelected: () => {\n const { rowSelection } = table.getState()\n return isRowSelected(row, rowSelection)\n },\n\n getIsSomeSelected: () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'some'\n },\n\n getIsAllSubRowsSelected: () => {\n const { rowSelection } = table.getState()\n return isSubRowSelected(row, rowSelection, table) === 'all'\n },\n\n getCanSelect: () => {\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row)\n }\n\n return table.options.enableRowSelection ?? true\n },\n\n getCanSelectSubRows: () => {\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row)\n }\n\n return table.options.enableSubRowSelection ?? true\n },\n\n getCanMultiSelect: () => {\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row)\n }\n\n return table.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 = <TData extends RowData>(\n selectedRowIds: Record<string, boolean>,\n id: string,\n value: boolean,\n table: Table<TData>\n) => {\n const row = table.getRow(id)\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key])\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true\n }\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, table)\n )\n }\n}\n\nexport function selectRowsFn<TData extends RowData>(\n table: Table<TData>,\n rowModel: RowModel<TData>\n): RowModel<TData> {\n const rowSelection = table.getState().rowSelection\n\n const newSelectedFlatRows: Row<TData>[] = []\n const newSelectedRowsById: Record<string, Row<TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (rows: Row<TData>[], depth = 0): Row<TData>[] => {\n return rows\n .map(row => {\n const isSelected = isRowSelected(row, rowSelection)\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<TData>[]\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>\n): boolean {\n return selection[row.id] ?? false\n}\n\nexport function isSubRowSelected<TData extends RowData>(\n row: Row<TData>,\n selection: Record<string, boolean>,\n table: Table<TData>\n): boolean | 'some' | 'all' {\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)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n })\n\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n }\n\n return false\n}\n"],"names":["RowSelection","getInitialState","state","rowSelection","getDefaultOptions","table","onRowSelectionChange","makeStateUpdater","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","createTable","setRowSelection","updater","options","resetRowSelection","defaultState","initialState","toggleAllRowsSelected","value","old","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","flatRows","forEach","row","getCanSelect","id","toggleAllPageRowsSelected","resolvedValue","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","getSortedRowModel","preFilteredFlatRows","getPreFilteredRowModel","isAllRowsSelected","Boolean","some","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","getIsSomePageRowsSelected","d","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","e","target","checked","getToggleAllPageRowsSelectedHandler","createRow","toggleSelected","isSelected","selectedRowIds","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","getToggleSelectedHandler","canSelect","getRow","subRows","newSelectedFlatRows","newSelectedRowsById","recurseRows","depth","map","push","filter","selection","allChildrenSelected","someSelected","subRow"],"mappings":"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"}
@@ -35,9 +35,20 @@ function getGroupedRowModel() {
35
35
  depth = 0;
36
36
  }
37
37
 
38
- // This is the last level, just return the rows
39
- if (depth === existingGrouping.length) {
40
- return rows;
38
+ // Grouping depth has been been met
39
+ // Stop grouping and simply rewrite thd depth and row relationships
40
+ if (depth >= existingGrouping.length) {
41
+ return rows.map(row => {
42
+ row.depth = depth;
43
+ groupedFlatRows.push(row);
44
+ groupedRowsById[row.id] = row;
45
+
46
+ if (row.subRows) {
47
+ row.subRows = groupUpRecursively(row.subRows, depth + 1);
48
+ }
49
+
50
+ return row;
51
+ });
41
52
  }
42
53
 
43
54
  const columnId = existingGrouping[depth]; // Group the rows together for this level
@@ -1 +1 @@
1
- {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, TableGenerics, RowData } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId: string\n ) => {\n // This is the last level, just return the rows\n if (depth === existingGrouping.length) {\n return rows\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n map.set(resKey, [...previous, row])\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","map","index","groupingValue","groupedRows","id","subRows","leafRows","flattenBy","row","createRow","original","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","undefined","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","push","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
1
+ {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, TableGenerics, RowData } from '../types'\nimport { flattenBy, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1)\n }\n\n return row\n })\n }\n\n const columnId = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0, '')\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => table.options.debugAll ?? table.options.debugTable,\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n },\n }\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n map.set(resKey, [...previous, row])\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","map","row","push","id","subRows","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","index","groupingValue","groupedRows","leafRows","flattenBy","createRow","original","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","undefined","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","flatRows","rowsById","key","process","env","NODE_ENV","debug","options","debugAll","debugTable","onChange","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","previous","get","set"],"mappings":"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"}
@@ -2246,8 +2246,8 @@ const RowSelection = {
2246
2246
  const mutateRowIsSelected = (selectedRowIds, id, value, table) => {
2247
2247
  var _row$subRows;
2248
2248
 
2249
- const row = table.getRow(id);
2250
- row.getIsGrouped(); // if ( // TODO: enforce grouping row selection rules
2249
+ const row = table.getRow(id); // const isGrouped = row.getIsGrouped()
2250
+ // if ( // TODO: enforce grouping row selection rules
2251
2251
  // !isGrouped ||
2252
2252
  // (isGrouped && table.options.enableGroupingRowSelection)
2253
2253
  // ) {
@@ -3562,9 +3562,20 @@ function getGroupedRowModel() {
3562
3562
  depth = 0;
3563
3563
  }
3564
3564
 
3565
- // This is the last level, just return the rows
3566
- if (depth === existingGrouping.length) {
3567
- return rows;
3565
+ // Grouping depth has been been met
3566
+ // Stop grouping and simply rewrite thd depth and row relationships
3567
+ if (depth >= existingGrouping.length) {
3568
+ return rows.map(row => {
3569
+ row.depth = depth;
3570
+ groupedFlatRows.push(row);
3571
+ groupedRowsById[row.id] = row;
3572
+
3573
+ if (row.subRows) {
3574
+ row.subRows = groupUpRecursively(row.subRows, depth + 1);
3575
+ }
3576
+
3577
+ return row;
3578
+ });
3568
3579
  }
3569
3580
 
3570
3581
  const columnId = existingGrouping[depth]; // Group the rows together for this level