@tanstack/table-core 8.2.1 → 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.
@@ -51,6 +51,10 @@ const RowSelection = {
51
51
 
52
52
  if (value) {
53
53
  preGroupedFlatRows.forEach(row => {
54
+ if (!row.getCanSelect()) {
55
+ return;
56
+ }
57
+
54
58
  rowSelection[row.id] = true;
55
59
  });
56
60
  } else {
@@ -314,8 +318,8 @@ const RowSelection = {
314
318
  const mutateRowIsSelected = (selectedRowIds, id, value, table) => {
315
319
  var _row$subRows;
316
320
 
317
- const row = table.getRow(id);
318
- 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
319
323
  // !isGrouped ||
320
324
  // (isGrouped && table.options.enableGroupingRowSelection)
321
325
  // ) {
@@ -325,7 +329,9 @@ const mutateRowIsSelected = (selectedRowIds, id, value, table) => {
325
329
  Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);
326
330
  }
327
331
 
328
- selectedRowIds[id] = true;
332
+ if (row.getCanSelect()) {
333
+ selectedRowIds[id] = true;
334
+ }
329
335
  } else {
330
336
  delete selectedRowIds[id];
331
337
  } // }
@@ -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 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 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, 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","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","getCanSelect","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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"}
@@ -92,18 +92,17 @@ const Sorting = {
92
92
  // }
93
93
  // this needs to be outside of table.setSorting to be in sync with rerender
94
94
  const nextSortingOrder = column.getNextSortingOrder();
95
+ const hasManualValue = typeof desc !== 'undefined' && desc !== null;
95
96
  table.setSorting(old => {
96
- var _table$options$enable, _table$options$enable2;
97
-
98
97
  // Find any existing sorting for this column
99
98
  const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
100
99
  const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);
101
- const hasDescDefined = typeof desc !== 'undefined' && desc !== null;
102
100
  let newSorting = []; // What should we do with this sort action?
103
101
 
104
102
  let sortAction;
103
+ let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'; // Multi-mode
105
104
 
106
- if (column.getCanMultiSort() && multi) {
105
+ if (old != null && old.length && column.getCanMultiSort() && multi) {
107
106
  if (existingSorting) {
108
107
  sortAction = 'toggle';
109
108
  } else {
@@ -121,63 +120,71 @@ const Sorting = {
121
120
  } // Handle toggle states that will remove the sorting
122
121
 
123
122
 
124
- if (sortAction === 'toggle' && ( // Must be toggling
125
- (_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && // If enableSortRemove, enable in general
126
- !hasDescDefined && ( // Must not be setting desc
127
- multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) && // If multi, don't allow if enableMultiRemove
128
- !nextSortingOrder // Finally, detect if it should indeed be removed
129
- ) {
130
- sortAction = 'remove';
123
+ if (sortAction === 'toggle') {
124
+ // If we are "actually" toggling (not a manual set value), should we remove the sorting?
125
+ if (!hasManualValue) {
126
+ // Is our intention to remove?
127
+ if (!nextSortingOrder) {
128
+ sortAction = 'remove';
129
+ }
130
+ }
131
131
  }
132
132
 
133
- if (sortAction === 'replace') {
134
- newSorting = [{
135
- id: column.id,
136
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
137
- }];
138
- } else if (sortAction === 'add' && old != null && old.length) {
133
+ if (sortAction === 'add') {
139
134
  var _table$options$maxMul;
140
135
 
141
136
  newSorting = [...old, {
142
137
  id: column.id,
143
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
138
+ desc: nextDesc
144
139
  }]; // Take latest n columns
145
140
 
146
141
  newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));
147
- } else if (sortAction === 'toggle' && old != null && old.length) {
142
+ } else if (sortAction === 'toggle') {
148
143
  // This flips (or sets) the
149
144
  newSorting = old.map(d => {
150
145
  if (d.id === column.id) {
151
146
  return { ...d,
152
- desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
147
+ desc: nextDesc
153
148
  };
154
149
  }
155
150
 
156
151
  return d;
157
152
  });
158
- } else if (sortAction === 'remove' && old != null && old.length) {
153
+ } else if (sortAction === 'remove') {
159
154
  newSorting = old.filter(d => d.id !== column.id);
155
+ } else {
156
+ newSorting = [{
157
+ id: column.id,
158
+ desc: nextDesc
159
+ }];
160
160
  }
161
161
 
162
162
  return newSorting;
163
163
  });
164
164
  },
165
- getNextSortingOrder: () => {
165
+ getFirstSortDir: () => {
166
166
  var _ref, _column$columnDef$sor;
167
167
 
168
168
  const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';
169
- const firstSortDirection = sortDescFirst ? 'desc' : 'asc';
169
+ return sortDescFirst ? 'desc' : 'asc';
170
+ },
171
+ getNextSortingOrder: multi => {
172
+ var _table$options$enable, _table$options$enable2;
173
+
174
+ const firstSortDirection = column.getFirstSortDir();
170
175
  const isSorted = column.getIsSorted();
171
176
 
172
177
  if (!isSorted) {
173
178
  return firstSortDirection;
174
179
  }
175
180
 
176
- if (isSorted === firstSortDirection) {
177
- return isSorted === 'desc' ? 'asc' : 'desc';
178
- } else {
181
+ if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && ( // If enableSortRemove, enable in general
182
+ multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))
183
+ ) {
179
184
  return false;
180
185
  }
186
+
187
+ return isSorted === 'desc' ? 'asc' : 'desc';
181
188
  },
182
189
  getCanSort: () => {
183
190
  var _column$columnDef$ena, _table$options$enable3;
@@ -1 +1 @@
1
- {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n Table,\n Row,\n Updater,\n RowData,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFn<TData extends RowData> = {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport type SortingColumnDef<TData extends RowData> = {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TData extends RowData> = {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TData extends RowData> = {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TData extends RowData> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : (sortingFns[\n column.columnDef.sortingFn as BuiltInSortingFn\n ] as SortingFn<TData>)\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n\n if (column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (\n sortAction === 'toggle' && // Must be toggling\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? table.options.enableMultiRemove ?? true : true) && // If multi, don't allow if enableMultiRemove\n !nextSortingOrder // Finally, detect if it should indeed be removed\n ) {\n sortAction = 'remove'\n }\n\n if (sortAction === 'replace') {\n newSorting = [\n {\n id: column.id,\n desc: hasDescDefined ? desc! : nextSortingOrder! === 'desc',\n },\n ]\n } else if (sortAction === 'add' && old?.length) {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: hasDescDefined ? desc! : nextSortingOrder! === 'desc',\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle' && old?.length) {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: hasDescDefined ? desc! : nextSortingOrder! === 'desc',\n }\n }\n return d\n })\n } else if (sortAction === 'remove' && old?.length) {\n newSorting = old.filter(d => d.id !== column.id)\n }\n\n return newSorting\n })\n },\n\n getNextSortingOrder: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n const firstSortDirection = sortDescFirst ? 'desc' : 'asc'\n\n const isSorted = column.getIsSorted()\n if (!isSorted) {\n return firstSortDirection\n }\n if (isSorted === firstSortDirection) {\n return isSorted === 'desc' ? 'asc' : 'desc'\n } else {\n return false\n }\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","setSorting","old","existingSorting","find","d","existingIndex","findIndex","hasDescDefined","newSorting","sortAction","getCanMultiSort","options","enableSortingRemoval","enableMultiRemove","splice","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","sortDescFirst","firstSortDirection","isSorted","getIsSorted","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
1
+ {"version":3,"file":"Sorting.js","sources":["../../../src/features/Sorting.ts"],"sourcesContent":["import { RowModel } from '..'\nimport { TableFeature } from '../core/table'\nimport {\n BuiltInSortingFn,\n reSplitAlphaNumeric,\n sortingFns,\n} from '../sortingFns'\n\nimport {\n Column,\n OnChangeFn,\n TableGenerics,\n Table,\n Row,\n Updater,\n RowData,\n} from '../types'\n\nimport { isFunction, makeStateUpdater, Overwrite } from '../utils'\n\nexport type SortDirection = 'asc' | 'desc'\n\nexport type ColumnSort = {\n id: string\n desc: boolean\n}\n\nexport type SortingState = ColumnSort[]\n\nexport type SortingTableState = {\n sorting: SortingState\n}\n\nexport type SortingFn<TData extends RowData> = {\n (rowA: Row<TData>, rowB: Row<TData>, columnId: string): number\n}\n\nexport type CustomSortingFns<TData extends RowData> = Record<\n string,\n SortingFn<TData>\n>\n\nexport type SortingFnOption<TData extends RowData> =\n | 'auto'\n | BuiltInSortingFn\n | SortingFn<TData>\n\nexport type SortingColumnDef<TData extends RowData> = {\n sortingFn?: SortingFnOption<TData>\n sortDescFirst?: boolean\n enableSorting?: boolean\n enableMultiSort?: boolean\n invertSorting?: boolean\n sortUndefined?: false | -1 | 1\n}\n\nexport type SortingColumn<TData extends RowData> = {\n getAutoSortingFn: () => SortingFn<TData>\n getAutoSortDir: () => SortDirection\n getSortingFn: () => SortingFn<TData>\n getFirstSortDir: () => SortDirection\n getNextSortingOrder: () => SortDirection | false\n getCanSort: () => boolean\n getCanMultiSort: () => boolean\n getSortIndex: () => number\n getIsSorted: () => false | SortDirection\n clearSorting: () => void\n toggleSorting: (desc?: boolean, isMulti?: boolean) => void\n getToggleSortingHandler: () => undefined | ((event: unknown) => void)\n}\n\nexport type SortingOptions<TData extends RowData> = {\n manualSorting?: boolean\n onSortingChange?: OnChangeFn<SortingState>\n enableSorting?: boolean\n enableSortingRemoval?: boolean\n enableMultiRemove?: boolean\n enableMultiSort?: boolean\n sortDescFirst?: boolean\n getSortedRowModel?: (table: Table<any>) => () => RowModel<any>\n maxMultiSortColCount?: number\n isMultiSortEvent?: (e: unknown) => boolean\n}\n\nexport type SortingInstance<TData extends RowData> = {\n setSorting: (updater: Updater<SortingState>) => void\n resetSorting: (defaultState?: boolean) => void\n getPreSortedRowModel: () => RowModel<TData>\n getSortedRowModel: () => RowModel<TData>\n _getSortedRowModel?: () => RowModel<TData>\n}\n\n//\n\nexport const Sorting: TableFeature = {\n getInitialState: (state): SortingTableState => {\n return {\n sorting: [],\n ...state,\n }\n },\n\n getDefaultColumnDef: <TData extends RowData>(): SortingColumnDef<TData> => {\n return {\n sortingFn: 'auto',\n }\n },\n\n getDefaultOptions: <TData extends RowData>(\n table: Table<TData>\n ): SortingOptions<TData> => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: (e: unknown) => {\n return (e as MouseEvent).shiftKey\n },\n }\n },\n\n createColumn: <TData extends RowData, TValue>(\n column: Column<TData, TValue>,\n table: Table<TData>\n ): SortingColumn<TData> => {\n return {\n getAutoSortingFn: () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10)\n\n let isString = false\n\n for (const row of firstRows) {\n const value = row?.getValue(column.id)\n\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric\n }\n }\n }\n\n if (isString) {\n return sortingFns.text\n }\n\n return sortingFns.basic\n },\n getAutoSortDir: () => {\n const firstRow = table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow?.getValue(column.id)\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n },\n getSortingFn: () => {\n if (!column) {\n throw new Error()\n }\n\n return isFunction(column.columnDef.sortingFn)\n ? column.columnDef.sortingFn\n : column.columnDef.sortingFn === 'auto'\n ? column.getAutoSortingFn()\n : (sortingFns[\n column.columnDef.sortingFn as BuiltInSortingFn\n ] as SortingFn<TData>)\n },\n toggleSorting: (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder()\n const hasManualValue = typeof desc !== 'undefined' && desc !== null\n\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old?.find(d => d.id === column.id)\n const existingIndex = old?.findIndex(d => d.id === column.id)\n\n let newSorting: SortingState = []\n\n // What should we do with this sort action?\n let sortAction: 'add' | 'remove' | 'toggle' | 'replace'\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old?.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'add'\n }\n } else {\n // Normal mode\n if (old?.length && existingIndex !== old.length - 1) {\n sortAction = 'replace'\n } else if (existingSorting) {\n sortAction = 'toggle'\n } else {\n sortAction = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove'\n }\n }\n }\n\n if (sortAction === 'add') {\n newSorting = [\n ...old,\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n // Take latest n columns\n newSorting.splice(\n 0,\n newSorting.length -\n (table.options.maxMultiSortColCount ?? Number.MAX_SAFE_INTEGER)\n )\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc,\n }\n }\n return d\n })\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id)\n } else {\n newSorting = [\n {\n id: column.id,\n desc: nextDesc,\n },\n ]\n }\n\n return newSorting\n })\n },\n\n getFirstSortDir: () => {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n table.options.sortDescFirst ??\n column.getAutoSortDir() === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n },\n\n getNextSortingOrder: (multi?: boolean) => {\n const firstSortDirection = column.getFirstSortDir()\n const isSorted = column.getIsSorted()\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? table.options.enableMultiRemove ?? true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false\n }\n return isSorted === 'desc' ? 'asc' : 'desc'\n },\n\n getCanSort: () => {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n },\n\n getCanMultiSort: () => {\n return (\n column.columnDef.enableMultiSort ??\n table.options.enableMultiSort ??\n !!column.accessorFn\n )\n },\n\n getIsSorted: () => {\n const columnSort = table\n .getState()\n .sorting?.find(d => d.id === column.id)\n\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n },\n\n getSortIndex: () =>\n table.getState().sorting?.findIndex(d => d.id === column.id) ?? -1,\n\n clearSorting: () => {\n //clear sorting for just 1 column\n table.setSorting(old =>\n old?.length ? old.filter(d => d.id !== column.id) : []\n )\n },\n\n getToggleSortingHandler: () => {\n const canSort = column.getCanSort()\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column.toggleSorting?.(\n undefined,\n column.getCanMultiSort()\n ? table.options.isMultiSortEvent?.(e)\n : false\n )\n }\n },\n }\n },\n\n createTable: <TData extends RowData>(\n table: Table<TData>\n ): SortingInstance<TData> => {\n return {\n setSorting: updater => table.options.onSortingChange?.(updater),\n resetSorting: defaultState => {\n table.setSorting(defaultState ? [] : table.initialState?.sorting ?? [])\n },\n getPreSortedRowModel: () => table.getGroupedRowModel(),\n getSortedRowModel: () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table)\n }\n\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel()\n }\n\n return table._getSortedRowModel()\n },\n }\n },\n}\n"],"names":["Sorting","getInitialState","state","sorting","getDefaultColumnDef","sortingFn","getDefaultOptions","table","onSortingChange","makeStateUpdater","isMultiSortEvent","e","shiftKey","createColumn","column","getAutoSortingFn","firstRows","getFilteredRowModel","flatRows","slice","isString","row","value","getValue","id","Object","prototype","toString","call","sortingFns","datetime","split","reSplitAlphaNumeric","length","alphanumeric","text","basic","getAutoSortDir","firstRow","getSortingFn","Error","isFunction","columnDef","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","old","existingSorting","find","d","existingIndex","findIndex","newSorting","sortAction","nextDesc","getCanMultiSort","splice","options","maxMultiSortColCount","Number","MAX_SAFE_INTEGER","map","filter","getFirstSortDir","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","accessorFn","enableMultiSort","columnSort","getState","getSortIndex","clearSorting","getToggleSortingHandler","canSort","persist","undefined","createTable","updater","resetSorting","defaultState","initialState","getPreSortedRowModel","getGroupedRowModel","getSortedRowModel","_getSortedRowModel","manualSorting"],"mappings":"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"}
@@ -35,7 +35,12 @@ const textCaseSensitive = (rowA, rowB, columnId) => {
35
35
  };
36
36
 
37
37
  const datetime = (rowA, rowB, columnId) => {
38
- return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
38
+ const a = rowA.getValue(columnId);
39
+ const b = rowB.getValue(columnId); // Can handle nullish values
40
+ // Use > and < because == (and ===) doesn't work with
41
+ // Date objects (would require calling getTime()).
42
+
43
+ return a > b ? 1 : a < b ? -1 : 0;
39
44
  };
40
45
 
41
46
  const basic = (rowA, rowB, columnId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n (rowA.getValue(columnId) as Date).getTime(),\n (rowB.getValue(columnId) as Date).getTime()\n )\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","getTime","basic","a","b","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":";;;;;;;;;;;;;;AAEO,MAAMA,mBAAmB,GAAG,aAA5B;;AAEP,MAAMC,YAA4B,GAAG,CAACC,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAC7D,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EADwB,EAExBF,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EAFwB,CAA1B,CAAA;AAID,CALD,CAAA;;AAOA,MAAMC,yBAAyC,GAAG,CAACP,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAC1E,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CADgB,EAExBE,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAFgB,CAA1B,CAAA;AAID,CALD;AAQA;;;AACA,MAAMM,IAAoB,GAAG,CAACR,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EACrD,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EADiB,EAEjBF,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EAFiB,CAAnB,CAAA;AAID,CALD;AAQA;;;AACA,MAAMI,iBAAiC,GAAG,CAACV,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAClE,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CADS,EAEjBE,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAFS,CAAnB,CAAA;AAID,CALD,CAAA;;AAOA,MAAMS,QAAwB,GAAG,CAACX,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EACzD,OAAOO,YAAY,CAChBT,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CAAkCU,OAAlC,EADiB,EAEhBX,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAAkCU,OAAlC,EAFiB,CAAnB,CAAA;AAID,CALD,CAAA;;AAOA,MAAMC,KAAqB,GAAG,CAACb,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;AACtD,EAAA,OAAOO,YAAY,CAACT,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,EAA0BD,IAAI,CAACI,QAAL,CAAcH,QAAd,CAA1B,CAAnB,CAAA;AACD,CAFD;;;AAMA,SAASO,YAAT,CAAsBK,CAAtB,EAA8BC,CAA9B,EAAsC;AACpC,EAAA,OAAOD,CAAC,KAAKC,CAAN,GAAU,CAAV,GAAcD,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAY,CAAC,CAAlC,CAAA;AACD,CAAA;;AAED,SAASX,QAAT,CAAkBU,CAAlB,EAA0B;AACxB,EAAA,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,IAAA,IAAIE,KAAK,CAACF,CAAD,CAAL,IAAYA,CAAC,KAAKG,QAAlB,IAA8BH,CAAC,KAAK,CAACG,QAAzC,EAAmD;AACjD,MAAA,OAAO,EAAP,CAAA;AACD,KAAA;;IACD,OAAOC,MAAM,CAACJ,CAAD,CAAb,CAAA;AACD,GAAA;;AACD,EAAA,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,IAAA,OAAOA,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,EAAP,CAAA;AACD;AAGD;AACA;;;AACA,SAASX,mBAAT,CAA6BgB,IAA7B,EAA2CC,IAA3C,EAAyD;AACvD;AACA;EACA,MAAMN,CAAC,GAAGK,IAAI,CAACE,KAAL,CAAWvB,mBAAX,CAAgCwB,CAAAA,MAAhC,CAAuCC,OAAvC,CAAV,CAAA;AACA,EAAA,MAAMR,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWvB,mBAAX,CAAA,CAAgCwB,MAAhC,CAAuCC,OAAvC,CAAV,CAJuD;;AAOvD,EAAA,OAAOT,CAAC,CAACU,MAAF,IAAYT,CAAC,CAACS,MAArB,EAA6B;AAC3B,IAAA,MAAMC,EAAE,GAAGX,CAAC,CAACY,KAAF,EAAX,CAAA;AACA,IAAA,MAAMC,EAAE,GAAGZ,CAAC,CAACW,KAAF,EAAX,CAAA;AAEA,IAAA,MAAME,EAAE,GAAGC,QAAQ,CAACJ,EAAD,EAAK,EAAL,CAAnB,CAAA;AACA,IAAA,MAAMK,EAAE,GAAGD,QAAQ,CAACF,EAAD,EAAK,EAAL,CAAnB,CAAA;IAEA,MAAMI,KAAK,GAAG,CAACH,EAAD,EAAKE,EAAL,CAASE,CAAAA,IAAT,EAAd,CAP2B;;AAU3B,IAAA,IAAIhB,KAAK,CAACe,KAAK,CAAC,CAAD,CAAN,CAAT,EAAsB;MACpB,IAAIN,EAAE,GAAGE,EAAT,EAAa;AACX,QAAA,OAAO,CAAP,CAAA;AACD,OAAA;;MACD,IAAIA,EAAE,GAAGF,EAAT,EAAa;AACX,QAAA,OAAO,CAAC,CAAR,CAAA;AACD,OAAA;;AACD,MAAA,SAAA;AACD,KAlB0B;;;AAqB3B,IAAA,IAAIT,KAAK,CAACe,KAAK,CAAC,CAAD,CAAN,CAAT,EAAsB;MACpB,OAAOf,KAAK,CAACY,EAAD,CAAL,GAAY,CAAC,CAAb,GAAiB,CAAxB,CAAA;AACD,KAvB0B;;;IA0B3B,IAAIA,EAAE,GAAGE,EAAT,EAAa;AACX,MAAA,OAAO,CAAP,CAAA;AACD,KAAA;;IACD,IAAIA,EAAE,GAAGF,EAAT,EAAa;AACX,MAAA,OAAO,CAAC,CAAR,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOd,CAAC,CAACU,MAAF,GAAWT,CAAC,CAACS,MAApB,CAAA;AACD;;;AAIM,MAAMS,UAAU,GAAG;EACxBlC,YADwB;EAExBQ,yBAFwB;EAGxBC,IAHwB;EAIxBE,iBAJwB;EAKxBC,QALwB;AAMxBE,EAAAA,KAAAA;AANwB;;;;;"}
1
+ {"version":3,"file":"sortingFns.js","sources":["../../src/sortingFns.ts"],"sourcesContent":["import { SortingFn } from './features/Sorting'\n\nexport const reSplitAlphaNumeric = /([0-9]+)/gm\n\nconst alphanumeric: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\nconst alphanumericCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareAlphanumeric(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)).toLowerCase(),\n toString(rowB.getValue(columnId)).toLowerCase()\n )\n}\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(\n toString(rowA.getValue(columnId)),\n toString(rowB.getValue(columnId))\n )\n}\n\nconst datetime: SortingFn<any> = (rowA, rowB, columnId) => {\n const a = rowA.getValue<Date>(columnId)\n const b = rowB.getValue<Date>(columnId)\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0\n}\n\nconst basic: SortingFn<any> = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId))\n}\n\n// Utils\n\nfunction compareBasic(a: any, b: any) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction toString(a: any) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr: string, bStr: string) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean)\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n const aa = a.shift()!\n const bb = b.shift()!\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0]!)) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1]!)) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\n// Exports\n\nexport const sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic,\n}\n\nexport type BuiltInSortingFn = keyof typeof sortingFns\n"],"names":["reSplitAlphaNumeric","alphanumeric","rowA","rowB","columnId","compareAlphanumeric","toString","getValue","toLowerCase","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","a","b","basic","isNaN","Infinity","String","aStr","bStr","split","filter","Boolean","length","aa","shift","bb","an","parseInt","bn","combo","sort","sortingFns"],"mappings":";;;;;;;;;;;;;;AAEO,MAAMA,mBAAmB,GAAG,aAA5B;;AAEP,MAAMC,YAA4B,GAAG,CAACC,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAC7D,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EADwB,EAExBF,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EAFwB,CAA1B,CAAA;AAID,CALD,CAAA;;AAOA,MAAMC,yBAAyC,GAAG,CAACP,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAC1E,OAAOC,mBAAmB,CACxBC,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CADgB,EAExBE,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAFgB,CAA1B,CAAA;AAID,CALD;AAQA;;;AACA,MAAMM,IAAoB,GAAG,CAACR,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EACrD,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EADiB,EAEjBF,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAAR,CAAkCI,WAAlC,EAFiB,CAAnB,CAAA;AAID,CALD;AAQA;;;AACA,MAAMI,iBAAiC,GAAG,CAACV,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;EAClE,OAAOO,YAAY,CACjBL,QAAQ,CAACJ,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,CADS,EAEjBE,QAAQ,CAACH,IAAI,CAACI,QAAL,CAAcH,QAAd,CAAD,CAFS,CAAnB,CAAA;AAID,CALD,CAAA;;AAOA,MAAMS,QAAwB,GAAG,CAACX,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;AACzD,EAAA,MAAMU,CAAC,GAAGZ,IAAI,CAACK,QAAL,CAAoBH,QAApB,CAAV,CAAA;EACA,MAAMW,CAAC,GAAGZ,IAAI,CAACI,QAAL,CAAoBH,QAApB,CAAV,CAFyD;AAKzD;AACA;;AACA,EAAA,OAAOU,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAYD,CAAC,GAAGC,CAAJ,GAAQ,CAAC,CAAT,GAAa,CAAhC,CAAA;AACD,CARD,CAAA;;AAUA,MAAMC,KAAqB,GAAG,CAACd,IAAD,EAAOC,IAAP,EAAaC,QAAb,KAA0B;AACtD,EAAA,OAAOO,YAAY,CAACT,IAAI,CAACK,QAAL,CAAcH,QAAd,CAAD,EAA0BD,IAAI,CAACI,QAAL,CAAcH,QAAd,CAA1B,CAAnB,CAAA;AACD,CAFD;;;AAMA,SAASO,YAAT,CAAsBG,CAAtB,EAA8BC,CAA9B,EAAsC;AACpC,EAAA,OAAOD,CAAC,KAAKC,CAAN,GAAU,CAAV,GAAcD,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAY,CAAC,CAAlC,CAAA;AACD,CAAA;;AAED,SAAST,QAAT,CAAkBQ,CAAlB,EAA0B;AACxB,EAAA,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,IAAA,IAAIG,KAAK,CAACH,CAAD,CAAL,IAAYA,CAAC,KAAKI,QAAlB,IAA8BJ,CAAC,KAAK,CAACI,QAAzC,EAAmD;AACjD,MAAA,OAAO,EAAP,CAAA;AACD,KAAA;;IACD,OAAOC,MAAM,CAACL,CAAD,CAAb,CAAA;AACD,GAAA;;AACD,EAAA,IAAI,OAAOA,CAAP,KAAa,QAAjB,EAA2B;AACzB,IAAA,OAAOA,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,EAAP,CAAA;AACD;AAGD;AACA;;;AACA,SAAST,mBAAT,CAA6Be,IAA7B,EAA2CC,IAA3C,EAAyD;AACvD;AACA;EACA,MAAMP,CAAC,GAAGM,IAAI,CAACE,KAAL,CAAWtB,mBAAX,CAAgCuB,CAAAA,MAAhC,CAAuCC,OAAvC,CAAV,CAAA;AACA,EAAA,MAAMT,CAAC,GAAGM,IAAI,CAACC,KAAL,CAAWtB,mBAAX,CAAA,CAAgCuB,MAAhC,CAAuCC,OAAvC,CAAV,CAJuD;;AAOvD,EAAA,OAAOV,CAAC,CAACW,MAAF,IAAYV,CAAC,CAACU,MAArB,EAA6B;AAC3B,IAAA,MAAMC,EAAE,GAAGZ,CAAC,CAACa,KAAF,EAAX,CAAA;AACA,IAAA,MAAMC,EAAE,GAAGb,CAAC,CAACY,KAAF,EAAX,CAAA;AAEA,IAAA,MAAME,EAAE,GAAGC,QAAQ,CAACJ,EAAD,EAAK,EAAL,CAAnB,CAAA;AACA,IAAA,MAAMK,EAAE,GAAGD,QAAQ,CAACF,EAAD,EAAK,EAAL,CAAnB,CAAA;IAEA,MAAMI,KAAK,GAAG,CAACH,EAAD,EAAKE,EAAL,CAASE,CAAAA,IAAT,EAAd,CAP2B;;AAU3B,IAAA,IAAIhB,KAAK,CAACe,KAAK,CAAC,CAAD,CAAN,CAAT,EAAsB;MACpB,IAAIN,EAAE,GAAGE,EAAT,EAAa;AACX,QAAA,OAAO,CAAP,CAAA;AACD,OAAA;;MACD,IAAIA,EAAE,GAAGF,EAAT,EAAa;AACX,QAAA,OAAO,CAAC,CAAR,CAAA;AACD,OAAA;;AACD,MAAA,SAAA;AACD,KAlB0B;;;AAqB3B,IAAA,IAAIT,KAAK,CAACe,KAAK,CAAC,CAAD,CAAN,CAAT,EAAsB;MACpB,OAAOf,KAAK,CAACY,EAAD,CAAL,GAAY,CAAC,CAAb,GAAiB,CAAxB,CAAA;AACD,KAvB0B;;;IA0B3B,IAAIA,EAAE,GAAGE,EAAT,EAAa;AACX,MAAA,OAAO,CAAP,CAAA;AACD,KAAA;;IACD,IAAIA,EAAE,GAAGF,EAAT,EAAa;AACX,MAAA,OAAO,CAAC,CAAR,CAAA;AACD,KAAA;AACF,GAAA;;AAED,EAAA,OAAOf,CAAC,CAACW,MAAF,GAAWV,CAAC,CAACU,MAApB,CAAA;AACD;;;AAIM,MAAMS,UAAU,GAAG;EACxBjC,YADwB;EAExBQ,yBAFwB;EAGxBC,IAHwB;EAIxBE,iBAJwB;EAKxBC,QALwB;AAMxBG,EAAAA,KAAAA;AANwB;;;;;"}
@@ -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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"}