@tanstack/table-core 9.0.0-alpha.46 → 9.0.0-alpha.47

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 (163) hide show
  1. package/dist/core/cells/constructCell.cjs +4 -3
  2. package/dist/core/cells/constructCell.cjs.map +1 -1
  3. package/dist/core/cells/constructCell.js +4 -3
  4. package/dist/core/cells/constructCell.js.map +1 -1
  5. package/dist/core/columns/constructColumn.cjs +6 -4
  6. package/dist/core/columns/constructColumn.cjs.map +1 -1
  7. package/dist/core/columns/constructColumn.js +6 -4
  8. package/dist/core/columns/constructColumn.js.map +1 -1
  9. package/dist/core/columns/coreColumnsFeature.utils.cjs +10 -2
  10. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  11. package/dist/core/columns/coreColumnsFeature.utils.js +10 -2
  12. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  13. package/dist/core/headers/buildHeaderGroups.cjs +27 -19
  14. package/dist/core/headers/buildHeaderGroups.cjs.map +1 -1
  15. package/dist/core/headers/buildHeaderGroups.js +27 -19
  16. package/dist/core/headers/buildHeaderGroups.js.map +1 -1
  17. package/dist/core/headers/constructHeader.cjs +4 -3
  18. package/dist/core/headers/constructHeader.cjs.map +1 -1
  19. package/dist/core/headers/constructHeader.js +4 -3
  20. package/dist/core/headers/constructHeader.js.map +1 -1
  21. package/dist/core/headers/coreHeadersFeature.cjs +1 -6
  22. package/dist/core/headers/coreHeadersFeature.cjs.map +1 -1
  23. package/dist/core/headers/coreHeadersFeature.js +2 -7
  24. package/dist/core/headers/coreHeadersFeature.js.map +1 -1
  25. package/dist/core/headers/coreHeadersFeature.utils.cjs +20 -18
  26. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  27. package/dist/core/headers/coreHeadersFeature.utils.d.cts +1 -1
  28. package/dist/core/headers/coreHeadersFeature.utils.d.ts +1 -1
  29. package/dist/core/headers/coreHeadersFeature.utils.js +21 -19
  30. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  31. package/dist/core/reactivity/coreReactivityFeature.types.d.cts +4 -0
  32. package/dist/core/reactivity/coreReactivityFeature.types.d.ts +4 -0
  33. package/dist/core/rows/constructRow.cjs +8 -6
  34. package/dist/core/rows/constructRow.cjs.map +1 -1
  35. package/dist/core/rows/constructRow.js +8 -6
  36. package/dist/core/rows/constructRow.js.map +1 -1
  37. package/dist/core/rows/coreRowsFeature.utils.cjs +9 -4
  38. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  39. package/dist/core/rows/coreRowsFeature.utils.js +9 -4
  40. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  41. package/dist/core/table/constructTable.cjs +9 -5
  42. package/dist/core/table/constructTable.cjs.map +1 -1
  43. package/dist/core/table/constructTable.js +9 -5
  44. package/dist/core/table/constructTable.js.map +1 -1
  45. package/dist/core/table/coreTablesFeature.utils.cjs +5 -1
  46. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  47. package/dist/core/table/coreTablesFeature.utils.js +5 -1
  48. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  49. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs +8 -5
  50. package/dist/features/column-faceting/createFacetedMinMaxValues.cjs.map +1 -1
  51. package/dist/features/column-faceting/createFacetedMinMaxValues.js +8 -5
  52. package/dist/features/column-faceting/createFacetedMinMaxValues.js.map +1 -1
  53. package/dist/features/column-faceting/createFacetedRowModel.cjs +8 -3
  54. package/dist/features/column-faceting/createFacetedRowModel.cjs.map +1 -1
  55. package/dist/features/column-faceting/createFacetedRowModel.js +8 -3
  56. package/dist/features/column-faceting/createFacetedRowModel.js.map +1 -1
  57. package/dist/features/column-faceting/createFacetedUniqueValues.cjs +7 -4
  58. package/dist/features/column-faceting/createFacetedUniqueValues.cjs.map +1 -1
  59. package/dist/features/column-faceting/createFacetedUniqueValues.js +7 -4
  60. package/dist/features/column-faceting/createFacetedUniqueValues.js.map +1 -1
  61. package/dist/features/column-filtering/createFilteredRowModel.cjs +11 -5
  62. package/dist/features/column-filtering/createFilteredRowModel.cjs.map +1 -1
  63. package/dist/features/column-filtering/createFilteredRowModel.js +11 -5
  64. package/dist/features/column-filtering/createFilteredRowModel.js.map +1 -1
  65. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +16 -6
  66. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  67. package/dist/features/column-ordering/columnOrderingFeature.utils.js +16 -6
  68. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  69. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +41 -24
  70. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  71. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +5 -4
  72. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +5 -4
  73. package/dist/features/column-pinning/columnPinningFeature.utils.js +42 -25
  74. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  75. package/dist/features/column-sizing/columnSizingFeature.cjs +28 -4
  76. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  77. package/dist/features/column-sizing/columnSizingFeature.js +28 -4
  78. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  79. package/dist/features/column-visibility/columnVisibilityFeature.cjs +23 -14
  80. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  81. package/dist/features/column-visibility/columnVisibilityFeature.js +24 -15
  82. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  83. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +4 -0
  84. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +4 -0
  85. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +40 -13
  86. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  87. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +12 -1
  88. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +12 -1
  89. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +40 -14
  90. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  91. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +2 -2
  92. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  93. package/dist/features/row-expanding/rowExpandingFeature.utils.js +2 -2
  94. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  95. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +13 -7
  96. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  97. package/dist/features/row-pinning/rowPinningFeature.utils.js +13 -7
  98. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  99. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +6 -3
  100. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  101. package/dist/features/row-selection/rowSelectionFeature.utils.js +6 -3
  102. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  103. package/dist/features/row-sorting/createSortedRowModel.cjs +13 -8
  104. package/dist/features/row-sorting/createSortedRowModel.cjs.map +1 -1
  105. package/dist/features/row-sorting/createSortedRowModel.js +13 -8
  106. package/dist/features/row-sorting/createSortedRowModel.js.map +1 -1
  107. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +2 -2
  108. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  109. package/dist/features/row-sorting/rowSortingFeature.utils.js +2 -2
  110. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  111. package/dist/fns/aggregationFns.cjs +14 -7
  112. package/dist/fns/aggregationFns.cjs.map +1 -1
  113. package/dist/fns/aggregationFns.js +14 -8
  114. package/dist/fns/aggregationFns.js.map +1 -1
  115. package/dist/index.cjs +0 -4
  116. package/dist/index.d.cts +2 -2
  117. package/dist/index.d.ts +2 -2
  118. package/dist/index.js +2 -2
  119. package/dist/static-functions.cjs +1 -0
  120. package/dist/static-functions.d.cts +2 -2
  121. package/dist/static-functions.d.ts +2 -2
  122. package/dist/static-functions.js +2 -2
  123. package/dist/store-reactivity-bindings.cjs +1 -0
  124. package/dist/store-reactivity-bindings.cjs.map +1 -1
  125. package/dist/store-reactivity-bindings.js +1 -0
  126. package/dist/store-reactivity-bindings.js.map +1 -1
  127. package/dist/utils.cjs +18 -39
  128. package/dist/utils.cjs.map +1 -1
  129. package/dist/utils.d.cts +1 -23
  130. package/dist/utils.d.ts +1 -23
  131. package/dist/utils.js +19 -36
  132. package/dist/utils.js.map +1 -1
  133. package/package.json +1 -1
  134. package/src/core/cells/constructCell.ts +3 -2
  135. package/src/core/columns/constructColumn.ts +5 -3
  136. package/src/core/columns/coreColumnsFeature.utils.ts +6 -2
  137. package/src/core/headers/buildHeaderGroups.ts +29 -30
  138. package/src/core/headers/constructHeader.ts +3 -2
  139. package/src/core/headers/coreHeadersFeature.ts +2 -27
  140. package/src/core/headers/coreHeadersFeature.utils.ts +29 -43
  141. package/src/core/reactivity/coreReactivityFeature.types.ts +4 -0
  142. package/src/core/rows/constructRow.ts +6 -4
  143. package/src/core/rows/coreRowsFeature.utils.ts +11 -4
  144. package/src/core/table/constructTable.ts +6 -4
  145. package/src/core/table/coreTablesFeature.utils.ts +3 -1
  146. package/src/features/column-faceting/createFacetedMinMaxValues.ts +8 -10
  147. package/src/features/column-faceting/createFacetedRowModel.ts +10 -6
  148. package/src/features/column-faceting/createFacetedUniqueValues.ts +4 -3
  149. package/src/features/column-filtering/createFilteredRowModel.ts +14 -8
  150. package/src/features/column-ordering/columnOrderingFeature.utils.ts +14 -6
  151. package/src/features/column-pinning/columnPinningFeature.utils.ts +53 -37
  152. package/src/features/column-sizing/columnSizingFeature.ts +16 -0
  153. package/src/features/column-visibility/columnVisibilityFeature.ts +8 -0
  154. package/src/features/column-visibility/columnVisibilityFeature.types.ts +7 -0
  155. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +50 -17
  156. package/src/features/row-expanding/rowExpandingFeature.utils.ts +2 -2
  157. package/src/features/row-pinning/rowPinningFeature.utils.ts +20 -18
  158. package/src/features/row-selection/rowSelectionFeature.utils.ts +20 -19
  159. package/src/features/row-sorting/createSortedRowModel.ts +16 -13
  160. package/src/features/row-sorting/rowSortingFeature.utils.ts +2 -2
  161. package/src/fns/aggregationFns.ts +20 -8
  162. package/src/store-reactivity-bindings.ts +1 -0
  163. package/src/utils.ts +19 -46
