@economic/taco 14.0.0 → 14.1.0-EC-85807-code-report-fixes.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/dist/charts/components/Area/AreaChart.cjs.map +1 -1
  2. package/dist/charts/components/Area/AreaChart.d.ts +1 -1
  3. package/dist/charts/components/Area/AreaChart.js.map +1 -1
  4. package/dist/charts/components/Bar/BarChart.cjs +2 -2
  5. package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
  6. package/dist/charts/components/Bar/BarChart.d.ts +1 -1
  7. package/dist/charts/components/Bar/BarChart.js +2 -2
  8. package/dist/charts/components/Bar/BarChart.js.map +1 -1
  9. package/dist/charts/components/ChartWrapper.cjs.map +1 -1
  10. package/dist/charts/components/ChartWrapper.js.map +1 -1
  11. package/dist/charts/components/Composed/BarLineChart.cjs.map +1 -1
  12. package/dist/charts/components/Composed/BarLineChart.d.ts +2 -2
  13. package/dist/charts/components/Composed/BarLineChart.js.map +1 -1
  14. package/dist/charts/components/Donut/DonutChart.cjs.map +1 -1
  15. package/dist/charts/components/Donut/DonutChart.d.ts +1 -1
  16. package/dist/charts/components/Donut/DonutChart.js.map +1 -1
  17. package/dist/charts/components/LegacyDonut/ActiveShape.cjs +7 -5
  18. package/dist/charts/components/LegacyDonut/ActiveShape.cjs.map +1 -1
  19. package/dist/charts/components/LegacyDonut/ActiveShape.d.ts +6 -3
  20. package/dist/charts/components/LegacyDonut/ActiveShape.js +7 -5
  21. package/dist/charts/components/LegacyDonut/ActiveShape.js.map +1 -1
  22. package/dist/charts/components/LegacyDonut/CenteredLabel.cjs +1 -1
  23. package/dist/charts/components/LegacyDonut/CenteredLabel.cjs.map +1 -1
  24. package/dist/charts/components/LegacyDonut/CenteredLabel.js +1 -1
  25. package/dist/charts/components/LegacyDonut/CenteredLabel.js.map +1 -1
  26. package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs +119 -103
  27. package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs.map +1 -1
  28. package/dist/charts/components/LegacyDonut/LegacyDonutChart.d.ts +13 -2
  29. package/dist/charts/components/LegacyDonut/LegacyDonutChart.js +119 -103
  30. package/dist/charts/components/LegacyDonut/LegacyDonutChart.js.map +1 -1
  31. package/dist/charts/components/LegacyDonut/Legend.cjs +1 -1
  32. package/dist/charts/components/LegacyDonut/Legend.cjs.map +1 -1
  33. package/dist/charts/components/LegacyDonut/Legend.js +1 -1
  34. package/dist/charts/components/LegacyDonut/Legend.js.map +1 -1
  35. package/dist/charts/components/Legend.cjs +1 -1
  36. package/dist/charts/components/Legend.cjs.map +1 -1
  37. package/dist/charts/components/Legend.js +1 -1
  38. package/dist/charts/components/Legend.js.map +1 -1
  39. package/dist/charts/components/Line/LineChart.cjs.map +1 -1
  40. package/dist/charts/components/Line/LineChart.d.ts +3 -2
  41. package/dist/charts/components/Line/LineChart.js.map +1 -1
  42. package/dist/charts/components/Pie/PieChart.cjs +4 -4
  43. package/dist/charts/components/Pie/PieChart.cjs.map +1 -1
  44. package/dist/charts/components/Pie/PieChart.js +4 -4
  45. package/dist/charts/components/Pie/PieChart.js.map +1 -1
  46. package/dist/charts/components/Pie/util.cjs.map +1 -1
  47. package/dist/charts/components/Pie/util.d.ts +2 -1
  48. package/dist/charts/components/Pie/util.js.map +1 -1
  49. package/dist/charts/components/Tooltip.cjs.map +1 -1
  50. package/dist/charts/components/Tooltip.d.ts +2 -3
  51. package/dist/charts/components/Tooltip.js.map +1 -1
  52. package/dist/charts/components/types.d.ts +9 -5
  53. package/dist/charts/components/useChartData.cjs +5 -3
  54. package/dist/charts/components/useChartData.cjs.map +1 -1
  55. package/dist/charts/components/useChartData.d.ts +6 -2
  56. package/dist/charts/components/useChartData.js +5 -3
  57. package/dist/charts/components/useChartData.js.map +1 -1
  58. package/dist/charts/utils/color.cjs +6 -10
  59. package/dist/charts/utils/color.cjs.map +1 -1
  60. package/dist/charts/utils/color.js +6 -10
  61. package/dist/charts/utils/color.js.map +1 -1
  62. package/dist/charts/utils/common.cjs +10 -10
  63. package/dist/charts/utils/common.cjs.map +1 -1
  64. package/dist/charts/utils/common.d.ts +5 -6
  65. package/dist/charts/utils/common.js +10 -10
  66. package/dist/charts/utils/common.js.map +1 -1
  67. package/dist/components/AlertDialog/Context.cjs.map +1 -1
  68. package/dist/components/AlertDialog/Context.d.ts +1 -1
  69. package/dist/components/AlertDialog/Context.js.map +1 -1
  70. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  71. package/dist/components/Calendar/Calendar.js.map +1 -1
  72. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  73. package/dist/components/Combobox/Combobox.js.map +1 -1
  74. package/dist/components/Combobox/useCombobox.cjs +2 -4
  75. package/dist/components/Combobox/useCombobox.cjs.map +1 -1
  76. package/dist/components/Combobox/useCombobox.d.ts +1 -1
  77. package/dist/components/Combobox/useCombobox.js +2 -4
  78. package/dist/components/Combobox/useCombobox.js.map +1 -1
  79. package/dist/components/Datepicker/useDatepicker.cjs.map +1 -1
  80. package/dist/components/Datepicker/useDatepicker.js.map +1 -1
  81. package/dist/components/Dialog/Context.cjs.map +1 -1
  82. package/dist/components/Dialog/Context.d.ts +1 -1
  83. package/dist/components/Dialog/Context.js.map +1 -1
  84. package/dist/components/Dialog/components/Content.cjs.map +1 -1
  85. package/dist/components/Dialog/components/Content.js.map +1 -1
  86. package/dist/components/Drawer/components/Content.cjs +1 -1
  87. package/dist/components/Drawer/components/Content.cjs.map +1 -1
  88. package/dist/components/Drawer/components/Content.js +1 -1
  89. package/dist/components/Drawer/components/Content.js.map +1 -1
  90. package/dist/components/Drawer/useDrawerStack.cjs.map +1 -1
  91. package/dist/components/Drawer/useDrawerStack.js.map +1 -1
  92. package/dist/components/Hanger/Hanger.cjs.map +1 -1
  93. package/dist/components/Hanger/Hanger.js.map +1 -1
  94. package/dist/components/Header/Header.cjs +1 -1
  95. package/dist/components/Header/Header.cjs.map +1 -1
  96. package/dist/components/Header/Header.js +1 -1
  97. package/dist/components/Header/Header.js.map +1 -1
  98. package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
  99. package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
  100. package/dist/components/Icon/Icon.cjs.map +1 -1
  101. package/dist/components/Icon/Icon.js.map +1 -1
  102. package/dist/components/Layout/components/Sidebar.cjs +2 -1
  103. package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
  104. package/dist/components/Layout/components/Sidebar.js +2 -1
  105. package/dist/components/Layout/components/Sidebar.js.map +1 -1
  106. package/dist/components/LegacyComponents/IconButton/IconButton.cjs.map +1 -1
  107. package/dist/components/LegacyComponents/IconButton/IconButton.js.map +1 -1
  108. package/dist/components/List/components/Toggle.cjs +0 -2
  109. package/dist/components/List/components/Toggle.cjs.map +1 -1
  110. package/dist/components/List/components/Toggle.js +0 -2
  111. package/dist/components/List/components/Toggle.js.map +1 -1
  112. package/dist/components/Listbox/Listbox.cjs +2 -5
  113. package/dist/components/Listbox/Listbox.cjs.map +1 -1
  114. package/dist/components/Listbox/Listbox.js +2 -5
  115. package/dist/components/Listbox/Listbox.js.map +1 -1
  116. package/dist/components/Listbox/useListbox.cjs +1 -1
  117. package/dist/components/Listbox/useListbox.cjs.map +1 -1
  118. package/dist/components/Listbox/useListbox.js +1 -1
  119. package/dist/components/Listbox/useListbox.js.map +1 -1
  120. package/dist/components/Listbox/useMultiListbox.cjs +1 -1
  121. package/dist/components/Listbox/useMultiListbox.cjs.map +1 -1
  122. package/dist/components/Listbox/useMultiListbox.js +1 -1
  123. package/dist/components/Listbox/useMultiListbox.js.map +1 -1
  124. package/dist/components/Listbox/util.cjs.map +1 -1
  125. package/dist/components/Listbox/util.js.map +1 -1
  126. package/dist/components/Menu/components/Content.cjs.map +1 -1
  127. package/dist/components/Menu/components/Content.js.map +1 -1
  128. package/dist/components/Menu/components/Item.cjs.map +1 -1
  129. package/dist/components/Menu/components/Item.d.ts +2 -2
  130. package/dist/components/Menu/components/Item.js.map +1 -1
  131. package/dist/components/Menu/components/Trigger.cjs +1 -5
  132. package/dist/components/Menu/components/Trigger.cjs.map +1 -1
  133. package/dist/components/Menu/components/Trigger.js +1 -5
  134. package/dist/components/Menu/components/Trigger.js.map +1 -1
  135. package/dist/components/Pagination/usePaginationShortcuts.cjs +0 -1
  136. package/dist/components/Pagination/usePaginationShortcuts.cjs.map +1 -1
  137. package/dist/components/Pagination/usePaginationShortcuts.js +0 -1
  138. package/dist/components/Pagination/usePaginationShortcuts.js.map +1 -1
  139. package/dist/components/Provider/Provider.cjs.map +1 -1
  140. package/dist/components/Provider/Provider.d.ts +1 -1
  141. package/dist/components/Provider/Provider.js.map +1 -1
  142. package/dist/components/SearchInput/SearchInput.cjs +0 -1
  143. package/dist/components/SearchInput/SearchInput.cjs.map +1 -1
  144. package/dist/components/SearchInput/SearchInput.js +0 -1
  145. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  146. package/dist/components/SearchInput2/SearchInput2.cjs +0 -1
  147. package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
  148. package/dist/components/SearchInput2/SearchInput2.js +0 -1
  149. package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
  150. package/dist/components/Select2/Select2.cjs +6 -7
  151. package/dist/components/Select2/Select2.cjs.map +1 -1
  152. package/dist/components/Select2/Select2.js +6 -7
  153. package/dist/components/Select2/Select2.js.map +1 -1
  154. package/dist/components/Select2/components/Search.cjs +0 -1
  155. package/dist/components/Select2/components/Search.cjs.map +1 -1
  156. package/dist/components/Select2/components/Search.js +0 -1
  157. package/dist/components/Select2/components/Search.js.map +1 -1
  158. package/dist/components/Select2/components/Trigger.cjs +1 -1
  159. package/dist/components/Select2/components/Trigger.cjs.map +1 -1
  160. package/dist/components/Select2/components/Trigger.js +1 -1
  161. package/dist/components/Select2/components/Trigger.js.map +1 -1
  162. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +1 -1
  163. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
  164. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
  165. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  166. package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
  167. package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
  168. package/dist/components/Table3/components/Editing/Alert.cjs +4 -4
  169. package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
  170. package/dist/components/Table3/components/Editing/Alert.js +4 -4
  171. package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
  172. package/dist/components/Table3/features/useEditingState.cjs +1 -1
  173. package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
  174. package/dist/components/Table3/features/useEditingState.js +1 -1
  175. package/dist/components/Table3/features/useEditingState.js.map +1 -1
  176. package/dist/components/Table3/types.d.ts +2 -2
  177. package/dist/components/Table3/useTable3.cjs +8 -6
  178. package/dist/components/Table3/useTable3.cjs.map +1 -1
  179. package/dist/components/Table3/useTable3.js +8 -6
  180. package/dist/components/Table3/useTable3.js.map +1 -1
  181. package/dist/components/Table3/util/editing.cjs +1 -1
  182. package/dist/components/Table3/util/editing.cjs.map +1 -1
  183. package/dist/components/Table3/util/editing.d.ts +1 -1
  184. package/dist/components/Table3/util/editing.js +1 -1
  185. package/dist/components/Table3/util/editing.js.map +1 -1
  186. package/dist/hooks/useBoundaryOverflowDetection.cjs.map +1 -1
  187. package/dist/hooks/useBoundaryOverflowDetection.d.ts +1 -1
  188. package/dist/hooks/useBoundaryOverflowDetection.js.map +1 -1
  189. package/dist/hooks/useBoundingClientRectListener.cjs.map +1 -1
  190. package/dist/hooks/useBoundingClientRectListener.d.ts +1 -1
  191. package/dist/hooks/useBoundingClientRectListener.js.map +1 -1
  192. package/dist/hooks/useControlled.cjs +6 -10
  193. package/dist/hooks/useControlled.cjs.map +1 -1
  194. package/dist/hooks/useControlled.js +6 -10
  195. package/dist/hooks/useControlled.js.map +1 -1
  196. package/dist/hooks/useIsFormControl.cjs.map +1 -1
  197. package/dist/hooks/useIsFormControl.d.ts +1 -1
  198. package/dist/hooks/useIsFormControl.js.map +1 -1
  199. package/dist/hooks/useMergedRef.cjs.map +1 -1
  200. package/dist/hooks/useMergedRef.js.map +1 -1
  201. package/dist/hooks/usePrevious.cjs.map +1 -1
  202. package/dist/hooks/usePrevious.js.map +1 -1
  203. package/dist/primitives/Button.cjs.map +1 -1
  204. package/dist/primitives/Button.js.map +1 -1
  205. package/dist/primitives/Collection/components/Root.cjs +9 -16
  206. package/dist/primitives/Collection/components/Root.cjs.map +1 -1
  207. package/dist/primitives/Collection/components/Root.js +9 -16
  208. package/dist/primitives/Collection/components/Root.js.map +1 -1
  209. package/dist/primitives/Listbox2/components/Context.cjs.map +1 -1
  210. package/dist/primitives/Listbox2/components/Context.d.ts +1 -0
  211. package/dist/primitives/Listbox2/components/Context.js.map +1 -1
  212. package/dist/primitives/Listbox2/components/Option.cjs +8 -2
  213. package/dist/primitives/Listbox2/components/Option.cjs.map +1 -1
  214. package/dist/primitives/Listbox2/components/Option.js +8 -2
  215. package/dist/primitives/Listbox2/components/Option.js.map +1 -1
  216. package/dist/primitives/Listbox2/components/Root.cjs +3 -2
  217. package/dist/primitives/Listbox2/components/Root.cjs.map +1 -1
  218. package/dist/primitives/Listbox2/components/Root.js +3 -2
  219. package/dist/primitives/Listbox2/components/Root.js.map +1 -1
  220. package/dist/primitives/Sortable/components/Item.cjs +2 -4
  221. package/dist/primitives/Sortable/components/Item.cjs.map +1 -1
  222. package/dist/primitives/Sortable/components/Item.js +2 -4
  223. package/dist/primitives/Sortable/components/Item.js.map +1 -1
  224. package/dist/primitives/Table/Core/components/Body/Body.cjs +4 -4
  225. package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
  226. package/dist/primitives/Table/Core/components/Body/Body.js +4 -4
  227. package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
  228. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs.map +1 -1
  229. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
  230. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs.map +1 -1
  231. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  232. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +22 -16
  233. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
  234. package/dist/primitives/Table/Core/components/Columns/Cell/util.js +22 -16
  235. package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  236. package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
  237. package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  238. package/dist/primitives/Table/Core/components/Header/util.cjs +4 -3
  239. package/dist/primitives/Table/Core/components/Header/util.cjs.map +1 -1
  240. package/dist/primitives/Table/Core/components/Header/util.js +4 -3
  241. package/dist/primitives/Table/Core/components/Header/util.js.map +1 -1
  242. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs +1 -1
  243. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs.map +1 -1
  244. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +1 -1
  245. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
  246. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +4 -2
  247. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
  248. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +4 -2
  249. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  250. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs.map +1 -1
  251. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  252. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +1 -1
  253. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
  254. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +1 -1
  255. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  256. package/dist/primitives/Table/Core/features/useTableRef.cjs +7 -0
  257. package/dist/primitives/Table/Core/features/useTableRef.cjs.map +1 -1
  258. package/dist/primitives/Table/Core/features/useTableRef.js +7 -0
  259. package/dist/primitives/Table/Core/features/useTableRef.js.map +1 -1
  260. package/dist/primitives/Table/Core/features/useTableRenderer.cjs +2 -2
  261. package/dist/primitives/Table/Core/features/useTableRenderer.cjs.map +1 -1
  262. package/dist/primitives/Table/Core/features/useTableRenderer.js +2 -2
  263. package/dist/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  264. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs +2 -2
  265. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs.map +1 -1
  266. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js +2 -2
  267. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js.map +1 -1
  268. package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs.map +1 -1
  269. package/dist/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  270. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs +2 -4
  271. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
  272. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.d.ts +2 -2
  273. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js +2 -4
  274. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
  275. package/dist/primitives/Table/types.cjs.map +1 -1
  276. package/dist/primitives/Table/types.d.ts +6 -0
  277. package/dist/primitives/Table/types.js.map +1 -1
  278. package/dist/primitives/Table/useTableDataLoader2.cjs +36 -3
  279. package/dist/primitives/Table/useTableDataLoader2.cjs.map +1 -1
  280. package/dist/primitives/Table/useTableDataLoader2.d.ts +2 -1
  281. package/dist/primitives/Table/useTableDataLoader2.js +36 -3
  282. package/dist/primitives/Table/useTableDataLoader2.js.map +1 -1
  283. package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs +0 -1
  284. package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs.map +1 -1
  285. package/dist/primitives/Table/useTableManager/features/useTableRowActive.d.ts +1 -1
  286. package/dist/primitives/Table/useTableManager/features/useTableRowActive.js +0 -1
  287. package/dist/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  288. package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs +0 -2
  289. package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs.map +1 -1
  290. package/dist/primitives/Table/useTableManager/features/useTableRowClick.js +0 -2
  291. package/dist/primitives/Table/useTableManager/features/useTableRowClick.js.map +1 -1
  292. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs +0 -1
  293. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs.map +1 -1
  294. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js +0 -1
  295. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
  296. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs +10 -1
  297. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs.map +1 -1
  298. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +3 -2
  299. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js +10 -1
  300. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  301. package/dist/primitives/Table/useTableManager/useTableManager.cjs +1 -5
  302. package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
  303. package/dist/primitives/Table/useTableManager/useTableManager.js +1 -5
  304. package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  305. package/dist/primitives/Table/useTableManager/util/dataTypes.cjs.map +1 -1
  306. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +3 -3
  307. package/dist/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  308. package/dist/primitives/Table/useTableManager/util/filtering.cjs.map +1 -1
  309. package/dist/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  310. package/dist/primitives/Table/useTableManager/util/search.cjs +1 -1
  311. package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
  312. package/dist/primitives/Table/useTableManager/util/search.js +1 -1
  313. package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
  314. package/dist/primitives/Table/useTableManager/util/setup.cjs +3 -3
  315. package/dist/primitives/Table/useTableManager/util/setup.cjs.map +1 -1
  316. package/dist/primitives/Table/useTableManager/util/setup.js +3 -3
  317. package/dist/primitives/Table/useTableManager/util/setup.js.map +1 -1
  318. package/dist/types.cjs.map +1 -1
  319. package/dist/types.d.ts +1 -1
  320. package/dist/types.js.map +1 -1
  321. package/dist/utils/dataTypes.cjs +4 -4
  322. package/dist/utils/dataTypes.cjs.map +1 -1
  323. package/dist/utils/dataTypes.d.ts +1 -1
  324. package/dist/utils/dataTypes.js +4 -4
  325. package/dist/utils/dataTypes.js.map +1 -1
  326. package/dist/utils/date.cjs +14 -16
  327. package/dist/utils/date.cjs.map +1 -1
  328. package/dist/utils/date.js +14 -16
  329. package/dist/utils/date.js.map +1 -1
  330. package/dist/utils/debounce.cjs.map +1 -1
  331. package/dist/utils/debounce.d.ts +1 -1
  332. package/dist/utils/debounce.js.map +1 -1
  333. package/dist/utils/device.cjs +1 -1
  334. package/dist/utils/device.cjs.map +1 -1
  335. package/dist/utils/device.js +1 -1
  336. package/dist/utils/device.js.map +1 -1
  337. package/dist/utils/dom.cjs +1 -1
  338. package/dist/utils/dom.cjs.map +1 -1
  339. package/dist/utils/dom.d.ts +2 -2
  340. package/dist/utils/dom.js +1 -1
  341. package/dist/utils/dom.js.map +1 -1
  342. package/dist/utils/hooks/useDraggable.cjs.map +1 -1
  343. package/dist/utils/hooks/useDraggable.d.ts +9 -1
  344. package/dist/utils/hooks/useDraggable.js.map +1 -1
  345. package/dist/utils/hooks/useListKeyboardNavigation.cjs +1 -1
  346. package/dist/utils/hooks/useListKeyboardNavigation.cjs.map +1 -1
  347. package/dist/utils/hooks/useListKeyboardNavigation.js +1 -1
  348. package/dist/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  349. package/dist/utils/hooks/useListScrollTo.cjs.map +1 -1
  350. package/dist/utils/hooks/useListScrollTo.d.ts +4 -1
  351. package/dist/utils/hooks/useListScrollTo.js.map +1 -1
  352. package/dist/utils/hooks/useOnClickOutside.cjs.map +1 -1
  353. package/dist/utils/hooks/useOnClickOutside.d.ts +1 -1
  354. package/dist/utils/hooks/useOnClickOutside.js.map +1 -1
  355. package/dist/utils/hooks/useTruncated.cjs.map +1 -1
  356. package/dist/utils/hooks/useTruncated.d.ts +2 -1
  357. package/dist/utils/hooks/useTruncated.js.map +1 -1
  358. package/dist/utils/mergeRefs.cjs.map +1 -1
  359. package/dist/utils/mergeRefs.d.ts +1 -1
  360. package/dist/utils/mergeRefs.js.map +1 -1
  361. package/dist/utils/storyutils.d.ts +1 -3
  362. package/package.json +4 -5
  363. package/plugins/tailwindcss-group-peer.js +1 -1
  364. package/scripts/stylelint-plugin/radius.mjs +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRef.js","sources":["../../../../../src/primitives/Table/Core/features/useTableRef.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\n\nexport function useTableRef<TType = unknown>(table: ReactTable<TType>, ref: React.RefObject<TableRef>) {\n React.useEffect(() => {\n if (ref.current) {\n ref.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, ref.current]);\n}\n"],"names":["React"],"mappings":";AAKO,SAAS,YAA6B,OAA0B,KAAgC;AACnGA,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,UAAI,QAAQ,WAAW;AAAA,QACnB,gBAAgB,MAAM,MAAM,mBAAA;AAAA,QAC5B,mBAAmB,MAAM,MAAM,cAAA;AAAA,QAC/B,mBAAmB,MAAM,MAAM,kBAAA;AAAA,QAC/B,cAAc,MAAM,MAAM,aAAA;AAAA,MAAa;AAAA,IAE/C;AAAA,EACJ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AAC3B;"}
1
+ {"version":3,"file":"useTableRef.js","sources":["../../../../../src/primitives/Table/Core/features/useTableRef.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\n\nexport function useTableRef<TType = unknown>(table: ReactTable<TType>, ref: React.RefObject<TableRef>) {\n React.useEffect(() => {\n if (ref.current) {\n const tableMeta = table.options.meta;\n\n ref.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetPagination: async () => {\n if (tableMeta?.server.resetPagination) {\n await tableMeta.server.resetPagination();\n // the loaded pages are gone, so the viewport must return to the first page\n ref.current?.scrollTo({ top: 0 });\n }\n },\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, ref.current]);\n}\n"],"names":["React"],"mappings":";AAKO,SAAS,YAA6B,OAA0B,KAAgC;AACnGA,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,YAAY,MAAM,QAAQ;AAEhC,UAAI,QAAQ,WAAW;AAAA,QACnB,gBAAgB,MAAM,MAAM,mBAAA;AAAA,QAC5B,iBAAiB,YAAY;AACzB,cAAI,WAAW,OAAO,iBAAiB;AACnC,kBAAM,UAAU,OAAO,gBAAA;AAEvB,gBAAI,SAAS,SAAS,EAAE,KAAK,GAAG;AAAA,UACpC;AAAA,QACJ;AAAA,QACA,mBAAmB,MAAM,MAAM,cAAA;AAAA,QAC/B,mBAAmB,MAAM,MAAM,kBAAA;AAAA,QAC/B,cAAc,MAAM,MAAM,aAAA;AAAA,MAAa;AAAA,IAE/C;AAAA,EACJ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AAC3B;"}
@@ -76,7 +76,7 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
76
76
  );
