@tanstack/table-core 9.0.0-alpha.36 → 9.0.0-alpha.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/core/columns/constructColumn.cjs.map +1 -1
  2. package/dist/core/columns/constructColumn.js.map +1 -1
  3. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  4. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  5. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  6. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  7. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  8. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  9. package/dist/core/row-models/createCoreRowModel.cjs.map +1 -1
  10. package/dist/core/row-models/createCoreRowModel.js.map +1 -1
  11. package/dist/core/rows/constructRow.cjs.map +1 -1
  12. package/dist/core/rows/constructRow.js.map +1 -1
  13. package/dist/core/table/constructTable.cjs.map +1 -1
  14. package/dist/core/table/constructTable.js.map +1 -1
  15. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  16. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  17. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  18. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  19. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  20. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  21. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  22. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  23. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  24. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  25. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  26. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  27. package/dist/features/column-filtering/filterRowsUtils.cjs.map +1 -1
  28. package/dist/features/column-filtering/filterRowsUtils.js.map +1 -1
  29. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  30. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  31. package/dist/features/column-grouping/createGroupedRowModel.cjs.map +1 -1
  32. package/dist/features/column-grouping/createGroupedRowModel.js.map +1 -1
  33. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  34. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  35. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  36. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  37. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  38. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  39. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  40. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  41. package/dist/features/row-expanding/createExpandedRowModel.cjs.map +1 -1
  42. package/dist/features/row-expanding/createExpandedRowModel.js.map +1 -1
  43. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  44. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  45. package/dist/features/row-pagination/createPaginatedRowModel.cjs.map +1 -1
  46. package/dist/features/row-pagination/createPaginatedRowModel.js.map +1 -1
  47. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  48. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  49. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  50. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  51. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  52. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  53. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  54. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  55. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  56. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  57. package/dist/fns/filterFns.cjs.map +1 -1
  58. package/dist/fns/filterFns.js.map +1 -1
  59. package/dist/utils.cjs.map +1 -1
  60. package/dist/utils.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/core/columns/coreColumnsFeature.utils.ts +1 -1
  63. package/src/core/row-models/createCoreRowModel.ts +1 -1
  64. package/src/core/rows/constructRow.ts +1 -1
  65. package/src/core/table/constructTable.ts +2 -4
  66. package/src/features/column-faceting/createFacetedMinMaxValues.ts +1 -1
  67. package/src/features/column-faceting/createFacetedRowModel.ts +1 -1
  68. package/src/features/column-faceting/createFacetedUniqueValues.ts +1 -1
  69. package/src/features/column-filtering/columnFilteringFeature.utils.ts +5 -10
  70. package/src/features/column-filtering/createFilteredRowModel.ts +1 -1
  71. package/src/features/column-grouping/columnGroupingFeature.utils.ts +4 -4
  72. package/src/features/column-grouping/createGroupedRowModel.ts +1 -1
  73. package/src/features/global-filtering/globalFilteringFeature.utils.ts +2 -3
  74. package/src/features/row-expanding/createExpandedRowModel.ts +1 -1
  75. package/src/features/row-expanding/rowExpandingFeature.utils.ts +1 -1
  76. package/src/features/row-pagination/createPaginatedRowModel.ts +1 -1
  77. package/src/features/row-selection/rowSelectionFeature.utils.ts +2 -4
  78. package/src/features/row-sorting/createSortedRowModel.ts +3 -4
  79. package/src/features/row-sorting/rowSortingFeature.utils.ts +4 -6