@@ -1 +1 @@
1
- {"version":3,"file":"columnVisibilityFeature.cjs","names":["getDefaultColumnVisibilityState","makeStateUpdater","column_getIsVisible","column_getCanHide","column_getToggleVisibilityHandler","column_toggleVisibility","row_getVisibleCells","table_getVisibleFlatColumns","table_getVisibleLeafColumns","table_setColumnVisibility","table_resetColumnVisibility","table_toggleAllColumnsVisible","table_getIsAllColumnsVisible","table_getIsSomeColumnsVisible","table_getToggleAllColumnsVisibilityHandler"],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getCanHide,\n column_getIsVisible,\n column_getToggleVisibilityHandler,\n column_toggleVisibility,\n getDefaultColumnVisibilityState,\n row_getVisibleCells,\n table_getIsAllColumnsVisible,\n table_getIsSomeColumnsVisible,\n table_getToggleAllColumnsVisibilityHandler,\n table_getVisibleFlatColumns,\n table_getVisibleLeafColumns,\n table_resetColumnVisibility,\n table_setColumnVisibility,\n table_toggleAllColumnsVisible,\n} from './columnVisibilityFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// ColumnDef_ColumnVisibility,\n// Column_ColumnVisibility,\n// Row_ColumnVisibility,\n// TableOptions_ColumnVisibility,\n// TableState_ColumnVisibility,\n// Table_ColumnVisibility,\n// } from './columnVisibilityFeature.types'\n\nexport interface ColumnVisibilityFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // ColumnDef: ColumnDef_ColumnVisibility\n // Column: Column_ColumnVisibility\n // Row: Row_ColumnVisibility<TFeatures, TData>\n // Table: Table_ColumnVisibility<TFeatures, TData>\n // TableOptions: TableOptions_ColumnVisibility\n // TableState: TableState_ColumnVisibility\n}\n\n/**\n * Creates the stock column visibility feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnVisibilityFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnVisibilityFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnVisibility: getDefaultColumnVisibilityState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n column_getIsVisible: {\n fn: (column) => column_getIsVisible(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnVisibility?.get(),\n column.columns,\n ],\n },\n column_getCanHide: {\n fn: (column) => column_getCanHide(column),\n },\n column_getToggleVisibilityHandler: {\n fn: (column) => column_getToggleVisibilityHandler(column),\n },\n column_toggleVisibility: {\n fn: (column, visible) => column_toggleVisibility(column, visible),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n row_getVisibleCells: {\n fn: (row) => row_getVisibleCells(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnVisibilityFeature', table, {\n table_getVisibleFlatColumns: {\n fn: () => table_getVisibleFlatColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_getVisibleLeafColumns: {\n fn: () => table_getVisibleLeafColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_setColumnVisibility: {\n fn: (updater) => table_setColumnVisibility(table, updater),\n },\n table_resetColumnVisibility: {\n fn: (defaultState) =>\n table_resetColumnVisibility(table, defaultState),\n },\n table_toggleAllColumnsVisible: {\n fn: (value) => table_toggleAllColumnsVisible(table, value),\n },\n table_getIsAllColumnsVisible: {\n fn: () => table_getIsAllColumnsVisible(table),\n },\n table_getIsSomeColumnsVisible: {\n fn: () => table_getIsSomeColumnsVisible(table),\n },\n table_getToggleAllColumnsVisibilityHandler: {\n fn: () => table_getToggleAllColumnsVisibilityHandler(table),\n },\n })\n },\n }\n}\n\n/**\n * The stock column visibility feature.\n *\n * Register this feature to add column visibility state and APIs for deriving\n * visible columns and visible row cells.\n */\nexport const columnVisibilityFeature = constructColumnVisibilityFeature()\n"],"mappings":";;;;;;;;;AAiDA,SAAgB,mCAGyD;CACvE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,kBAAkBA,uEAAiC;IACnD,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,0BAA0BC,+BAAiB,oBAAoB,MAAM,EACtE;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,kCAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,WAAWC,0DAAoB,OAAO;KAC3C,WAAW,WAAW;;;OACpB,MAAM,QAAQ;gCACd,MAAM,MAAM,gGAAkB,KAAK;OACnC,OAAO;OACR;;KACF;IACD,mBAAmB,EACjB,KAAK,WAAWC,wDAAkB,OAAO,EAC1C;IACD,mCAAmC,EACjC,KAAK,WAAWC,wEAAkC,OAAO,EAC1D;IACD,yBAAyB,EACvB,KAAK,QAAQ,YAAYC,8DAAwB,QAAQ,QAAQ,EAClE;IACF,CAAC;;EAGJ,qBAAqB,WAAW,UAAU;GACxC,kCAAoB,2BAA2B,WAAW,OAAO,EAC/D,qBAAqB;IACnB,KAAK,QAAQC,0DAAoB,IAAI;IACrC,WAAW,QAAQ;;;MACjB,IAAI,aAAa;+BACjB,MAAM,MAAM,6FAAe,KAAK;gCAChC,MAAM,MAAM,kGAAkB,KAAK;MACpC;;IACF,EACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,8BAAgB,2BAA2B,OAAO;IAChD,6BAA6B;KAC3B,UAAUC,kEAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;gCACnC,MAAM,MAAM,2FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,6BAA6B;KAC3B,UAAUC,kEAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;iCACnC,MAAM,MAAM,6FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,2BAA2B,EACzB,KAAK,YAAYC,gEAA0B,OAAO,QAAQ,EAC3D;IACD,6BAA6B,EAC3B,KAAK,iBACHC,kEAA4B,OAAO,aAAa,EACnD;IACD,+BAA+B,EAC7B,KAAK,UAAUC,oEAA8B,OAAO,MAAM,EAC3D;IACD,8BAA8B,EAC5B,UAAUC,mEAA6B,MAAM,EAC9C;IACD,+BAA+B,EAC7B,UAAUC,oEAA8B,MAAM,EAC/C;IACD,4CAA4C,EAC1C,UAAUC,iFAA2C,MAAM,EAC5D;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,0BAA0B,kCAAkC"}
1
+ {"version":3,"file":"columnVisibilityFeature.cjs","names":["getDefaultColumnVisibilityState","makeStateUpdater","column_getIsVisible","column_getCanHide","column_getToggleVisibilityHandler","column_toggleVisibility","row_getVisibleCells","row_getVisibleCellsByColumnId","table_getVisibleFlatColumns","table_getVisibleLeafColumns","table_setColumnVisibility","table_resetColumnVisibility","table_toggleAllColumnsVisible","table_getIsAllColumnsVisible","table_getIsSomeColumnsVisible","table_getToggleAllColumnsVisibilityHandler"],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getCanHide,\n column_getIsVisible,\n column_getToggleVisibilityHandler,\n column_toggleVisibility,\n getDefaultColumnVisibilityState,\n row_getVisibleCells,\n row_getVisibleCellsByColumnId,\n table_getIsAllColumnsVisible,\n table_getIsSomeColumnsVisible,\n table_getToggleAllColumnsVisibilityHandler,\n table_getVisibleFlatColumns,\n table_getVisibleLeafColumns,\n table_resetColumnVisibility,\n table_setColumnVisibility,\n table_toggleAllColumnsVisible,\n} from './columnVisibilityFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// ColumnDef_ColumnVisibility,\n// Column_ColumnVisibility,\n// Row_ColumnVisibility,\n// TableOptions_ColumnVisibility,\n// TableState_ColumnVisibility,\n// Table_ColumnVisibility,\n// } from './columnVisibilityFeature.types'\n\nexport interface ColumnVisibilityFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // ColumnDef: ColumnDef_ColumnVisibility\n // Column: Column_ColumnVisibility\n // Row: Row_ColumnVisibility<TFeatures, TData>\n // Table: Table_ColumnVisibility<TFeatures, TData>\n // TableOptions: TableOptions_ColumnVisibility\n // TableState: TableState_ColumnVisibility\n}\n\n/**\n * Creates the stock column visibility feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnVisibilityFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnVisibilityFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnVisibility: getDefaultColumnVisibilityState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n column_getIsVisible: {\n fn: (column) => column_getIsVisible(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnVisibility?.get(),\n column.columns,\n ],\n },\n column_getCanHide: {\n fn: (column) => column_getCanHide(column),\n },\n column_getToggleVisibilityHandler: {\n fn: (column) => column_getToggleVisibilityHandler(column),\n },\n column_toggleVisibility: {\n fn: (column, visible) => column_toggleVisibility(column, visible),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n row_getVisibleCells: {\n fn: (row) => row_getVisibleCells(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n row_getVisibleCellsByColumnId: {\n fn: (row) => row_getVisibleCellsByColumnId(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnVisibilityFeature', table, {\n table_getVisibleFlatColumns: {\n fn: () => table_getVisibleFlatColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_getVisibleLeafColumns: {\n fn: () => table_getVisibleLeafColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_setColumnVisibility: {\n fn: (updater) => table_setColumnVisibility(table, updater),\n },\n table_resetColumnVisibility: {\n fn: (defaultState) =>\n table_resetColumnVisibility(table, defaultState),\n },\n table_toggleAllColumnsVisible: {\n fn: (value) => table_toggleAllColumnsVisible(table, value),\n },\n table_getIsAllColumnsVisible: {\n fn: () => table_getIsAllColumnsVisible(table),\n },\n table_getIsSomeColumnsVisible: {\n fn: () => table_getIsSomeColumnsVisible(table),\n },\n table_getToggleAllColumnsVisibilityHandler: {\n fn: () => table_getToggleAllColumnsVisibilityHandler(table),\n },\n })\n },\n }\n}\n\n/**\n * The stock column visibility feature.\n *\n * Register this feature to add column visibility state and APIs for deriving\n * visible columns and visible row cells.\n */\nexport const columnVisibilityFeature = constructColumnVisibilityFeature()\n"],"mappings":";;;;;;;;;AAkDA,SAAgB,mCAGyD;CACvE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,kBAAkBA,uEAAiC;IACnD,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,0BAA0BC,+BAAiB,oBAAoB,MAAM,EACtE;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,kCAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,WAAWC,0DAAoB,OAAO;KAC3C,WAAW,WAAW;;;OACpB,MAAM,QAAQ;gCACd,MAAM,MAAM,gGAAkB,KAAK;OACnC,OAAO;OACR;;KACF;IACD,mBAAmB,EACjB,KAAK,WAAWC,wDAAkB,OAAO,EAC1C;IACD,mCAAmC,EACjC,KAAK,WAAWC,wEAAkC,OAAO,EAC1D;IACD,yBAAyB,EACvB,KAAK,QAAQ,YAAYC,8DAAwB,QAAQ,QAAQ,EAClE;IACF,CAAC;;EAGJ,qBAAqB,WAAW,UAAU;GACxC,kCAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,QAAQC,0DAAoB,IAAI;KACrC,WAAW,QAAQ;;;OACjB,IAAI,aAAa;gCACjB,MAAM,MAAM,6FAAe,KAAK;iCAChC,MAAM,MAAM,kGAAkB,KAAK;OACpC;;KACF;IACD,+BAA+B;KAC7B,KAAK,QAAQC,oEAA8B,IAAI;KAC/C,WAAW,QAAQ;;cACjB,IAAI,aAAa,4BACjB,MAAM,MAAM,kGAAkB,KAAK,CACpC;;KACF;IACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,8BAAgB,2BAA2B,OAAO;IAChD,6BAA6B;KAC3B,UAAUC,kEAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;gCACnC,MAAM,MAAM,2FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,6BAA6B;KAC3B,UAAUC,kEAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;iCACnC,MAAM,MAAM,6FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,2BAA2B,EACzB,KAAK,YAAYC,gEAA0B,OAAO,QAAQ,EAC3D;IACD,6BAA6B,EAC3B,KAAK,iBACHC,kEAA4B,OAAO,aAAa,EACnD;IACD,+BAA+B,EAC7B,KAAK,UAAUC,oEAA8B,OAAO,MAAM,EAC3D;IACD,8BAA8B,EAC5B,UAAUC,mEAA6B,MAAM,EAC9C;IACD,+BAA+B,EAC7B,UAAUC,oEAA8B,MAAM,EAC/C;IACD,4CAA4C,EAC1C,UAAUC,iFAA2C,MAAM,EAC5D;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,0BAA0B,kCAAkC"}
@@ -1,5 +1,5 @@
1
1
  import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from "../../utils.js";
2
- import { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible } from "./columnVisibilityFeature.utils.js";
2
+ import { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible } from "./columnVisibilityFeature.utils.js";
3
3
 
4
4
  //#region src/features/column-visibility/columnVisibilityFeature.ts