77
77
  const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
78
78
  const startValue = isTableRowGrouped ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0) : virtualItems[paddingStartIndex]?.start;
79
- const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))] : [0, 0];
79
+ const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems.at(-1)?.end ?? 0))] : [0, 0];
80
80
  React.useEffect(() => {
81
81
  if (defaultRowActiveIndex) {
82
82
  scrollToIndex(defaultRowActiveIndex, { align: "center", behavior: "auto" });
@@ -150,7 +150,7 @@ function useRowGroupVirtualisation(table) {
150
150
  }, [rows2]);
151
151
  const rangeExtractor = React.useCallback(
152
152
  (range) => {
153
- const activeRowGroupIndex = [...rowGroupIndexes].reverse().find((index) => range.startIndex >= index) ?? rowGroupIndexes[0];
153
+ const activeRowGroupIndex = rowGroupIndexes.toReversed().find((index) => range.startIndex >= index) ?? rowGroupIndexes[0];
154
154
  return activeRowGroupIndex === void 0 ? reactVirtual.defaultRangeExtractor(range) : sortBy([activeRowGroupIndex, ...without(reactVirtual.defaultRangeExtractor(range), activeRowGroupIndex)], (a) => a);
155
155
  },
156
156
  [rowGroupIndexes]
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRenderer.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport type { ScrollToOptions as ReactVirtualScrollToOptions, Range } from '@tanstack/react-virtual';\nimport { useVirtualizer, defaultRangeExtractor } from '@tanstack/react-virtual';\nimport sortBy from 'lodash/sortBy';\nimport without from 'lodash/without';\nimport type { CSSProperties } from 'react';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\nimport { Row } from '../components/Row/Row';\nimport type { useTableRenderers } from '../types';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * 1 * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table),\n });\n\n const expandedState = table.getState().expanded;\n const previousExpandedStateRef = React.useRef(false);\n\n React.useEffect(() => {\n // only remeasure when transitioning between expand all and not expand all\n const isEmpty = JSON.stringify(expandedState) === '{}';\n\n if (expandedState === true || (isEmpty && previousExpandedStateRef.current === true)) {\n previousExpandedStateRef.current = expandedState === true;\n virtualiser.measure();\n }\n }, [expandedState]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0)\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (React.JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: Number.isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: Number.isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n // Prefix skeleton keys to prevent collision with real data row keys\n const skeletonKey = `skeleton-${virtualRow.index}`;\n return <SkeletonRow key={skeletonKey} index={virtualRow.index} table={table} />;\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow.index, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n return activeRowGroupIndex === undefined\n ? defaultRangeExtractor(range)\n : sortBy([activeRowGroupIndex, ...without(defaultRangeExtractor(range), activeRowGroupIndex)], a => a);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["ROW_HEIGHT_ESTIMATES","rows","useVirtualizer","SkeletonRow","Row","defaultRangeExtractor"],"mappings":"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"}
1
+ {"version":3,"file":"useTableRenderer.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport type { ScrollToOptions as ReactVirtualScrollToOptions, Range } from '@tanstack/react-virtual';\nimport { useVirtualizer, defaultRangeExtractor } from '@tanstack/react-virtual';\nimport sortBy from 'lodash/sortBy';\nimport without from 'lodash/without';\nimport type { CSSProperties } from 'react';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\nimport { Row } from '../components/Row/Row';\nimport type { useTableRenderers } from '../types';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * 1 * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table),\n });\n\n const expandedState = table.getState().expanded;\n const previousExpandedStateRef = React.useRef(false);\n\n React.useEffect(() => {\n // only remeasure when transitioning between expand all and not expand all\n const isEmpty = JSON.stringify(expandedState) === '{}';\n\n if (expandedState === true || (isEmpty && previousExpandedStateRef.current === true)) {\n previousExpandedStateRef.current = expandedState === true;\n virtualiser.measure();\n }\n }, [expandedState]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0)\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems.at(-1)?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (React.JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: Number.isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: Number.isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n // Prefix skeleton keys to prevent collision with real data row keys\n const skeletonKey = `skeleton-${virtualRow.index}`;\n return <SkeletonRow key={skeletonKey} index={virtualRow.index} table={table} />;\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow.index, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n rowGroupIndexes.toReversed().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n return activeRowGroupIndex === undefined\n ? defaultRangeExtractor(range)\n : sortBy([activeRowGroupIndex, ...without(defaultRangeExtractor(range), activeRowGroupIndex)], a => a);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["ROW_HEIGHT_ESTIMATES","rows","useVirtualizer","SkeletonRow","Row","defaultRangeExtractor"],"mappings":"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"}
@@ -74,7 +74,7 @@ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIn
74
74
  );
75
75
  const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
76
76
  const startValue = isTableRowGrouped ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0) : virtualItems[paddingStartIndex]?.start;
77
- const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))] : [0, 0];
77
+ const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems.at(-1)?.end ?? 0))] : [0, 0];
78
78
  React__default.useEffect(() => {
79
79
  if (defaultRowActiveIndex) {
80
80
  scrollToIndex(defaultRowActiveIndex, { align: "center", behavior: "auto" });
@@ -148,7 +148,7 @@ function useRowGroupVirtualisation(table) {
148
148
  }, [rows]);
149
149
  const rangeExtractor = React__default.useCallback(
150
150
  (range) => {
151
- const activeRowGroupIndex = [...rowGroupIndexes].reverse().find((index) => range.startIndex >= index) ?? rowGroupIndexes[0];
151
+ const activeRowGroupIndex = rowGroupIndexes.toReversed().find((index) => range.startIndex >= index) ?? rowGroupIndexes[0];
152
152
  return activeRowGroupIndex === void 0 ? defaultRangeExtractor(range) : sortBy([activeRowGroupIndex, ...without(defaultRangeExtractor(range), activeRowGroupIndex)], (a) => a);
153
153
  },
154
154
  [rowGroupIndexes]
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRenderer.js","sources":["../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport type { ScrollToOptions as ReactVirtualScrollToOptions, Range } from '@tanstack/react-virtual';\nimport { useVirtualizer, defaultRangeExtractor } from '@tanstack/react-virtual';\nimport sortBy from 'lodash/sortBy';\nimport without from 'lodash/without';\nimport type { CSSProperties } from 'react';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\nimport { Row } from '../components/Row/Row';\nimport type { useTableRenderers } from '../types';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * 1 * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table),\n });\n\n const expandedState = table.getState().expanded;\n const previousExpandedStateRef = React.useRef(false);\n\n React.useEffect(() => {\n // only remeasure when transitioning between expand all and not expand all\n const isEmpty = JSON.stringify(expandedState) === '{}';\n\n if (expandedState === true || (isEmpty && previousExpandedStateRef.current === true)) {\n previousExpandedStateRef.current = expandedState === true;\n virtualiser.measure();\n }\n }, [expandedState]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0)\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (React.JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: Number.isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: Number.isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n // Prefix skeleton keys to prevent collision with real data row keys\n const skeletonKey = `skeleton-${virtualRow.index}`;\n return <SkeletonRow key={skeletonKey} index={virtualRow.index} table={table} />;\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow.index, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n return activeRowGroupIndex === undefined\n ? defaultRangeExtractor(range)\n : sortBy([activeRowGroupIndex, ...without(defaultRangeExtractor(range), activeRowGroupIndex)], a => a);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"useTableRenderer.js","sources":["../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport type { ScrollToOptions as ReactVirtualScrollToOptions, Range } from '@tanstack/react-virtual';\nimport { useVirtualizer, defaultRangeExtractor } from '@tanstack/react-virtual';\nimport sortBy from 'lodash/sortBy';\nimport without from 'lodash/without';\nimport type { CSSProperties } from 'react';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\nimport { Row } from '../components/Row/Row';\nimport type { useTableRenderers } from '../types';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * 1 * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table),\n });\n\n const expandedState = table.getState().expanded;\n const previousExpandedStateRef = React.useRef(false);\n\n React.useEffect(() => {\n // only remeasure when transitioning between expand all and not expand all\n const isEmpty = JSON.stringify(expandedState) === '{}';\n\n if (expandedState === true || (isEmpty && previousExpandedStateRef.current === true)) {\n previousExpandedStateRef.current = expandedState === true;\n virtualiser.measure();\n }\n }, [expandedState]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? (virtualItems[paddingStartIndex]?.start ?? 0) - (virtualItems[paddingStartIndex]?.size ?? 0)\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems.at(-1)?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (React.JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: Number.isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: Number.isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n // Prefix skeleton keys to prevent collision with real data row keys\n const skeletonKey = `skeleton-${virtualRow.index}`;\n return <SkeletonRow key={skeletonKey} index={virtualRow.index} table={table} />;\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow.index, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n rowGroupIndexes.toReversed().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n return activeRowGroupIndex === undefined\n ? defaultRangeExtractor(range)\n : sortBy([activeRowGroupIndex, ...without(defaultRangeExtractor(range), activeRowGroupIndex)], a => a);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["React"],"mappings":"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"}
@@ -15,7 +15,7 @@ function useTableStyleColumnFreezing(tableId, table) {
15
15
  }`);
16
16
  });
17
17
  const leftIds = left.map((x) => x.id);
18
- const lastItem = leftIds[leftIds.length - 1];
18
+ const lastItem = leftIds.at(-1);
19
19
  if (lastItem !== void 0) {
20
20
  const index = all.indexOf(lastItem);
21
21
  styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),
@@ -45,7 +45,7 @@ table[data-taco^='table'][data-table-horizontally-scrolled="true"]#${tableId} >
45
45
  }`);
46
46
  });