@@ -1 +1 @@
1
- {"version":3,"file":"rowPaginationFeature.utils.js","names":[],"sources":["../../../src/features/row-pagination/rowPaginationFeature.utils.ts"],"sourcesContent":["import { cloneState, functionalUpdate } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { PaginationState } from './rowPaginationFeature.types'\n\nconst defaultPageIndex = 0\nconst defaultPageSize = 10\n\nexport function getDefaultPaginationState(): PaginationState {\n return {\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize,\n }\n}\n\nexport function table_autoResetPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n if (\n table.options.autoResetAll ??\n table.options.autoResetPageIndex ??\n !table.options.manualPagination\n ) {\n table_resetPageIndex(table)\n }\n}\n\nexport function table_setPagination<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<PaginationState>) {\n const safeUpdater: Updater<PaginationState> = (old) => {\n const newState = functionalUpdate(updater, old)\n\n return newState\n }\n\n return table.options.onPaginationChange?.(safeUpdater)\n}\n\nexport function table_resetPagination<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setPagination(\n table,\n defaultState\n ? getDefaultPaginationState()\n : cloneState(\n table.initialState.pagination ?? getDefaultPaginationState(),\n ),\n )\n}\n\nexport function table_setPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<number>) {\n table_setPagination(table, (old) => {\n let pageIndex = functionalUpdate(updater, old.pageIndex)\n\n const maxPageIndex =\n typeof table.options.pageCount === 'undefined' ||\n table.options.pageCount === -1\n ? Number.MAX_SAFE_INTEGER\n : table.options.pageCount - 1\n\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\n\n return {\n ...old,\n pageIndex,\n }\n })\n}\n\nexport function table_resetPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n const currentPageIndex =\n table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex\n const newPageIndex = defaultState\n ? defaultPageIndex\n : (table.initialState.pagination?.pageIndex ?? defaultPageIndex)\n if (newPageIndex === currentPageIndex) return\n table_setPageIndex(table, newPageIndex)\n}\n\nexport function table_resetPageSize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n const currentPageSize =\n table.atoms.pagination?.get()?.pageSize ?? defaultPageSize\n const newPageSize = defaultState\n ? defaultPageSize\n : (table.initialState.pagination?.pageSize ?? defaultPageSize)\n if (newPageSize === currentPageSize) return\n table_setPageSize(table, newPageSize)\n}\n\nexport function table_setPageSize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<number>) {\n table_setPagination(table, (old) => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n}\n\nexport function table_getPageOptions<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const pageCount = table_getPageCount(table)\n let pageOptions: Array<number> = []\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n}\n\nexport function table_getCanPreviousPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (table.atoms.pagination?.get()?.pageIndex ?? 0) > 0\n}\n\nexport function table_getCanNextPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const pageIndex = table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex\n\n const pageCount = table_getPageCount(table)\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return pageIndex < pageCount - 1\n}\n\nexport function table_previousPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, (old) => old - 1)\n}\n\nexport function table_nextPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, (old) => {\n return old + 1\n })\n}\n\nexport function table_firstPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, 0)\n}\n\nexport function table_lastPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, table_getPageCount(table) - 1)\n}\n\nexport function table_getPageCount<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (\n table.options.pageCount ??\n Math.ceil(\n table_getRowCount(table) /\n (table.atoms.pagination?.get()?.pageSize ?? defaultPageSize),\n )\n )\n}\n\nexport function table_getRowCount<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table.options.rowCount ?? table.getPrePaginatedRowModel().rows.length\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowPaginationFeature.utils.js","names":[],"sources":["../../../src/features/row-pagination/rowPaginationFeature.utils.ts"],"sourcesContent":["import { cloneState, functionalUpdate } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { PaginationState } from './rowPaginationFeature.types'\n\nconst defaultPageIndex = 0\nconst defaultPageSize = 10\n\nexport function getDefaultPaginationState(): PaginationState {\n return {\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize,\n }\n}\n\nexport function table_autoResetPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n if (\n table.options.autoResetAll ??\n table.options.autoResetPageIndex ??\n !table.options.manualPagination\n ) {\n table_resetPageIndex(table)\n }\n}\n\nexport function table_setPagination<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<PaginationState>) {\n const safeUpdater: Updater<PaginationState> = (old) => {\n const newState = functionalUpdate(updater, old)\n\n return newState\n }\n\n return table.options.onPaginationChange?.(safeUpdater)\n}\n\nexport function table_resetPagination<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setPagination(\n table,\n defaultState\n ? getDefaultPaginationState()\n : cloneState(\n table.initialState.pagination ?? getDefaultPaginationState(),\n ),\n )\n}\n\nexport function table_setPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<number>) {\n table_setPagination(table, (old) => {\n let pageIndex = functionalUpdate(updater, old.pageIndex)\n\n const maxPageIndex =\n typeof table.options.pageCount === 'undefined' ||\n table.options.pageCount === -1\n ? Number.MAX_SAFE_INTEGER\n : table.options.pageCount - 1\n\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex))\n\n return {\n ...old,\n pageIndex,\n }\n })\n}\n\nexport function table_resetPageIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n const currentPageIndex =\n table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex\n const newPageIndex = defaultState\n ? defaultPageIndex\n : (table.initialState.pagination?.pageIndex ?? defaultPageIndex)\n if (newPageIndex === currentPageIndex) return\n table_setPageIndex(table, newPageIndex)\n}\n\nexport function table_resetPageSize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n const currentPageSize =\n table.atoms.pagination?.get()?.pageSize ?? defaultPageSize\n const newPageSize = defaultState\n ? defaultPageSize\n : (table.initialState.pagination?.pageSize ?? defaultPageSize)\n if (newPageSize === currentPageSize) return\n table_setPageSize(table, newPageSize)\n}\n\nexport function table_setPageSize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<number>) {\n table_setPagination(table, (old) => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize))\n const topRowIndex = old.pageSize * old.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n })\n}\n\nexport function table_getPageOptions<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const pageCount = table_getPageCount(table)\n let pageOptions: Array<number> = []\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i)\n }\n return pageOptions\n}\n\nexport function table_getCanPreviousPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (table.atoms.pagination?.get()?.pageIndex ?? 0) > 0\n}\n\nexport function table_getCanNextPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const pageIndex = table.atoms.pagination?.get()?.pageIndex ?? defaultPageIndex\n\n const pageCount = table_getPageCount(table)\n\n if (pageCount === -1) {\n return true\n }\n\n if (pageCount === 0) {\n return false\n }\n\n return pageIndex < pageCount - 1\n}\n\nexport function table_previousPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, (old) => old - 1)\n}\n\nexport function table_nextPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, (old) => {\n return old + 1\n })\n}\n\nexport function table_firstPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, 0)\n}\n\nexport function table_lastPage<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table_setPageIndex(table, table_getPageCount(table) - 1)\n}\n\nexport function table_getPageCount<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (\n table.options.pageCount ??\n Math.ceil(\n table_getRowCount(table) /\n (table.atoms.pagination?.get()?.pageSize ?? defaultPageSize),\n )\n )\n}\n\nexport function table_getRowCount<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table.options.rowCount ?? table.getPrePaginatedRowModel().rows.length\n}\n"],"mappings":";;;AAMA,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AAExB,SAAgB,4BAA6C;AAC3D,QAAO;EACL,WAAW;EACX,UAAU;EACX;;AAGH,SAAgB,yBAGd,OAAyC;AACzC,KACE,MAAM,QAAQ,gBACd,MAAM,QAAQ,sBACd,CAAC,MAAM,QAAQ,iBAEf,sBAAqB,MAAM;;AAI/B,SAAgB,oBAGd,OAAyC,SAAmC;;CAC5E,MAAM,eAAyC,QAAQ;AAGrD,SAFiB,iBAAiB,SAAS,IAE5B;;AAGjB,mDAAO,MAAM,SAAQ,uHAAqB,YAAY;;AAGxD,SAAgB,sBAGd,OAAyC,cAAwB;AACjE,qBACE,OACA,eACI,2BAA2B,GAC3B,WACE,MAAM,aAAa,cAAc,2BAA2B,CAC7D,CACN;;AAGH,SAAgB,mBAGd,OAAyC,SAA0B;AACnE,qBAAoB,QAAQ,QAAQ;EAClC,IAAI,YAAY,iBAAiB,SAAS,IAAI,UAAU;EAExD,MAAM,eACJ,OAAO,MAAM,QAAQ,cAAc,eACnC,MAAM,QAAQ,cAAc,KACxB,OAAO,mBACP,MAAM,QAAQ,YAAY;AAEhC,cAAY,KAAK,IAAI,GAAG,KAAK,IAAI,WAAW,aAAa,CAAC;AAE1D,SAAO;GACL,GAAG;GACH;GACD;GACD;;AAGJ,SAAgB,qBAGd,OAAyC,cAAwB;;CACjE,MAAM,6CACJ,MAAM,MAAM,2GAAY,KAAK,gFAAE,cAAa;CAC9C,MAAM,eAAe,eACjB,6CACC,MAAM,aAAa,0FAAY,cAAa;AACjD,KAAI,iBAAiB,iBAAkB;AACvC,oBAAmB,OAAO,aAAa;;AAGzC,SAAgB,oBAGd,OAAyC,cAAwB;;CACjE,MAAM,6CACJ,MAAM,MAAM,8GAAY,KAAK,kFAAE,aAAY;CAC7C,MAAM,cAAc,eAChB,6CACC,MAAM,aAAa,4FAAY,aAAY;AAChD,KAAI,gBAAgB,gBAAiB;AACrC,mBAAkB,OAAO,YAAY;;AAGvC,SAAgB,kBAGd,OAAyC,SAA0B;AACnE,qBAAoB,QAAQ,QAAQ;EAClC,MAAM,WAAW,KAAK,IAAI,GAAG,iBAAiB,SAAS,IAAI,SAAS,CAAC;EACrE,MAAM,cAAc,IAAI,WAAW,IAAI;EACvC,MAAM,YAAY,KAAK,MAAM,cAAc,SAAS;AAEpD,SAAO;GACL,GAAG;GACH;GACA;GACD;GACD;;AAGJ,SAAgB,qBAGd,OAAyC;CACzC,MAAM,YAAY,mBAAmB,MAAM;CAC3C,IAAI,cAA6B,EAAE;AACnC,KAAI,aAAa,YAAY,EAC3B,eAAc,CAAC,GAAG,IAAI,MAAM,UAAU,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE;AAErE,QAAO;;AAGT,SAAgB,yBAGd,OAAyC;;AACzC,oCAAQ,MAAM,MAAM,8GAAY,KAAK,kFAAE,cAAa,KAAK;;AAG3D,SAAgB,qBAGd,OAAyC;;CACzC,MAAM,uCAAY,MAAM,MAAM,8GAAY,KAAK,kFAAE,cAAa;CAE9D,MAAM,YAAY,mBAAmB,MAAM;AAE3C,KAAI,cAAc,GAChB,QAAO;AAGT,KAAI,cAAc,EAChB,QAAO;AAGT,QAAO,YAAY,YAAY;;AAGjC,SAAgB,mBAGd,OAAyC;AACzC,QAAO,mBAAmB,QAAQ,QAAQ,MAAM,EAAE;;AAGpD,SAAgB,eAGd,OAAyC;AACzC,QAAO,mBAAmB,QAAQ,QAAQ;AACxC,SAAO,MAAM;GACb;;AAGJ,SAAgB,gBAGd,OAAyC;AACzC,QAAO,mBAAmB,OAAO,EAAE;;AAGrC,SAAgB,eAGd,OAAyC;AACzC,QAAO,mBAAmB,OAAO,mBAAmB,MAAM,GAAG,EAAE;;AAGjE,SAAgB,mBAGd,OAAyC;;AACzC,QACE,MAAM,QAAQ,aACd,KAAK,KACH,kBAAkB,MAAM,+BACrB,MAAM,MAAM,8GAAY,KAAK,kFAAE,aAAY,iBAC/C;;AAIL,SAAgB,kBAGd,OAAyC;AACzC,QAAO,MAAM,QAAQ,YAAY,MAAM,yBAAyB,CAAC,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowPinningFeature.utils.cjs","names":["cloneState","row_getIsAllParentsExpanded","callMemoOrStaticFn"],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n\n const rows =\n (table.options.keepPinnedRows ?? true)\n ? // get all rows that are pinned even if they would not be otherwise visible\n // account for expanded parent rows, but not pagination or filtering\n pinnedRowIds.map((rowId) => {\n const row = table.getRow(rowId, true)\n return row_getIsAllParentsExpanded(row) ? row : null\n })\n : // else get only visible rows that are pinned\n pinnedRowIds.map(\n (rowId) => visibleRows.find((row) => row.id === rowId)!,\n )\n\n const filteredRows = rows.filter((r) => !!r)\n // Assign position property directly to preserve prototype chain\n filteredRows.forEach((row) => {\n ;(row as any).position = position\n })\n return filteredRows\n}\n\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowPinningFeature.utils.cjs","names":["cloneState","row_getIsAllParentsExpanded","callMemoOrStaticFn"],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n\n const rows =\n (table.options.keepPinnedRows ?? true)\n ? // get all rows that are pinned even if they would not be otherwise visible\n // account for expanded parent rows, but not pagination or filtering\n pinnedRowIds.map((rowId) => {\n const row = table.getRow(rowId, true)\n return row_getIsAllParentsExpanded(row) ? row : null\n })\n : // else get only visible rows that are pinned\n pinnedRowIds.map(\n (rowId) => visibleRows.find((row) => row.id === rowId)!,\n )\n\n const filteredRows = rows.filter((r) => !!r)\n // Assign position property directly to preserve prototype chain\n filteredRows.forEach((row) => {\n ;(row as any).position = position\n })\n return filteredRows\n}\n\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowPinningFeature.utils.js","names":[],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n\n const rows =\n (table.options.keepPinnedRows ?? true)\n ? // get all rows that are pinned even if they would not be otherwise visible\n // account for expanded parent rows, but not pagination or filtering\n pinnedRowIds.map((rowId) => {\n const row = table.getRow(rowId, true)\n return row_getIsAllParentsExpanded(row) ? row : null\n })\n : // else get only visible rows that are pinned\n pinnedRowIds.map(\n (rowId) => visibleRows.find((row) => row.id === rowId)!,\n )\n\n const filteredRows = rows.filter((r) => !!r)\n // Assign position property directly to preserve prototype chain\n filteredRows.forEach((row) => {\n ;(row as any).position = position\n })\n return filteredRows\n}\n\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowPinningFeature.utils.js","names":[],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n\n const rows =\n (table.options.keepPinnedRows ?? true)\n ? // get all rows that are pinned even if they would not be otherwise visible\n // account for expanded parent rows, but not pagination or filtering\n pinnedRowIds.map((rowId) => {\n const row = table.getRow(rowId, true)\n return row_getIsAllParentsExpanded(row) ? row : null\n })\n : // else get only visible rows that are pinned\n pinnedRowIds.map(\n (rowId) => visibleRows.find((row) => row.id === rowId)!,\n )\n\n const filteredRows = rows.filter((r) => !!r)\n // Assign position property directly to preserve prototype chain\n filteredRows.forEach((row) => {\n ;(row as any).position = position\n })\n return filteredRows\n}\n\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowSelectionFeature.utils.cjs","names":["cloneState"],"sources":["../../../src/features/row-selection/rowSelectionFeature.utils.ts"],"sourcesContent":["import { cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowSelectionState } from './rowSelectionFeature.types'\n\n// State APIs\n\nexport function getDefaultRowSelectionState(): RowSelectionState {\n return {}\n}\n\nexport function table_setRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowSelectionState>,\n) {\n table.options.onRowSelectionChange?.(updater)\n}\n\nexport function table_resetRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setRowSelection(\n table,\n defaultState ? {} : cloneState(table.initialState.rowSelection ?? {}),\n )\n}\n\n// Table APIs\n\nexport function table_toggleAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n value =\n typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)\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(row)) {\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\nexport function table_toggleAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table_getIsAllPageRowsSelected(table)\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach((row) => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n}\n\nexport function table_getPreSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n return table.getCoreRowModel()\n}\n\nexport function table_getSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getFilteredSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getGroupedSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getIsAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const rowSelection =\n table.atoms.rowSelection?.get() ?? ({} as RowSelectionState)\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length,\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n (row) => row_getCanSelect(row) && !rowSelection[row.id],\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n}\n\nexport function table_getIsAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table\n .getPaginatedRowModel()\n .flatRows.filter((row) => row_getCanSelect(row))\n const rowSelection =\n table.atoms.rowSelection?.get() ?? ({} as RowSelectionState)\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\nexport function table_getIsSomeRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const totalSelected = Object.keys(\n table.atoms.rowSelection?.get() ?? {},\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n}\n\nexport function table_getIsSomePageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table.getPaginatedRowModel().flatRows\n return table_getIsAllPageRowsSelected(table)\n ? false\n : paginationFlatRows\n .filter((row) => row_getCanSelect(row))\n .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))\n}\n\nexport function table_getToggleAllRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nexport function table_getToggleAllPageRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllPageRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n// Row APIs\n\nexport function row_toggleSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n value?: boolean,\n opts?: {\n selectChildren?: boolean\n },\n) {\n const isSelected = row_getIsSelected(row)\n\n table_setRowSelection(row.table, (old) => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row_getCanSelect(row) && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n row.table,\n )\n\n return selectedRowIds\n })\n}\n\nexport function row_getIsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isRowSelected(row)\n}\n\nexport function row_getIsSomeSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'some'\n}\n\nexport function row_getIsAllSubRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'all'\n}\n\nexport function row_getCanSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableRowSelection === 'function') {\n return options.enableRowSelection(row)\n }\n\n return options.enableRowSelection ?? true\n}\n\nexport function row_getCanSelectSubRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableSubRowSelection === 'function') {\n return options.enableSubRowSelection(row)\n }\n\n return options.enableSubRowSelection ?? true\n}\n\nexport function row_getCanMultiSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableMultiRowSelection === 'function') {\n return options.enableMultiRowSelection(row)\n }\n\n return options.enableMultiRowSelection ?? true\n}\n\nexport function row_getToggleSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canSelect = row_getCanSelect(row)\n\n return (e: unknown) => {\n if (!canSelect) return\n row_toggleSelected(\n row,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nconst mutateRowIsSelected = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n selectedRowIds: Record<string, boolean | undefined>,\n rowId: string,\n value: boolean,\n includeChildren: boolean,\n table: Table_Internal<TFeatures, TData>,\n) => {\n const row = table.getRow(rowId, true)\n\n if (value) {\n if (!row_getCanMultiSelect(row)) {\n Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])\n }\n if (row_getCanSelect(row)) {\n selectedRowIds[rowId] = true\n }\n } else {\n delete selectedRowIds[rowId]\n }\n\n if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {\n row.subRows.forEach((r) =>\n mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),\n )\n }\n}\n\nexport function selectRowsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {\n const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []\n const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n ): Array<Row<TFeatures, TData>> => {\n return rows\n .map((row) => {\n const isSelected = isRowSelected(row)\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((x) => !!x)\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n return (row.table.atoms.rowSelection?.get() ?? {})[row.id] ?? false\n}\n\nexport function isSubRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {\n if (!row.subRows.length) return false\n\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 (row_getCanSelect(subRow)) {\n if (isRowSelected(subRow)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowSelectionFeature.utils.cjs","names":["cloneState"],"sources":["../../../src/features/row-selection/rowSelectionFeature.utils.ts"],"sourcesContent":["import { cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowSelectionState } from './rowSelectionFeature.types'\n\n// State APIs\n\nexport function getDefaultRowSelectionState(): RowSelectionState {\n return {}\n}\n\nexport function table_setRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowSelectionState>,\n) {\n table.options.onRowSelectionChange?.(updater)\n}\n\nexport function table_resetRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setRowSelection(\n table,\n defaultState ? {} : cloneState(table.initialState.rowSelection ?? {}),\n )\n}\n\n// Table APIs\n\nexport function table_toggleAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n value =\n typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)\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(row)) {\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\nexport function table_toggleAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table_getIsAllPageRowsSelected(table)\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach((row) => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n}\n\nexport function table_getPreSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n return table.getCoreRowModel()\n}\n\nexport function table_getSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getFilteredSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getGroupedSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getIsAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length,\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n (row) => row_getCanSelect(row) && !rowSelection[row.id],\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n}\n\nexport function table_getIsAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table\n .getPaginatedRowModel()\n .flatRows.filter((row) => row_getCanSelect(row))\n const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}\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\nexport function table_getIsSomeRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const totalSelected = Object.keys(\n table.atoms.rowSelection?.get() ?? {},\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n}\n\nexport function table_getIsSomePageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table.getPaginatedRowModel().flatRows\n return table_getIsAllPageRowsSelected(table)\n ? false\n : paginationFlatRows\n .filter((row) => row_getCanSelect(row))\n .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))\n}\n\nexport function table_getToggleAllRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nexport function table_getToggleAllPageRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllPageRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n// Row APIs\n\nexport function row_toggleSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n value?: boolean,\n opts?: {\n selectChildren?: boolean\n },\n) {\n const isSelected = row_getIsSelected(row)\n\n table_setRowSelection(row.table, (old) => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row_getCanSelect(row) && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n row.table,\n )\n\n return selectedRowIds\n })\n}\n\nexport function row_getIsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isRowSelected(row)\n}\n\nexport function row_getIsSomeSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'some'\n}\n\nexport function row_getIsAllSubRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'all'\n}\n\nexport function row_getCanSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableRowSelection === 'function') {\n return options.enableRowSelection(row)\n }\n\n return options.enableRowSelection ?? true\n}\n\nexport function row_getCanSelectSubRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableSubRowSelection === 'function') {\n return options.enableSubRowSelection(row)\n }\n\n return options.enableSubRowSelection ?? true\n}\n\nexport function row_getCanMultiSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableMultiRowSelection === 'function') {\n return options.enableMultiRowSelection(row)\n }\n\n return options.enableMultiRowSelection ?? true\n}\n\nexport function row_getToggleSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canSelect = row_getCanSelect(row)\n\n return (e: unknown) => {\n if (!canSelect) return\n row_toggleSelected(\n row,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nconst mutateRowIsSelected = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n selectedRowIds: Record<string, boolean | undefined>,\n rowId: string,\n value: boolean,\n includeChildren: boolean,\n table: Table_Internal<TFeatures, TData>,\n) => {\n const row = table.getRow(rowId, true)\n\n if (value) {\n if (!row_getCanMultiSelect(row)) {\n Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])\n }\n if (row_getCanSelect(row)) {\n selectedRowIds[rowId] = true\n }\n } else {\n delete selectedRowIds[rowId]\n }\n\n if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {\n row.subRows.forEach((r) =>\n mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),\n )\n }\n}\n\nexport function selectRowsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {\n const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []\n const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n ): Array<Row<TFeatures, TData>> => {\n return rows\n .map((row) => {\n const isSelected = isRowSelected(row)\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((x) => !!x)\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n return (row.table.atoms.rowSelection?.get() ?? {})[row.id] ?? false\n}\n\nexport function isSubRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {\n if (!row.subRows.length) return false\n\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 (row_getCanSelect(subRow)) {\n if (isRowSelected(subRow)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowSelectionFeature.utils.js","names":[],"sources":["../../../src/features/row-selection/rowSelectionFeature.utils.ts"],"sourcesContent":["import { cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowSelectionState } from './rowSelectionFeature.types'\n\n// State APIs\n\nexport function getDefaultRowSelectionState(): RowSelectionState {\n return {}\n}\n\nexport function table_setRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowSelectionState>,\n) {\n table.options.onRowSelectionChange?.(updater)\n}\n\nexport function table_resetRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setRowSelection(\n table,\n defaultState ? {} : cloneState(table.initialState.rowSelection ?? {}),\n )\n}\n\n// Table APIs\n\nexport function table_toggleAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n value =\n typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)\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(row)) {\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\nexport function table_toggleAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table_getIsAllPageRowsSelected(table)\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach((row) => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n}\n\nexport function table_getPreSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n return table.getCoreRowModel()\n}\n\nexport function table_getSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getFilteredSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getGroupedSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getIsAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const rowSelection =\n table.atoms.rowSelection?.get() ?? ({} as RowSelectionState)\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length,\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n (row) => row_getCanSelect(row) && !rowSelection[row.id],\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n}\n\nexport function table_getIsAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table\n .getPaginatedRowModel()\n .flatRows.filter((row) => row_getCanSelect(row))\n const rowSelection =\n table.atoms.rowSelection?.get() ?? ({} as RowSelectionState)\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\nexport function table_getIsSomeRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const totalSelected = Object.keys(\n table.atoms.rowSelection?.get() ?? {},\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n}\n\nexport function table_getIsSomePageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table.getPaginatedRowModel().flatRows\n return table_getIsAllPageRowsSelected(table)\n ? false\n : paginationFlatRows\n .filter((row) => row_getCanSelect(row))\n .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))\n}\n\nexport function table_getToggleAllRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nexport function table_getToggleAllPageRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllPageRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n// Row APIs\n\nexport function row_toggleSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n value?: boolean,\n opts?: {\n selectChildren?: boolean\n },\n) {\n const isSelected = row_getIsSelected(row)\n\n table_setRowSelection(row.table, (old) => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row_getCanSelect(row) && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n row.table,\n )\n\n return selectedRowIds\n })\n}\n\nexport function row_getIsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isRowSelected(row)\n}\n\nexport function row_getIsSomeSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'some'\n}\n\nexport function row_getIsAllSubRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'all'\n}\n\nexport function row_getCanSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableRowSelection === 'function') {\n return options.enableRowSelection(row)\n }\n\n return options.enableRowSelection ?? true\n}\n\nexport function row_getCanSelectSubRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableSubRowSelection === 'function') {\n return options.enableSubRowSelection(row)\n }\n\n return options.enableSubRowSelection ?? true\n}\n\nexport function row_getCanMultiSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableMultiRowSelection === 'function') {\n return options.enableMultiRowSelection(row)\n }\n\n return options.enableMultiRowSelection ?? true\n}\n\nexport function row_getToggleSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canSelect = row_getCanSelect(row)\n\n return (e: unknown) => {\n if (!canSelect) return\n row_toggleSelected(\n row,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nconst mutateRowIsSelected = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n selectedRowIds: Record<string, boolean | undefined>,\n rowId: string,\n value: boolean,\n includeChildren: boolean,\n table: Table_Internal<TFeatures, TData>,\n) => {\n const row = table.getRow(rowId, true)\n\n if (value) {\n if (!row_getCanMultiSelect(row)) {\n Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])\n }\n if (row_getCanSelect(row)) {\n selectedRowIds[rowId] = true\n }\n } else {\n delete selectedRowIds[rowId]\n }\n\n if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {\n row.subRows.forEach((r) =>\n mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),\n )\n }\n}\n\nexport function selectRowsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {\n const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []\n const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n ): Array<Row<TFeatures, TData>> => {\n return rows\n .map((row) => {\n const isSelected = isRowSelected(row)\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((x) => !!x)\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n return (row.table.atoms.rowSelection?.get() ?? {})[row.id] ?? false\n}\n\nexport function isSubRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {\n if (!row.subRows.length) return false\n\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 (row_getCanSelect(subRow)) {\n if (isRowSelected(subRow)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowSelectionFeature.utils.js","names":[],"sources":["../../../src/features/row-selection/rowSelectionFeature.utils.ts"],"sourcesContent":["import { cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { RowSelectionState } from './rowSelectionFeature.types'\n\n// State APIs\n\nexport function getDefaultRowSelectionState(): RowSelectionState {\n return {}\n}\n\nexport function table_setRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowSelectionState>,\n) {\n table.options.onRowSelectionChange?.(updater)\n}\n\nexport function table_resetRowSelection<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setRowSelection(\n table,\n defaultState ? {} : cloneState(table.initialState.rowSelection ?? {}),\n )\n}\n\n// Table APIs\n\nexport function table_toggleAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n value =\n typeof value !== 'undefined' ? value : !table_getIsAllRowsSelected(table)\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(row)) {\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\nexport function table_toggleAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n table_setRowSelection(table, (old) => {\n const resolvedValue =\n typeof value !== 'undefined'\n ? value\n : !table_getIsAllPageRowsSelected(table)\n\n const rowSelection: RowSelectionState = { ...old }\n\n table.getRowModel().rows.forEach((row) => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table)\n })\n\n return rowSelection\n })\n}\n\nexport function table_getPreSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n return table.getCoreRowModel()\n}\n\nexport function table_getSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getFilteredSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getGroupedSelectedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const rowModel = table.getCoreRowModel()\n\n if (!Object.keys(table.atoms.rowSelection?.get() ?? {}).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {},\n }\n }\n\n return selectRowsFn(rowModel)\n}\n\nexport function table_getIsAllRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows\n const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}\n\n let isAllRowsSelected = Boolean(\n preGroupedFlatRows.length && Object.keys(rowSelection).length,\n )\n\n if (isAllRowsSelected) {\n if (\n preGroupedFlatRows.some(\n (row) => row_getCanSelect(row) && !rowSelection[row.id],\n )\n ) {\n isAllRowsSelected = false\n }\n }\n\n return isAllRowsSelected\n}\n\nexport function table_getIsAllPageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table\n .getPaginatedRowModel()\n .flatRows.filter((row) => row_getCanSelect(row))\n const rowSelection: RowSelectionState = table.atoms.rowSelection?.get() ?? {}\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\nexport function table_getIsSomeRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const totalSelected = Object.keys(\n table.atoms.rowSelection?.get() ?? {},\n ).length\n return (\n totalSelected > 0 &&\n totalSelected < table.getFilteredRowModel().flatRows.length\n )\n}\n\nexport function table_getIsSomePageRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const paginationFlatRows = table.getPaginatedRowModel().flatRows\n return table_getIsAllPageRowsSelected(table)\n ? false\n : paginationFlatRows\n .filter((row) => row_getCanSelect(row))\n .some((row) => row_getIsSelected(row) || row_getIsSomeSelected(row))\n}\n\nexport function table_getToggleAllRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nexport function table_getToggleAllPageRowsSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllPageRowsSelected(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n// Row APIs\n\nexport function row_toggleSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n row: Row<TFeatures, TData>,\n value?: boolean,\n opts?: {\n selectChildren?: boolean\n },\n) {\n const isSelected = row_getIsSelected(row)\n\n table_setRowSelection(row.table, (old) => {\n value = typeof value !== 'undefined' ? value : !isSelected\n\n if (row_getCanSelect(row) && isSelected === value) {\n return old\n }\n\n const selectedRowIds = { ...old }\n\n mutateRowIsSelected(\n selectedRowIds,\n row.id,\n value,\n opts?.selectChildren ?? true,\n row.table,\n )\n\n return selectedRowIds\n })\n}\n\nexport function row_getIsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isRowSelected(row)\n}\n\nexport function row_getIsSomeSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'some'\n}\n\nexport function row_getIsAllSubRowsSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return isSubRowSelected(row) === 'all'\n}\n\nexport function row_getCanSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableRowSelection === 'function') {\n return options.enableRowSelection(row)\n }\n\n return options.enableRowSelection ?? true\n}\n\nexport function row_getCanSelectSubRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableSubRowSelection === 'function') {\n return options.enableSubRowSelection(row)\n }\n\n return options.enableSubRowSelection ?? true\n}\n\nexport function row_getCanMultiSelect<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const options = row.table.options\n if (typeof options.enableMultiRowSelection === 'function') {\n return options.enableMultiRowSelection(row)\n }\n\n return options.enableMultiRowSelection ?? true\n}\n\nexport function row_getToggleSelectedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canSelect = row_getCanSelect(row)\n\n return (e: unknown) => {\n if (!canSelect) return\n row_toggleSelected(\n row,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\nconst mutateRowIsSelected = <\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n selectedRowIds: Record<string, boolean | undefined>,\n rowId: string,\n value: boolean,\n includeChildren: boolean,\n table: Table_Internal<TFeatures, TData>,\n) => {\n const row = table.getRow(rowId, true)\n\n if (value) {\n if (!row_getCanMultiSelect(row)) {\n Object.keys(selectedRowIds).forEach((key) => delete selectedRowIds[key])\n }\n if (row_getCanSelect(row)) {\n selectedRowIds[rowId] = true\n }\n } else {\n delete selectedRowIds[rowId]\n }\n\n if (includeChildren && row.subRows.length && row_getCanSelectSubRows(row)) {\n row.subRows.forEach((r) =>\n mutateRowIsSelected(selectedRowIds, r.id, value, includeChildren, table),\n )\n }\n}\n\nexport function selectRowsFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(rowModel: RowModel<TFeatures, TData>): RowModel<TFeatures, TData> {\n const newSelectedFlatRows: Array<Row<TFeatures, TData>> = []\n const newSelectedRowsById: Record<string, Row<TFeatures, TData>> = {}\n\n // Filters top level and nested rows\n const recurseRows = (\n rows: Array<Row<TFeatures, TData>>,\n depth = 0,\n ): Array<Row<TFeatures, TData>> => {\n return rows\n .map((row) => {\n const isSelected = isRowSelected(row)\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((x) => !!x)\n }\n\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById,\n }\n}\n\nexport function isRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n return (row.table.atoms.rowSelection?.get() ?? {})[row.id] ?? false\n}\n\nexport function isSubRowSelected<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean | 'some' | 'all' {\n if (!row.subRows.length) return false\n\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 (row_getCanSelect(subRow)) {\n if (isRowSelected(subRow)) {\n someSelected = true\n } else {\n allChildrenSelected = false\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow)\n if (subRowChildrenSelected === 'all') {\n someSelected = true\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true\n allChildrenSelected = false\n } else {\n allChildrenSelected = false\n }\n }\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSortedRowModel.cjs","names":["tableMemo","table_autoResetPageIndex","column_getCanSort","column_getSortFn"],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { SortFn, SortFns } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as Table_Internal<TFeatures, TData>\n if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) =>\n column_getCanSort(\n table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,\n ),\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }\n > = {}\n\n availableSorting.forEach((sortEntry) => {\n const column = table.getColumn(sortEntry.id) as\n | Column_Internal<TFeatures, TData>\n | undefined\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n }\n })\n\n const sortData = (rows: Array<Row<TFeatures, TData>>) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n // Preserve prototype chain so methods like getValue() remain accessible\n const sortedData = rows.map((row) => {\n const cloned = Object.create(Object.getPrototypeOf(row))\n return Object.assign(cloned, row)\n })\n\n sortedData.sort((rowA, rowB) => {\n for (const sortEntry of availableSorting) {\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach((row) => {\n sortedFlatRows.push(row)\n if (row.subRows.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(preSortedRowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,qBAId,SACsE;AACtE,SAAQ,WAAW;EACjB,MAAM,QAAQ;AACd,MAAI,CAAC,MAAM,aAAa,QAAS,OAAM,aAAa,UAAU;AAC9D,SAAOA,wBAAU;GACf,SAAS;GACT;GACA,QAAQ;GACR,gBAAgB;;oCACd,MAAM,MAAM,qFAAS,KAAK,EAC1B,MAAM,sBAAsB,CAC7B;;GACD,UAAU,sBAAsB,MAAM;GACtC,qBAAqBC,4DAAyB,MAAM;GACrD,CAAC;;;AAIN,SAAS,sBAGP,OAAqE;;CACrE,MAAM,oBAAoB,MAAM,sBAAsB;CACtD,MAAM,mCAAU,MAAM,MAAM,uFAAS,KAAK;AAE1C,KAAI,CAAC,kBAAkB,KAAK,UAAU,oDAAC,QAAS,QAC9C,QAAO;CAGT,MAAM,iBAA+C,EAAE;CAGvD,MAAM,mBAAmB,QAAQ,QAAQ,SACvCC,kDACE,MAAM,UAAU,KAAK,GAAG,CACzB,CACF;CAED,MAAM,iBAOF,EAAE;AAEN,kBAAiB,SAAS,cAAc;EACtC,MAAM,SAAS,MAAM,UAAU,UAAU,GAAG;AAG5C,MAAI,CAAC,OAAQ;AAEb,iBAAe,UAAU,MAAM;GAC7B,eAAe,OAAO,UAAU;GAChC,eAAe,OAAO,UAAU;GAChC,QAAQC,iDAAiB,OAAO;GACjC;GACD;CAEF,MAAM,YAAY,SAAuC;EAIvD,MAAM,aAAa,KAAK,KAAK,QAAQ;AAEnC,UAAO,OAAO,OADC,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,EAC3B,IAAI;IACjC;AAEF,aAAW,MAAM,MAAM,SAAS;AAC9B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,eAAe,UAAU;IAC5C,MAAM,gBAAgB,WAAW;IACjC,MAAM,SAAS,UAAU;IAEzB,IAAI,UAAU;AAGd,QAAI,eAAe;KACjB,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAC1C,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAE1C,MAAM,aAAa,WAAW;KAC9B,MAAM,aAAa,WAAW;AAE9B,SAAI,cAAc,YAAY;AAC5B,UAAI,kBAAkB,QAAS,QAAO,aAAa,KAAK;AACxD,UAAI,kBAAkB,OAAQ,QAAO,aAAa,IAAI;AACtD,gBACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;;;AAIb,QAAI,YAAY,EACd,WAAU,WAAW,OAAO,MAAM,MAAM,UAAU,GAAG;AAIvD,QAAI,YAAY,GAAG;AACjB,SAAI,OACF,YAAW;AAGb,SAAI,WAAW,cACb,YAAW;AAGb,YAAO;;;AAGX,UAAO,KAAK,QAAQ,KAAK;IACzB;AAGF,aAAW,SAAS,QAAQ;AAC1B,kBAAe,KAAK,IAAI;AACxB,OAAI,IAAI,QAAQ,OACd,KAAI,UAAU,SAAS,IAAI,QAAQ;IAErC;AAEF,SAAO;;AAGT,QAAO;EACL,MAAM,SAAS,kBAAkB,KAAK;EACtC,UAAU;EACV,UAAU,kBAAkB;EAC7B"}
1
+ {"version":3,"file":"createSortedRowModel.cjs","names":["tableMemo","table_autoResetPageIndex","column_getCanSort","column_getSortFn"],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { SortFn, SortFns } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) =>\n column_getCanSort(\n table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,\n ),\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }\n > = {}\n\n availableSorting.forEach((sortEntry) => {\n const column: Column_Internal<TFeatures, TData> | undefined =\n table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n }\n })\n\n const sortData = (rows: Array<Row<TFeatures, TData>>) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n // Preserve prototype chain so methods like getValue() remain accessible\n const sortedData = rows.map((row) => {\n const cloned = Object.create(Object.getPrototypeOf(row))\n return Object.assign(cloned, row)\n })\n\n sortedData.sort((rowA, rowB) => {\n for (const sortEntry of availableSorting) {\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach((row) => {\n sortedFlatRows.push(row)\n if (row.subRows.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(preSortedRowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,qBAId,SACsE;AACtE,SAAQ,WAAW;EACjB,MAAM,QAA0C;AAChD,MAAI,CAAC,MAAM,aAAa,QAAS,OAAM,aAAa,UAAU;AAC9D,SAAOA,wBAAU;GACf,SAAS;GACT;GACA,QAAQ;GACR,gBAAgB;;oCACd,MAAM,MAAM,qFAAS,KAAK,EAC1B,MAAM,sBAAsB,CAC7B;;GACD,UAAU,sBAAsB,MAAM;GACtC,qBAAqBC,4DAAyB,MAAM;GACrD,CAAC;;;AAIN,SAAS,sBAGP,OAAqE;;CACrE,MAAM,oBAAoB,MAAM,sBAAsB;CACtD,MAAM,mCAAU,MAAM,MAAM,uFAAS,KAAK;AAE1C,KAAI,CAAC,kBAAkB,KAAK,UAAU,oDAAC,QAAS,QAC9C,QAAO;CAGT,MAAM,iBAA+C,EAAE;CAGvD,MAAM,mBAAmB,QAAQ,QAAQ,SACvCC,kDACE,MAAM,UAAU,KAAK,GAAG,CACzB,CACF;CAED,MAAM,iBAOF,EAAE;AAEN,kBAAiB,SAAS,cAAc;EACtC,MAAM,SACJ,MAAM,UAAU,UAAU,GAAG;AAC/B,MAAI,CAAC,OAAQ;AAEb,iBAAe,UAAU,MAAM;GAC7B,eAAe,OAAO,UAAU;GAChC,eAAe,OAAO,UAAU;GAChC,QAAQC,iDAAiB,OAAO;GACjC;GACD;CAEF,MAAM,YAAY,SAAuC;EAIvD,MAAM,aAAa,KAAK,KAAK,QAAQ;AAEnC,UAAO,OAAO,OADC,OAAO,OAAO,OAAO,eAAe,IAAI,CAC5B,EAAE,IAAI;IACjC;AAEF,aAAW,MAAM,MAAM,SAAS;AAC9B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,eAAe,UAAU;IAC5C,MAAM,gBAAgB,WAAW;IACjC,MAAM,SAAS,UAAU;IAEzB,IAAI,UAAU;AAGd,QAAI,eAAe;KACjB,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAC1C,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAE1C,MAAM,aAAa,WAAW;KAC9B,MAAM,aAAa,WAAW;AAE9B,SAAI,cAAc,YAAY;AAC5B,UAAI,kBAAkB,QAAS,QAAO,aAAa,KAAK;AACxD,UAAI,kBAAkB,OAAQ,QAAO,aAAa,IAAI;AACtD,gBACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;;;AAIb,QAAI,YAAY,EACd,WAAU,WAAW,OAAO,MAAM,MAAM,UAAU,GAAG;AAIvD,QAAI,YAAY,GAAG;AACjB,SAAI,OACF,YAAW;AAGb,SAAI,WAAW,cACb,YAAW;AAGb,YAAO;;;AAGX,UAAO,KAAK,QAAQ,KAAK;IACzB;AAGF,aAAW,SAAS,QAAQ;AAC1B,kBAAe,KAAK,IAAI;AACxB,OAAI,IAAI,QAAQ,OACd,KAAI,UAAU,SAAS,IAAI,QAAQ;IAErC;AAEF,SAAO;;AAGT,QAAO;EACL,MAAM,SAAS,kBAAkB,KAAK;EACtC,UAAU;EACV,UAAU,kBAAkB;EAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"createSortedRowModel.js","names":[],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { SortFn, SortFns } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table = _table as Table_Internal<TFeatures, TData>\n if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) =>\n column_getCanSort(\n table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,\n ),\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }\n > = {}\n\n availableSorting.forEach((sortEntry) => {\n const column = table.getColumn(sortEntry.id) as\n | Column_Internal<TFeatures, TData>\n | undefined\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n }\n })\n\n const sortData = (rows: Array<Row<TFeatures, TData>>) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n // Preserve prototype chain so methods like getValue() remain accessible\n const sortedData = rows.map((row) => {\n const cloned = Object.create(Object.getPrototypeOf(row))\n return Object.assign(cloned, row)\n })\n\n sortedData.sort((rowA, rowB) => {\n for (const sortEntry of availableSorting) {\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach((row) => {\n sortedFlatRows.push(row)\n if (row.subRows.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(preSortedRowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,qBAId,SACsE;AACtE,SAAQ,WAAW;EACjB,MAAM,QAAQ;AACd,MAAI,CAAC,MAAM,aAAa,QAAS,OAAM,aAAa,UAAU;AAC9D,SAAO,UAAU;GACf,SAAS;GACT;GACA,QAAQ;GACR,gBAAgB;;oCACd,MAAM,MAAM,qFAAS,KAAK,EAC1B,MAAM,sBAAsB,CAC7B;;GACD,UAAU,sBAAsB,MAAM;GACtC,qBAAqB,yBAAyB,MAAM;GACrD,CAAC;;;AAIN,SAAS,sBAGP,OAAqE;;CACrE,MAAM,oBAAoB,MAAM,sBAAsB;CACtD,MAAM,mCAAU,MAAM,MAAM,uFAAS,KAAK;AAE1C,KAAI,CAAC,kBAAkB,KAAK,UAAU,oDAAC,QAAS,QAC9C,QAAO;CAGT,MAAM,iBAA+C,EAAE;CAGvD,MAAM,mBAAmB,QAAQ,QAAQ,SACvC,kBACE,MAAM,UAAU,KAAK,GAAG,CACzB,CACF;CAED,MAAM,iBAOF,EAAE;AAEN,kBAAiB,SAAS,cAAc;EACtC,MAAM,SAAS,MAAM,UAAU,UAAU,GAAG;AAG5C,MAAI,CAAC,OAAQ;AAEb,iBAAe,UAAU,MAAM;GAC7B,eAAe,OAAO,UAAU;GAChC,eAAe,OAAO,UAAU;GAChC,QAAQ,iBAAiB,OAAO;GACjC;GACD;CAEF,MAAM,YAAY,SAAuC;EAIvD,MAAM,aAAa,KAAK,KAAK,QAAQ;AAEnC,UAAO,OAAO,OADC,OAAO,OAAO,OAAO,eAAe,IAAI,CAAC,EAC3B,IAAI;IACjC;AAEF,aAAW,MAAM,MAAM,SAAS;AAC9B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,eAAe,UAAU;IAC5C,MAAM,gBAAgB,WAAW;IACjC,MAAM,SAAS,UAAU;IAEzB,IAAI,UAAU;AAGd,QAAI,eAAe;KACjB,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAC1C,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAE1C,MAAM,aAAa,WAAW;KAC9B,MAAM,aAAa,WAAW;AAE9B,SAAI,cAAc,YAAY;AAC5B,UAAI,kBAAkB,QAAS,QAAO,aAAa,KAAK;AACxD,UAAI,kBAAkB,OAAQ,QAAO,aAAa,IAAI;AACtD,gBACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;;;AAIb,QAAI,YAAY,EACd,WAAU,WAAW,OAAO,MAAM,MAAM,UAAU,GAAG;AAIvD,QAAI,YAAY,GAAG;AACjB,SAAI,OACF,YAAW;AAGb,SAAI,WAAW,cACb,YAAW;AAGb,YAAO;;;AAGX,UAAO,KAAK,QAAQ,KAAK;IACzB;AAGF,aAAW,SAAS,QAAQ;AAC1B,kBAAe,KAAK,IAAI;AACxB,OAAI,IAAI,QAAQ,OACd,KAAI,UAAU,SAAS,IAAI,QAAQ;IAErC;AAEF,SAAO;;AAGT,QAAO;EACL,MAAM,SAAS,kBAAkB,KAAK;EACtC,UAAU;EACV,UAAU,kBAAkB;EAC7B"}
1
+ {"version":3,"file":"createSortedRowModel.js","names":[],"sources":["../../../src/features/row-sorting/createSortedRowModel.ts"],"sourcesContent":["import { tableMemo } from '../../utils'\nimport { table_autoResetPageIndex } from '../row-pagination/rowPaginationFeature.utils'\nimport { column_getCanSort, column_getSortFn } from './rowSortingFeature.utils'\nimport type { Column_Internal } from '../../types/Column'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { RowModel } from '../../core/row-models/coreRowModelsFeature.types'\nimport type { Table, Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type { SortFn, SortFns } from './rowSortingFeature.types'\nimport type { RowData } from '../../types/type-utils'\n\nexport function createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n sortFns: Record<keyof SortFns, SortFn<TFeatures, TData>>,\n): (table: Table<TFeatures, TData>) => () => RowModel<TFeatures, TData> {\n return (_table) => {\n const table: Table_Internal<TFeatures, TData> = _table\n if (!table._rowModelFns.sortFns) table._rowModelFns.sortFns = sortFns\n return tableMemo({\n feature: 'rowSortingFeature',\n table,\n fnName: 'table.getSortedRowModel',\n memoDeps: () => [\n table.atoms.sorting?.get(),\n table.getPreSortedRowModel(),\n ],\n fn: () => _createSortedRowModel(table),\n onAfterUpdate: () => table_autoResetPageIndex(table),\n })\n }\n}\n\nfunction _createSortedRowModel<\n TFeatures extends TableFeatures,\n TData extends RowData = any,\n>(table: Table_Internal<TFeatures, TData>): RowModel<TFeatures, TData> {\n const preSortedRowModel = table.getPreSortedRowModel()\n const sorting = table.atoms.sorting?.get()\n\n if (!preSortedRowModel.rows.length || !sorting?.length) {\n return preSortedRowModel\n }\n\n const sortedFlatRows: Array<Row<TFeatures, TData>> = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sorting.filter((sort) =>\n column_getCanSort(\n table.getColumn(sort.id) as Column_Internal<TFeatures, TData>,\n ),\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortFn: SortFn<TFeatures, TData>\n }\n > = {}\n\n availableSorting.forEach((sortEntry) => {\n const column: Column_Internal<TFeatures, TData> | undefined =\n table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortFn: column_getSortFn(column),\n }\n })\n\n const sortData = (rows: Array<Row<TFeatures, TData>>) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n // Preserve prototype chain so methods like getValue() remain accessible\n const sortedData = rows.map((row) => {\n const cloned = Object.create(Object.getPrototypeOf(row))\n return Object.assign(cloned, row)\n })\n\n sortedData.sort((rowA, rowB) => {\n for (const sortEntry of availableSorting) {\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry.desc\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach((row) => {\n sortedFlatRows.push(row)\n if (row.subRows.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(preSortedRowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: preSortedRowModel.rowsById,\n }\n}\n"],"mappings":";;;;;AAWA,SAAgB,qBAId,SACsE;AACtE,SAAQ,WAAW;EACjB,MAAM,QAA0C;AAChD,MAAI,CAAC,MAAM,aAAa,QAAS,OAAM,aAAa,UAAU;AAC9D,SAAO,UAAU;GACf,SAAS;GACT;GACA,QAAQ;GACR,gBAAgB;;oCACd,MAAM,MAAM,qFAAS,KAAK,EAC1B,MAAM,sBAAsB,CAC7B;;GACD,UAAU,sBAAsB,MAAM;GACtC,qBAAqB,yBAAyB,MAAM;GACrD,CAAC;;;AAIN,SAAS,sBAGP,OAAqE;;CACrE,MAAM,oBAAoB,MAAM,sBAAsB;CACtD,MAAM,mCAAU,MAAM,MAAM,uFAAS,KAAK;AAE1C,KAAI,CAAC,kBAAkB,KAAK,UAAU,oDAAC,QAAS,QAC9C,QAAO;CAGT,MAAM,iBAA+C,EAAE;CAGvD,MAAM,mBAAmB,QAAQ,QAAQ,SACvC,kBACE,MAAM,UAAU,KAAK,GAAG,CACzB,CACF;CAED,MAAM,iBAOF,EAAE;AAEN,kBAAiB,SAAS,cAAc;EACtC,MAAM,SACJ,MAAM,UAAU,UAAU,GAAG;AAC/B,MAAI,CAAC,OAAQ;AAEb,iBAAe,UAAU,MAAM;GAC7B,eAAe,OAAO,UAAU;GAChC,eAAe,OAAO,UAAU;GAChC,QAAQ,iBAAiB,OAAO;GACjC;GACD;CAEF,MAAM,YAAY,SAAuC;EAIvD,MAAM,aAAa,KAAK,KAAK,QAAQ;AAEnC,UAAO,OAAO,OADC,OAAO,OAAO,OAAO,eAAe,IAAI,CAC5B,EAAE,IAAI;IACjC;AAEF,aAAW,MAAM,MAAM,SAAS;AAC9B,QAAK,MAAM,aAAa,kBAAkB;IACxC,MAAM,aAAa,eAAe,UAAU;IAC5C,MAAM,gBAAgB,WAAW;IACjC,MAAM,SAAS,UAAU;IAEzB,IAAI,UAAU;AAGd,QAAI,eAAe;KACjB,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAC1C,MAAM,SAAS,KAAK,SAAS,UAAU,GAAG;KAE1C,MAAM,aAAa,WAAW;KAC9B,MAAM,aAAa,WAAW;AAE9B,SAAI,cAAc,YAAY;AAC5B,UAAI,kBAAkB,QAAS,QAAO,aAAa,KAAK;AACxD,UAAI,kBAAkB,OAAQ,QAAO,aAAa,IAAI;AACtD,gBACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;;;AAIb,QAAI,YAAY,EACd,WAAU,WAAW,OAAO,MAAM,MAAM,UAAU,GAAG;AAIvD,QAAI,YAAY,GAAG;AACjB,SAAI,OACF,YAAW;AAGb,SAAI,WAAW,cACb,YAAW;AAGb,YAAO;;;AAGX,UAAO,KAAK,QAAQ,KAAK;IACzB;AAGF,aAAW,SAAS,QAAQ;AAC1B,kBAAe,KAAK,IAAI;AACxB,OAAI,IAAI,QAAQ,OACd,KAAI,UAAU,SAAS,IAAI,QAAQ;IAErC;AAEF,SAAO;;AAGT,QAAO;EACL,MAAM,SAAS,kBAAkB,KAAK;EACtC,UAAU;EACV,UAAU,kBAAkB;EAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowSortingFeature.utils.cjs","names":["cloneState","reSplitAlphaNumeric","sortFn_basic","isFunction"],"sources":["../../../src/features/row-sorting/rowSortingFeature.utils.ts"],"sourcesContent":["import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'\nimport { cloneState, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n SortDirection,\n SortFn,\n SortingState,\n} from './rowSortingFeature.types'\n\n// State Utils\n\nexport function getDefaultSortingState(): SortingState {\n return []\n}\n\nexport function table_setSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {\n table.options.onSortingChange?.(updater)\n}\n\nexport function table_resetSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setSorting(\n table,\n defaultState ? [] : cloneState(table.initialState.sorting ?? []),\n )\n}\n\n// Column Utils\n\nexport function column_getAutoSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns = column.table._rowModelFns.sortFns as\n | Record<string, SortFn<TFeatures, TData>>\n | undefined\n\n let sortFn: SortFn<TFeatures, TData> | undefined\n\n const firstRows = column.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 sortFn = sortFns?.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n sortFn = sortFns?.alphanumeric\n }\n }\n }\n\n if (isString) {\n sortFn = sortFns?.text\n }\n\n return sortFn ?? sortFn_basic\n}\n\nexport function column_getAutoSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const firstRow = column.table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n}\n\nexport function column_getSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns = column.table._rowModelFns.sortFns as\n | Record<string, SortFn<TFeatures, TData>>\n | undefined\n\n return isFunction(column.columnDef.sortFn)\n ? column.columnDef.sortFn\n : column.columnDef.sortFn === 'auto'\n ? column_getAutoSortFn(column)\n : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)\n}\n\nexport function column_toggleSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n desc?: boolean,\n multi?: boolean,\n) {\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(column)\n const hasManualValue = typeof desc !== 'undefined'\n\n table_setSorting(column.table, (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 const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old.length && column_getCanMultiSort(column) && 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 (column.table.options.maxMultiSortColCount ??\n 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\nexport function column_getFirstSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n column.table.options.sortDescFirst ??\n column_getAutoSortDir(column) === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n}\n\nexport function column_getNextSortingOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {\n const firstSortDirection = column_getFirstSortDir(column)\n const isSorted = column_getIsSorted(column)\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? (column.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\nexport function column_getCanSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (column.table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getCanMultiSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return (\n column.columnDef.enableMultiSort ??\n column.table.options.enableMultiSort ??\n !!column.accessorFn\n )\n}\n\nexport function column_getIsSorted<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {\n const columnSort = column.table.atoms.sorting\n ?.get()\n ?.find((d) => d.id === column.id)\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n}\n\nexport function column_getSortIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ??\n -1\n )\n}\n\nexport function column_clearSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n // clear sorting for just 1 column\n table_setSorting(column.table, (old) =>\n old.length ? old.filter((d) => d.id !== column.id) : [],\n )\n}\n\nexport function column_getToggleSortingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canSort = column_getCanSort(column)\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column_toggleSorting(\n column,\n\n undefined,\n column_getCanMultiSort(column)\n ? column.table.options.isMultiSortEvent?.(e)\n : false,\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowSortingFeature.utils.cjs","names":["cloneState","reSplitAlphaNumeric","sortFn_basic","isFunction"],"sources":["../../../src/features/row-sorting/rowSortingFeature.utils.ts"],"sourcesContent":["import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'\nimport { cloneState, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n SortDirection,\n SortFn,\n SortingState,\n} from './rowSortingFeature.types'\n\n// State Utils\n\nexport function getDefaultSortingState(): SortingState {\n return []\n}\n\nexport function table_setSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {\n table.options.onSortingChange?.(updater)\n}\n\nexport function table_resetSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setSorting(\n table,\n defaultState ? [] : cloneState(table.initialState.sorting ?? []),\n )\n}\n\n// Column Utils\n\nexport function column_getAutoSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =\n column.table._rowModelFns.sortFns\n\n let sortFn: SortFn<TFeatures, TData> | undefined\n\n const firstRows = column.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 sortFn = sortFns?.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n sortFn = sortFns?.alphanumeric\n }\n }\n }\n\n if (isString) {\n sortFn = sortFns?.text\n }\n\n return sortFn ?? sortFn_basic\n}\n\nexport function column_getAutoSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const firstRow = column.table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n}\n\nexport function column_getSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =\n column.table._rowModelFns.sortFns\n\n return isFunction(column.columnDef.sortFn)\n ? column.columnDef.sortFn\n : column.columnDef.sortFn === 'auto'\n ? column_getAutoSortFn(column)\n : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)\n}\n\nexport function column_toggleSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n desc?: boolean,\n multi?: boolean,\n) {\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(column)\n const hasManualValue = typeof desc !== 'undefined'\n\n table_setSorting(column.table, (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 const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old.length && column_getCanMultiSort(column) && 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 (column.table.options.maxMultiSortColCount ??\n 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\nexport function column_getFirstSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n column.table.options.sortDescFirst ??\n column_getAutoSortDir(column) === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n}\n\nexport function column_getNextSortingOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {\n const firstSortDirection = column_getFirstSortDir(column)\n const isSorted = column_getIsSorted(column)\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? (column.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\nexport function column_getCanSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (column.table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getCanMultiSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return (\n column.columnDef.enableMultiSort ??\n column.table.options.enableMultiSort ??\n !!column.accessorFn\n )\n}\n\nexport function column_getIsSorted<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {\n const columnSort = column.table.atoms.sorting\n ?.get()\n ?.find((d) => d.id === column.id)\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n}\n\nexport function column_getSortIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ??\n -1\n )\n}\n\nexport function column_clearSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n // clear sorting for just 1 column\n table_setSorting(column.table, (old) =>\n old.length ? old.filter((d) => d.id !== column.id) : [],\n )\n}\n\nexport function column_getToggleSortingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canSort = column_getCanSort(column)\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column_toggleSorting(\n column,\n\n undefined,\n column_getCanMultiSort(column)\n ? column.table.options.isMultiSortEvent?.(e)\n : false,\n )\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rowSortingFeature.utils.js","names":[],"sources":["../../../src/features/row-sorting/rowSortingFeature.utils.ts"],"sourcesContent":["import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'\nimport { cloneState, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n SortDirection,\n SortFn,\n SortingState,\n} from './rowSortingFeature.types'\n\n// State Utils\n\nexport function getDefaultSortingState(): SortingState {\n return []\n}\n\nexport function table_setSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {\n table.options.onSortingChange?.(updater)\n}\n\nexport function table_resetSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setSorting(\n table,\n defaultState ? [] : cloneState(table.initialState.sorting ?? []),\n )\n}\n\n// Column Utils\n\nexport function column_getAutoSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns = column.table._rowModelFns.sortFns as\n | Record<string, SortFn<TFeatures, TData>>\n | undefined\n\n let sortFn: SortFn<TFeatures, TData> | undefined\n\n const firstRows = column.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 sortFn = sortFns?.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n sortFn = sortFns?.alphanumeric\n }\n }\n }\n\n if (isString) {\n sortFn = sortFns?.text\n }\n\n return sortFn ?? sortFn_basic\n}\n\nexport function column_getAutoSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const firstRow = column.table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n}\n\nexport function column_getSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns = column.table._rowModelFns.sortFns as\n | Record<string, SortFn<TFeatures, TData>>\n | undefined\n\n return isFunction(column.columnDef.sortFn)\n ? column.columnDef.sortFn\n : column.columnDef.sortFn === 'auto'\n ? column_getAutoSortFn(column)\n : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)\n}\n\nexport function column_toggleSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n desc?: boolean,\n multi?: boolean,\n) {\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(column)\n const hasManualValue = typeof desc !== 'undefined'\n\n table_setSorting(column.table, (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 const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old.length && column_getCanMultiSort(column) && 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 (column.table.options.maxMultiSortColCount ??\n 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\nexport function column_getFirstSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n column.table.options.sortDescFirst ??\n column_getAutoSortDir(column) === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n}\n\nexport function column_getNextSortingOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {\n const firstSortDirection = column_getFirstSortDir(column)\n const isSorted = column_getIsSorted(column)\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? (column.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\nexport function column_getCanSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (column.table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getCanMultiSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return (\n column.columnDef.enableMultiSort ??\n column.table.options.enableMultiSort ??\n !!column.accessorFn\n )\n}\n\nexport function column_getIsSorted<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {\n const columnSort = column.table.atoms.sorting\n ?.get()\n ?.find((d) => d.id === column.id)\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n}\n\nexport function column_getSortIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ??\n -1\n )\n}\n\nexport function column_clearSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n // clear sorting for just 1 column\n table_setSorting(column.table, (old) =>\n old.length ? old.filter((d) => d.id !== column.id) : [],\n )\n}\n\nexport function column_getToggleSortingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canSort = column_getCanSort(column)\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column_toggleSorting(\n column,\n\n undefined,\n column_getCanMultiSort(column)\n ? column.table.options.isMultiSortEvent?.(e)\n : false,\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowSortingFeature.utils.js","names":[],"sources":["../../../src/features/row-sorting/rowSortingFeature.utils.ts"],"sourcesContent":["import { reSplitAlphaNumeric, sortFn_basic } from '../../fns/sortFns'\nimport { cloneState, isFunction } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Column_Internal } from '../../types/Column'\nimport type {\n SortDirection,\n SortFn,\n SortingState,\n} from './rowSortingFeature.types'\n\n// State Utils\n\nexport function getDefaultSortingState(): SortingState {\n return []\n}\n\nexport function table_setSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<SortingState>) {\n table.options.onSortingChange?.(updater)\n}\n\nexport function table_resetSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setSorting(\n table,\n defaultState ? [] : cloneState(table.initialState.sorting ?? []),\n )\n}\n\n// Column Utils\n\nexport function column_getAutoSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =\n column.table._rowModelFns.sortFns\n\n let sortFn: SortFn<TFeatures, TData> | undefined\n\n const firstRows = column.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 sortFn = sortFns?.datetime\n }\n\n if (typeof value === 'string') {\n isString = true\n\n if (value.split(reSplitAlphaNumeric).length > 1) {\n sortFn = sortFns?.alphanumeric\n }\n }\n }\n\n if (isString) {\n sortFn = sortFns?.text\n }\n\n return sortFn ?? sortFn_basic\n}\n\nexport function column_getAutoSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const firstRow = column.table.getFilteredRowModel().flatRows[0]\n\n const value = firstRow ? firstRow.getValue(column.id) : undefined\n\n if (typeof value === 'string') {\n return 'asc'\n }\n\n return 'desc'\n}\n\nexport function column_getSortFn<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): SortFn<TFeatures, TData> {\n const sortFns: Record<string, SortFn<TFeatures, TData>> | undefined =\n column.table._rowModelFns.sortFns\n\n return isFunction(column.columnDef.sortFn)\n ? column.columnDef.sortFn\n : column.columnDef.sortFn === 'auto'\n ? column_getAutoSortFn(column)\n : (sortFns?.[column.columnDef.sortFn as string] ?? sortFn_basic)\n}\n\nexport function column_toggleSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(\n column: Column_Internal<TFeatures, TData, TValue>,\n desc?: boolean,\n multi?: boolean,\n) {\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(column)\n const hasManualValue = typeof desc !== 'undefined'\n\n table_setSorting(column.table, (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 const nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc'\n\n // Multi-mode\n if (old.length && column_getCanMultiSort(column) && 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 (column.table.options.maxMultiSortColCount ??\n 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\nexport function column_getFirstSortDir<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const sortDescFirst =\n column.columnDef.sortDescFirst ??\n column.table.options.sortDescFirst ??\n column_getAutoSortDir(column) === 'desc'\n return sortDescFirst ? 'desc' : 'asc'\n}\n\nexport function column_getNextSortingOrder<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, multi?: boolean) {\n const firstSortDirection = column_getFirstSortDir(column)\n const isSorted = column_getIsSorted(column)\n\n if (!isSorted) {\n return firstSortDirection\n }\n\n if (\n isSorted !== firstSortDirection &&\n (column.table.options.enableSortingRemoval ?? true) && // If enableSortRemove, enable in general\n (multi ? (column.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\nexport function column_getCanSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableSorting ?? true) &&\n (column.table.options.enableSorting ?? true) &&\n !!column.accessorFn\n )\n}\n\nexport function column_getCanMultiSort<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n return (\n column.columnDef.enableMultiSort ??\n column.table.options.enableMultiSort ??\n !!column.accessorFn\n )\n}\n\nexport function column_getIsSorted<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): false | SortDirection {\n const columnSort = column.table.atoms.sorting\n ?.get()\n ?.find((d) => d.id === column.id)\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc'\n}\n\nexport function column_getSortIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): number {\n return (\n column.table.atoms.sorting?.get()?.findIndex((d) => d.id === column.id) ??\n -1\n )\n}\n\nexport function column_clearSorting<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n // clear sorting for just 1 column\n table_setSorting(column.table, (old) =>\n old.length ? old.filter((d) => d.id !== column.id) : [],\n )\n}\n\nexport function column_getToggleSortingHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n const canSort = column_getCanSort(column)\n\n return (e: unknown) => {\n if (!canSort) return\n ;(e as any).persist?.()\n column_toggleSorting(\n column,\n\n undefined,\n column_getCanMultiSort(column)\n ? column.table.options.isMultiSortEvent?.(e)\n : false,\n )\n }\n}\n"],"mappings":"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"}