5
5
  /**
@@ -37,26 +37,35 @@ function constructColumnVisibilityFeature() {
37
37
  });
38
38
  },
39
39
  assignRowPrototype: (prototype, table) => {
40
- assignPrototypeAPIs("columnVisibilityFeature", prototype, table, { row_getVisibleCells: {
41
- fn: (row) => row_getVisibleCells(row),
42
- memoDeps: (row) => {
43
- var _table$atoms$columnPi, _table$atoms$columnVi2;
44
- return [
45
- row.getAllCells(),
46
- (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
47
- (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get()
48
- ];
40
+ assignPrototypeAPIs("columnVisibilityFeature", prototype, table, {
41
+ row_getVisibleCells: {
42
+ fn: (row) => row_getVisibleCells(row),
43
+ memoDeps: (row) => {
44
+ var _table$atoms$columnPi, _table$atoms$columnVi2;
45
+ return [
46
+ row.getAllCells(),
47
+ (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
48
+ (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get()
49
+ ];
50
+ }
51
+ },
52
+ row_getVisibleCellsByColumnId: {
53
+ fn: (row) => row_getVisibleCellsByColumnId(row),
54
+ memoDeps: (row) => {
55
+ var _table$atoms$columnVi3;
56
+ return [row.getAllCells(), (_table$atoms$columnVi3 = table.atoms.columnVisibility) === null || _table$atoms$columnVi3 === void 0 ? void 0 : _table$atoms$columnVi3.get()];
57
+ }
49
58
  }
50
- } });
59
+ });
51
60
  },
52
61
  constructTableAPIs: (table) => {
53
62
  assignTableAPIs("columnVisibilityFeature", table, {
54
63
  table_getVisibleFlatColumns: {
55
64
  fn: () => table_getVisibleFlatColumns(table),
56
65
  memoDeps: () => {
57
- var _table$atoms$columnVi3, _table$atoms$columnOr;
66
+ var _table$atoms$columnVi4, _table$atoms$columnOr;
58
67
  return [
59
- (_table$atoms$columnVi3 = table.atoms.columnVisibility) === null || _table$atoms$columnVi3 === void 0 ? void 0 : _table$atoms$columnVi3.get(),
68
+ (_table$atoms$columnVi4 = table.atoms.columnVisibility) === null || _table$atoms$columnVi4 === void 0 ? void 0 : _table$atoms$columnVi4.get(),
60
69
  (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get(),
61
70
  table.options.columns
62
71
  ];
@@ -65,9 +74,9 @@ function constructColumnVisibilityFeature() {
65
74
  table_getVisibleLeafColumns: {
66
75
  fn: () => table_getVisibleLeafColumns(table),
67
76
  memoDeps: () => {
68
- var _table$atoms$columnVi4, _table$atoms$columnOr2;
77
+ var _table$atoms$columnVi5, _table$atoms$columnOr2;
69
78
  return [
70
- (_table$atoms$columnVi4 = table.atoms.columnVisibility) === null || _table$atoms$columnVi4 === void 0 ? void 0 : _table$atoms$columnVi4.get(),
79
+ (_table$atoms$columnVi5 = table.atoms.columnVisibility) === null || _table$atoms$columnVi5 === void 0 ? void 0 : _table$atoms$columnVi5.get(),
71
80
  (_table$atoms$columnOr2 = table.atoms.columnOrder) === null || _table$atoms$columnOr2 === void 0 ? void 0 : _table$atoms$columnOr2.get(),
72
81
  table.options.columns
73
82
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"columnVisibilityFeature.js","names":[],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getCanHide,\n column_getIsVisible,\n column_getToggleVisibilityHandler,\n column_toggleVisibility,\n getDefaultColumnVisibilityState,\n row_getVisibleCells,\n table_getIsAllColumnsVisible,\n table_getIsSomeColumnsVisible,\n table_getToggleAllColumnsVisibilityHandler,\n table_getVisibleFlatColumns,\n table_getVisibleLeafColumns,\n table_resetColumnVisibility,\n table_setColumnVisibility,\n table_toggleAllColumnsVisible,\n} from './columnVisibilityFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// ColumnDef_ColumnVisibility,\n// Column_ColumnVisibility,\n// Row_ColumnVisibility,\n// TableOptions_ColumnVisibility,\n// TableState_ColumnVisibility,\n// Table_ColumnVisibility,\n// } from './columnVisibilityFeature.types'\n\nexport interface ColumnVisibilityFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // ColumnDef: ColumnDef_ColumnVisibility\n // Column: Column_ColumnVisibility\n // Row: Row_ColumnVisibility<TFeatures, TData>\n // Table: Table_ColumnVisibility<TFeatures, TData>\n // TableOptions: TableOptions_ColumnVisibility\n // TableState: TableState_ColumnVisibility\n}\n\n/**\n * Creates the stock column visibility feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnVisibilityFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnVisibilityFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnVisibility: getDefaultColumnVisibilityState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n column_getIsVisible: {\n fn: (column) => column_getIsVisible(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnVisibility?.get(),\n column.columns,\n ],\n },\n column_getCanHide: {\n fn: (column) => column_getCanHide(column),\n },\n column_getToggleVisibilityHandler: {\n fn: (column) => column_getToggleVisibilityHandler(column),\n },\n column_toggleVisibility: {\n fn: (column, visible) => column_toggleVisibility(column, visible),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n row_getVisibleCells: {\n fn: (row) => row_getVisibleCells(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnVisibilityFeature', table, {\n table_getVisibleFlatColumns: {\n fn: () => table_getVisibleFlatColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_getVisibleLeafColumns: {\n fn: () => table_getVisibleLeafColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_setColumnVisibility: {\n fn: (updater) => table_setColumnVisibility(table, updater),\n },\n table_resetColumnVisibility: {\n fn: (defaultState) =>\n table_resetColumnVisibility(table, defaultState),\n },\n table_toggleAllColumnsVisible: {\n fn: (value) => table_toggleAllColumnsVisible(table, value),\n },\n table_getIsAllColumnsVisible: {\n fn: () => table_getIsAllColumnsVisible(table),\n },\n table_getIsSomeColumnsVisible: {\n fn: () => table_getIsSomeColumnsVisible(table),\n },\n table_getToggleAllColumnsVisibilityHandler: {\n fn: () => table_getToggleAllColumnsVisibilityHandler(table),\n },\n })\n },\n }\n}\n\n/**\n * The stock column visibility feature.\n *\n * Register this feature to add column visibility state and APIs for deriving\n * visible columns and visible row cells.\n */\nexport const columnVisibilityFeature = constructColumnVisibilityFeature()\n"],"mappings":";;;;;;;;;AAiDA,SAAgB,mCAGyD;CACvE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,kBAAkB,iCAAiC;IACnD,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,0BAA0B,iBAAiB,oBAAoB,MAAM,EACtE;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,oBAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,WAAW,oBAAoB,OAAO;KAC3C,WAAW,WAAW;;;OACpB,MAAM,QAAQ;gCACd,MAAM,MAAM,gGAAkB,KAAK;OACnC,OAAO;OACR;;KACF;IACD,mBAAmB,EACjB,KAAK,WAAW,kBAAkB,OAAO,EAC1C;IACD,mCAAmC,EACjC,KAAK,WAAW,kCAAkC,OAAO,EAC1D;IACD,yBAAyB,EACvB,KAAK,QAAQ,YAAY,wBAAwB,QAAQ,QAAQ,EAClE;IACF,CAAC;;EAGJ,qBAAqB,WAAW,UAAU;GACxC,oBAAoB,2BAA2B,WAAW,OAAO,EAC/D,qBAAqB;IACnB,KAAK,QAAQ,oBAAoB,IAAI;IACrC,WAAW,QAAQ;;;MACjB,IAAI,aAAa;+BACjB,MAAM,MAAM,6FAAe,KAAK;gCAChC,MAAM,MAAM,kGAAkB,KAAK;MACpC;;IACF,EACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,gBAAgB,2BAA2B,OAAO;IAChD,6BAA6B;KAC3B,UAAU,4BAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;gCACnC,MAAM,MAAM,2FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,6BAA6B;KAC3B,UAAU,4BAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;iCACnC,MAAM,MAAM,6FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,2BAA2B,EACzB,KAAK,YAAY,0BAA0B,OAAO,QAAQ,EAC3D;IACD,6BAA6B,EAC3B,KAAK,iBACH,4BAA4B,OAAO,aAAa,EACnD;IACD,+BAA+B,EAC7B,KAAK,UAAU,8BAA8B,OAAO,MAAM,EAC3D;IACD,8BAA8B,EAC5B,UAAU,6BAA6B,MAAM,EAC9C;IACD,+BAA+B,EAC7B,UAAU,8BAA8B,MAAM,EAC/C;IACD,4CAA4C,EAC1C,UAAU,2CAA2C,MAAM,EAC5D;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,0BAA0B,kCAAkC"}
1
+ {"version":3,"file":"columnVisibilityFeature.js","names":[],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getCanHide,\n column_getIsVisible,\n column_getToggleVisibilityHandler,\n column_toggleVisibility,\n getDefaultColumnVisibilityState,\n row_getVisibleCells,\n row_getVisibleCellsByColumnId,\n table_getIsAllColumnsVisible,\n table_getIsSomeColumnsVisible,\n table_getToggleAllColumnsVisibilityHandler,\n table_getVisibleFlatColumns,\n table_getVisibleLeafColumns,\n table_resetColumnVisibility,\n table_setColumnVisibility,\n table_toggleAllColumnsVisible,\n} from './columnVisibilityFeature.utils'\nimport type { RowData } from '../../types/type-utils'\nimport type { TableFeature, TableFeatures } from '../../types/TableFeatures'\n// import type {\n// ColumnDef_ColumnVisibility,\n// Column_ColumnVisibility,\n// Row_ColumnVisibility,\n// TableOptions_ColumnVisibility,\n// TableState_ColumnVisibility,\n// Table_ColumnVisibility,\n// } from './columnVisibilityFeature.types'\n\nexport interface ColumnVisibilityFeatureConstructors<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n // ColumnDef: ColumnDef_ColumnVisibility\n // Column: Column_ColumnVisibility\n // Row: Row_ColumnVisibility<TFeatures, TData>\n // Table: Table_ColumnVisibility<TFeatures, TData>\n // TableOptions: TableOptions_ColumnVisibility\n // TableState: TableState_ColumnVisibility\n}\n\n/**\n * Creates the stock column visibility feature.\n *\n * The returned feature registers its state defaults, option defaults, and instance APIs so it can be included in a `tableFeatures({ ... })` call.\n */\nexport function constructColumnVisibilityFeature<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): TableFeature<ColumnVisibilityFeatureConstructors<TFeatures, TData>> {\n return {\n getInitialState: (initialState) => {\n return {\n columnVisibility: getDefaultColumnVisibilityState(),\n ...initialState,\n }\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n column_getIsVisible: {\n fn: (column) => column_getIsVisible(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnVisibility?.get(),\n column.columns,\n ],\n },\n column_getCanHide: {\n fn: (column) => column_getCanHide(column),\n },\n column_getToggleVisibilityHandler: {\n fn: (column) => column_getToggleVisibilityHandler(column),\n },\n column_toggleVisibility: {\n fn: (column, visible) => column_toggleVisibility(column, visible),\n },\n })\n },\n\n assignRowPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnVisibilityFeature', prototype, table, {\n row_getVisibleCells: {\n fn: (row) => row_getVisibleCells(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n row_getVisibleCellsByColumnId: {\n fn: (row) => row_getVisibleCellsByColumnId(row),\n memoDeps: (row) => [\n row.getAllCells(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnVisibilityFeature', table, {\n table_getVisibleFlatColumns: {\n fn: () => table_getVisibleFlatColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_getVisibleLeafColumns: {\n fn: () => table_getVisibleLeafColumns(table),\n memoDeps: () => [\n table.atoms.columnVisibility?.get(),\n table.atoms.columnOrder?.get(),\n table.options.columns,\n ],\n },\n table_setColumnVisibility: {\n fn: (updater) => table_setColumnVisibility(table, updater),\n },\n table_resetColumnVisibility: {\n fn: (defaultState) =>\n table_resetColumnVisibility(table, defaultState),\n },\n table_toggleAllColumnsVisible: {\n fn: (value) => table_toggleAllColumnsVisible(table, value),\n },\n table_getIsAllColumnsVisible: {\n fn: () => table_getIsAllColumnsVisible(table),\n },\n table_getIsSomeColumnsVisible: {\n fn: () => table_getIsSomeColumnsVisible(table),\n },\n table_getToggleAllColumnsVisibilityHandler: {\n fn: () => table_getToggleAllColumnsVisibilityHandler(table),\n },\n })\n },\n }\n}\n\n/**\n * The stock column visibility feature.\n *\n * Register this feature to add column visibility state and APIs for deriving\n * visible columns and visible row cells.\n */\nexport const columnVisibilityFeature = constructColumnVisibilityFeature()\n"],"mappings":";;;;;;;;;AAkDA,SAAgB,mCAGyD;CACvE,OAAO;EACL,kBAAkB,iBAAiB;GACjC,OAAO;IACL,kBAAkB,iCAAiC;IACnD,GAAG;IACJ;;EAGH,yBAAyB,UAAU;GACjC,OAAO,EACL,0BAA0B,iBAAiB,oBAAoB,MAAM,EACtE;;EAGH,wBAAwB,WAAW,UAAU;GAC3C,oBAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,WAAW,oBAAoB,OAAO;KAC3C,WAAW,WAAW;;;OACpB,MAAM,QAAQ;gCACd,MAAM,MAAM,gGAAkB,KAAK;OACnC,OAAO;OACR;;KACF;IACD,mBAAmB,EACjB,KAAK,WAAW,kBAAkB,OAAO,EAC1C;IACD,mCAAmC,EACjC,KAAK,WAAW,kCAAkC,OAAO,EAC1D;IACD,yBAAyB,EACvB,KAAK,QAAQ,YAAY,wBAAwB,QAAQ,QAAQ,EAClE;IACF,CAAC;;EAGJ,qBAAqB,WAAW,UAAU;GACxC,oBAAoB,2BAA2B,WAAW,OAAO;IAC/D,qBAAqB;KACnB,KAAK,QAAQ,oBAAoB,IAAI;KACrC,WAAW,QAAQ;;;OACjB,IAAI,aAAa;gCACjB,MAAM,MAAM,6FAAe,KAAK;iCAChC,MAAM,MAAM,kGAAkB,KAAK;OACpC;;KACF;IACD,+BAA+B;KAC7B,KAAK,QAAQ,8BAA8B,IAAI;KAC/C,WAAW,QAAQ;;cACjB,IAAI,aAAa,4BACjB,MAAM,MAAM,kGAAkB,KAAK,CACpC;;KACF;IACF,CAAC;;EAGJ,qBAAqB,UAAU;GAC7B,gBAAgB,2BAA2B,OAAO;IAChD,6BAA6B;KAC3B,UAAU,4BAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;gCACnC,MAAM,MAAM,2FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,6BAA6B;KAC3B,UAAU,4BAA4B,MAAM;KAC5C,gBAAgB;;;iCACd,MAAM,MAAM,kGAAkB,KAAK;iCACnC,MAAM,MAAM,6FAAa,KAAK;OAC9B,MAAM,QAAQ;OACf;;KACF;IACD,2BAA2B,EACzB,KAAK,YAAY,0BAA0B,OAAO,QAAQ,EAC3D;IACD,6BAA6B,EAC3B,KAAK,iBACH,4BAA4B,OAAO,aAAa,EACnD;IACD,+BAA+B,EAC7B,KAAK,UAAU,8BAA8B,OAAO,MAAM,EAC3D;IACD,8BAA8B,EAC5B,UAAU,6BAA6B,MAAM,EAC9C;IACD,+BAA+B,EAC7B,UAAU,8BAA8B,MAAM,EAC/C;IACD,4CAA4C,EAC1C,UAAU,2CAA2C,MAAM,EAC5D;IACF,CAAC;;EAEL;;;;;;;;AASH,MAAa,0BAA0B,kCAAkC"}
@@ -66,6 +66,10 @@ interface Row_ColumnVisibility<TFeatures extends TableFeatures, TData extends Ro
66
66
  * Returns an array of cells that account for column visibility for the row.