47
47
  const rightIds = right.map((x) => x.id);
48
- const lastItem = rightIds[rightIds.length - 1];
48
+ const lastItem = rightIds.at(-1);
49
49
  if (lastItem !== void 0) {
50
50
  const index = all.indexOf(lastItem);
51
51
  styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):not([data-cell-id^="__"]),
@@ -1 +1 @@
1
- {"version":3,"file":"useTableStyleColumnFreezing.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleColumnFreezing.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nexport function useTableStyleColumnFreezing<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const { columnPinning, columnSizing } = table.getState();\n\n const stylesheet = React.useMemo(() => {\n const styles: string[] = [];\n\n // might be a better way to get this information, but it wasn't obvious\n const all = table\n .getFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const left = table.getLeftFlatHeaders().filter(column => !column.subHeaders.length);\n const right = table.getRightFlatHeaders().filter(column => !column.subHeaders.length);\n\n if (left.length) {\n left.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n left: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const leftIds = left.map(x => x.id);\n const lastItem = leftIds[leftIds.length - 1];\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n // add right border, hide the header seperator and add shadow when scrolled\n // we have to be specific so that nested tables don't inherit the same css\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tfoot > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-right-width: 1px;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1})[data-cell-id^=\"__\"],\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1})[data-cell-id^=\"__\"] {\n border-right-color: transparent;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):after {\n content: none;\n }\\ntable[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tbody > tr > td:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tfoot > tr > td:nth-child(${\n index + 1\n }) {\n border-right-color: rgb(221, 221, 221);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%);\n }`);\n }\n }\n\n if (right.length) {\n right.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n right: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const rightIds = right.map(x => x.id);\n const lastItem = rightIds[rightIds.length - 1];\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }):not([data-cell-id^=\"__\"]),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-left-width: 1px;\n }`);\n }\n }\n\n return styles.join('\\n');\n }, [columnPinning, columnSizing]);\n\n return { stylesheet };\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,4BAA6C,SAAiB,OAA0B;AACpG,QAAM,EAAE,eAAe,iBAAiB,MAAM,SAAA;AAE9C,QAAM,aAAa,MAAM,QAAQ,MAAM;AACnC,UAAM,SAAmB,CAAA;AAGzB,UAAM,MAAM,MACP,eAAA,EACA,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM,EAC1C,IAAI,CAAA,MAAK,EAAE,EAAE;AAClB,UAAM,OAAO,MAAM,qBAAqB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAClF,UAAM,QAAQ,MAAM,sBAAsB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAEpF,QAAI,KAAK,QAAQ;AACb,WAAK,QAAQ,CAAA,SAAQ;AACjB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,4BACrE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBACzD;AAAA,MACN,CAAC;AACD,YAAM,UAAU,KAAK,IAAI,CAAA,MAAK,EAAE,EAAE;AAClC,YAAM,WAAW,QAAQ,QAAQ,SAAS,CAAC;AAE3C,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAIlC,eAAO,KAAK,6BAA6B,OAAO,gCAAgC,QAAQ,CAAC;AAAA,4CAC7D,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACjD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACpD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,qEAER,OAAO,iCAC3E,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA;AAAA;AAAA,kBAGE;AAAA,MACN;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ;AACd,YAAM,QAAQ,CAAA,SAAQ;AAClB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,6BACpE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBAC1D;AAAA,MACN,CAAC;AACD,YAAM,WAAW,MAAM,IAAI,CAAA,MAAK,EAAE,EAAE;AACpC,YAAM,WAAW,SAAS,SAAS,SAAS,CAAC;AAE7C,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAElC,eAAO,KAAK,6BAA6B,OAAO,gCAC5C,QAAQ,CACZ;AAAA,4CAC4B,OAAO,gCAAgC,QAAQ,CAAC;AAAA;AAAA,kBAE1E;AAAA,MACN;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B,GAAG,CAAC,eAAe,YAAY,CAAC;AAEhC,SAAO,EAAE,WAAA;AACb;;"}
1
+ {"version":3,"file":"useTableStyleColumnFreezing.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleColumnFreezing.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nexport function useTableStyleColumnFreezing<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const { columnPinning, columnSizing } = table.getState();\n\n const stylesheet = React.useMemo(() => {\n const styles: string[] = [];\n\n // might be a better way to get this information, but it wasn't obvious\n const all = table\n .getFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const left = table.getLeftFlatHeaders().filter(column => !column.subHeaders.length);\n const right = table.getRightFlatHeaders().filter(column => !column.subHeaders.length);\n\n if (left.length) {\n left.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n left: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const leftIds = left.map(x => x.id);\n const lastItem = leftIds.at(-1);\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n // add right border, hide the header seperator and add shadow when scrolled\n // we have to be specific so that nested tables don't inherit the same css\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tfoot > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-right-width: 1px;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1})[data-cell-id^=\"__\"],\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1})[data-cell-id^=\"__\"] {\n border-right-color: transparent;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):after {\n content: none;\n }\\ntable[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tbody > tr > td:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tfoot > tr > td:nth-child(${\n index + 1\n }) {\n border-right-color: rgb(221, 221, 221);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%);\n }`);\n }\n }\n\n if (right.length) {\n right.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n right: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const rightIds = right.map(x => x.id);\n const lastItem = rightIds.at(-1);\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }):not([data-cell-id^=\"__\"]),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-left-width: 1px;\n }`);\n }\n }\n\n return styles.join('\\n');\n }, [columnPinning, columnSizing]);\n\n return { stylesheet };\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,4BAA6C,SAAiB,OAA0B;AACpG,QAAM,EAAE,eAAe,iBAAiB,MAAM,SAAA;AAE9C,QAAM,aAAa,MAAM,QAAQ,MAAM;AACnC,UAAM,SAAmB,CAAA;AAGzB,UAAM,MAAM,MACP,eAAA,EACA,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM,EAC1C,IAAI,CAAA,MAAK,EAAE,EAAE;AAClB,UAAM,OAAO,MAAM,qBAAqB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAClF,UAAM,QAAQ,MAAM,sBAAsB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAEpF,QAAI,KAAK,QAAQ;AACb,WAAK,QAAQ,CAAA,SAAQ;AACjB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,4BACrE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBACzD;AAAA,MACN,CAAC;AACD,YAAM,UAAU,KAAK,IAAI,CAAA,MAAK,EAAE,EAAE;AAClC,YAAM,WAAW,QAAQ,GAAG,EAAE;AAE9B,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAIlC,eAAO,KAAK,6BAA6B,OAAO,gCAAgC,QAAQ,CAAC;AAAA,4CAC7D,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACjD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACpD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,qEAER,OAAO,iCAC3E,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA;AAAA;AAAA,kBAGE;AAAA,MACN;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ;AACd,YAAM,QAAQ,CAAA,SAAQ;AAClB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,6BACpE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBAC1D;AAAA,MACN,CAAC;AACD,YAAM,WAAW,MAAM,IAAI,CAAA,MAAK,EAAE,EAAE;AACpC,YAAM,WAAW,SAAS,GAAG,EAAE;AAE/B,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAElC,eAAO,KAAK,6BAA6B,OAAO,gCAC5C,QAAQ,CACZ;AAAA,4CAC4B,OAAO,gCAAgC,QAAQ,CAAC;AAAA;AAAA,kBAE1E;AAAA,MACN;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B,GAAG,CAAC,eAAe,YAAY,CAAC;AAEhC,SAAO,EAAE,WAAA;AACb;;"}
@@ -13,7 +13,7 @@ function useTableStyleColumnFreezing(tableId, table) {
13
13
  }`);
14
14
  });
15
15
  const leftIds = left.map((x) => x.id);
16
- const lastItem = leftIds[leftIds.length - 1];
16
+ const lastItem = leftIds.at(-1);
17
17
  if (lastItem !== void 0) {
18
18
  const index = all.indexOf(lastItem);
19
19
  styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),
@@ -43,7 +43,7 @@ table[data-taco^='table'][data-table-horizontally-scrolled="true"]#${tableId} >
43
43
  }`);