67
67
  */
68
68
  getVisibleCells: () => Array<Cell<TFeatures, TData, unknown>>;
69
+ /**
70
+ * Returns visible cells by column id for the row.
71
+ */
72
+ getVisibleCellsByColumnId: () => Record<string, Cell<TFeatures, TData, unknown>>;
69
73
  }
70
74
  interface Column_ColumnVisibility {
71
75
  /**
@@ -66,6 +66,10 @@ interface Row_ColumnVisibility<TFeatures extends TableFeatures, TData extends Ro
66
66
  * Returns an array of cells that account for column visibility for the row.
67
67
  */
68
68
  getVisibleCells: () => Array<Cell<TFeatures, TData, unknown>>;
69
+ /**
70
+ * Returns visible cells by column id for the row.
71
+ */
72
+ getVisibleCellsByColumnId: () => Record<string, Cell<TFeatures, TData, unknown>>;
69
73
  }
70
74
  interface Column_ColumnVisibility {
71
75
  /**
@@ -86,27 +86,30 @@ function column_getToggleVisibilityHandler(column) {
86
86
  */
87
87
  function row_getVisibleCells(row) {
88
88
  var _row$table$atoms$colu;
89
- const cells = row.getAllCells().filter((cell) => require_utils.callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible));
89
+ const allCells = row.getAllCells();
90
+ const visibleCells = [];
91
+ for (let i = 0; i < allCells.length; i++) {
92
+ const cell = allCells[i];
93
+ if (require_utils.callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible)) visibleCells.push(cell);
94
+ }
90
95
  const { left, right } = ((_row$table$atoms$colu = row.table.atoms.columnPinning) === null || _row$table$atoms$colu === void 0 ? void 0 : _row$table$atoms$colu.get()) ?? require_columnPinningFeature_utils.getDefaultColumnPinningState();
91
- if (!left.length && !right.length) return cells;
92
- const cellsByColumnId = /* @__PURE__ */ new Map();
93
- for (const cell of cells) cellsByColumnId.set(cell.column.id, cell);
96
+ if (!left.length && !right.length) return visibleCells;
97
+ const visibleCellsByColumnId = require_utils.callMemoOrStaticFn(row, "getVisibleCellsByColumnId", row_getVisibleCellsByColumnId);
94
98
  const leftCells = [];
95
- for (const columnId of left) {
96
- const cell = cellsByColumnId.get(columnId);
99
+ for (let i = 0; i < left.length; i++) {
100
+ const cell = visibleCellsByColumnId[left[i]];
97
101
  if (cell) leftCells.push(cell);
98
102
  }
99
103
  const rightCells = [];
100
- for (const columnId of right) {
101
- const cell = cellsByColumnId.get(columnId);
104
+ for (let i = 0; i < right.length; i++) {
105
+ const cell = visibleCellsByColumnId[right[i]];
102
106
  if (cell) rightCells.push(cell);
103
107
  }
104
- const leftSet = new Set(left);
105
- const rightSet = new Set(right);
106
108
  const centerCells = [];
107
- for (const cell of cells) {
109
+ for (let i = 0; i < visibleCells.length; i++) {
110
+ const cell = visibleCells[i];
108
111
  const id = cell.column.id;
109
- if (!leftSet.has(id) && !rightSet.has(id)) centerCells.push(cell);
112
+ if (!left.includes(id) && !right.includes(id)) centerCells.push(cell);
110
113
  }
111
114
  return [
112
115
  ...leftCells,
@@ -115,6 +118,25 @@ function row_getVisibleCells(row) {
115
118
  ];
116
119
  }
117
120
  /**
121
+ * Returns visible cells by column id for a row.
122
+ *
123
+ * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const value = row_getVisibleCellsByColumnId(row)
128
+ * ```
129
+ */
130
+ function row_getVisibleCellsByColumnId(row) {
131
+ const result = {};
132
+ const allCells = row.getAllCells();
133
+ for (let i = 0; i < allCells.length; i++) {
134
+ const cell = allCells[i];
135
+ if (require_utils.callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible)) result[cell.column.id] = cell;
136
+ }
137
+ return result;
138
+ }
139
+ /**
118
140
  * Returns visible flat columns for the table.
119
141
  *
120
142
  * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
@@ -181,7 +203,11 @@ function table_resetColumnVisibility(table, defaultState) {
181
203
  function table_toggleAllColumnsVisible(table, value) {
182
204
  value = value ?? !table_getIsAllColumnsVisible(table);
183
205
  const visibility = {};
184
- for (const column of table.getAllLeafColumns()) visibility[column.id] = !value ? !column_getCanHide(column) : value;
206
+ const leafColumns = table.getAllLeafColumns();
207
+ for (let i = 0; i < leafColumns.length; i++) {
208
+ const column = leafColumns[i];
209
+ visibility[column.id] = !value ? !column_getCanHide(column) : value;
210
+ }
185
211
  table_setColumnVisibility(table, visibility);
186
212
  }
187
213
  /**
@@ -233,6 +259,7 @@ exports.column_getToggleVisibilityHandler = column_getToggleVisibilityHandler;
233
259
  exports.column_toggleVisibility = column_toggleVisibility;
234
260
  exports.getDefaultColumnVisibilityState = getDefaultColumnVisibilityState;
235
261
  exports.row_getVisibleCells = row_getVisibleCells;
262
+ exports.row_getVisibleCellsByColumnId = row_getVisibleCellsByColumnId;
236
263
  exports.table_getIsAllColumnsVisible = table_getIsAllColumnsVisible;
237
264
  exports.table_getIsSomeColumnsVisible = table_getIsSomeColumnsVisible;
238
265
  exports.table_getToggleAllColumnsVisibilityHandler = table_getToggleAllColumnsVisibilityHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"columnVisibilityFeature.utils.cjs","names":["callMemoOrStaticFn","getDefaultColumnPinningState","cloneState"],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.utils.ts"],"sourcesContent":["import { callMemoOrStaticFn, cloneState } from '../../utils'\nimport { getDefaultColumnPinningState } from '../column-pinning/columnPinningFeature.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 { Cell } from '../../types/Cell'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnVisibilityState } from './columnVisibilityFeature.types'\nimport type { Row } from '../../types/Row'\n\n/**\n * Returns the default column visibility state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultColumnVisibilityState()\n * ```\n */\nexport function getDefaultColumnVisibilityState(): ColumnVisibilityState {\n return {}\n}\n\n/**\n * Toggles visibility for a column.\n *\n * The update is applied through the owning table state slice and respects the feature options for that column.\n *\n * @example\n * ```ts\n * column_toggleVisibility(column)\n * ```\n */\nexport function column_toggleVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, visible?: boolean): void {\n if (column_getCanHide(column)) {\n table_setColumnVisibility(column.table, (old) => ({\n ...old,\n [column.id]:\n visible ??\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n }))\n }\n}\n\n/**\n * Returns is visible for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsVisible(column)\n * ```\n */\nexport function column_getIsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some((childColumn) =>\n callMemoOrStaticFn(childColumn, 'getIsVisible', column_getIsVisible),\n )\n : column.table.atoms.columnVisibility?.get()?.[column.id]) ?? true\n )\n}\n\n/**\n * Returns whether a column can use hide.\n *\n * This combines column options, table options, and any required accessor or feature state for the capability.\n *\n * @example\n * ```ts\n * const value = column_getCanHide(column)\n * ```\n */\nexport function column_getCanHide<\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.enableHiding ?? true) &&\n (column.table.options.enableHiding ?? true)\n )\n}\n\n/**\n * Returns an event handler for toggling visibility handler.\n *\n * The handler is intended for direct use in column header controls such as buttons or checkboxes.\n *\n * @example\n * ```ts\n * const value = column_getToggleVisibilityHandler(column)\n * ```\n */\nexport function column_getToggleVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (e: unknown) => {\n column_toggleVisibility(\n column,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n/**\n * Returns visible cells for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCells(row)\n * ```\n */\nexport function row_getVisibleCells<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>> {\n const cells = row\n .getAllCells()\n .filter((cell) =>\n callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible),\n )\n const { left, right } =\n row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState()\n if (!left.length && !right.length) return cells // no pinning, return early\n\n const cellsByColumnId = new Map<string, Cell<TFeatures, TData, unknown>>()\n for (const cell of cells) cellsByColumnId.set(cell.column.id, cell)\n\n const leftCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const columnId of left) {\n const cell = cellsByColumnId.get(columnId)\n if (cell) leftCells.push(cell)\n }\n\n const rightCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const columnId of right) {\n const cell = cellsByColumnId.get(columnId)\n if (cell) rightCells.push(cell)\n }\n\n // Center cells: visible cells in natural column order, minus pinned ones.\n const leftSet = new Set(left)\n const rightSet = new Set(right)\n const centerCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const cell of cells) {\n const id = cell.column.id\n if (!leftSet.has(id) && !rightSet.has(id)) centerCells.push(cell)\n }\n\n return [...leftCells, ...centerCells, ...rightCells]\n}\n\n/**\n * Returns visible flat columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleFlatColumns(table)\n * ```\n */\nexport function table_getVisibleFlatColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllFlatColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns visible leaf columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleLeafColumns(table)\n * ```\n */\nexport function table_getVisibleLeafColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Updates the table's column visibility state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setColumnVisibility(table, (old) => old)\n * ```\n */\nexport function table_setColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnVisibilityState>,\n) {\n table.options.onColumnVisibilityChange?.(updater)\n}\n\n/**\n * Resets the table's column visibility state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetColumnVisibility(table)\n * table_resetColumnVisibility(table, true)\n * ```\n */\nexport function table_resetColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnVisibility(\n table,\n defaultState ? {} : cloneState(table.initialState.columnVisibility ?? {}),\n )\n}\n\n/**\n * Toggles all columns visible for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllColumnsVisible(table)\n * ```\n */\nexport function table_toggleAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n value = value ?? !table_getIsAllColumnsVisible(table)\n\n const visibility: Record<string, boolean> = {}\n for (const column of table.getAllLeafColumns()) {\n visibility[column.id] = !value ? !column_getCanHide(column) : value\n }\n\n table_setColumnVisibility(table, visibility)\n}\n\n/**\n * Returns is all columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllColumnsVisible(table)\n * ```\n */\nexport function table_getIsAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return !table\n .getAllLeafColumns()\n .some(\n (column) =>\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns is some columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeColumnsVisible(table)\n * ```\n */\nexport function table_getIsSomeColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .some((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns an event handler for all columns visibility handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllColumnsVisibilityHandler(table)\n * ```\n */\nexport function table_getToggleAllColumnsVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllColumnsVisible(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"columnVisibilityFeature.utils.cjs","names":["callMemoOrStaticFn","getDefaultColumnPinningState","cloneState"],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.utils.ts"],"sourcesContent":["import { callMemoOrStaticFn, cloneState } from '../../utils'\nimport { getDefaultColumnPinningState } from '../column-pinning/columnPinningFeature.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 { Cell } from '../../types/Cell'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnVisibilityState } from './columnVisibilityFeature.types'\nimport type { Row } from '../../types/Row'\n\n/**\n * Returns the default column visibility state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultColumnVisibilityState()\n * ```\n */\nexport function getDefaultColumnVisibilityState(): ColumnVisibilityState {\n return {}\n}\n\n/**\n * Toggles visibility for a column.\n *\n * The update is applied through the owning table state slice and respects the feature options for that column.\n *\n * @example\n * ```ts\n * column_toggleVisibility(column)\n * ```\n */\nexport function column_toggleVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, visible?: boolean): void {\n if (column_getCanHide(column)) {\n table_setColumnVisibility(column.table, (old) => ({\n ...old,\n [column.id]:\n visible ??\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n }))\n }\n}\n\n/**\n * Returns is visible for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsVisible(column)\n * ```\n */\nexport function column_getIsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some((childColumn) =>\n callMemoOrStaticFn(childColumn, 'getIsVisible', column_getIsVisible),\n )\n : column.table.atoms.columnVisibility?.get()?.[column.id]) ?? true\n )\n}\n\n/**\n * Returns whether a column can use hide.\n *\n * This combines column options, table options, and any required accessor or feature state for the capability.\n *\n * @example\n * ```ts\n * const value = column_getCanHide(column)\n * ```\n */\nexport function column_getCanHide<\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.enableHiding ?? true) &&\n (column.table.options.enableHiding ?? true)\n )\n}\n\n/**\n * Returns an event handler for toggling visibility handler.\n *\n * The handler is intended for direct use in column header controls such as buttons or checkboxes.\n *\n * @example\n * ```ts\n * const value = column_getToggleVisibilityHandler(column)\n * ```\n */\nexport function column_getToggleVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (e: unknown) => {\n column_toggleVisibility(\n column,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n/**\n * Returns visible cells for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCells(row)\n * ```\n */\nexport function row_getVisibleCells<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>> {\n const allCells = row.getAllCells()\n const visibleCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < allCells.length; i++) {\n const cell = allCells[i]!\n if (callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible)) {\n visibleCells.push(cell)\n }\n }\n\n const { left, right } =\n row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState()\n if (!left.length && !right.length) return visibleCells // no pinning, return early\n\n const visibleCellsByColumnId = callMemoOrStaticFn(\n row,\n 'getVisibleCellsByColumnId',\n row_getVisibleCellsByColumnId,\n )\n\n const leftCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < left.length; i++) {\n const cell = visibleCellsByColumnId[left[i]!]\n if (cell) leftCells.push(cell)\n }\n\n const rightCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < right.length; i++) {\n const cell = visibleCellsByColumnId[right[i]!]\n if (cell) rightCells.push(cell)\n }\n\n // Center cells: visible cells in natural column order, minus pinned ones.\n const centerCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < visibleCells.length; i++) {\n const cell = visibleCells[i]!\n const id = cell.column.id\n if (!left.includes(id) && !right.includes(id)) centerCells.push(cell)\n }\n\n return [...leftCells, ...centerCells, ...rightCells]\n}\n\n/**\n * Returns visible cells by column id for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCellsByColumnId(row)\n * ```\n */\nexport function row_getVisibleCellsByColumnId<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Record<string, Cell<TFeatures, TData, unknown>> {\n const result: Record<string, Cell<TFeatures, TData, unknown>> = {}\n const allCells = row.getAllCells()\n for (let i = 0; i < allCells.length; i++) {\n const cell = allCells[i]!\n if (callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible)) {\n result[cell.column.id] = cell\n }\n }\n return result\n}\n\n/**\n * Returns visible flat columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleFlatColumns(table)\n * ```\n */\nexport function table_getVisibleFlatColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllFlatColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns visible leaf columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleLeafColumns(table)\n * ```\n */\nexport function table_getVisibleLeafColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Updates the table's column visibility state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setColumnVisibility(table, (old) => old)\n * ```\n */\nexport function table_setColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnVisibilityState>,\n) {\n table.options.onColumnVisibilityChange?.(updater)\n}\n\n/**\n * Resets the table's column visibility state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetColumnVisibility(table)\n * table_resetColumnVisibility(table, true)\n * ```\n */\nexport function table_resetColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnVisibility(\n table,\n defaultState ? {} : cloneState(table.initialState.columnVisibility ?? {}),\n )\n}\n\n/**\n * Toggles all columns visible for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllColumnsVisible(table)\n * ```\n */\nexport function table_toggleAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n value = value ?? !table_getIsAllColumnsVisible(table)\n\n const visibility: Record<string, boolean> = {}\n const leafColumns = table.getAllLeafColumns()\n for (let i = 0; i < leafColumns.length; i++) {\n const column = leafColumns[i]!\n visibility[column.id] = !value ? !column_getCanHide(column) : value\n }\n\n table_setColumnVisibility(table, visibility)\n}\n\n/**\n * Returns is all columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllColumnsVisible(table)\n * ```\n */\nexport function table_getIsAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return !table\n .getAllLeafColumns()\n .some(\n (column) =>\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns is some columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeColumnsVisible(table)\n * ```\n */\nexport function table_getIsSomeColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .some((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns an event handler for all columns visibility handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllColumnsVisibilityHandler(table)\n * ```\n */\nexport function table_getToggleAllColumnsVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllColumnsVisible(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n"],"mappings":"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"}
@@ -72,6 +72,17 @@ declare function column_getToggleVisibilityHandler<TFeatures extends TableFeatur
72
72
  * ```
73
73
  */
74
74
  declare function row_getVisibleCells<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>>;
75
+ /**
76
+ * Returns visible cells by column id for a row.
77
+ *
78
+ * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const value = row_getVisibleCellsByColumnId(row)
83
+ * ```
84
+ */
85
+ declare function row_getVisibleCellsByColumnId<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): Record<string, Cell<TFeatures, TData, unknown>>;
75
86
  /**
76
87
  * Returns visible flat columns for the table.
77
88
  *
@@ -162,5 +173,5 @@ declare function table_getIsSomeColumnsVisible<TFeatures extends TableFeatures,
162
173
  */
163
174
  declare function table_getToggleAllColumnsVisibilityHandler<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): (e: unknown) => void;
164
175
  //#endregion
165
- export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
176
+ export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
166
177
  //# sourceMappingURL=columnVisibilityFeature.utils.d.cts.map
@@ -72,6 +72,17 @@ declare function column_getToggleVisibilityHandler<TFeatures extends TableFeatur
72
72
  * ```
73
73
  */
74
74
  declare function row_getVisibleCells<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>>;
75
+ /**
76
+ * Returns visible cells by column id for a row.
77
+ *
78
+ * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const value = row_getVisibleCellsByColumnId(row)
83
+ * ```
84
+ */
85
+ declare function row_getVisibleCellsByColumnId<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): Record<string, Cell<TFeatures, TData, unknown>>;
75
86
  /**
76
87
  * Returns visible flat columns for the table.
77
88
  *
@@ -162,5 +173,5 @@ declare function table_getIsSomeColumnsVisible<TFeatures extends TableFeatures,
162
173
  */