44
44
  });
45
45
  const rightIds = right.map((x) => x.id);
46
- const lastItem = rightIds[rightIds.length - 1];
46
+ const lastItem = rightIds.at(-1);
47
47
  if (lastItem !== void 0) {
48
48
  const index = all.indexOf(lastItem);
49
49
  styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):not([data-cell-id^="__"]),
@@ -1 +1 @@
1
- {"version":3,"file":"useTableStyleColumnFreezing.js","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleColumnFreezing.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nexport function useTableStyleColumnFreezing<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const { columnPinning, columnSizing } = table.getState();\n\n const stylesheet = React.useMemo(() => {\n const styles: string[] = [];\n\n // might be a better way to get this information, but it wasn't obvious\n const all = table\n .getFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const left = table.getLeftFlatHeaders().filter(column => !column.subHeaders.length);\n const right = table.getRightFlatHeaders().filter(column => !column.subHeaders.length);\n\n if (left.length) {\n left.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n left: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const leftIds = left.map(x => x.id);\n const lastItem = leftIds[leftIds.length - 1];\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n // add right border, hide the header seperator and add shadow when scrolled\n // we have to be specific so that nested tables don't inherit the same css\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tfoot > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-right-width: 1px;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1})[data-cell-id^=\"__\"],\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1})[data-cell-id^=\"__\"] {\n border-right-color: transparent;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):after {\n content: none;\n }\\ntable[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tbody > tr > td:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tfoot > tr > td:nth-child(${\n index + 1\n }) {\n border-right-color: rgb(221, 221, 221);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%);\n }`);\n }\n }\n\n if (right.length) {\n right.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n right: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const rightIds = right.map(x => x.id);\n const lastItem = rightIds[rightIds.length - 1];\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }):not([data-cell-id^=\"__\"]),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-left-width: 1px;\n }`);\n }\n }\n\n return styles.join('\\n');\n }, [columnPinning, columnSizing]);\n\n return { stylesheet };\n}\n"],"names":["React"],"mappings":";AAGO,SAAS,4BAA6C,SAAiB,OAA0B;AACpG,QAAM,EAAE,eAAe,iBAAiB,MAAM,SAAA;AAE9C,QAAM,aAAaA,eAAM,QAAQ,MAAM;AACnC,UAAM,SAAmB,CAAA;AAGzB,UAAM,MAAM,MACP,eAAA,EACA,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM,EAC1C,IAAI,CAAA,MAAK,EAAE,EAAE;AAClB,UAAM,OAAO,MAAM,qBAAqB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAClF,UAAM,QAAQ,MAAM,sBAAsB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAEpF,QAAI,KAAK,QAAQ;AACb,WAAK,QAAQ,CAAA,SAAQ;AACjB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,4BACrE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBACzD;AAAA,MACN,CAAC;AACD,YAAM,UAAU,KAAK,IAAI,CAAA,MAAK,EAAE,EAAE;AAClC,YAAM,WAAW,QAAQ,QAAQ,SAAS,CAAC;AAE3C,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAIlC,eAAO,KAAK,6BAA6B,OAAO,gCAAgC,QAAQ,CAAC;AAAA,4CAC7D,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACjD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACpD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,qEAER,OAAO,iCAC3E,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA;AAAA;AAAA,kBAGE;AAAA,MACN;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ;AACd,YAAM,QAAQ,CAAA,SAAQ;AAClB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,6BACpE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBAC1D;AAAA,MACN,CAAC;AACD,YAAM,WAAW,MAAM,IAAI,CAAA,MAAK,EAAE,EAAE;AACpC,YAAM,WAAW,SAAS,SAAS,SAAS,CAAC;AAE7C,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAElC,eAAO,KAAK,6BAA6B,OAAO,gCAC5C,QAAQ,CACZ;AAAA,4CAC4B,OAAO,gCAAgC,QAAQ,CAAC;AAAA;AAAA,kBAE1E;AAAA,MACN;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B,GAAG,CAAC,eAAe,YAAY,CAAC;AAEhC,SAAO,EAAE,WAAA;AACb;"}
1
+ {"version":3,"file":"useTableStyleColumnFreezing.js","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleColumnFreezing.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nexport function useTableStyleColumnFreezing<TType = unknown>(tableId: string, table: ReactTable<TType>) {\n const { columnPinning, columnSizing } = table.getState();\n\n const stylesheet = React.useMemo(() => {\n const styles: string[] = [];\n\n // might be a better way to get this information, but it wasn't obvious\n const all = table\n .getFlatHeaders()\n .filter(column => !column.subHeaders.length)\n .map(x => x.id);\n const left = table.getLeftFlatHeaders().filter(column => !column.subHeaders.length);\n const right = table.getRightFlatHeaders().filter(column => !column.subHeaders.length);\n\n if (left.length) {\n left.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n left: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const leftIds = left.map(x => x.id);\n const lastItem = leftIds.at(-1);\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n // add right border, hide the header seperator and add shadow when scrolled\n // we have to be specific so that nested tables don't inherit the same css\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}),\n table[data-taco^='table']#${tableId} > tfoot > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-right-width: 1px;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1})[data-cell-id^=\"__\"],\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1})[data-cell-id^=\"__\"] {\n border-right-color: transparent;\n }\\ntable[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${index + 1}):after {\n content: none;\n }\\ntable[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tbody > tr > td:nth-child(${\n index + 1\n }),\n table[data-taco^='table'][data-table-horizontally-scrolled=\"true\"]#${tableId} > tfoot > tr > td:nth-child(${\n index + 1\n }) {\n border-right-color: rgb(221, 221, 221);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), 6px 0px 6px rgb(0 0 0/8%);\n }`);\n }\n }\n\n if (right.length) {\n right.forEach(cell => {\n styles.push(`table[data-taco^='table']#${tableId} [data-cell-id=\"${cell.column.id}\"] {\n right: ${cell.column.getStart(cell.column.getIsPinned())}px;\n }`);\n });\n const rightIds = right.map(x => x.id);\n const lastItem = rightIds.at(-1);\n\n if (lastItem !== undefined) {\n const index = all.indexOf(lastItem);\n\n styles.push(`table[data-taco^='table']#${tableId} > thead > tr > th:nth-child(${\n index + 1\n }):not([data-cell-id^=\"__\"]),\n table[data-taco^='table']#${tableId} > tbody > tr > td:nth-child(${index + 1}):not([data-cell-id^=\"__\"]) {\n border-left-width: 1px;\n }`);\n }\n }\n\n return styles.join('\\n');\n }, [columnPinning, columnSizing]);\n\n return { stylesheet };\n}\n"],"names":["React"],"mappings":";AAGO,SAAS,4BAA6C,SAAiB,OAA0B;AACpG,QAAM,EAAE,eAAe,iBAAiB,MAAM,SAAA;AAE9C,QAAM,aAAaA,eAAM,QAAQ,MAAM;AACnC,UAAM,SAAmB,CAAA;AAGzB,UAAM,MAAM,MACP,eAAA,EACA,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM,EAC1C,IAAI,CAAA,MAAK,EAAE,EAAE;AAClB,UAAM,OAAO,MAAM,qBAAqB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAClF,UAAM,QAAQ,MAAM,sBAAsB,OAAO,CAAA,WAAU,CAAC,OAAO,WAAW,MAAM;AAEpF,QAAI,KAAK,QAAQ;AACb,WAAK,QAAQ,CAAA,SAAQ;AACjB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,4BACrE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBACzD;AAAA,MACN,CAAC;AACD,YAAM,UAAU,KAAK,IAAI,CAAA,MAAK,EAAE,EAAE;AAClC,YAAM,WAAW,QAAQ,GAAG,EAAE;AAE9B,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAIlC,eAAO,KAAK,6BAA6B,OAAO,gCAAgC,QAAQ,CAAC;AAAA,4CAC7D,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACjD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA,4CACpD,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,4BAE9C,OAAO,iCAAiC,QAAQ,CAAC;AAAA;AAAA;AAAA,qEAER,OAAO,iCAC3E,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA,qFACqE,OAAO,iCACxE,QAAQ,CACZ;AAAA;AAAA;AAAA,kBAGE;AAAA,MACN;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ;AACd,YAAM,QAAQ,CAAA,SAAQ;AAClB,eAAO,KAAK,6BAA6B,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,6BACpE,KAAK,OAAO,SAAS,KAAK,OAAO,YAAA,CAAa,CAAC;AAAA,kBAC1D;AAAA,MACN,CAAC;AACD,YAAM,WAAW,MAAM,IAAI,CAAA,MAAK,EAAE,EAAE;AACpC,YAAM,WAAW,SAAS,GAAG,EAAE;AAE/B,UAAI,aAAa,QAAW;AACxB,cAAM,QAAQ,IAAI,QAAQ,QAAQ;AAElC,eAAO,KAAK,6BAA6B,OAAO,gCAC5C,QAAQ,CACZ;AAAA,4CAC4B,OAAO,gCAAgC,QAAQ,CAAC;AAAA;AAAA,kBAE1E;AAAA,MACN;AAAA,IACJ;AAEA,WAAO,OAAO,KAAK,IAAI;AAAA,EAC3B,GAAG,CAAC,eAAe,YAAY,CAAC;AAEhC,SAAO,EAAE,WAAA;AACb;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTableStyleGrid.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFontSize } from '../../types';\nimport { CELL_MIN_WIDTH, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = CELL_MIN_WIDTH[fontSize] ?? CELL_MIN_WIDTH.medium;\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8; /* button margins l+r */\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n // oxlint-disable-next-line no-negated-condition\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = 'minmax(max-content, 1fr)';\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = 'minmax(max-content, auto)';\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["CELL_MIN_WIDTH","isInternalColumn"],"mappings":";;;;AAMO,SAAS,kBAAmC,SAAiB,OAA0B,UAAyB;AACnH,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,oBAAoB,MAAM,sBAAA;AAChC,QAAM,eAAe,MAAM,SAAA,EAAW;AACtC,QAAM,gBAAgBA,QAAAA,eAAe,QAAQ,KAAKA,QAAAA,eAAe;AAGjE,QAAM,mBAAmB,MAAM,YAAA,EAAc,KAAK,SAAS,gCAAgC;AAE3F,SAAO,MAAM,QAAQ,MAAM;AACvB,QAAI,2BAA2B;AAC/B,UAAM,qBAA+B,CAAA;AAErC,UAAM,sBAAsB,kBAAkB,OAAO,CAAC,OAAO,QAAQ,UAAU;AAC3E,UAAI,MAAM,QAAQ,kBAAkB,OAAO,gBAAgB;AACvD,eAAO;AAAA,MACX;AAEA,YAAM,UAAU,OAAO,UAAU,WAAW;AAC5C,YAAM,QAAQ,aAAa,OAAO,EAAE;AAEpC,UAAI;AAEJ,UAAIC,QAAAA,iBAAiB,OAAO,EAAE,GAAG;AAC7B,YAAI,OAAO,OAAO,aAAa;AAC3B,gBAAM,WAAW,UAAU,WAAW,mBAAmB,KAAK;AAC9D,iBAAO,UAAU,QAAQ;AAAA,QAC7B,OAAO;AAEH,iBAAO,GAAG,OAAO,QAAA,CAAS;AAAA,QAC9B;AAAA,MAEJ,WAAW,UAAU,QAAW;AAC5B,cAAM,eAAe,UAAU,kBAAkB,SAAS;AAE1D,YAAI,UAAU,UAAW,OAAO,MAAM,KAAK,KAAK,CAAC,cAAe;AAC5D,iBAAO;AAAA,QACX,OAAO;AACH,gBAAM,WAAW,QAAQ,UAAU,UAAU;AAE7C,cAAI,cAAc;AACd,mBAAO,UAAU,QAAQ;AAAA,UAC7B,OAAO;AACH,mBAAO,GAAG,QAAQ;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,eAAO;AAAA,MACX;AAGA,UAAI,OAAO,UAAU,MAAM,mBAAmB,OAAO;AACjD,2BAAmB,KAAK,OAAO,EAAE;AAAA,MACrC,OAAO;AACH;AAAA,MACJ;AAEA,aAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAA;AAAA,IAC9B,GAAG,EAAE;AAGL,UAAM,QAA6B;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA;AAKJ,UAAM,gBAAgB,mBACjB;AAAA,MACG,CAAA,OACI,6BAA6B,OAAO,oCAAoC,EAAE;AAAA,6BAAkC,OAAO,0BAA0B,EAAE;AAAA;AAAA,IAAA,EAEtJ,KAAK,GAAG;AACb,UAAM,aAAa,4CAA4C,OAAO,oCAAoC,wBAAwB;AAAA,oCACtG,OAAO,wBAC/B,gBAAgB,KAAK,aAAa,KAAK,EAC3C,iDAAiD,OAAO;AAExD,WAAO,EAAE,OAAO,WAAA;AAAA,EACpB,GAAG,CAAC,mBAAmB,cAAc,eAAe,UAAU,WAAW,gBAAgB,CAAC;AAC9F;;"}
1
+ {"version":3,"file":"useTableStyleGrid.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFontSize } from '../../types';\nimport { CELL_MIN_WIDTH, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = CELL_MIN_WIDTH[fontSize] ?? CELL_MIN_WIDTH.medium;\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n // button margins l+r\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8;\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n // oxlint-disable-next-line no-negated-condition\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = 'minmax(max-content, 1fr)';\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = 'minmax(max-content, auto)';\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["CELL_MIN_WIDTH","isInternalColumn"],"mappings":";;;;AAMO,SAAS,kBAAmC,SAAiB,OAA0B,UAAyB;AACnH,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,oBAAoB,MAAM,sBAAA;AAChC,QAAM,eAAe,MAAM,SAAA,EAAW;AACtC,QAAM,gBAAgBA,QAAAA,eAAe,QAAQ,KAAKA,QAAAA,eAAe;AAGjE,QAAM,mBAAmB,MAAM,YAAA,EAAc,KAAK,SAAS,gCAAgC;AAE3F,SAAO,MAAM,QAAQ,MAAM;AACvB,QAAI,2BAA2B;AAC/B,UAAM,qBAA+B,CAAA;AAErC,UAAM,sBAAsB,kBAAkB,OAAO,CAAC,OAAO,QAAQ,UAAU;AAC3E,UAAI,MAAM,QAAQ,kBAAkB,OAAO,gBAAgB;AACvD,eAAO;AAAA,MACX;AAEA,YAAM,UAAU,OAAO,UAAU,WAAW;AAC5C,YAAM,QAAQ,aAAa,OAAO,EAAE;AAEpC,UAAI;AAEJ,UAAIC,QAAAA,iBAAiB,OAAO,EAAE,GAAG;AAC7B,YAAI,OAAO,OAAO,aAAa;AAE3B,gBAAM,WAAW,UAAU,WAAW,mBAAmB,KAAK;AAC9D,iBAAO,UAAU,QAAQ;AAAA,QAC7B,OAAO;AAEH,iBAAO,GAAG,OAAO,QAAA,CAAS;AAAA,QAC9B;AAAA,MAEJ,WAAW,UAAU,QAAW;AAC5B,cAAM,eAAe,UAAU,kBAAkB,SAAS;AAE1D,YAAI,UAAU,UAAW,OAAO,MAAM,KAAK,KAAK,CAAC,cAAe;AAC5D,iBAAO;AAAA,QACX,OAAO;AACH,gBAAM,WAAW,QAAQ,UAAU,UAAU;AAE7C,cAAI,cAAc;AACd,mBAAO,UAAU,QAAQ;AAAA,UAC7B,OAAO;AACH,mBAAO,GAAG,QAAQ;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,eAAO;AAAA,MACX;AAGA,UAAI,OAAO,UAAU,MAAM,mBAAmB,OAAO;AACjD,2BAAmB,KAAK,OAAO,EAAE;AAAA,MACrC,OAAO;AACH;AAAA,MACJ;AAEA,aAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAA;AAAA,IAC9B,GAAG,EAAE;AAGL,UAAM,QAA6B;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA;AAKJ,UAAM,gBAAgB,mBACjB;AAAA,MACG,CAAA,OACI,6BAA6B,OAAO,oCAAoC,EAAE;AAAA,6BAAkC,OAAO,0BAA0B,EAAE;AAAA;AAAA,IAAA,EAEtJ,KAAK,GAAG;AACb,UAAM,aAAa,4CAA4C,OAAO,oCAAoC,wBAAwB;AAAA,oCACtG,OAAO,wBAC/B,gBAAgB,KAAK,aAAa,KAAK,EAC3C,iDAAiD,OAAO;AAExD,WAAO,EAAE,OAAO,WAAA;AAAA,EACpB,GAAG,CAAC,mBAAmB,cAAc,eAAe,UAAU,WAAW,gBAAgB,CAAC;AAC9F;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTableStyleGrid.js","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFontSize } from '../../types';\nimport { CELL_MIN_WIDTH, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = CELL_MIN_WIDTH[fontSize] ?? CELL_MIN_WIDTH.medium;\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8; /* button margins l+r */\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n // oxlint-disable-next-line no-negated-condition\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = 'minmax(max-content, 1fr)';\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = 'minmax(max-content, auto)';\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["React"],"mappings":";;AAMO,SAAS,kBAAmC,SAAiB,OAA0B,UAAyB;AACnH,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,oBAAoB,MAAM,sBAAA;AAChC,QAAM,eAAe,MAAM,SAAA,EAAW;AACtC,QAAM,gBAAgB,eAAe,QAAQ,KAAK,eAAe;AAGjE,QAAM,mBAAmB,MAAM,YAAA,EAAc,KAAK,SAAS,gCAAgC;AAE3F,SAAOA,eAAM,QAAQ,MAAM;AACvB,QAAI,2BAA2B;AAC/B,UAAM,qBAA+B,CAAA;AAErC,UAAM,sBAAsB,kBAAkB,OAAO,CAAC,OAAO,QAAQ,UAAU;AAC3E,UAAI,MAAM,QAAQ,kBAAkB,OAAO,gBAAgB;AACvD,eAAO;AAAA,MACX;AAEA,YAAM,UAAU,OAAO,UAAU,WAAW;AAC5C,YAAM,QAAQ,aAAa,OAAO,EAAE;AAEpC,UAAI;AAEJ,UAAI,iBAAiB,OAAO,EAAE,GAAG;AAC7B,YAAI,OAAO,OAAO,aAAa;AAC3B,gBAAM,WAAW,UAAU,WAAW,mBAAmB,KAAK;AAC9D,iBAAO,UAAU,QAAQ;AAAA,QAC7B,OAAO;AAEH,iBAAO,GAAG,OAAO,QAAA,CAAS;AAAA,QAC9B;AAAA,MAEJ,WAAW,UAAU,QAAW;AAC5B,cAAM,eAAe,UAAU,kBAAkB,SAAS;AAE1D,YAAI,UAAU,UAAW,OAAO,MAAM,KAAK,KAAK,CAAC,cAAe;AAC5D,iBAAO;AAAA,QACX,OAAO;AACH,gBAAM,WAAW,QAAQ,UAAU,UAAU;AAE7C,cAAI,cAAc;AACd,mBAAO,UAAU,QAAQ;AAAA,UAC7B,OAAO;AACH,mBAAO,GAAG,QAAQ;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,eAAO;AAAA,MACX;AAGA,UAAI,OAAO,UAAU,MAAM,mBAAmB,OAAO;AACjD,2BAAmB,KAAK,OAAO,EAAE;AAAA,MACrC,OAAO;AACH;AAAA,MACJ;AAEA,aAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAA;AAAA,IAC9B,GAAG,EAAE;AAGL,UAAM,QAA6B;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA;AAKJ,UAAM,gBAAgB,mBACjB;AAAA,MACG,CAAA,OACI,6BAA6B,OAAO,oCAAoC,EAAE;AAAA,6BAAkC,OAAO,0BAA0B,EAAE;AAAA;AAAA,IAAA,EAEtJ,KAAK,GAAG;AACb,UAAM,aAAa,4CAA4C,OAAO,oCAAoC,wBAAwB;AAAA,oCACtG,OAAO,wBAC/B,gBAAgB,KAAK,aAAa,KAAK,EAC3C,iDAAiD,OAAO;AAExD,WAAO,EAAE,OAAO,WAAA;AAAA,EACpB,GAAG,CAAC,mBAAmB,cAAc,eAAe,UAAU,WAAW,gBAAgB,CAAC;AAC9F;"}
1
+ {"version":3,"file":"useTableStyleGrid.js","sources":["../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFontSize } from '../../types';\nimport { CELL_MIN_WIDTH, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = CELL_MIN_WIDTH[fontSize] ?? CELL_MIN_WIDTH.medium;\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n // button margins l+r\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8;\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n // oxlint-disable-next-line no-negated-condition\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = 'minmax(max-content, 1fr)';\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = 'minmax(max-content, auto)';\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["React"],"mappings":";;AAMO,SAAS,kBAAmC,SAAiB,OAA0B,UAAyB;AACnH,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,oBAAoB,MAAM,sBAAA;AAChC,QAAM,eAAe,MAAM,SAAA,EAAW;AACtC,QAAM,gBAAgB,eAAe,QAAQ,KAAK,eAAe;AAGjE,QAAM,mBAAmB,MAAM,YAAA,EAAc,KAAK,SAAS,gCAAgC;AAE3F,SAAOA,eAAM,QAAQ,MAAM;AACvB,QAAI,2BAA2B;AAC/B,UAAM,qBAA+B,CAAA;AAErC,UAAM,sBAAsB,kBAAkB,OAAO,CAAC,OAAO,QAAQ,UAAU;AAC3E,UAAI,MAAM,QAAQ,kBAAkB,OAAO,gBAAgB;AACvD,eAAO;AAAA,MACX;AAEA,YAAM,UAAU,OAAO,UAAU,WAAW;AAC5C,YAAM,QAAQ,aAAa,OAAO,EAAE;AAEpC,UAAI;AAEJ,UAAI,iBAAiB,OAAO,EAAE,GAAG;AAC7B,YAAI,OAAO,OAAO,aAAa;AAE3B,gBAAM,WAAW,UAAU,WAAW,mBAAmB,KAAK;AAC9D,iBAAO,UAAU,QAAQ;AAAA,QAC7B,OAAO;AAEH,iBAAO,GAAG,OAAO,QAAA,CAAS;AAAA,QAC9B;AAAA,MAEJ,WAAW,UAAU,QAAW;AAC5B,cAAM,eAAe,UAAU,kBAAkB,SAAS;AAE1D,YAAI,UAAU,UAAW,OAAO,MAAM,KAAK,KAAK,CAAC,cAAe;AAC5D,iBAAO;AAAA,QACX,OAAO;AACH,gBAAM,WAAW,QAAQ,UAAU,UAAU;AAE7C,cAAI,cAAc;AACd,mBAAO,UAAU,QAAQ;AAAA,UAC7B,OAAO;AACH,mBAAO,GAAG,QAAQ;AAAA,UACtB;AAAA,QACJ;AAAA,MACJ,OAAO;AACH,eAAO;AAAA,MACX;AAGA,UAAI,OAAO,UAAU,MAAM,mBAAmB,OAAO;AACjD,2BAAmB,KAAK,OAAO,EAAE;AAAA,MACrC,OAAO;AACH;AAAA,MACJ;AAEA,aAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAA;AAAA,IAC9B,GAAG,EAAE;AAGL,UAAM,QAA6B;AAAA,MAC/B;AAAA,MACA;AAAA,IAAA;AAKJ,UAAM,gBAAgB,mBACjB;AAAA,MACG,CAAA,OACI,6BAA6B,OAAO,oCAAoC,EAAE;AAAA,6BAAkC,OAAO,0BAA0B,EAAE;AAAA;AAAA,IAAA,EAEtJ,KAAK,GAAG;AACb,UAAM,aAAa,4CAA4C,OAAO,oCAAoC,wBAAwB;AAAA,oCACtG,OAAO,wBAC/B,gBAAgB,KAAK,aAAa,KAAK,EAC3C,iDAAiD,OAAO;AAExD,WAAO,EAAE,OAAO,WAAA;AAAA,EACpB,GAAG,CAAC,mBAAmB,cAAc,eAAe,UAAU,WAAW,gBAAgB,CAAC;AAC9F;"}
@@ -4,10 +4,8 @@ const React = require("react");
4
4
  const dom = require("../../../../utils/dom.cjs");
5
5
  function focusActiveRow(tableRef) {
6
6
  const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active="true"]') ?? null;
7
- if (activeRow) {
8
- if (!dom.isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !dom.isElementInteractive(document.activeElement)) {
9
- activeRow.focus({ preventScroll: true });
10
- }
7
+ if (activeRow && !dom.isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !dom.isElementInteractive(document.activeElement)) {
8
+ activeRow.focus({ preventScroll: true });
11
9
  }
12
10
  }
13
11
  function useTableRowActiveListener(table, tableRef) {
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowActiveListener.cjs","sources":["../../../../../src/primitives/Table/Core/listeners/useTableRowActiveListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isElementInsideOrTriggeredFromContainer, isElementInteractive } from '@/utils/dom';\n\nexport function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement> | null): void {\n const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active=\"true\"]') ?? null;\n\n if (activeRow) {\n // If the focused element, or it's parent if it's portalled, aren't in the row, then focus the row\n // This ensures the next tab press starts at the row\n if (\n !isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) &&\n !isElementInteractive(document.activeElement)\n ) {\n (activeRow as HTMLElement).focus({ preventScroll: true });\n }\n }\n}\n\nexport function useTableRowActiveListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<HTMLTableElement>\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // Move focus to the row when active row changes, this makes sure we start within the row when tabbing\n React.useEffect(() => {\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n focusActiveRow(tableRef);\n }\n }, [tableMeta.rowActive.rowActiveIndex, tableRef]);\n}\n"],"names":["isElementInsideOrTriggeredFromContainer","isElementInteractive"],"mappings":";;;;AAKO,SAAS,eAAe,UAA2D;AACtF,QAAM,aAAa,UAAU,WAAW,WAAW,cAAc,kCAAkC,KAAK;AAExG,MAAI,WAAW;AAGX,QACI,CAACA,IAAAA,wCAAwC,SAAS,eAAe,SAAS,KAC1E,CAACC,IAAAA,qBAAqB,SAAS,aAAa,GAC9C;AACG,gBAA0B,MAAM,EAAE,eAAe,MAAM;AAAA,IAC5D;AAAA,EACJ;AACJ;AAEO,SAAS,0BACZ,OACA,UACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAGhC,QAAM,UAAU,MAAM;AAClB,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,qBAAe,QAAQ;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,UAAU,UAAU,gBAAgB,QAAQ,CAAC;AACrD;;;"}
1
+ {"version":3,"file":"useTableRowActiveListener.cjs","sources":["../../../../../src/primitives/Table/Core/listeners/useTableRowActiveListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isElementInsideOrTriggeredFromContainer, isElementInteractive } from '@/utils/dom';\n\nexport function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement | null> | null): void {\n const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active=\"true\"]') ?? null;\n\n // If the focused element, or it's parent if it's portalled, aren't in the row, then focus the row\n // This ensures the next tab press starts at the row\n if (\n activeRow &&\n !isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) &&\n !isElementInteractive(document.activeElement)\n ) {\n (activeRow as HTMLElement).focus({ preventScroll: true });\n }\n}\n\nexport function useTableRowActiveListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<HTMLTableElement | null>\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // Move focus to the row when active row changes, this makes sure we start within the row when tabbing\n React.useEffect(() => {\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n focusActiveRow(tableRef);\n }\n }, [tableMeta.rowActive.rowActiveIndex, tableRef]);\n}\n"],"names":["isElementInsideOrTriggeredFromContainer","isElementInteractive"],"mappings":";;;;AAKO,SAAS,eAAe,UAAkE;AAC7F,QAAM,aAAa,UAAU,WAAW,WAAW,cAAc,kCAAkC,KAAK;AAIxG,MACI,aACA,CAACA,4CAAwC,SAAS,eAAe,SAAS,KAC1E,CAACC,IAAAA,qBAAqB,SAAS,aAAa,GAC9C;AACG,cAA0B,MAAM,EAAE,eAAe,MAAM;AAAA,EAC5D;AACJ;AAEO,SAAS,0BACZ,OACA,UACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAGhC,QAAM,UAAU,MAAM;AAClB,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,qBAAe,QAAQ;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,UAAU,UAAU,gBAAgB,QAAQ,CAAC;AACrD;;;"}
@@ -1,4 +1,4 @@
1
1
  import { Table as ReactTable } from '@tanstack/react-table';
2
2
  import { default as React } from 'react';
3
- export declare function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement> | null): void;
4
- export declare function useTableRowActiveListener<TType = unknown>(table: ReactTable<TType>, tableRef: React.RefObject<HTMLTableElement>): void;
3
+ export declare function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement | null> | null): void;
4
+ export declare function useTableRowActiveListener<TType = unknown>(table: ReactTable<TType>, tableRef: React.RefObject<HTMLTableElement | null>): void;
@@ -2,10 +2,8 @@ import React__default from "react";
2
2
  import { isElementInsideOrTriggeredFromContainer, isElementInteractive } from "../../../../utils/dom.js";