163
174
  declare function table_getToggleAllColumnsVisibilityHandler<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): (e: unknown) => void;
164
175
  //#endregion
165
- export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
176
+ export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
166
177
  //# sourceMappingURL=columnVisibilityFeature.utils.d.ts.map
@@ -86,27 +86,30 @@ function column_getToggleVisibilityHandler(column) {
86
86
  */
87
87
  function row_getVisibleCells(row) {
88
88
  var _row$table$atoms$colu;
89
- const cells = row.getAllCells().filter((cell) => callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible));
89
+ const allCells = row.getAllCells();
90
+ const visibleCells = [];
91
+ for (let i = 0; i < allCells.length; i++) {
92
+ const cell = allCells[i];
93
+ if (callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible)) visibleCells.push(cell);
94
+ }
90
95
  const { left, right } = ((_row$table$atoms$colu = row.table.atoms.columnPinning) === null || _row$table$atoms$colu === void 0 ? void 0 : _row$table$atoms$colu.get()) ?? getDefaultColumnPinningState();
91
- if (!left.length && !right.length) return cells;
92
- const cellsByColumnId = /* @__PURE__ */ new Map();
93
- for (const cell of cells) cellsByColumnId.set(cell.column.id, cell);
96
+ if (!left.length && !right.length) return visibleCells;
97
+ const visibleCellsByColumnId = callMemoOrStaticFn(row, "getVisibleCellsByColumnId", row_getVisibleCellsByColumnId);
94
98
  const leftCells = [];