3
3
  function focusActiveRow(tableRef) {
4
4
  const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active="true"]') ?? null;
5
- if (activeRow) {
6
- if (!isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isElementInteractive(document.activeElement)) {
7
- activeRow.focus({ preventScroll: true });
8
- }
5
+ if (activeRow && !isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) && !isElementInteractive(document.activeElement)) {
6
+ activeRow.focus({ preventScroll: true });
9
7
  }
10
8
  }
11
9
  function useTableRowActiveListener(table, tableRef) {
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowActiveListener.js","sources":["../../../../../src/primitives/Table/Core/listeners/useTableRowActiveListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isElementInsideOrTriggeredFromContainer, isElementInteractive } from '@/utils/dom';\n\nexport function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement> | null): void {\n const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active=\"true\"]') ?? null;\n\n if (activeRow) {\n // If the focused element, or it's parent if it's portalled, aren't in the row, then focus the row\n // This ensures the next tab press starts at the row\n if (\n !isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) &&\n !isElementInteractive(document.activeElement)\n ) {\n (activeRow as HTMLElement).focus({ preventScroll: true });\n }\n }\n}\n\nexport function useTableRowActiveListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<HTMLTableElement>\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // Move focus to the row when active row changes, this makes sure we start within the row when tabbing\n React.useEffect(() => {\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n focusActiveRow(tableRef);\n }\n }, [tableMeta.rowActive.rowActiveIndex, tableRef]);\n}\n"],"names":["React"],"mappings":";;AAKO,SAAS,eAAe,UAA2D;AACtF,QAAM,aAAa,UAAU,WAAW,WAAW,cAAc,kCAAkC,KAAK;AAExG,MAAI,WAAW;AAGX,QACI,CAAC,wCAAwC,SAAS,eAAe,SAAS,KAC1E,CAAC,qBAAqB,SAAS,aAAa,GAC9C;AACG,gBAA0B,MAAM,EAAE,eAAe,MAAM;AAAA,IAC5D;AAAA,EACJ;AACJ;AAEO,SAAS,0BACZ,OACA,UACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAGhCA,iBAAM,UAAU,MAAM;AAClB,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,qBAAe,QAAQ;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,UAAU,UAAU,gBAAgB,QAAQ,CAAC;AACrD;"}
1
+ {"version":3,"file":"useTableRowActiveListener.js","sources":["../../../../../src/primitives/Table/Core/listeners/useTableRowActiveListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { isElementInsideOrTriggeredFromContainer, isElementInteractive } from '@/utils/dom';\n\nexport function focusActiveRow(tableRef?: React.RefObject<HTMLTableElement | null> | null): void {\n const activeRow = (tableRef?.current ?? document)?.querySelector('tbody tr[data-row-active=\"true\"]') ?? null;\n\n // If the focused element, or it's parent if it's portalled, aren't in the row, then focus the row\n // This ensures the next tab press starts at the row\n if (\n activeRow &&\n !isElementInsideOrTriggeredFromContainer(document.activeElement, activeRow) &&\n !isElementInteractive(document.activeElement)\n ) {\n (activeRow as HTMLElement).focus({ preventScroll: true });\n }\n}\n\nexport function useTableRowActiveListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<HTMLTableElement | null>\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // Move focus to the row when active row changes, this makes sure we start within the row when tabbing\n React.useEffect(() => {\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n focusActiveRow(tableRef);\n }\n }, [tableMeta.rowActive.rowActiveIndex, tableRef]);\n}\n"],"names":["React"],"mappings":";;AAKO,SAAS,eAAe,UAAkE;AAC7F,QAAM,aAAa,UAAU,WAAW,WAAW,cAAc,kCAAkC,KAAK;AAIxG,MACI,aACA,CAAC,wCAAwC,SAAS,eAAe,SAAS,KAC1E,CAAC,qBAAqB,SAAS,aAAa,GAC9C;AACG,cAA0B,MAAM,EAAE,eAAe,MAAM;AAAA,EAC5D;AACJ;AAEO,SAAS,0BACZ,OACA,UACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAGhCA,iBAAM,UAAU,MAAM;AAClB,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,qBAAe,QAAQ;AAAA,IAC3B;AAAA,EACJ,GAAG,CAAC,UAAU,UAAU,gBAAgB,QAAQ,CAAC;AACrD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '@/components';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '@/types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.Ref<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType; // Optional\n selectedRows?: never; // Forbidden\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":";;AA0BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;;"}
1
+ {"version":3,"file":"types.cjs","sources":["../../../src/primitives/Table/types.ts"],"sourcesContent":["import type {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\n\nimport type { MenuItemProps } from '@/components';\nimport type { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '@/types';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetPagination: () => Promise<void>;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains = 0,\n DoesNotContain = 1,\n IsEqualTo = 2,\n IsNotEqualTo = 3,\n IsGreaterThan = 4,\n IsLessThan = 5,\n IsBetween = 6,\n IsEmpty = 7,\n IsNotEmpty = 8,\n IsLessThanOrEqualTo = 9,\n IsGreaterThanOrEqualTo = 10,\n HasAnyOf = 11,\n HasAllOf = 12,\n HasNoneOf = 13,\n IsOneOf = 14,\n IsNoneOf = 15,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'boolean'\n // dates\n | 'date'\n | 'time'\n | 'datetime'\n // numbers\n | 'number'\n | 'amount'\n | 'percentage';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRendererArgs<TType, TValue> = TValue extends undefined\n ? { formattedValue: undefined; row: TType; value: undefined }\n : { formattedValue: string; row: TType; value: TValue };\nexport type TableColumnRenderer<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererAggregate<TType, TValue = unknown> = (\n args: TableColumnRendererArgs<TType, TValue>\n) => React.JSX.Element | string | number | unknown | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => React.JSX.Element | null)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onKeyDown?: React.KeyboardEventHandler;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.Ref<HTMLElement>;\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string | React.JSX.Element;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => React.JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n helpers: {\n editing?: {\n isEditing: boolean;\n removeRowChanges: () => Promise<void>;\n save: () => Promise<boolean>;\n };\n }\n) => React.JSX.Element | null;\n\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => React.JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (text: string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowActiveHandler<TType = unknown> = (row: TType | undefined) => void;\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void> | void;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void> | void;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void> | void;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => React.JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\n// discards the currently loaded pages and loads the first page again, using the last used\n// sorting, filters, hidden columns and search\nexport type TableServerResetPaginationHandler = () => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TablePrintSettings = {\n allRows: boolean;\n orientation: 'portrait' | 'landscape';\n size: 'A3' | 'A4' | 'A5' | 'letter' | 'legal';\n splitGroups: boolean;\n};\nexport type TablePrintHandler = (settings: TableSettings, printSettings: TablePrintSettings) => Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => React.JSX.Element | null;\nexport type TableEvent = 'editing-mode';\nexport type TableEventHandler = (event: TableEvent, data?: object) => void;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n enableSaveSettingsLocally?: boolean;\n};\n\nexport type TableChild = React.JSX.Element | React.JSX.Element[] | boolean | null | undefined;\n\n// Base props\ntype TableCommonBaseProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n enableLocalKeyboardShortcuts?: boolean;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: React.JSX.Element;\n toolbarRight?: React.JSX.Element;\n toolbarPanel?: React.JSX.Element;\n\n // handlers\n onEvent?: TableEventHandler;\n onRowActive?: TableRowActiveHandler<TType>;\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n onPrint?: TablePrintHandler;\n};\n\n// Branch 1: Client-side without controlled selection\n// selectedRows is 'never' to force TypeScript to require rowIdentityAccessor when selectedRows is used\ntype TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n resetPagination?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor?: keyof TType;\n selectedRows?: never;\n};\n\n// Branch 2: Server-side without controlled selection\ntype TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n resetPagination?: TableServerResetPaginationHandler;\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor?: keyof TType;\n selectedRows?: never;\n};\n\n// Branch 3: Client-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n resetPagination?: never;\n _experimentalDataLoader2?: never;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Branch 4: Server-side with controlled selection\n// Both rowIdentityAccessor and selectedRows are required\ntype TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType> & {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n resetPagination?: TableServerResetPaginationHandler;\n _experimentalDataLoader2?: boolean;\n\n rowIdentityAccessor: keyof TType;\n selectedRows: string[];\n};\n\n// Discriminated union: providing selectedRows forces TypeScript to use branches 3/4, which require rowIdentityAccessor\nexport type TableClientProps<TType = unknown> = TableClientPropsBase<TType> | TableClientPropsWithSelection<TType>;\nexport type TableServerProps<TType = unknown> = TableServerPropsBase<TType> | TableServerPropsWithSelection<TType>;\n\n// For backward compatibility (used by hooks/internals that don't care about the constraint)\nexport type TableCommonProps<TType = unknown> = TableCommonBaseProps<TType> & {\n rowIdentityAccessor?: keyof TType;\n selectedRows?: string[];\n};\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnDataTypeOptions = {\n currency?: string;\n decimals?: number;\n useGrouping?: boolean;\n};\n\nexport type TableColumnDataTypeOptionsHandler<TType = unknown, TOptions = TableColumnDataTypeOptions> =\n TOptions | ((row: TType) => TOptions);\n\nexport type TableColumnDataTypeProps<TType = unknown> =\n // number should allow currency, decimals and useGrouping\n | {\n dataType?: 'number';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'currency' | 'decimals' | 'useGrouping'>\n >;\n }\n // amount should allow currency\n | {\n dataType?: 'amount';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<TType, Pick<TableColumnDataTypeOptions, 'currency'>>;\n }\n // percentage should allow decimals and useGrouping\n | {\n dataType?: 'percentage';\n dataTypeOptions?: TableColumnDataTypeOptionsHandler<\n TType,\n Pick<TableColumnDataTypeOptions, 'decimals' | 'useGrouping'>\n >;\n }\n // others should not allow options\n | {\n dataType?: Omit<TableColumnDataType, 'number' | 'amount' | 'percentage'>;\n dataTypeOptions?: never;\n };\n\nexport type TableColumnIdentifierProps<TType = unknown> =\n // type correctly if an accessor is provided\n | {\n [Key in DotNotationPaths<TType>]: {\n accessor: Key;\n id?: string;\n renderer?: TableColumnRenderer<TType, DotNotationPathValue<TType, Key>> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, DotNotationPathValue<TType, Key>> | undefined;\n };\n }[DotNotationPaths<TType>]\n // otherwise fall back to unknown\n | {\n accessor?: never;\n id: string;\n renderer?: TableColumnRenderer<TType, undefined> | undefined;\n aggregate?: TableColumnRendererAggregate<TType, undefined> | undefined;\n };\n\nexport type TableColumnProps<TType = unknown> = TableColumnIdentifierProps<TType> &\n TableColumnDataTypeProps<TType> & {\n // renderers - some that require Key are below, to ensure correct typing\n control?: TableColumnRendererControl<TType> | undefined;\n footer?: TableColumnRendererFooter<TType> | undefined;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n emptyState?: React.ReactNode;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n\nexport type TableGroupProps = {\n children: (React.JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":";;AA2BO,IAAK,0CAAAA,2BAAL;AACHA,yBAAAA,uBAAA,cAAW,CAAA,IAAX;AACAA,yBAAAA,uBAAA,oBAAiB,CAAA,IAAjB;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,kBAAe,CAAA,IAAf;AACAA,yBAAAA,uBAAA,mBAAgB,CAAA,IAAhB;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,eAAY,CAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,CAAA,IAAV;AACAA,yBAAAA,uBAAA,gBAAa,CAAA,IAAb;AACAA,yBAAAA,uBAAA,yBAAsB,CAAA,IAAtB;AACAA,yBAAAA,uBAAA,4BAAyB,EAAA,IAAzB;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AACAA,yBAAAA,uBAAA,eAAY,EAAA,IAAZ;AACAA,yBAAAA,uBAAA,aAAU,EAAA,IAAV;AACAA,yBAAAA,uBAAA,cAAW,EAAA,IAAX;AAhBQ,SAAAA;AAAA,GAAA,yBAAA,CAAA,CAAA;;"}
@@ -4,6 +4,7 @@ import { DotNotationPaths, FontSize, FontSizes, DotNotationPathValue } from '../
4
4
  export type TableRef = HTMLTableElement & {
5
5
  instance: {
6
6
  resetFiltering: () => void;
7
+ resetPagination: () => Promise<void>;
7
8
  resetRowExpansion: () => void;
8
9
  resetRowSelection: () => void;
9
10
  resetSorting: () => void;
@@ -108,6 +109,7 @@ export type TableScrollToIndexHandler = (index: number, options?: {
108
109
  }) => void;
109
110
  export type TableServerLoadPageHandler = (pageIndex: number, sorting: TableColumnSort[], filters: TableColumnFilter[], hiddenColumns: string[], search: string | undefined) => Promise<void>;
110
111
  export type TableServerLoadAllHandler = (sorting: TableColumnSort[], filters: TableColumnFilter[], hiddenColumns: string[], search: string | undefined) => Promise<void>;
112
+ export type TableServerResetPaginationHandler = () => Promise<void>;
111
113
  export type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;
112
114
  export type TablePrintSettings = {
113
115
  allRows: boolean;
@@ -212,6 +214,7 @@ type TableClientPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {
212
214
  loadPage?: never;
213
215
  pageSize?: never;
214
216
  pages?: never;
217
+ resetPagination?: never;
215
218
  _experimentalDataLoader2?: never;
216
219
  rowIdentityAccessor?: keyof TType;
217
220
  selectedRows?: never;
@@ -222,6 +225,7 @@ type TableServerPropsBase<TType = unknown> = TableCommonBaseProps<TType> & {
222
225
  loadPage: TableServerLoadPageHandler;
223
226
  pageSize?: number;
224
227
  pages?: number[];
228
+ resetPagination?: TableServerResetPaginationHandler;
225
229
  _experimentalDataLoader2?: boolean;
226
230
  rowIdentityAccessor?: keyof TType;
227
231
  selectedRows?: never;
@@ -232,6 +236,7 @@ type TableClientPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType
232
236
  loadPage?: never;
233
237
  pageSize?: never;
234
238
  pages?: never;
239
+ resetPagination?: never;
235
240
  _experimentalDataLoader2?: never;
236
241
  rowIdentityAccessor: keyof TType;
237
242
  selectedRows: string[];
@@ -242,6 +247,7 @@ type TableServerPropsWithSelection<TType = unknown> = TableCommonBaseProps<TType
242
247
  loadPage: TableServerLoadPageHandler;
243
248
  pageSize?: number;
244
249
  pages?: number[];
250
+ resetPagination?: TableServerResetPaginationHandler;
245
251
  _experimentalDataLoader2?: boolean;
246
252
  rowIdentityAccessor: keyof TType;
247
253
  selectedRows: string[];