95
- for (const columnId of left) {
96
- const cell = cellsByColumnId.get(columnId);
99
+ for (let i = 0; i < left.length; i++) {
100
+ const cell = visibleCellsByColumnId[left[i]];
97
101
  if (cell) leftCells.push(cell);
98
102
  }
99
103
  const rightCells = [];
100
- for (const columnId of right) {
101
- const cell = cellsByColumnId.get(columnId);
104
+ for (let i = 0; i < right.length; i++) {
105
+ const cell = visibleCellsByColumnId[right[i]];
102
106
  if (cell) rightCells.push(cell);
103
107
  }
104
- const leftSet = new Set(left);
105
- const rightSet = new Set(right);
106
108
  const centerCells = [];
107
- for (const cell of cells) {
109
+ for (let i = 0; i < visibleCells.length; i++) {
110
+ const cell = visibleCells[i];
108
111
  const id = cell.column.id;
109
- if (!leftSet.has(id) && !rightSet.has(id)) centerCells.push(cell);
112
+ if (!left.includes(id) && !right.includes(id)) centerCells.push(cell);
110
113
  }
111
114
  return [
112
115
  ...leftCells,
@@ -115,6 +118,25 @@ function row_getVisibleCells(row) {
115
118
  ];
116
119
  }
117
120
  /**
121
+ * Returns visible cells by column id for a row.
122
+ *
123
+ * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const value = row_getVisibleCellsByColumnId(row)
128
+ * ```
129
+ */
130
+ function row_getVisibleCellsByColumnId(row) {
131
+ const result = {};
132
+ const allCells = row.getAllCells();
133
+ for (let i = 0; i < allCells.length; i++) {
134
+ const cell = allCells[i];
135
+ if (callMemoOrStaticFn(cell.column, "getIsVisible", column_getIsVisible)) result[cell.column.id] = cell;
136
+ }
137
+ return result;
138
+ }
139
+ /**
118
140
  * Returns visible flat columns for the table.
119
141
  *
120
142
  * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
@@ -181,7 +203,11 @@ function table_resetColumnVisibility(table, defaultState) {
181
203
  function table_toggleAllColumnsVisible(table, value) {
182
204
  value = value ?? !table_getIsAllColumnsVisible(table);
183
205
  const visibility = {};
184
- for (const column of table.getAllLeafColumns()) visibility[column.id] = !value ? !column_getCanHide(column) : value;
206
+ const leafColumns = table.getAllLeafColumns();
207
+ for (let i = 0; i < leafColumns.length; i++) {
208
+ const column = leafColumns[i];
209
+ visibility[column.id] = !value ? !column_getCanHide(column) : value;
210
+ }
185
211
  table_setColumnVisibility(table, visibility);
186
212
  }
187
213
  /**
@@ -227,5 +253,5 @@ function table_getToggleAllColumnsVisibilityHandler(table) {
227
253
  }
228
254
 
229
255
  //#endregion
230
- export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
256
+ export { column_getCanHide, column_getIsVisible, column_getToggleVisibilityHandler, column_toggleVisibility, getDefaultColumnVisibilityState, row_getVisibleCells, row_getVisibleCellsByColumnId, table_getIsAllColumnsVisible, table_getIsSomeColumnsVisible, table_getToggleAllColumnsVisibilityHandler, table_getVisibleFlatColumns, table_getVisibleLeafColumns, table_resetColumnVisibility, table_setColumnVisibility, table_toggleAllColumnsVisible };
231
257
  //# sourceMappingURL=columnVisibilityFeature.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columnVisibilityFeature.utils.js","names":[],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.utils.ts"],"sourcesContent":["import { callMemoOrStaticFn, cloneState } from '../../utils'\nimport { getDefaultColumnPinningState } from '../column-pinning/columnPinningFeature.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 { Cell } from '../../types/Cell'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnVisibilityState } from './columnVisibilityFeature.types'\nimport type { Row } from '../../types/Row'\n\n/**\n * Returns the default column visibility state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultColumnVisibilityState()\n * ```\n */\nexport function getDefaultColumnVisibilityState(): ColumnVisibilityState {\n return {}\n}\n\n/**\n * Toggles visibility for a column.\n *\n * The update is applied through the owning table state slice and respects the feature options for that column.\n *\n * @example\n * ```ts\n * column_toggleVisibility(column)\n * ```\n */\nexport function column_toggleVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, visible?: boolean): void {\n if (column_getCanHide(column)) {\n table_setColumnVisibility(column.table, (old) => ({\n ...old,\n [column.id]:\n visible ??\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n }))\n }\n}\n\n/**\n * Returns is visible for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsVisible(column)\n * ```\n */\nexport function column_getIsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some((childColumn) =>\n callMemoOrStaticFn(childColumn, 'getIsVisible', column_getIsVisible),\n )\n : column.table.atoms.columnVisibility?.get()?.[column.id]) ?? true\n )\n}\n\n/**\n * Returns whether a column can use hide.\n *\n * This combines column options, table options, and any required accessor or feature state for the capability.\n *\n * @example\n * ```ts\n * const value = column_getCanHide(column)\n * ```\n */\nexport function column_getCanHide<\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.enableHiding ?? true) &&\n (column.table.options.enableHiding ?? true)\n )\n}\n\n/**\n * Returns an event handler for toggling visibility handler.\n *\n * The handler is intended for direct use in column header controls such as buttons or checkboxes.\n *\n * @example\n * ```ts\n * const value = column_getToggleVisibilityHandler(column)\n * ```\n */\nexport function column_getToggleVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (e: unknown) => {\n column_toggleVisibility(\n column,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n/**\n * Returns visible cells for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCells(row)\n * ```\n */\nexport function row_getVisibleCells<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>> {\n const cells = row\n .getAllCells()\n .filter((cell) =>\n callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible),\n )\n const { left, right } =\n row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState()\n if (!left.length && !right.length) return cells // no pinning, return early\n\n const cellsByColumnId = new Map<string, Cell<TFeatures, TData, unknown>>()\n for (const cell of cells) cellsByColumnId.set(cell.column.id, cell)\n\n const leftCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const columnId of left) {\n const cell = cellsByColumnId.get(columnId)\n if (cell) leftCells.push(cell)\n }\n\n const rightCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const columnId of right) {\n const cell = cellsByColumnId.get(columnId)\n if (cell) rightCells.push(cell)\n }\n\n // Center cells: visible cells in natural column order, minus pinned ones.\n const leftSet = new Set(left)\n const rightSet = new Set(right)\n const centerCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (const cell of cells) {\n const id = cell.column.id\n if (!leftSet.has(id) && !rightSet.has(id)) centerCells.push(cell)\n }\n\n return [...leftCells, ...centerCells, ...rightCells]\n}\n\n/**\n * Returns visible flat columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleFlatColumns(table)\n * ```\n */\nexport function table_getVisibleFlatColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllFlatColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns visible leaf columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleLeafColumns(table)\n * ```\n */\nexport function table_getVisibleLeafColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Updates the table's column visibility state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setColumnVisibility(table, (old) => old)\n * ```\n */\nexport function table_setColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnVisibilityState>,\n) {\n table.options.onColumnVisibilityChange?.(updater)\n}\n\n/**\n * Resets the table's column visibility state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetColumnVisibility(table)\n * table_resetColumnVisibility(table, true)\n * ```\n */\nexport function table_resetColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnVisibility(\n table,\n defaultState ? {} : cloneState(table.initialState.columnVisibility ?? {}),\n )\n}\n\n/**\n * Toggles all columns visible for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllColumnsVisible(table)\n * ```\n */\nexport function table_toggleAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n value = value ?? !table_getIsAllColumnsVisible(table)\n\n const visibility: Record<string, boolean> = {}\n for (const column of table.getAllLeafColumns()) {\n visibility[column.id] = !value ? !column_getCanHide(column) : value\n }\n\n table_setColumnVisibility(table, visibility)\n}\n\n/**\n * Returns is all columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllColumnsVisible(table)\n * ```\n */\nexport function table_getIsAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return !table\n .getAllLeafColumns()\n .some(\n (column) =>\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns is some columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeColumnsVisible(table)\n * ```\n */\nexport function table_getIsSomeColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .some((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns an event handler for all columns visibility handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllColumnsVisibilityHandler(table)\n * ```\n */\nexport function table_getToggleAllColumnsVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllColumnsVisible(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAoBA,SAAgB,kCAAyD;CACvE,OAAO,EAAE;;;;;;;;;;;;AAaX,SAAgB,wBAId,QAAmD,SAAyB;CAC5E,IAAI,kBAAkB,OAAO,EAC3B,0BAA0B,OAAO,QAAQ,SAAS;EAChD,GAAG;GACF,OAAO,KACN,WACA,CAAC,mBAAmB,QAAQ,gBAAgB,oBAAoB;EACnE,EAAE;;;;;;;;;;;;AAcP,SAAgB,oBAId,QAA4D;;CAC5D,MAAM,eAAe,OAAO;CAC5B,QACG,aAAa,SACV,aAAa,MAAM,gBACjB,mBAAmB,aAAa,gBAAgB,oBAAoB,CACrE,4BACD,OAAO,MAAM,MAAM,iHAAkB,KAAK,gFAAG,OAAO,QAAQ;;;;;;;;;;;;AAcpE,SAAgB,kBAId,QAAmD;CACnD,QACG,OAAO,UAAU,gBAAgB,UACjC,OAAO,MAAM,QAAQ,gBAAgB;;;;;;;;;;;;AAc1C,SAAgB,kCAId,QAAmD;CACnD,QAAQ,MAAe;EACrB,wBACE,QACE,EAAiB,OAA4B,QAChD;;;;;;;;;;;;;AAcL,SAAgB,oBAGd,KAAoE;;CACpE,MAAM,QAAQ,IACX,aAAa,CACb,QAAQ,SACP,mBAAmB,KAAK,QAAQ,gBAAgB,oBAAoB,CACrE;CACH,MAAM,EAAE,MAAM,oCACZ,IAAI,MAAM,MAAM,6FAAe,KAAK,KAAI,8BAA8B;CACxE,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,QAAQ,OAAO;CAE1C,MAAM,kCAAkB,IAAI,KAA8C;CAC1E,KAAK,MAAM,QAAQ,OAAO,gBAAgB,IAAI,KAAK,OAAO,IAAI,KAAK;CAEnE,MAAM,YAAoD,EAAE;CAC5D,KAAK,MAAM,YAAY,MAAM;EAC3B,MAAM,OAAO,gBAAgB,IAAI,SAAS;EAC1C,IAAI,MAAM,UAAU,KAAK,KAAK;;CAGhC,MAAM,aAAqD,EAAE;CAC7D,KAAK,MAAM,YAAY,OAAO;EAC5B,MAAM,OAAO,gBAAgB,IAAI,SAAS;EAC1C,IAAI,MAAM,WAAW,KAAK,KAAK;;CAIjC,MAAM,UAAU,IAAI,IAAI,KAAK;CAC7B,MAAM,WAAW,IAAI,IAAI,MAAM;CAC/B,MAAM,cAAsD,EAAE;CAC9D,KAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,KAAK,KAAK,OAAO;EACvB,IAAI,CAAC,QAAQ,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,YAAY,KAAK,KAAK;;CAGnE,OAAO;EAAC,GAAG;EAAW,GAAG;EAAa,GAAG;EAAW;;;;;;;;;;;;AAatD,SAAgB,4BAGd,OAAyC;CACzC,OAAO,MACJ,mBAAmB,CACnB,QAAQ,WACP,mBAAmB,QAAQ,gBAAgB,oBAAoB,CAChE;;;;;;;;;;;;AAaL,SAAgB,4BAGd,OAAyC;CACzC,OAAO,MACJ,mBAAmB,CACnB,QAAQ,WACP,mBAAmB,QAAQ,gBAAgB,oBAAoB,CAChE;;;;;;;;;;;;AAaL,SAAgB,0BAId,OACA,SACA;;CACA,iDAAM,SAAQ,qHAA2B,QAAQ;;;;;;;;;;;;;AAcnD,SAAgB,4BAGd,OAAyC,cAAwB;CACjE,0BACE,OACA,eAAe,EAAE,GAAG,WAAW,MAAM,aAAa,oBAAoB,EAAE,CAAC,CAC1E;;;;;;;;;;;;AAaH,SAAgB,8BAGd,OAAyC,OAAiB;CAC1D,QAAQ,SAAS,CAAC,6BAA6B,MAAM;CAErD,MAAM,aAAsC,EAAE;CAC9C,KAAK,MAAM,UAAU,MAAM,mBAAmB,EAC5C,WAAW,OAAO,MAAM,CAAC,QAAQ,CAAC,kBAAkB,OAAO,GAAG;CAGhE,0BAA0B,OAAO,WAAW;;;;;;;;;;;;AAa9C,SAAgB,6BAGd,OAAyC;CACzC,OAAO,CAAC,MACL,mBAAmB,CACnB,MACE,WACC,CAAC,mBAAmB,QAAQ,gBAAgB,oBAAoB,CACnE;;;;;;;;;;;;AAaL,SAAgB,8BAGd,OAAyC;CACzC,OAAO,MACJ,mBAAmB,CACnB,MAAM,WACL,mBAAmB,QAAQ,gBAAgB,oBAAoB,CAChE;;;;;;;;;;;;AAaL,SAAgB,2CAGd,OAAyC;CACzC,QAAQ,MAAe;EACrB,8BACE,OACE,EAAiB,OAA4B,QAChD"}
1
+ {"version":3,"file":"columnVisibilityFeature.utils.js","names":[],"sources":["../../../src/features/column-visibility/columnVisibilityFeature.utils.ts"],"sourcesContent":["import { callMemoOrStaticFn, cloneState } from '../../utils'\nimport { getDefaultColumnPinningState } from '../column-pinning/columnPinningFeature.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 { Cell } from '../../types/Cell'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnVisibilityState } from './columnVisibilityFeature.types'\nimport type { Row } from '../../types/Row'\n\n/**\n * Returns the default column visibility state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultColumnVisibilityState()\n * ```\n */\nexport function getDefaultColumnVisibilityState(): ColumnVisibilityState {\n return {}\n}\n\n/**\n * Toggles visibility for a column.\n *\n * The update is applied through the owning table state slice and respects the feature options for that column.\n *\n * @example\n * ```ts\n * column_toggleVisibility(column)\n * ```\n */\nexport function column_toggleVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>, visible?: boolean): void {\n if (column_getCanHide(column)) {\n table_setColumnVisibility(column.table, (old) => ({\n ...old,\n [column.id]:\n visible ??\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n }))\n }\n}\n\n/**\n * Returns is visible for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsVisible(column)\n * ```\n */\nexport function column_getIsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>): boolean {\n const childColumns = column.columns\n return (\n (childColumns.length\n ? childColumns.some((childColumn) =>\n callMemoOrStaticFn(childColumn, 'getIsVisible', column_getIsVisible),\n )\n : column.table.atoms.columnVisibility?.get()?.[column.id]) ?? true\n )\n}\n\n/**\n * Returns whether a column can use hide.\n *\n * This combines column options, table options, and any required accessor or feature state for the capability.\n *\n * @example\n * ```ts\n * const value = column_getCanHide(column)\n * ```\n */\nexport function column_getCanHide<\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.enableHiding ?? true) &&\n (column.table.options.enableHiding ?? true)\n )\n}\n\n/**\n * Returns an event handler for toggling visibility handler.\n *\n * The handler is intended for direct use in column header controls such as buttons or checkboxes.\n *\n * @example\n * ```ts\n * const value = column_getToggleVisibilityHandler(column)\n * ```\n */\nexport function column_getToggleVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (e: unknown) => {\n column_toggleVisibility(\n column,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n\n/**\n * Returns visible cells for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCells(row)\n * ```\n */\nexport function row_getVisibleCells<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Array<Cell<TFeatures, TData, unknown>> {\n const allCells = row.getAllCells()\n const visibleCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < allCells.length; i++) {\n const cell = allCells[i]!\n if (callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible)) {\n visibleCells.push(cell)\n }\n }\n\n const { left, right } =\n row.table.atoms.columnPinning?.get() ?? getDefaultColumnPinningState()\n if (!left.length && !right.length) return visibleCells // no pinning, return early\n\n const visibleCellsByColumnId = callMemoOrStaticFn(\n row,\n 'getVisibleCellsByColumnId',\n row_getVisibleCellsByColumnId,\n )\n\n const leftCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < left.length; i++) {\n const cell = visibleCellsByColumnId[left[i]!]\n if (cell) leftCells.push(cell)\n }\n\n const rightCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < right.length; i++) {\n const cell = visibleCellsByColumnId[right[i]!]\n if (cell) rightCells.push(cell)\n }\n\n // Center cells: visible cells in natural column order, minus pinned ones.\n const centerCells: Array<Cell<TFeatures, TData, unknown>> = []\n for (let i = 0; i < visibleCells.length; i++) {\n const cell = visibleCells[i]!\n const id = cell.column.id\n if (!left.includes(id) && !right.includes(id)) centerCells.push(cell)\n }\n\n return [...leftCells, ...centerCells, ...rightCells]\n}\n\n/**\n * Returns visible cells by column id for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getVisibleCellsByColumnId(row)\n * ```\n */\nexport function row_getVisibleCellsByColumnId<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): Record<string, Cell<TFeatures, TData, unknown>> {\n const result: Record<string, Cell<TFeatures, TData, unknown>> = {}\n const allCells = row.getAllCells()\n for (let i = 0; i < allCells.length; i++) {\n const cell = allCells[i]!\n if (callMemoOrStaticFn(cell.column, 'getIsVisible', column_getIsVisible)) {\n result[cell.column.id] = cell\n }\n }\n return result\n}\n\n/**\n * Returns visible flat columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleFlatColumns(table)\n * ```\n */\nexport function table_getVisibleFlatColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllFlatColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns visible leaf columns for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getVisibleLeafColumns(table)\n * ```\n */\nexport function table_getVisibleLeafColumns<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .filter((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Updates the table's column visibility state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setColumnVisibility(table, (old) => old)\n * ```\n */\nexport function table_setColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<ColumnVisibilityState>,\n) {\n table.options.onColumnVisibilityChange?.(updater)\n}\n\n/**\n * Resets the table's column visibility state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetColumnVisibility(table)\n * table_resetColumnVisibility(table, true)\n * ```\n */\nexport function table_resetColumnVisibility<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnVisibility(\n table,\n defaultState ? {} : cloneState(table.initialState.columnVisibility ?? {}),\n )\n}\n\n/**\n * Toggles all columns visible for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllColumnsVisible(table)\n * ```\n */\nexport function table_toggleAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, value?: boolean) {\n value = value ?? !table_getIsAllColumnsVisible(table)\n\n const visibility: Record<string, boolean> = {}\n const leafColumns = table.getAllLeafColumns()\n for (let i = 0; i < leafColumns.length; i++) {\n const column = leafColumns[i]!\n visibility[column.id] = !value ? !column_getCanHide(column) : value\n }\n\n table_setColumnVisibility(table, visibility)\n}\n\n/**\n * Returns is all columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllColumnsVisible(table)\n * ```\n */\nexport function table_getIsAllColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return !table\n .getAllLeafColumns()\n .some(\n (column) =>\n !callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns is some columns visible for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeColumnsVisible(table)\n * ```\n */\nexport function table_getIsSomeColumnsVisible<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getAllLeafColumns()\n .some((column) =>\n callMemoOrStaticFn(column, 'getIsVisible', column_getIsVisible),\n )\n}\n\n/**\n * Returns an event handler for all columns visibility handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllColumnsVisibilityHandler(table)\n * ```\n */\nexport function table_getToggleAllColumnsVisibilityHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n table_toggleAllColumnsVisible(\n table,\n ((e as MouseEvent).target as HTMLInputElement).checked,\n )\n }\n}\n"],"mappings":"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"}
@@ -25,7 +25,7 @@ function getDefaultExpandedState() {
25
25
  * ```
26
26
  */
27
27
  function table_autoResetExpanded(table) {
28
- if (table.options.autoResetAll ?? table.options.autoResetExpanded ?? !table.options.manualExpanding) queueMicrotask(() => table_resetExpanded(table));
28
+ if (table.options.autoResetAll ?? table.options.autoResetExpanded ?? !table.options.manualExpanding) table._reactivity.schedule(() => table_resetExpanded(table));
29
29
  }
30
30
  /**
31
31
  * Updates the table's expanded state slice.
@@ -225,7 +225,7 @@ function row_getIsAllParentsExpanded(row) {
225
225
  let currentRow = row;
226
226
  while (isFullyExpanded && currentRow.parentId) {
227
227
  currentRow = row.table.getRow(currentRow.parentId, true);
228
- isFullyExpanded = row_getIsExpanded(row);
228
+ isFullyExpanded = row_getIsExpanded(currentRow);
229
229
  }
230
230
  return isFullyExpanded;
231
231
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rowExpandingFeature.utils.cjs","names":["cloneState"],"sources":["../../../src/features/row-expanding/rowExpandingFeature.utils.ts"],"sourcesContent":["import { 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 ExpandedState,\n ExpandedStateList,\n} from './rowExpandingFeature.types'\n\n/**\n * Returns the default expanded state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultExpandedState()\n * ```\n */\nexport function getDefaultExpandedState(): ExpandedState {\n return {}\n}\n\n/**\n * Schedules an automatic reset for expanded.\n *\n * The reset only runs when the related feature options allow automatic resets for the current table state change.\n *\n * @example\n * ```ts\n * table_autoResetExpanded(table)\n * ```\n */\nexport function table_autoResetExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n if (\n table.options.autoResetAll ??\n table.options.autoResetExpanded ??\n !table.options.manualExpanding\n ) {\n queueMicrotask(() => table_resetExpanded(table))\n }\n}\n\n/**\n * Updates the table's expanded state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setExpanded(table, (old) => old)\n * ```\n */\nexport function table_setExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<ExpandedState>) {\n table.options.onExpandedChange?.(updater)\n}\n\n/**\n * Toggles all rows expanded for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllRowsExpanded(table)\n * ```\n */\nexport function table_toggleAllRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, expanded?: boolean) {\n if (expanded ?? !table_getIsAllRowsExpanded(table)) {\n table_setExpanded(table, true)\n } else {\n table_setExpanded(table, {})\n }\n}\n\n/**\n * Resets the table's expanded state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetExpanded(table)\n * table_resetExpanded(table, true)\n * ```\n */\nexport function table_resetExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setExpanded(\n table,\n defaultState ? {} : cloneState(table.initialState.expanded ?? {}),\n )\n}\n\n/**\n * Returns can some rows expand for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getCanSomeRowsExpand(table)\n * ```\n */\nexport function table_getCanSomeRowsExpand<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getPrePaginatedRowModel()\n .flatRows.some((row) => row_getCanExpand(row))\n}\n\n/**\n * Returns an event handler for all rows expanded handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllRowsExpandedHandler(table)\n * ```\n */\nexport function table_getToggleAllRowsExpandedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n ;(e as any).persist?.()\n table_toggleAllRowsExpanded(table)\n }\n}\n\n/**\n * Returns is some rows expanded for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeRowsExpanded(table)\n * ```\n */\nexport function table_getIsSomeRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const expanded = table.atoms.expanded?.get() ?? {}\n return expanded === true || Object.values(expanded).some(Boolean)\n}\n\n/**\n * Returns is all rows expanded for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllRowsExpanded(table)\n * ```\n */\nexport function table_getIsAllRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const expanded = table.atoms.expanded?.get() ?? {}\n\n // If expanded is true, save some cycles and return true\n if (expanded === true) {\n return true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some((row) => !row_getIsExpanded(row))) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n}\n\n/**\n * Returns expanded depth for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getExpandedDepth(table)\n * ```\n */\nexport function table_getExpandedDepth<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n let maxDepth = 0\n\n const rowIds =\n table.atoms.expanded?.get() === true\n ? Object.keys(table.getRowModel().rowsById)\n : Object.keys(table.atoms.expanded?.get() ?? {})\n\n rowIds.forEach((id) => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n}\n\n/**\n * Toggles expanded for a row.\n *\n * The update is routed through the table state updater for the owning feature state slice.\n *\n * @example\n * ```ts\n * row_toggleExpanded(row)\n * ```\n */\nexport function row_toggleExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>, expanded?: boolean) {\n table_setExpanded(row.table, (old) => {\n const exists = old === true ? true : !!old[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(row.table.getRowModel().rowsById).forEach((rowId) => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [row.id]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n}\n\n/**\n * Returns is expanded for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getIsExpanded(row)\n * ```\n */\nexport function row_getIsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const expanded: ExpandedState = row.table.atoms.expanded?.get() ?? {}\n\n return !!(\n row.table.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded[row.id])\n )\n}\n\n/**\n * Returns whether a row can use expand.\n *\n * This evaluates row data, table options, and feature-specific enablement rules.\n *\n * @example\n * ```ts\n * const value = row_getCanExpand(row)\n * ```\n */\nexport function row_getCanExpand<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return (\n row.table.options.getRowCanExpand?.(row) ??\n ((row.table.options.enableExpanding ?? true) && !!row.subRows.length)\n )\n}\n\n/**\n * Returns is all parents expanded for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getIsAllParentsExpanded(row)\n * ```\n */\nexport function row_getIsAllParentsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n let isFullyExpanded = true\n let currentRow = row\n\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = row.table.getRow(currentRow.parentId, true)\n isFullyExpanded = row_getIsExpanded(row)\n }\n\n return isFullyExpanded\n}\n\n/**\n * Returns an event handler for toggling expanded handler.\n *\n * The handler is intended for direct use in row-level controls such as expansion or selection buttons.\n *\n * @example\n * ```ts\n * const value = row_getToggleExpandedHandler(row)\n * ```\n */\nexport function row_getToggleExpandedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canExpand = row_getCanExpand(row)\n\n return () => {\n if (!canExpand) return\n row_toggleExpanded(row)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowExpandingFeature.utils.cjs","names":["cloneState"],"sources":["../../../src/features/row-expanding/rowExpandingFeature.utils.ts"],"sourcesContent":["import { 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 ExpandedState,\n ExpandedStateList,\n} from './rowExpandingFeature.types'\n\n/**\n * Returns the default expanded state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultExpandedState()\n * ```\n */\nexport function getDefaultExpandedState(): ExpandedState {\n return {}\n}\n\n/**\n * Schedules an automatic reset for expanded.\n *\n * The reset only runs when the related feature options allow automatic resets for the current table state change.\n *\n * @example\n * ```ts\n * table_autoResetExpanded(table)\n * ```\n */\nexport function table_autoResetExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n if (\n table.options.autoResetAll ??\n table.options.autoResetExpanded ??\n !table.options.manualExpanding\n ) {\n table._reactivity.schedule(() => table_resetExpanded(table))\n }\n}\n\n/**\n * Updates the table's expanded state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setExpanded(table, (old) => old)\n * ```\n */\nexport function table_setExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, updater: Updater<ExpandedState>) {\n table.options.onExpandedChange?.(updater)\n}\n\n/**\n * Toggles all rows expanded for the table.\n *\n * This is the table-level convenience API used by UI controls that affect many columns or rows at once.\n *\n * @example\n * ```ts\n * table_toggleAllRowsExpanded(table)\n * ```\n */\nexport function table_toggleAllRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, expanded?: boolean) {\n if (expanded ?? !table_getIsAllRowsExpanded(table)) {\n table_setExpanded(table, true)\n } else {\n table_setExpanded(table, {})\n }\n}\n\n/**\n * Resets the table's expanded state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetExpanded(table)\n * table_resetExpanded(table, true)\n * ```\n */\nexport function table_resetExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setExpanded(\n table,\n defaultState ? {} : cloneState(table.initialState.expanded ?? {}),\n )\n}\n\n/**\n * Returns can some rows expand for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getCanSomeRowsExpand(table)\n * ```\n */\nexport function table_getCanSomeRowsExpand<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return table\n .getPrePaginatedRowModel()\n .flatRows.some((row) => row_getCanExpand(row))\n}\n\n/**\n * Returns an event handler for all rows expanded handler.\n *\n * The handler calls the matching table toggle API and can be attached directly to checkbox or button UI.\n *\n * @example\n * ```ts\n * const value = table_getToggleAllRowsExpandedHandler(table)\n * ```\n */\nexport function table_getToggleAllRowsExpandedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n return (e: unknown) => {\n ;(e as any).persist?.()\n table_toggleAllRowsExpanded(table)\n }\n}\n\n/**\n * Returns is some rows expanded for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeRowsExpanded(table)\n * ```\n */\nexport function table_getIsSomeRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const expanded = table.atoms.expanded?.get() ?? {}\n return expanded === true || Object.values(expanded).some(Boolean)\n}\n\n/**\n * Returns is all rows expanded for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsAllRowsExpanded(table)\n * ```\n */\nexport function table_getIsAllRowsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n const expanded = table.atoms.expanded?.get() ?? {}\n\n // If expanded is true, save some cycles and return true\n if (expanded === true) {\n return true\n }\n\n if (!Object.keys(expanded).length) {\n return false\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some((row) => !row_getIsExpanded(row))) {\n return false\n }\n\n // They must all be expanded :shrug:\n return true\n}\n\n/**\n * Returns expanded depth for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getExpandedDepth(table)\n * ```\n */\nexport function table_getExpandedDepth<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>) {\n let maxDepth = 0\n\n const rowIds =\n table.atoms.expanded?.get() === true\n ? Object.keys(table.getRowModel().rowsById)\n : Object.keys(table.atoms.expanded?.get() ?? {})\n\n rowIds.forEach((id) => {\n const splitId = id.split('.')\n maxDepth = Math.max(maxDepth, splitId.length)\n })\n\n return maxDepth\n}\n\n/**\n * Toggles expanded for a row.\n *\n * The update is routed through the table state updater for the owning feature state slice.\n *\n * @example\n * ```ts\n * row_toggleExpanded(row)\n * ```\n */\nexport function row_toggleExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>, expanded?: boolean) {\n table_setExpanded(row.table, (old) => {\n const exists = old === true ? true : !!old[row.id]\n\n let oldExpanded: ExpandedStateList = {}\n\n if (old === true) {\n Object.keys(row.table.getRowModel().rowsById).forEach((rowId) => {\n oldExpanded[rowId] = true\n })\n } else {\n oldExpanded = old\n }\n\n expanded = expanded ?? !exists\n\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true,\n }\n }\n\n if (exists && !expanded) {\n const { [row.id]: _, ...rest } = oldExpanded\n return rest\n }\n\n return old\n })\n}\n\n/**\n * Returns is expanded for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getIsExpanded(row)\n * ```\n */\nexport function row_getIsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const expanded: ExpandedState = row.table.atoms.expanded?.get() ?? {}\n\n return !!(\n row.table.options.getIsRowExpanded?.(row) ??\n (expanded === true || expanded[row.id])\n )\n}\n\n/**\n * Returns whether a row can use expand.\n *\n * This evaluates row data, table options, and feature-specific enablement rules.\n *\n * @example\n * ```ts\n * const value = row_getCanExpand(row)\n * ```\n */\nexport function row_getCanExpand<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n return (\n row.table.options.getRowCanExpand?.(row) ??\n ((row.table.options.enableExpanding ?? true) && !!row.subRows.length)\n )\n}\n\n/**\n * Returns is all parents expanded for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getIsAllParentsExpanded(row)\n * ```\n */\nexport function row_getIsAllParentsExpanded<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n let isFullyExpanded = true\n let currentRow = row\n\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = row.table.getRow(currentRow.parentId, true)\n isFullyExpanded = row_getIsExpanded(currentRow)\n }\n\n return isFullyExpanded\n}\n\n/**\n * Returns an event handler for toggling expanded handler.\n *\n * The handler is intended for direct use in row-level controls such as expansion or selection buttons.\n *\n * @example\n * ```ts\n * const value = row_getToggleExpandedHandler(row)\n * ```\n */\nexport function row_getToggleExpandedHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>) {\n const canExpand = row_getCanExpand(row)\n\n return () => {\n if (!canExpand) return\n row_toggleExpanded(row)\n }\n}\n"],"mappings":"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"}