@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":"useEditingState.js","sources":["../../../../src/components/Table3/features/useEditingState.ts"],"sourcesContent":["import type { Table as ReactTable, Cell as ReactTableCell, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport omit from 'lodash/omit';\nimport setWith from 'lodash/setWith';\nimport { nanoid } from 'nanoid';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nimport type {\n Table3EditingChangeHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow, TEMPORARY_ROW_ID_PREFIX, willRowMove } from '../util/editing';\n\nconst DELAY_BEFORE_REMOVING_SAVE_STATUS = 3000;\n\ntype EditingError = {\n row: string | undefined;\n cells: Record<string, string>;\n shouldShowErrorAlert: boolean;\n};\ntype EditingRowMoveReason = Record<string, 'search' | 'sorting' | 'filter'>;\ntype EditingSaveState = 'saving' | 'saved' | 'errored';\ntype EditingChangeset<TType = unknown> = Partial<TType>;\ntype EditingState<TType = unknown> = {\n changes: {\n rows: Record<string, EditingChangeset<TType>>;\n errors: Record<string, EditingError>;\n moveReasons: Record<string, EditingRowMoveReason>;\n originals: Record<string, TType>;\n dirty: Record<string, boolean>;\n };\n // we store row indexes because due to server loading, we don't always have all data available\n // so we can't determine an index from a row id\n // note: if the row click button in the error Alert is removed, indexes can be removed here\n indexes: Record<string, number>;\n temporaryRows: TType[];\n // unified state for all row statuses\n statuses: Record<string, EditingSaveState>;\n};\ntype EditingStateAction =\n | {\n type:\n | 'setCellValue'\n | 'removeCellValue'\n | 'updateRow'\n | 'mergeRowValue'\n | 'removeRow'\n | 'complete'\n | 'setRowStatus'\n | 'setRowErrors'\n | 'insertTemporaryRow';\n rowId: string;\n payload?: any;\n }\n | {\n type: 'forceValidate';\n payload?: any;\n };\n\nfunction reducer<TType = unknown>(state: EditingState<TType>, action: EditingStateAction): EditingState<TType> {\n const { type, payload } = action;\n\n switch (type) {\n case 'setCellValue': {\n const { columnId, index, row, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, `${action.rowId}.${columnId}`, value, Object),\n originals: setWith(state.changes.originals, action.rowId, row, Object),\n dirty: setWith(state.changes.dirty, action.rowId, true, Object),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n };\n }\n\n case 'removeCellValue': {\n const { columnId, rowIdentityAccessor } = payload;\n const changes = omit(state.changes.rows, `${action.rowId}.${columnId}`);\n\n const rowChanges = changes[action.rowId];\n\n // if there are no changes left, remove the row\n if (rowChanges && !Object.keys(rowChanges).length) {\n return reducer(state, { type: 'removeRow', rowId: action.rowId, payload: { rowIdentityAccessor } });\n }\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, `${action.rowId}.${columnId}`),\n errors: omit(state.changes.errors, `${action.rowId}.cells.${columnId}`),\n moveReasons: omit(state.changes.moveReasons, `${action.rowId}.${columnId}`),\n },\n };\n }\n\n case 'updateRow': {\n const { cellErrors, index, moveReasons, original, value } = payload;\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, action.rowId, value, Object),\n errors: setWith(\n state.changes.errors,\n `${action.rowId}.cells`,\n cellErrors ?? state.changes.errors[action.rowId]?.cells,\n Object\n ),\n originals: setWith(\n state.changes.originals,\n action.rowId,\n original ?? state.changes.originals[action.rowId],\n Object\n ),\n moveReasons: setWith(\n state.changes.moveReasons,\n action.rowId,\n moveReasons ?? state.changes.moveReasons[action.rowId],\n Object\n ),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n statuses: omit(state.statuses, action.rowId),\n };\n }\n\n case 'removeRow': {\n const { rowIdentityAccessor } = payload;\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, action.rowId),\n errors: omit(state.changes.errors, action.rowId),\n moveReasons: omit(state.changes.moveReasons, action.rowId),\n originals: omit(state.changes.originals, action.rowId),\n dirty: omit(state.changes.dirty, action.rowId),\n },\n indexes: omit(state.indexes, action.rowId),\n temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor as keyof TType] !== action.rowId),\n };\n }\n\n case 'complete': {\n const { changes, handleDiscard } = payload;\n\n if (JSON.stringify(changes) !== JSON.stringify(state.changes.rows[action.rowId])) {\n return {\n ...state,\n changes: {\n ...state.changes,\n originals: setWith(\n state.changes.originals,\n action.rowId,\n { ...state.changes.originals[action.rowId], ...changes },\n Object\n ),\n },\n };\n }\n\n // bit hacky for now, but editing needs a rewrite\n if (typeof handleDiscard === 'function') {\n handleDiscard();\n }\n\n return state;\n }\n\n case 'setRowStatus': {\n const { status } = payload;\n\n if (status) {\n return {\n ...state,\n statuses: setWith(state.statuses, action.rowId, status, Object),\n };\n }\n // Remove status\n return {\n ...state,\n statuses: omit(state.statuses, action.rowId),\n };\n }\n\n case 'setRowErrors': {\n const { ...errors } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n errors: setWith(state.changes.errors, action.rowId, errors, Object),\n },\n };\n }\n\n case 'insertTemporaryRow': {\n const { index, value } = payload;\n return {\n ...state,\n temporaryRows: state.temporaryRows.concat(value),\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, action.rowId, value, Object),\n originals: setWith(state.changes.originals, action.rowId, value, Object),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n };\n }\n\n case 'forceValidate': {\n const { newState } = payload;\n\n return {\n ...state,\n ...newState,\n };\n }\n\n default:\n return state;\n }\n}\n\nexport function usePendingChangesState<TType = unknown>(\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const localization = useLocalization();\n const [state, dispatch] = React.useReducer(reducer<TType>, {\n changes: { rows: {}, errors: {}, moveReasons: {}, originals: {}, dirty: {} },\n indexes: {},\n temporaryRows: [],\n statuses: {},\n });\n\n // rows\n function getRowValue(rowId: string) {\n return state.changes.rows?.[rowId] ?? undefined;\n }\n\n function getRowMoveReason(rowId: string) {\n return Object.values(state.changes.moveReasons?.[rowId] ?? {})[0] ?? undefined;\n }\n\n function hasRowErrors(rowId: string) {\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function hasRowErrorsShownInAlert(rowId: string) {\n return hasRowErrors(rowId) && !!state.changes.errors[rowId]?.shouldShowErrorAlert;\n }\n\n function hasTemporaryRowErrors<T extends TType>() {\n const newRow = state.temporaryRows?.[0] as T | undefined;\n\n if (!newRow) {\n return false;\n }\n\n const rowId = newRow[rowIdentityAccessor as keyof TType] as string;\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function getRowStatus(rowId: string): EditingSaveState | undefined {\n return state.statuses[rowId];\n }\n\n function setRowStatus(rowId: string, status: EditingSaveState | undefined) {\n dispatch({\n type: 'setRowStatus',\n rowId,\n payload: {\n status,\n },\n });\n }\n\n function showSavedStatus(rowId: string) {\n setRowStatus(rowId, 'saved');\n\n setTimeout(() => {\n setRowStatus(rowId, undefined);\n }, DELAY_BEFORE_REMOVING_SAVE_STATUS);\n }\n\n function insertTemporaryRow<T extends TType>(data: Partial<T>, rowIndex: number) {\n const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${nanoid()}`;\n const value: Partial<TType> = {\n ...data,\n [rowIdentityAccessor]: newRowId,\n };\n\n dispatch({\n type: 'insertTemporaryRow',\n rowId: newRowId,\n payload: { index: rowIndex, value },\n });\n\n return newRowId;\n }\n\n // cells\n function setCellValue<T extends TType>(cell: ReactTableCell<T, unknown>, rowIndex: number, value: unknown) {\n const rowId = cell.row.id;\n const columnId = cell.column.id;\n\n // update if the change is different to the original value\n if (value !== cell.row.original[columnId as keyof TType]) {\n dispatch({\n type: 'setCellValue',\n rowId,\n payload: {\n columnId,\n index: rowIndex,\n row: cell.row.original,\n value,\n },\n });\n }\n // otherwise remove any previous change - no point saving the same value\n else if (cell.row.id in state.changes.rows) {\n dispatch({\n type: 'removeCellValue',\n rowId,\n payload: {\n columnId,\n rowIdentityAccessor,\n },\n });\n }\n }\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return state.changes.rows?.[cell.row.id]?.[cell.column.id as keyof TType];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return state.changes.errors?.[cell.row.id]?.cells?.[cell.column.id];\n }\n\n async function onCellChanged<T extends TType>(\n cell: ReactTableCell<T, unknown>,\n rowIndex: number,\n nextValue: any,\n shouldRunUpdaters = true,\n shouldRunValidation = true\n ) {\n const tableMeta = cell.getContext().table.options.meta as ReactTableMeta<TType>;\n const state = tableMeta.editing.getState();\n\n // keyed by runtime column id, so a string-keyed record rather than Partial<TType>\n const changes: Record<string, unknown> =\n nextValue === undefined\n ? { ...state.changes.rows[cell.row.id] }\n : { ...state.changes.rows[cell.row.id], [cell.column.id]: nextValue };\n\n const original = cell.row.original;\n\n if (!Object.keys(changes).length) {\n return;\n }\n\n let updatesForOtherCells: Partial<T> = {};\n\n // run the updater handler if there is one, to see if there are any other cells to update\n if (typeof handleChange === 'function' && shouldRunUpdaters) {\n const previousRowValue = {\n ...original,\n //...getRowChangeset(updatersRef.current[cell.row.id], rowIdentityAccessor),\n };\n const nextRowValue = {\n ...original,\n ...changes,\n };\n updatesForOtherCells = ((await handleChange(\n cell.column.id,\n changes[cell.column.id],\n nextRowValue,\n previousRowValue\n )) ?? {}) as Partial<T>;\n }\n\n // create a projection of the next state, so we can act against it\n const nextChanges = { ...changes, ...updatesForOtherCells };\n const nextMoveReasons: EditingRowMoveReason = { ...state.changes.moveReasons[cell.row.id] };\n const nextCellErrors: Record<string, string> = { ...state.changes.errors[cell.row.id]?.cells };\n\n // run validation - if there are changes, and if there is an original stored\n let validationErrors: Record<string, string> = {};\n\n if (validator && Object.keys(nextChanges).length && original && shouldRunValidation) {\n // merge with the original so we get a full row\n const nextRowValue = { ...original, ...changes, ...updatesForOtherCells };\n validationErrors = ((await validator(nextRowValue)) ?? {}) as Record<string, string>;\n }\n\n // only set errors and move reasons for the cells we're currently acting on\n // why? because the UX is not good if we set them for cells the user hasn't touched yet\n const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];\n const allCells = cell.row._getAllCellsByColumnId();\n\n cellsToActOn.forEach(accessor => {\n if (validationErrors[accessor]) {\n nextCellErrors[accessor] = validationErrors[accessor];\n // don't show move indicator for cells with errors, they aren't valid and can't be saved\n delete nextMoveReasons[accessor];\n } else {\n // there isn't any error in this run, remove any error set in state\n delete nextCellErrors[accessor];\n\n if (allCells[accessor]?.column.getIsSorted()) {\n // run row move determination\n const reason = willRowMove(cell, nextChanges[accessor], rowIndex, localization);\n\n // if the row will move based on this change save why, otherwise delete any existing state\n if (reason) {\n nextMoveReasons[accessor] = reason;\n } else {\n delete nextMoveReasons[accessor];\n }\n }\n }\n });\n\n dispatch({\n type: 'updateRow',\n rowId: cell.row.id,\n payload: {\n cellErrors: nextCellErrors,\n index: rowIndex,\n moveReasons: nextMoveReasons,\n value: nextChanges,\n original,\n },\n });\n }\n\n async function forceValidate<T extends TType>(table: ReactTable<T>) {\n if (validator && table.getRowModel().rows.length) {\n const newState: EditingState<TType> = { ...state };\n const returnIds: string[] = [];\n\n await Promise.all(\n table.getRowModel().rows.map(async (row, index) => {\n const rowWithChanges = { ...row.original, ...state.changes.rows[row.id] };\n\n if (rowWithChanges) {\n const cellErrors = await validator(rowWithChanges);\n\n if (cellErrors) {\n // prep row (it might be new or it might have changes already)\n newState.changes.dirty[row.id] = true;\n newState.changes.originals[row.id] = row.original;\n newState.changes.moveReasons[row.id] = { ...newState.changes.moveReasons[row.id] };\n newState.changes.rows[row.id] = { ...newState.changes.rows[row.id] };\n newState.statuses[row.id] = 'errored';\n newState.indexes[row.id] = index;\n\n newState.changes.errors[row.id] = {\n cells: cellErrors,\n row: newState.changes.errors[row.id]?.row ?? undefined,\n shouldShowErrorAlert: newState.changes.errors[row.id]?.shouldShowErrorAlert ?? false,\n } as EditingError;\n\n const rowChanges = newState.changes.rows[row.id];\n\n // ensure each errored cell actually has a change\n Object.keys(cellErrors).forEach(columnId => {\n if (rowChanges !== undefined) {\n rowChanges[columnId as keyof TType] = rowWithChanges[columnId as keyof TType];\n }\n });\n\n returnIds.push(row.id);\n }\n }\n })\n );\n\n dispatch({\n type: 'forceValidate',\n payload: {\n newState,\n },\n });\n\n return returnIds;\n }\n\n return [];\n }\n\n // general\n function getErrors() {\n return Object.keys(state.changes.errors);\n }\n\n function getErrorsShownInAlert<T extends TType>() {\n const rowsWithErrors = getErrors();\n\n if (!rowsWithErrors.length) {\n return [];\n }\n\n return rowsWithErrors.filter(hasRowErrorsShownInAlert).map(rowId => ({\n rowId,\n index: state.indexes[rowId],\n changes: state.changes.rows[rowId] as EditingChangeset<T>,\n // hasRowErrorsShownInAlert already guarantees errors is defined; the cast narrows the type\n errors: state.changes.errors[rowId] as EditingError,\n }));\n }\n\n function hasSaved() {\n return !!Object.values(state.statuses).filter(status => status === 'saved').length;\n }\n\n function hasChanges(rowId?: string) {\n return rowId ? !!state.changes.rows[rowId] : !!Object.keys(state.changes.rows).length;\n }\n\n async function saveChanges<T extends TType>(table: ReactTable<T>, rowId: string | undefined = undefined): Promise<boolean> {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const state = tableMeta.editing.getState();\n\n if (!handleSave) {\n // oxlint-disable-next-line no-console\n console.warn('Tried to save, but Table has no onEditingSave handler');\n return false;\n }\n\n // sometimes we only want to save one row\n const changes = rowId ? { [rowId]: state.changes.rows[rowId] } : state.changes.rows;\n\n let completed = true;\n\n for (const rowId of Object.keys(changes)) {\n if (!state.changes.dirty[rowId]) {\n discardChanges(rowId, table);\n continue;\n }\n\n const status = getRowStatus(rowId);\n\n try {\n const rowChanges = JSON.parse(JSON.stringify(changes[rowId] ?? {}));\n\n // don't try to save if - already saving, or there are known errors\n if (!Object.keys(rowChanges).length || status === 'saving' || status === 'errored') {\n continue;\n }\n\n setRowStatus(rowId, 'saving');\n\n const changeSet = { ...(state.changes.originals[rowId] as object), ...rowChanges };\n\n // if we had to create a temporary id, delete it first - it's our data, not theirs\n if (isTemporaryRow(changeSet[rowIdentityAccessor as string])) {\n delete changeSet[rowIdentityAccessor];\n }\n\n // re-run validation, maybe a cell is already invalid but has never been blurred\n if (validator) {\n // oxlint-disable-next-line no-await-in-loop\n const errors = await validator(changeSet);\n\n if (errors && Object.keys(errors).length) {\n throw errors;\n }\n }\n\n // send new data to the server\n // oxlint-disable-next-line no-await-in-loop\n await handleSave(changeSet);\n\n complete(rowId, table, rowChanges);\n showSavedStatus(rowId);\n } catch (error) {\n if (error instanceof ReferenceError || error instanceof TypeError || (error as any)?.response?.status >= 500) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n\n // the onEditingSave handler should throw errors when something fails, e.g. validation, network errors etc\n // this code handles those errors and maps them either to row errors or cell specific errors\n let rowError: string | undefined;\n let cellErrors;\n\n if (typeof error === 'string') {\n rowError = error;\n } else if (error instanceof Error) {\n rowError = error.message;\n\n // most of our apis return error objects within this shape\n if (typeof (error as any).response?.data === 'object') {\n cellErrors = (error as any).response?.data;\n }\n } else if (typeof error === 'object') {\n cellErrors = error;\n }\n\n if (rowError || cellErrors) {\n dispatch({\n type: 'setRowErrors',\n rowId,\n payload: {\n row: rowError,\n cells: cellErrors,\n shouldShowErrorAlert: true,\n },\n });\n }\n\n setRowStatus(rowId, 'errored');\n completed = false;\n }\n }\n\n return completed;\n }\n\n async function discardChanges<T extends TType>(rowId: string, table: ReactTable<T>) {\n // remove any new rows from pinned state before discarding them\n if (rowId.startsWith(TEMPORARY_ROW_ID_PREFIX)) {\n table.resetRowPinning(true);\n }\n\n dispatch({\n type: 'removeRow',\n rowId,\n payload: { rowIdentityAccessor },\n });\n\n if (typeof handleDiscard === 'function') {\n await handleDiscard();\n }\n }\n\n function complete<T extends TType>(rowId: string, table: ReactTable<T>, changes: Partial<T>) {\n const handleDiscard = async () => {\n await discardChanges(rowId, table);\n };\n\n dispatch({\n type: 'complete',\n rowId,\n payload: { rowIdentityAccessor, changes, handleDiscard },\n });\n }\n\n function getState() {\n return state;\n }\n\n return {\n getState,\n // row\n getRowValue,\n getRowMoveReason,\n hasRowErrors,\n hasRowErrorsShownInAlert,\n hasTemporaryRowErrors,\n getRowStatus,\n setRowStatus,\n forceValidate,\n // cells\n setCellValue,\n getCellValue,\n getCellError,\n onCellChanged,\n // general\n getErrors,\n getErrorsShownInAlert,\n hasChanges,\n saveChanges,\n discardChanges,\n hasSaved,\n // new rows\n insertTemporaryRow,\n temporaryRows: state.temporaryRows,\n isDirty: hasChanges() || state.temporaryRows.length > 0,\n };\n}\n"],"names":["React","state","rowId","handleDiscard"],"mappings":"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"}
1
+ {"version":3,"file":"useEditingState.js","sources":["../../../../src/components/Table3/features/useEditingState.ts"],"sourcesContent":["import type { Table as ReactTable, Cell as ReactTableCell, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport omit from 'lodash/omit';\nimport setWith from 'lodash/setWith';\nimport { nanoid } from 'nanoid';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nimport type {\n Table3EditingChangeHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow, TEMPORARY_ROW_ID_PREFIX, willRowMove } from '../util/editing';\n\nconst DELAY_BEFORE_REMOVING_SAVE_STATUS = 3000;\n\ntype EditingError = {\n row: string | undefined;\n cells: Record<string, string>;\n shouldShowErrorAlert: boolean;\n};\ntype EditingRowMoveReason = Record<string, 'search' | 'sorting' | 'filter'>;\ntype EditingSaveState = 'saving' | 'saved' | 'errored';\ntype EditingChangeset<TType = unknown> = Partial<TType>;\ntype EditingState<TType = unknown> = {\n changes: {\n rows: Record<string, EditingChangeset<TType>>;\n errors: Record<string, EditingError>;\n moveReasons: Record<string, EditingRowMoveReason>;\n originals: Record<string, TType>;\n dirty: Record<string, boolean>;\n };\n // we store row indexes because due to server loading, we don't always have all data available\n // so we can't determine an index from a row id\n // note: if the row click button in the error Alert is removed, indexes can be removed here\n indexes: Record<string, number>;\n temporaryRows: TType[];\n // unified state for all row statuses\n statuses: Record<string, EditingSaveState>;\n};\ntype EditingStateAction =\n | {\n type:\n | 'setCellValue'\n | 'removeCellValue'\n | 'updateRow'\n | 'mergeRowValue'\n | 'removeRow'\n | 'complete'\n | 'setRowStatus'\n | 'setRowErrors'\n | 'insertTemporaryRow';\n rowId: string;\n payload?: any;\n }\n | {\n type: 'forceValidate';\n payload?: any;\n };\n\nfunction reducer<TType = unknown>(state: EditingState<TType>, action: EditingStateAction): EditingState<TType> {\n const { type, payload } = action;\n\n switch (type) {\n case 'setCellValue': {\n const { columnId, index, row, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, `${action.rowId}.${columnId}`, value, Object),\n originals: setWith(state.changes.originals, action.rowId, row, Object),\n dirty: setWith(state.changes.dirty, action.rowId, true, Object),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n };\n }\n\n case 'removeCellValue': {\n const { columnId, rowIdentityAccessor } = payload;\n const changes = omit(state.changes.rows, `${action.rowId}.${columnId}`);\n\n const rowChanges = changes[action.rowId];\n\n // if there are no changes left, remove the row\n if (rowChanges && !Object.keys(rowChanges).length) {\n return reducer(state, { type: 'removeRow', rowId: action.rowId, payload: { rowIdentityAccessor } });\n }\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, `${action.rowId}.${columnId}`),\n errors: omit(state.changes.errors, `${action.rowId}.cells.${columnId}`),\n moveReasons: omit(state.changes.moveReasons, `${action.rowId}.${columnId}`),\n },\n };\n }\n\n case 'updateRow': {\n const { cellErrors, index, moveReasons, original, value } = payload;\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, action.rowId, value, Object),\n errors: setWith(\n state.changes.errors,\n `${action.rowId}.cells`,\n cellErrors ?? state.changes.errors[action.rowId]?.cells,\n Object\n ),\n originals: setWith(\n state.changes.originals,\n action.rowId,\n original ?? state.changes.originals[action.rowId],\n Object\n ),\n moveReasons: setWith(\n state.changes.moveReasons,\n action.rowId,\n moveReasons ?? state.changes.moveReasons[action.rowId],\n Object\n ),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n statuses: omit(state.statuses, action.rowId),\n };\n }\n\n case 'removeRow': {\n const { rowIdentityAccessor } = payload;\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, action.rowId),\n errors: omit(state.changes.errors, action.rowId),\n moveReasons: omit(state.changes.moveReasons, action.rowId),\n originals: omit(state.changes.originals, action.rowId),\n dirty: omit(state.changes.dirty, action.rowId),\n },\n indexes: omit(state.indexes, action.rowId),\n temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor as keyof TType] !== action.rowId),\n };\n }\n\n case 'complete': {\n const { changes, handleDiscard } = payload;\n\n if (JSON.stringify(changes) !== JSON.stringify(state.changes.rows[action.rowId])) {\n return {\n ...state,\n changes: {\n ...state.changes,\n originals: setWith(\n state.changes.originals,\n action.rowId,\n { ...state.changes.originals[action.rowId], ...changes },\n Object\n ),\n },\n };\n }\n\n // bit hacky for now, but editing needs a rewrite\n if (typeof handleDiscard === 'function') {\n handleDiscard();\n }\n\n return state;\n }\n\n case 'setRowStatus': {\n const { status } = payload;\n\n if (status) {\n return {\n ...state,\n statuses: setWith(state.statuses, action.rowId, status, Object),\n };\n }\n // Remove status\n return {\n ...state,\n statuses: omit(state.statuses, action.rowId),\n };\n }\n\n case 'setRowErrors': {\n const { ...errors } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n errors: setWith(state.changes.errors, action.rowId, errors, Object),\n },\n };\n }\n\n case 'insertTemporaryRow': {\n const { index, value } = payload;\n return {\n ...state,\n temporaryRows: state.temporaryRows.concat(value),\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, action.rowId, value, Object),\n originals: setWith(state.changes.originals, action.rowId, value, Object),\n },\n indexes: setWith(state.indexes, action.rowId, index, Object),\n };\n }\n\n case 'forceValidate': {\n const { newState } = payload;\n\n return {\n ...state,\n ...newState,\n };\n }\n\n default:\n return state;\n }\n}\n\nexport function usePendingChangesState<TType = unknown>(\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const localization = useLocalization();\n const [state, dispatch] = React.useReducer(reducer<TType>, {\n changes: { rows: {}, errors: {}, moveReasons: {}, originals: {}, dirty: {} },\n indexes: {},\n temporaryRows: [],\n statuses: {},\n });\n\n // rows\n function getRowValue(rowId: string) {\n return state.changes.rows?.[rowId] ?? undefined;\n }\n\n function getRowMoveReason(rowId: string) {\n return Object.values(state.changes.moveReasons?.[rowId] ?? {})[0] ?? undefined;\n }\n\n function hasRowErrors(rowId: string) {\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function hasRowErrorsShownInAlert(rowId: string) {\n return hasRowErrors(rowId) && !!state.changes.errors[rowId]?.shouldShowErrorAlert;\n }\n\n function hasTemporaryRowErrors<T extends TType>() {\n const newRow = state.temporaryRows?.[0] as T | undefined;\n\n if (!newRow) {\n return false;\n }\n\n const rowId = newRow[rowIdentityAccessor as keyof TType] as string;\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function getRowStatus(rowId: string): EditingSaveState | undefined {\n return state.statuses[rowId];\n }\n\n function setRowStatus(rowId: string, status: EditingSaveState | undefined) {\n dispatch({\n type: 'setRowStatus',\n rowId,\n payload: {\n status,\n },\n });\n }\n\n function showSavedStatus(rowId: string) {\n setRowStatus(rowId, 'saved');\n\n setTimeout(() => {\n setRowStatus(rowId, undefined);\n }, DELAY_BEFORE_REMOVING_SAVE_STATUS);\n }\n\n function insertTemporaryRow<T extends TType>(data: Partial<T>, rowIndex: number) {\n const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${nanoid()}`;\n const value: Partial<TType> = {\n ...data,\n [rowIdentityAccessor]: newRowId,\n };\n\n dispatch({\n type: 'insertTemporaryRow',\n rowId: newRowId,\n payload: { index: rowIndex, value },\n });\n\n return newRowId;\n }\n\n // cells\n function setCellValue<T extends TType>(cell: ReactTableCell<T, unknown>, rowIndex: number, value: unknown) {\n const rowId = cell.row.id;\n const columnId = cell.column.id;\n\n // update if the change is different to the original value\n if (value !== cell.row.original[columnId as keyof TType]) {\n dispatch({\n type: 'setCellValue',\n rowId,\n payload: {\n columnId,\n index: rowIndex,\n row: cell.row.original,\n value,\n },\n });\n }\n // otherwise remove any previous change - no point saving the same value\n else if (cell.row.id in state.changes.rows) {\n dispatch({\n type: 'removeCellValue',\n rowId,\n payload: {\n columnId,\n rowIdentityAccessor,\n },\n });\n }\n }\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return state.changes.rows?.[cell.row.id]?.[cell.column.id as keyof TType];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return state.changes.errors?.[cell.row.id]?.cells?.[cell.column.id];\n }\n\n async function onCellChanged<T extends TType>(\n cell: ReactTableCell<T, unknown>,\n rowIndex: number,\n nextValue: any,\n shouldRunUpdaters = true,\n shouldRunValidation = true\n ) {\n const tableMeta = cell.getContext().table.options.meta as ReactTableMeta<TType>;\n const state = tableMeta.editing.getState();\n\n // keyed by runtime column id, so a string-keyed record rather than Partial<TType>\n const changes: Record<string, unknown> =\n nextValue === undefined\n ? { ...state.changes.rows[cell.row.id] }\n : { ...state.changes.rows[cell.row.id], [cell.column.id]: nextValue };\n\n const original = cell.row.original;\n\n if (!Object.keys(changes).length) {\n return;\n }\n\n let updatesForOtherCells: Partial<T> = {};\n\n // run the updater handler if there is one, to see if there are any other cells to update\n if (typeof handleChange === 'function' && shouldRunUpdaters) {\n const previousRowValue = {\n ...original,\n //...getRowChangeset(updatersRef.current[cell.row.id], rowIdentityAccessor),\n };\n const nextRowValue = {\n ...original,\n ...changes,\n };\n updatesForOtherCells = ((await handleChange(\n cell.column.id,\n changes[cell.column.id],\n nextRowValue,\n previousRowValue\n )) ?? {}) as Partial<T>;\n }\n\n // create a projection of the next state, so we can act against it\n const nextChanges = { ...changes, ...updatesForOtherCells };\n const nextMoveReasons: EditingRowMoveReason = { ...state.changes.moveReasons[cell.row.id] };\n const nextCellErrors: Record<string, string> = { ...state.changes.errors[cell.row.id]?.cells };\n\n // run validation - if there are changes, and if there is an original stored\n let validationErrors: Record<string, string> = {};\n\n if (validator && Object.keys(nextChanges).length && original && shouldRunValidation) {\n // merge with the original so we get a full row\n const nextRowValue = { ...original, ...changes, ...updatesForOtherCells };\n validationErrors = ((await validator(nextRowValue)) ?? {}) as Record<string, string>;\n }\n\n // only set errors and move reasons for the cells we're currently acting on\n // why? because the UX is not good if we set them for cells the user hasn't touched yet\n const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];\n const allCells = cell.row._getAllCellsByColumnId();\n\n cellsToActOn.forEach(accessor => {\n if (validationErrors[accessor]) {\n nextCellErrors[accessor] = validationErrors[accessor];\n // don't show move indicator for cells with errors, they aren't valid and can't be saved\n delete nextMoveReasons[accessor];\n } else {\n // there isn't any error in this run, remove any error set in state\n delete nextCellErrors[accessor];\n\n if (allCells[accessor]?.column.getIsSorted()) {\n // run row move determination\n const reason = willRowMove(cell, nextChanges[accessor], rowIndex, localization);\n\n // if the row will move based on this change save why, otherwise delete any existing state\n if (reason) {\n nextMoveReasons[accessor] = reason;\n } else {\n delete nextMoveReasons[accessor];\n }\n }\n }\n });\n\n dispatch({\n type: 'updateRow',\n rowId: cell.row.id,\n payload: {\n cellErrors: nextCellErrors,\n index: rowIndex,\n moveReasons: nextMoveReasons,\n value: nextChanges,\n original,\n },\n });\n }\n\n async function forceValidate<T extends TType>(table: ReactTable<T>) {\n if (validator && table.getRowModel().rows.length) {\n const newState: EditingState<TType> = { ...state };\n const returnIds: string[] = [];\n\n await Promise.all(\n table.getRowModel().rows.map(async (row, index) => {\n const rowWithChanges = { ...row.original, ...state.changes.rows[row.id] };\n\n if (rowWithChanges) {\n const cellErrors = await validator(rowWithChanges);\n\n if (cellErrors) {\n // prep row (it might be new or it might have changes already)\n newState.changes.dirty[row.id] = true;\n newState.changes.originals[row.id] = row.original;\n newState.changes.moveReasons[row.id] = { ...newState.changes.moveReasons[row.id] };\n newState.changes.rows[row.id] = { ...newState.changes.rows[row.id] };\n newState.statuses[row.id] = 'errored';\n newState.indexes[row.id] = index;\n\n newState.changes.errors[row.id] = {\n cells: cellErrors,\n row: newState.changes.errors[row.id]?.row ?? undefined,\n shouldShowErrorAlert: newState.changes.errors[row.id]?.shouldShowErrorAlert ?? false,\n } as EditingError;\n\n const rowChanges = newState.changes.rows[row.id];\n\n // ensure each errored cell actually has a change\n Object.keys(cellErrors).forEach(columnId => {\n if (rowChanges !== undefined) {\n rowChanges[columnId as keyof TType] = rowWithChanges[columnId as keyof TType];\n }\n });\n\n returnIds.push(row.id);\n }\n }\n })\n );\n\n dispatch({\n type: 'forceValidate',\n payload: {\n newState,\n },\n });\n\n return returnIds;\n }\n\n return [];\n }\n\n // general\n function getErrors() {\n return Object.keys(state.changes.errors);\n }\n\n function getErrorsShownInAlert<T extends TType>() {\n const rowsWithErrors = getErrors();\n\n if (!rowsWithErrors.length) {\n return [];\n }\n\n return rowsWithErrors\n .filter(rowId => hasRowErrorsShownInAlert(rowId))\n .map(rowId => ({\n rowId,\n index: state.indexes[rowId],\n changes: state.changes.rows[rowId] as EditingChangeset<T>,\n // hasRowErrorsShownInAlert already guarantees errors is defined; the cast narrows the type\n errors: state.changes.errors[rowId] as EditingError,\n }));\n }\n\n function hasSaved() {\n return !!Object.values(state.statuses).filter(status => status === 'saved').length;\n }\n\n function hasChanges(rowId?: string) {\n return rowId ? !!state.changes.rows[rowId] : !!Object.keys(state.changes.rows).length;\n }\n\n async function saveChanges<T extends TType>(table: ReactTable<T>, rowId: string | undefined = undefined): Promise<boolean> {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const state = tableMeta.editing.getState();\n\n if (!handleSave) {\n // oxlint-disable-next-line no-console\n console.warn('Tried to save, but Table has no onEditingSave handler');\n return false;\n }\n\n // sometimes we only want to save one row\n const changes = rowId ? { [rowId]: state.changes.rows[rowId] } : state.changes.rows;\n\n let completed = true;\n\n for (const rowId of Object.keys(changes)) {\n if (!state.changes.dirty[rowId]) {\n discardChanges(rowId, table);\n continue;\n }\n\n const status = getRowStatus(rowId);\n\n try {\n const rowChanges = JSON.parse(JSON.stringify(changes[rowId] ?? {}));\n\n // don't try to save if - already saving, or there are known errors\n if (!Object.keys(rowChanges).length || status === 'saving' || status === 'errored') {\n continue;\n }\n\n setRowStatus(rowId, 'saving');\n\n const changeSet = { ...(state.changes.originals[rowId] as object), ...rowChanges };\n\n // if we had to create a temporary id, delete it first - it's our data, not theirs\n if (isTemporaryRow(changeSet[rowIdentityAccessor as string])) {\n delete changeSet[rowIdentityAccessor];\n }\n\n // re-run validation, maybe a cell is already invalid but has never been blurred\n if (validator) {\n // oxlint-disable-next-line no-await-in-loop\n const errors = await validator(changeSet);\n\n if (errors && Object.keys(errors).length) {\n throw errors;\n }\n }\n\n // send new data to the server\n // oxlint-disable-next-line no-await-in-loop\n await handleSave(changeSet);\n\n complete(rowId, table, rowChanges);\n showSavedStatus(rowId);\n } catch (error) {\n if (error instanceof ReferenceError || error instanceof TypeError || (error as any)?.response?.status >= 500) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n\n // the onEditingSave handler should throw errors when something fails, e.g. validation, network errors etc\n // this code handles those errors and maps them either to row errors or cell specific errors\n let rowError: string | undefined;\n let cellErrors;\n\n if (typeof error === 'string') {\n rowError = error;\n } else if (error instanceof Error) {\n rowError = error.message;\n\n // most of our apis return error objects within this shape\n if (typeof (error as any).response?.data === 'object') {\n cellErrors = (error as any).response?.data;\n }\n } else if (typeof error === 'object') {\n cellErrors = error;\n }\n\n if (rowError || cellErrors) {\n dispatch({\n type: 'setRowErrors',\n rowId,\n payload: {\n row: rowError,\n cells: cellErrors,\n shouldShowErrorAlert: true,\n },\n });\n }\n\n setRowStatus(rowId, 'errored');\n completed = false;\n }\n }\n\n return completed;\n }\n\n async function discardChanges<T extends TType>(rowId: string, table: ReactTable<T>) {\n // remove any new rows from pinned state before discarding them\n if (rowId.startsWith(TEMPORARY_ROW_ID_PREFIX)) {\n table.resetRowPinning(true);\n }\n\n dispatch({\n type: 'removeRow',\n rowId,\n payload: { rowIdentityAccessor },\n });\n\n if (typeof handleDiscard === 'function') {\n await handleDiscard();\n }\n }\n\n function complete<T extends TType>(rowId: string, table: ReactTable<T>, changes: Partial<T>) {\n const handleDiscard = async () => {\n await discardChanges(rowId, table);\n };\n\n dispatch({\n type: 'complete',\n rowId,\n payload: { rowIdentityAccessor, changes, handleDiscard },\n });\n }\n\n function getState() {\n return state;\n }\n\n return {\n getState,\n // row\n getRowValue,\n getRowMoveReason,\n hasRowErrors,\n hasRowErrorsShownInAlert,\n hasTemporaryRowErrors,\n getRowStatus,\n setRowStatus,\n forceValidate,\n // cells\n setCellValue,\n getCellValue,\n getCellError,\n onCellChanged,\n // general\n getErrors,\n getErrorsShownInAlert,\n hasChanges,\n saveChanges,\n discardChanges,\n hasSaved,\n // new rows\n insertTemporaryRow,\n temporaryRows: state.temporaryRows,\n isDirty: hasChanges() || state.temporaryRows.length > 0,\n };\n}\n"],"names":["React","state","rowId","handleDiscard"],"mappings":"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"}
@@ -40,8 +40,8 @@ export type Table3WithEditingProps<TType = unknown> = {
40
40
  onEditingSave: Table3EditingSaveHandler<TType>;
41
41
  rowIdentityAccessor: keyof TType;
42
42
  } & Table3CommonProps<TType>;
43
- export type Table3WithEditingWithClientProps<TType = unknown> = {} & Table3WithEditingProps<TType> & Omit<TableClientProps<TType>, 'rowIdentityAccessor'>;
44
- export type Table3WithEditingWithServerProps<TType = unknown> = {} & Table3WithEditingProps<TType> & Omit<TableServerProps<TType>, 'rowIdentityAccessor'>;
43
+ export type Table3WithEditingWithClientProps<TType = unknown> = unknown & Table3WithEditingProps<TType> & Omit<TableClientProps<TType>, 'rowIdentityAccessor'>;
44
+ export type Table3WithEditingWithServerProps<TType = unknown> = unknown & Table3WithEditingProps<TType> & Omit<TableServerProps<TType>, 'rowIdentityAccessor'>;
45
45
  export type Table3Props<TType = unknown> = Table3WithoutEditingWithClientProps<TType> | Table3WithoutEditingWithServerProps<TType> | Table3WithEditingWithClientProps<TType> | Table3WithEditingWithServerProps<TType>;
46
46
  export type Table3ColumnProps<TType = unknown> = TableColumnProps<TType>;
47
47
  export type Table3GroupProps = TableGroupProps;
@@ -33,7 +33,7 @@ function useTable3(props, ref) {
33
33
  return (props.data ?? []).concat(editing.temporaryRows);
34
34
  }
35
35
  return props.data;
36
- }, [JSON.stringify(props.data), editing.temporaryRows.length]);
36
+ }, [props.data, editing.temporaryRows.length]);
37
37
  const extendedProps = {
38
38
  ...props,
39
39
  data,
@@ -42,7 +42,6 @@ function useTable3(props, ref) {
42
42
  rowActions: editing.isEditing ? (props.rowActions ?? []).concat(
43
43
  // Only add editing actions if showEditingActions is explicitly set to true
44
44
  props.showEditingActions === true ? [
45
- // Note: helpers includes internal rowId and table properties not in the public type, that is why "any" is used
46
45
  (_1, helpers) => /* @__PURE__ */ React.createElement(
47
46
  IconButton.LegacyIconButton,
48
47
  {
@@ -74,6 +73,7 @@ function useTable3(props, ref) {
74
73
  )
75
74
  }
76
75
  )
76
+ // Cast: these renderers read the internal rowId/table helpers, which are not on the public renderer type
77
77
  ] : []
78
78
  ) : props.rowActions
79
79
  };
@@ -87,8 +87,9 @@ function useTable3(props, ref) {
87
87
  }, []);
88
88
  useTableEditingListener.useTableEditingListener(table.instance, table.ref, table.renderer.scrollToIndex);
89
89
  React.useEffect(() => {
90
- if (table.ref.current) {
91
- const instance = table.ref.current.instance;
90
+ const tableRef = table.ref.current;
91
+ if (tableRef) {
92
+ const instance = tableRef.instance;
92
93
  if (table.meta.editing.isEnabled) {
93
94
  instance.editing = {
94
95
  toggleEditing,
@@ -102,8 +103,9 @@ function useTable3(props, ref) {
102
103
  }
103
104
  }, [table.ref.current, table.meta.editing.isEnabled]);
104
105
  React.useEffect(() => {
105
- if (table.ref.current) {
106
- const instance = table.ref.current.instance;
106
+ const tableRef = table.ref.current;
107
+ if (tableRef) {
108
+ const instance = tableRef.instance;
107
109
  if (table.meta.editing.isEnabled && instance.editing) {
108
110
  instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);
109
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTable3.cjs","sources":["../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import type { RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport { useTable } from '@/primitives/Table/Core/useTable';\nimport type { TableProps } from '@/primitives/Table/types';\n\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { DiscardChangesConfirmationDialog } from './components/Editing/DiscardChangesConfirmationDialog';\nimport { Row } from './components/Row/Row';\nimport { useTableEditing } from './features/useTableEditing';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport type { Table3Props, Table3Ref } from './types';\n\nexport const RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n // oxlint-disable-next-line no-unused-vars, typescript/consistent-type-definitions -- module augmentation requires interface (declaration merging)\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { texts } = useLocalization();\n const editing = useTableEditing(\n props.enableEditing,\n props.defaultToggleEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.onEditingDiscard,\n props.rowIdentityAccessor,\n props.validator,\n props.showEditingActions,\n props.onEvent\n );\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [JSON.stringify(props.data), editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing && props.showEditingActions ? true : props.enableRowActions,\n // While editing, only show editing actions (and their menu) when showEditingActions is true\n rowActions: editing.isEditing\n ? (props.rowActions ?? []).concat(\n // Only add editing actions if showEditingActions is explicitly set to true\n props.showEditingActions === true\n ? [\n // Note: helpers includes internal rowId and table properties not in the public type, that is why \"any\" is used\n (_1, helpers: any) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.save}\n icon=\"tick\"\n disabled={!editing.hasChanges(helpers.rowId) || editing.hasRowErrors(helpers.rowId)}\n onClick={async () => {\n await editing.saveChanges(helpers.table, helpers.rowId);\n }}\n />\n ),\n (_1, helpers: any) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.clear}\n icon=\"close\"\n disabled={!editing.hasChanges(helpers.rowId)}\n dialog={props => (\n <DiscardChangesConfirmationDialog\n {...props}\n onDiscard={() => {\n editing.discardChanges(helpers.rowId, helpers.table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n />\n )}\n />\n ),\n ]\n : []\n )\n : props.rowActions,\n };\n\n const meta = { editing };\n\n // Cast to TableProps: Table3Props adds editing-specific props on top of TableProps.\n // useTable only needs the base TableProps.\n const table = useTable<TType, Table3Meta>(extendedProps as TableProps<TType>, ref, RENDERERS, meta);\n\n const toggleEditing = (enabled: boolean | undefined) =>\n table.meta.editing.toggleEditing(enabled ?? (editing => !editing), table.instance, table.renderer.scrollToIndex);\n\n // editing state is set earlier, but toggleEditing does other things like sets the active row\n React.useEffect(() => {\n if (props.defaultToggleEditing) {\n toggleEditing(true);\n }\n }, []);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\n\n React.useEffect(() => {\n if (table.ref.current) {\n const instance = (table.ref.current as Table3Ref).instance;\n\n if (table.meta.editing.isEnabled) {\n instance.editing = {\n toggleEditing,\n removeRowChanges: (rowId: string) => table.meta.editing.discardChanges(rowId, table.instance),\n save: (rowId?: string) => table.meta.editing.saveChanges(table.instance, rowId),\n };\n\n if (props.onEditingCreate && instance.editing) {\n instance.editing.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, row as Partial<TType>);\n }\n }\n }\n }, [table.ref.current, table.meta.editing.isEnabled]);\n\n React.useEffect(() => {\n if (table.ref.current) {\n const instance = (table.ref.current as Table3Ref).instance;\n\n if (table.meta.editing.isEnabled && instance.editing) {\n instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);\n }\n }\n }, [table.meta.editing.forceValidate]);\n\n useLazyEffect(() => {\n if (editing.isEnabled && props.onHasChanges) {\n props.onHasChanges(editing.isDirty);\n }\n }, [editing.isEnabled, editing.isDirty, props.onHasChanges]);\n\n return table;\n}\n"],"names":["Row","Cell","useLocalization","useTableEditing","LegacyIconButton","props","DiscardChangesConfirmationDialog","useTable","editing","useTableEditingListener","useLazyEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useTable3.cjs","sources":["../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import type { RowData, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport { useTable } from '@/primitives/Table/Core/useTable';\nimport type { TableProps, TableRowActionRenderer } from '@/primitives/Table/types';\n\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { DiscardChangesConfirmationDialog } from './components/Editing/DiscardChangesConfirmationDialog';\nimport { Row } from './components/Row/Row';\nimport { useTableEditing } from './features/useTableEditing';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport type { Table3Props, Table3Ref } from './types';\n\nexport const RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n // oxlint-disable-next-line no-unused-vars, typescript/consistent-type-definitions -- module augmentation requires interface (declaration merging)\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\n// helpers includes internal rowId and table properties that are intentionally kept off the public type\ntype Table3RowActionHelpers<TType> = Parameters<TableRowActionRenderer<TType>>[1] & {\n rowId: string;\n table: ReactTable<TType>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { texts } = useLocalization();\n const editing = useTableEditing(\n props.enableEditing,\n props.defaultToggleEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.onEditingDiscard,\n props.rowIdentityAccessor,\n props.validator,\n props.showEditingActions,\n props.onEvent\n );\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [props.data, editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing && props.showEditingActions ? true : props.enableRowActions,\n // While editing, only show editing actions (and their menu) when showEditingActions is true\n rowActions: editing.isEditing\n ? (props.rowActions ?? []).concat(\n // Only add editing actions if showEditingActions is explicitly set to true\n props.showEditingActions === true\n ? ([\n (_1, helpers: Table3RowActionHelpers<TType>) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.save}\n icon=\"tick\"\n disabled={!editing.hasChanges(helpers.rowId) || editing.hasRowErrors(helpers.rowId)}\n onClick={async () => {\n await editing.saveChanges(helpers.table, helpers.rowId);\n }}\n />\n ),\n (_1, helpers: Table3RowActionHelpers<TType>) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.clear}\n icon=\"close\"\n disabled={!editing.hasChanges(helpers.rowId)}\n dialog={props => (\n <DiscardChangesConfirmationDialog\n {...props}\n onDiscard={() => {\n editing.discardChanges(helpers.rowId, helpers.table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n />\n )}\n />\n ),\n // Cast: these renderers read the internal rowId/table helpers, which are not on the public renderer type\n ] as TableRowActionRenderer<TType>[])\n : []\n )\n : props.rowActions,\n };\n\n const meta = { editing };\n\n // Cast to TableProps: Table3Props adds editing-specific props on top of TableProps.\n // useTable only needs the base TableProps.\n const table = useTable<TType, Table3Meta>(extendedProps as TableProps<TType>, ref, RENDERERS, meta);\n\n const toggleEditing = (enabled: boolean | undefined) =>\n table.meta.editing.toggleEditing(enabled ?? (editing => !editing), table.instance, table.renderer.scrollToIndex);\n\n // editing state is set earlier, but toggleEditing does other things like sets the active row\n React.useEffect(() => {\n if (props.defaultToggleEditing) {\n toggleEditing(true);\n }\n }, []);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\n\n React.useEffect(() => {\n const tableRef = table.ref.current as Table3Ref | null;\n\n if (tableRef) {\n const instance = tableRef.instance;\n\n if (table.meta.editing.isEnabled) {\n instance.editing = {\n toggleEditing,\n removeRowChanges: (rowId: string) => table.meta.editing.discardChanges(rowId, table.instance),\n save: (rowId?: string) => table.meta.editing.saveChanges(table.instance, rowId),\n };\n\n if (props.onEditingCreate && instance.editing) {\n instance.editing.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, row as Partial<TType>);\n }\n }\n }\n }, [table.ref.current, table.meta.editing.isEnabled]);\n\n React.useEffect(() => {\n const tableRef = table.ref.current as Table3Ref | null;\n\n if (tableRef) {\n const instance = tableRef.instance;\n\n if (table.meta.editing.isEnabled && instance.editing) {\n instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);\n }\n }\n }, [table.meta.editing.forceValidate]);\n\n useLazyEffect(() => {\n if (editing.isEnabled && props.onHasChanges) {\n props.onHasChanges(editing.isDirty);\n }\n }, [editing.isEnabled, editing.isDirty, props.onHasChanges]);\n\n return table;\n}\n"],"names":["Row","Cell","useLocalization","useTableEditing","LegacyIconButton","props","DiscardChangesConfirmationDialog","useTable","editing","useTableEditingListener","useLazyEffect"],"mappings":"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"}
@@ -31,7 +31,7 @@ function useTable3(props, ref) {
31
31
  return (props.data ?? []).concat(editing.temporaryRows);
32
32
  }
33
33
  return props.data;
34
- }, [JSON.stringify(props.data), editing.temporaryRows.length]);
34
+ }, [props.data, editing.temporaryRows.length]);
35
35
  const extendedProps = {
36
36
  ...props,
37
37
  data,
@@ -40,7 +40,6 @@ function useTable3(props, ref) {
40
40
  rowActions: editing.isEditing ? (props.rowActions ?? []).concat(
41
41
  // Only add editing actions if showEditingActions is explicitly set to true
42
42
  props.showEditingActions === true ? [
43
- // Note: helpers includes internal rowId and table properties not in the public type, that is why "any" is used
44
43
  (_1, helpers) => /* @__PURE__ */ React__default.createElement(
45
44
  LegacyIconButton,
46
45
  {
@@ -72,6 +71,7 @@ function useTable3(props, ref) {
72
71
  )
73
72
  }
74
73
  )
74
+ // Cast: these renderers read the internal rowId/table helpers, which are not on the public renderer type
75
75
  ] : []
76
76
  ) : props.rowActions
77
77
  };
@@ -85,8 +85,9 @@ function useTable3(props, ref) {
85
85
  }, []);
86
86
  useTableEditingListener(table.instance, table.ref, table.renderer.scrollToIndex);
87
87
  React__default.useEffect(() => {
88
- if (table.ref.current) {
89
- const instance = table.ref.current.instance;
88
+ const tableRef = table.ref.current;
89
+ if (tableRef) {
90
+ const instance = tableRef.instance;
90
91
  if (table.meta.editing.isEnabled) {
91
92
  instance.editing = {
92
93
  toggleEditing,
@@ -100,8 +101,9 @@ function useTable3(props, ref) {
100
101
  }
101
102
  }, [table.ref.current, table.meta.editing.isEnabled]);
102
103
  React__default.useEffect(() => {
103
- if (table.ref.current) {
104
- const instance = table.ref.current.instance;
104
+ const tableRef = table.ref.current;
105
+ if (tableRef) {
106
+ const instance = tableRef.instance;
105
107
  if (table.meta.editing.isEnabled && instance.editing) {
106
108
  instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);
107
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useTable3.js","sources":["../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import type { RowData } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport { useTable } from '@/primitives/Table/Core/useTable';\nimport type { TableProps } from '@/primitives/Table/types';\n\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { DiscardChangesConfirmationDialog } from './components/Editing/DiscardChangesConfirmationDialog';\nimport { Row } from './components/Row/Row';\nimport { useTableEditing } from './features/useTableEditing';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport type { Table3Props, Table3Ref } from './types';\n\nexport const RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n // oxlint-disable-next-line no-unused-vars, typescript/consistent-type-definitions -- module augmentation requires interface (declaration merging)\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { texts } = useLocalization();\n const editing = useTableEditing(\n props.enableEditing,\n props.defaultToggleEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.onEditingDiscard,\n props.rowIdentityAccessor,\n props.validator,\n props.showEditingActions,\n props.onEvent\n );\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [JSON.stringify(props.data), editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing && props.showEditingActions ? true : props.enableRowActions,\n // While editing, only show editing actions (and their menu) when showEditingActions is true\n rowActions: editing.isEditing\n ? (props.rowActions ?? []).concat(\n // Only add editing actions if showEditingActions is explicitly set to true\n props.showEditingActions === true\n ? [\n // Note: helpers includes internal rowId and table properties not in the public type, that is why \"any\" is used\n (_1, helpers: any) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.save}\n icon=\"tick\"\n disabled={!editing.hasChanges(helpers.rowId) || editing.hasRowErrors(helpers.rowId)}\n onClick={async () => {\n await editing.saveChanges(helpers.table, helpers.rowId);\n }}\n />\n ),\n (_1, helpers: any) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.clear}\n icon=\"close\"\n disabled={!editing.hasChanges(helpers.rowId)}\n dialog={props => (\n <DiscardChangesConfirmationDialog\n {...props}\n onDiscard={() => {\n editing.discardChanges(helpers.rowId, helpers.table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n />\n )}\n />\n ),\n ]\n : []\n )\n : props.rowActions,\n };\n\n const meta = { editing };\n\n // Cast to TableProps: Table3Props adds editing-specific props on top of TableProps.\n // useTable only needs the base TableProps.\n const table = useTable<TType, Table3Meta>(extendedProps as TableProps<TType>, ref, RENDERERS, meta);\n\n const toggleEditing = (enabled: boolean | undefined) =>\n table.meta.editing.toggleEditing(enabled ?? (editing => !editing), table.instance, table.renderer.scrollToIndex);\n\n // editing state is set earlier, but toggleEditing does other things like sets the active row\n React.useEffect(() => {\n if (props.defaultToggleEditing) {\n toggleEditing(true);\n }\n }, []);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\n\n React.useEffect(() => {\n if (table.ref.current) {\n const instance = (table.ref.current as Table3Ref).instance;\n\n if (table.meta.editing.isEnabled) {\n instance.editing = {\n toggleEditing,\n removeRowChanges: (rowId: string) => table.meta.editing.discardChanges(rowId, table.instance),\n save: (rowId?: string) => table.meta.editing.saveChanges(table.instance, rowId),\n };\n\n if (props.onEditingCreate && instance.editing) {\n instance.editing.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, row as Partial<TType>);\n }\n }\n }\n }, [table.ref.current, table.meta.editing.isEnabled]);\n\n React.useEffect(() => {\n if (table.ref.current) {\n const instance = (table.ref.current as Table3Ref).instance;\n\n if (table.meta.editing.isEnabled && instance.editing) {\n instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);\n }\n }\n }, [table.meta.editing.forceValidate]);\n\n useLazyEffect(() => {\n if (editing.isEnabled && props.onHasChanges) {\n props.onHasChanges(editing.isDirty);\n }\n }, [editing.isEnabled, editing.isDirty, props.onHasChanges]);\n\n return table;\n}\n"],"names":["React","props","editing"],"mappings":"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"}
1
+ {"version":3,"file":"useTable3.js","sources":["../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import type { RowData, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport { useTable } from '@/primitives/Table/Core/useTable';\nimport type { TableProps, TableRowActionRenderer } from '@/primitives/Table/types';\n\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { DiscardChangesConfirmationDialog } from './components/Editing/DiscardChangesConfirmationDialog';\nimport { Row } from './components/Row/Row';\nimport { useTableEditing } from './features/useTableEditing';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport type { Table3Props, Table3Ref } from './types';\n\nexport const RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n // oxlint-disable-next-line no-unused-vars, typescript/consistent-type-definitions -- module augmentation requires interface (declaration merging)\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\n// helpers includes internal rowId and table properties that are intentionally kept off the public type\ntype Table3RowActionHelpers<TType> = Parameters<TableRowActionRenderer<TType>>[1] & {\n rowId: string;\n table: ReactTable<TType>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const { texts } = useLocalization();\n const editing = useTableEditing(\n props.enableEditing,\n props.defaultToggleEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.onEditingDiscard,\n props.rowIdentityAccessor,\n props.validator,\n props.showEditingActions,\n props.onEvent\n );\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [props.data, editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing && props.showEditingActions ? true : props.enableRowActions,\n // While editing, only show editing actions (and their menu) when showEditingActions is true\n rowActions: editing.isEditing\n ? (props.rowActions ?? []).concat(\n // Only add editing actions if showEditingActions is explicitly set to true\n props.showEditingActions === true\n ? ([\n (_1, helpers: Table3RowActionHelpers<TType>) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.save}\n icon=\"tick\"\n disabled={!editing.hasChanges(helpers.rowId) || editing.hasRowErrors(helpers.rowId)}\n onClick={async () => {\n await editing.saveChanges(helpers.table, helpers.rowId);\n }}\n />\n ),\n (_1, helpers: Table3RowActionHelpers<TType>) => (\n <LegacyIconButton\n aria-label={texts.table3.editing.actions.clear}\n icon=\"close\"\n disabled={!editing.hasChanges(helpers.rowId)}\n dialog={props => (\n <DiscardChangesConfirmationDialog\n {...props}\n onDiscard={() => {\n editing.discardChanges(helpers.rowId, helpers.table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n />\n )}\n />\n ),\n // Cast: these renderers read the internal rowId/table helpers, which are not on the public renderer type\n ] as TableRowActionRenderer<TType>[])\n : []\n )\n : props.rowActions,\n };\n\n const meta = { editing };\n\n // Cast to TableProps: Table3Props adds editing-specific props on top of TableProps.\n // useTable only needs the base TableProps.\n const table = useTable<TType, Table3Meta>(extendedProps as TableProps<TType>, ref, RENDERERS, meta);\n\n const toggleEditing = (enabled: boolean | undefined) =>\n table.meta.editing.toggleEditing(enabled ?? (editing => !editing), table.instance, table.renderer.scrollToIndex);\n\n // editing state is set earlier, but toggleEditing does other things like sets the active row\n React.useEffect(() => {\n if (props.defaultToggleEditing) {\n toggleEditing(true);\n }\n }, []);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\n\n React.useEffect(() => {\n const tableRef = table.ref.current as Table3Ref | null;\n\n if (tableRef) {\n const instance = tableRef.instance;\n\n if (table.meta.editing.isEnabled) {\n instance.editing = {\n toggleEditing,\n removeRowChanges: (rowId: string) => table.meta.editing.discardChanges(rowId, table.instance),\n save: (rowId?: string) => table.meta.editing.saveChanges(table.instance, rowId),\n };\n\n if (props.onEditingCreate && instance.editing) {\n instance.editing.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, row as Partial<TType>);\n }\n }\n }\n }, [table.ref.current, table.meta.editing.isEnabled]);\n\n React.useEffect(() => {\n const tableRef = table.ref.current as Table3Ref | null;\n\n if (tableRef) {\n const instance = tableRef.instance;\n\n if (table.meta.editing.isEnabled && instance.editing) {\n instance.editing.forceValidate = async () => await table.meta.editing.forceValidate(table.instance);\n }\n }\n }, [table.meta.editing.forceValidate]);\n\n useLazyEffect(() => {\n if (editing.isEnabled && props.onHasChanges) {\n props.onHasChanges(editing.isDirty);\n }\n }, [editing.isEnabled, editing.isDirty, props.onHasChanges]);\n\n return table;\n}\n"],"names":["React","props","editing"],"mappings":"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"}
@@ -96,7 +96,7 @@ function isTemporaryRow(rowId) {
96
96
  const shortcut = { key: "e", meta: true, shift: false };
97
97
  function isTableScrolled(ref) {
98
98
  if (ref.current) {
99
- const height = Number.parseFloat(ref.current?.querySelector("tbody")?.style.height || "0") + Number.parseFloat(ref.current?.querySelector("tbody")?.style.paddingBottom || "0");
99
+ const height = Number(ref.current?.querySelector("tbody")?.style.height || "0") + Number(ref.current?.querySelector("tbody")?.style.paddingBottom || "0");
100
100
  const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;
101
101
  return [hasVerticalScrollbar, height > ref.current.scrollHeight];
102
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editing.cjs","sources":["../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import type { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\nimport type { TableFilterValue, TableRef } from '@/primitives/Table/types';\nimport { columnFilterFn } from '@/primitives/Table/useTableManager/util/filtering';\nimport { globalFilterFn } from '@/primitives/Table/useTableManager/util/search';\n\nexport function willRowMove<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n rowIndex: number,\n localization: Localization\n) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table, localization)) {\n return 'search';\n }\n\n if (willRowMoveAfterFilter<TType>(cell, change, localization)) {\n return 'filter';\n }\n\n if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>,\n localization: Localization\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery, localization);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n localization: Localization\n) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(\n cell.row.original,\n change,\n cell.column.columnDef.meta,\n cell.column.getFilterValue() as TableFilterValue,\n localization\n );\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n const previous = rows[rowIndex - 1];\n\n if (previous) {\n miniSortRows.unshift(previous);\n index = 1;\n }\n }\n\n if (rowIndex < rows.length - 1) {\n const next = rows[rowIndex + 1];\n\n if (next) {\n miniSortRows.push(next);\n }\n }\n\n const resortedRows = [...miniSortRows].sort((rowA, rowB) => {\n const sortFn = cell.column.getSortingFn();\n const sortUndefined = cell.column.columnDef.sortUndefined;\n\n if (!table.options.manualSorting && sortUndefined) {\n const aValue = rowA.getValue(cell.column.id);\n const bValue = rowB.getValue(cell.column.id);\n\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n\n return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n\n return sortFn(rowA, rowB, cell.column.id);\n });\n\n if (cell.column.getIsSorted() === 'desc') {\n resortedRows.reverse();\n }\n\n return resortedRows[index]?.id !== cell.row.id;\n}\n\nexport const TEMPORARY_ROW_ID_PREFIX = 'temp-';\n\nexport function isTemporaryRow(rowId: string | undefined) {\n if (rowId === undefined) {\n return false;\n }\n\n return String(rowId).startsWith(TEMPORARY_ROW_ID_PREFIX);\n}\n\nexport const shortcut = { key: 'e', meta: true, shift: false };\n\nexport function isTableScrolled(ref: React.RefObject<TableRef>): [boolean, boolean] {\n if (ref.current) {\n const height =\n Number.parseFloat(ref.current?.querySelector('tbody')?.style.height || '0') +\n Number.parseFloat(ref.current?.querySelector('tbody')?.style.paddingBottom || '0');\n\n const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;\n\n return [hasVerticalScrollbar, height > ref.current.scrollHeight];\n }\n\n return [false, false];\n}\n"],"names":["globalFilterFn","columnFilterFn"],"mappings":"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"}
1
+ {"version":3,"file":"editing.cjs","sources":["../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import type { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\nimport type { TableFilterValue, TableRef } from '@/primitives/Table/types';\nimport { columnFilterFn } from '@/primitives/Table/useTableManager/util/filtering';\nimport { globalFilterFn } from '@/primitives/Table/useTableManager/util/search';\n\nexport function willRowMove<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n rowIndex: number,\n localization: Localization\n) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table, localization)) {\n return 'search';\n }\n\n if (willRowMoveAfterFilter<TType>(cell, change, localization)) {\n return 'filter';\n }\n\n if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>,\n localization: Localization\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery, localization);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n localization: Localization\n) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(\n cell.row.original,\n change,\n cell.column.columnDef.meta,\n cell.column.getFilterValue() as TableFilterValue,\n localization\n );\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n const previous = rows[rowIndex - 1];\n\n if (previous) {\n miniSortRows.unshift(previous);\n index = 1;\n }\n }\n\n if (rowIndex < rows.length - 1) {\n const next = rows[rowIndex + 1];\n\n if (next) {\n miniSortRows.push(next);\n }\n }\n\n const resortedRows = [...miniSortRows].sort((rowA, rowB) => {\n const sortFn = cell.column.getSortingFn();\n const sortUndefined = cell.column.columnDef.sortUndefined;\n\n if (!table.options.manualSorting && sortUndefined) {\n const aValue = rowA.getValue(cell.column.id);\n const bValue = rowB.getValue(cell.column.id);\n\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n\n return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n\n return sortFn(rowA, rowB, cell.column.id);\n });\n\n if (cell.column.getIsSorted() === 'desc') {\n resortedRows.reverse();\n }\n\n return resortedRows[index]?.id !== cell.row.id;\n}\n\nexport const TEMPORARY_ROW_ID_PREFIX = 'temp-';\n\nexport function isTemporaryRow(rowId: string | undefined) {\n if (rowId === undefined) {\n return false;\n }\n\n return String(rowId).startsWith(TEMPORARY_ROW_ID_PREFIX);\n}\n\nexport const shortcut = { key: 'e', meta: true, shift: false };\n\nexport function isTableScrolled(ref: React.RefObject<TableRef | null>): [boolean, boolean] {\n if (ref.current) {\n const height =\n Number(ref.current?.querySelector('tbody')?.style.height || '0') +\n Number(ref.current?.querySelector('tbody')?.style.paddingBottom || '0');\n\n const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;\n\n return [hasVerticalScrollbar, height > ref.current.scrollHeight];\n }\n\n return [false, false];\n}\n"],"names":["globalFilterFn","columnFilterFn"],"mappings":"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"}
@@ -10,4 +10,4 @@ export declare const shortcut: {
10
10
  meta: boolean;
11
11
  shift: boolean;
12
12
  };
13
- export declare function isTableScrolled(ref: React.RefObject<TableRef>): [boolean, boolean];
13
+ export declare function isTableScrolled(ref: React.RefObject<TableRef | null>): [boolean, boolean];
@@ -94,7 +94,7 @@ function isTemporaryRow(rowId) {
94
94
  const shortcut = { key: "e", meta: true, shift: false };
95
95
  function isTableScrolled(ref) {
96
96
  if (ref.current) {
97
- const height = Number.parseFloat(ref.current?.querySelector("tbody")?.style.height || "0") + Number.parseFloat(ref.current?.querySelector("tbody")?.style.paddingBottom || "0");
97
+ const height = Number(ref.current?.querySelector("tbody")?.style.height || "0") + Number(ref.current?.querySelector("tbody")?.style.paddingBottom || "0");
98
98
  const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;
99
99
  return [hasVerticalScrollbar, height > ref.current.scrollHeight];
100
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editing.js","sources":["../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import type { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\nimport type { TableFilterValue, TableRef } from '@/primitives/Table/types';\nimport { columnFilterFn } from '@/primitives/Table/useTableManager/util/filtering';\nimport { globalFilterFn } from '@/primitives/Table/useTableManager/util/search';\n\nexport function willRowMove<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n rowIndex: number,\n localization: Localization\n) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table, localization)) {\n return 'search';\n }\n\n if (willRowMoveAfterFilter<TType>(cell, change, localization)) {\n return 'filter';\n }\n\n if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>,\n localization: Localization\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery, localization);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n localization: Localization\n) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(\n cell.row.original,\n change,\n cell.column.columnDef.meta,\n cell.column.getFilterValue() as TableFilterValue,\n localization\n );\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n const previous = rows[rowIndex - 1];\n\n if (previous) {\n miniSortRows.unshift(previous);\n index = 1;\n }\n }\n\n if (rowIndex < rows.length - 1) {\n const next = rows[rowIndex + 1];\n\n if (next) {\n miniSortRows.push(next);\n }\n }\n\n const resortedRows = [...miniSortRows].sort((rowA, rowB) => {\n const sortFn = cell.column.getSortingFn();\n const sortUndefined = cell.column.columnDef.sortUndefined;\n\n if (!table.options.manualSorting && sortUndefined) {\n const aValue = rowA.getValue(cell.column.id);\n const bValue = rowB.getValue(cell.column.id);\n\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n\n return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n\n return sortFn(rowA, rowB, cell.column.id);\n });\n\n if (cell.column.getIsSorted() === 'desc') {\n resortedRows.reverse();\n }\n\n return resortedRows[index]?.id !== cell.row.id;\n}\n\nexport const TEMPORARY_ROW_ID_PREFIX = 'temp-';\n\nexport function isTemporaryRow(rowId: string | undefined) {\n if (rowId === undefined) {\n return false;\n }\n\n return String(rowId).startsWith(TEMPORARY_ROW_ID_PREFIX);\n}\n\nexport const shortcut = { key: 'e', meta: true, shift: false };\n\nexport function isTableScrolled(ref: React.RefObject<TableRef>): [boolean, boolean] {\n if (ref.current) {\n const height =\n Number.parseFloat(ref.current?.querySelector('tbody')?.style.height || '0') +\n Number.parseFloat(ref.current?.querySelector('tbody')?.style.paddingBottom || '0');\n\n const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;\n\n return [hasVerticalScrollbar, height > ref.current.scrollHeight];\n }\n\n return [false, false];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editing.js","sources":["../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import type { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\nimport type { TableFilterValue, TableRef } from '@/primitives/Table/types';\nimport { columnFilterFn } from '@/primitives/Table/useTableManager/util/filtering';\nimport { globalFilterFn } from '@/primitives/Table/useTableManager/util/search';\n\nexport function willRowMove<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n rowIndex: number,\n localization: Localization\n) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table, localization)) {\n return 'search';\n }\n\n if (willRowMoveAfterFilter<TType>(cell, change, localization)) {\n return 'filter';\n }\n\n if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>,\n localization: Localization\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery, localization);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n localization: Localization\n) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(\n cell.row.original,\n change,\n cell.column.columnDef.meta,\n cell.column.getFilterValue() as TableFilterValue,\n localization\n );\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n const previous = rows[rowIndex - 1];\n\n if (previous) {\n miniSortRows.unshift(previous);\n index = 1;\n }\n }\n\n if (rowIndex < rows.length - 1) {\n const next = rows[rowIndex + 1];\n\n if (next) {\n miniSortRows.push(next);\n }\n }\n\n const resortedRows = [...miniSortRows].sort((rowA, rowB) => {\n const sortFn = cell.column.getSortingFn();\n const sortUndefined = cell.column.columnDef.sortUndefined;\n\n if (!table.options.manualSorting && sortUndefined) {\n const aValue = rowA.getValue(cell.column.id);\n const bValue = rowB.getValue(cell.column.id);\n\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n\n return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n\n return sortFn(rowA, rowB, cell.column.id);\n });\n\n if (cell.column.getIsSorted() === 'desc') {\n resortedRows.reverse();\n }\n\n return resortedRows[index]?.id !== cell.row.id;\n}\n\nexport const TEMPORARY_ROW_ID_PREFIX = 'temp-';\n\nexport function isTemporaryRow(rowId: string | undefined) {\n if (rowId === undefined) {\n return false;\n }\n\n return String(rowId).startsWith(TEMPORARY_ROW_ID_PREFIX);\n}\n\nexport const shortcut = { key: 'e', meta: true, shift: false };\n\nexport function isTableScrolled(ref: React.RefObject<TableRef | null>): [boolean, boolean] {\n if (ref.current) {\n const height =\n Number(ref.current?.querySelector('tbody')?.style.height || '0') +\n Number(ref.current?.querySelector('tbody')?.style.paddingBottom || '0');\n\n const hasVerticalScrollbar = ref.current.scrollHeight > ref.current.clientHeight;\n\n return [hasVerticalScrollbar, height > ref.current.scrollHeight];\n }\n\n return [false, false];\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBoundaryOverflowDetection.cjs","sources":["../../src/hooks/useBoundaryOverflowDetection.ts"],"sourcesContent":["import React from 'react';\n\nimport { getIndexOfFirstChildOverflowingParent } from '@/utils/dom';\n\nimport { useBoundingClientRectListener } from './useBoundingClientRectListener';\n\nexport const useBoundaryOverflowDetection = (\n ref: React.RefObject<HTMLElement>,\n dependencies: any[] = []\n): number | null | undefined => {\n const [boundaryIndex, setBoundaryIndex] = React.useState<number | null>();\n const dimensions = useBoundingClientRectListener(ref, dependencies);\n\n React.useEffect(() => {\n if (ref.current) {\n const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);\n setBoundaryIndex(boundaryChildIndex);\n }\n }, [ref, dimensions?.width, ...dependencies]);\n\n return boundaryIndex;\n};\n"],"names":["useBoundingClientRectListener","getIndexOfFirstChildOverflowingParent"],"mappings":";;;;;AAMO,MAAM,+BAA+B,CACxC,KACA,eAAsB,OACM;AAC5B,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAA;AAChD,QAAM,aAAaA,8BAAAA,8BAA8B,KAAK,YAAY;AAElE,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,qBAAqBC,IAAAA,sCAAsC,IAAI,OAAO;AAC5E,uBAAiB,kBAAkB;AAAA,IACvC;AAAA,EACJ,GAAG,CAAC,KAAK,YAAY,OAAO,GAAG,YAAY,CAAC;AAE5C,SAAO;AACX;;"}
1
+ {"version":3,"file":"useBoundaryOverflowDetection.cjs","sources":["../../src/hooks/useBoundaryOverflowDetection.ts"],"sourcesContent":["import React from 'react';\n\nimport { getIndexOfFirstChildOverflowingParent } from '@/utils/dom';\n\nimport { useBoundingClientRectListener } from './useBoundingClientRectListener';\n\nexport const useBoundaryOverflowDetection = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies: unknown[] = []\n): number | null | undefined => {\n const [boundaryIndex, setBoundaryIndex] = React.useState<number | null>();\n const dimensions = useBoundingClientRectListener(ref, dependencies);\n\n React.useEffect(() => {\n if (ref.current) {\n const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);\n setBoundaryIndex(boundaryChildIndex);\n }\n }, [ref, dimensions?.width, ...dependencies]);\n\n return boundaryIndex;\n};\n"],"names":["useBoundingClientRectListener","getIndexOfFirstChildOverflowingParent"],"mappings":";;;;;AAMO,MAAM,+BAA+B,CACxC,KACA,eAA0B,OACE;AAC5B,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAA;AAChD,QAAM,aAAaA,8BAAAA,8BAA8B,KAAK,YAAY;AAElE,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,qBAAqBC,IAAAA,sCAAsC,IAAI,OAAO;AAC5E,uBAAiB,kBAAkB;AAAA,IACvC;AAAA,EACJ,GAAG,CAAC,KAAK,YAAY,OAAO,GAAG,YAAY,CAAC;AAE5C,SAAO;AACX;;"}
@@ -1,2 +1,2 @@
1
1
  import { default as React } from 'react';
2
- export declare const useBoundaryOverflowDetection: (ref: React.RefObject<HTMLElement>, dependencies?: any[]) => number | null | undefined;
2
+ export declare const useBoundaryOverflowDetection: (ref: React.RefObject<HTMLElement | null>, dependencies?: unknown[]) => number | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useBoundaryOverflowDetection.js","sources":["../../src/hooks/useBoundaryOverflowDetection.ts"],"sourcesContent":["import React from 'react';\n\nimport { getIndexOfFirstChildOverflowingParent } from '@/utils/dom';\n\nimport { useBoundingClientRectListener } from './useBoundingClientRectListener';\n\nexport const useBoundaryOverflowDetection = (\n ref: React.RefObject<HTMLElement>,\n dependencies: any[] = []\n): number | null | undefined => {\n const [boundaryIndex, setBoundaryIndex] = React.useState<number | null>();\n const dimensions = useBoundingClientRectListener(ref, dependencies);\n\n React.useEffect(() => {\n if (ref.current) {\n const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);\n setBoundaryIndex(boundaryChildIndex);\n }\n }, [ref, dimensions?.width, ...dependencies]);\n\n return boundaryIndex;\n};\n"],"names":["React"],"mappings":";;;AAMO,MAAM,+BAA+B,CACxC,KACA,eAAsB,OACM;AAC5B,QAAM,CAAC,eAAe,gBAAgB,IAAIA,eAAM,SAAA;AAChD,QAAM,aAAa,8BAA8B,KAAK,YAAY;AAElEA,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,qBAAqB,sCAAsC,IAAI,OAAO;AAC5E,uBAAiB,kBAAkB;AAAA,IACvC;AAAA,EACJ,GAAG,CAAC,KAAK,YAAY,OAAO,GAAG,YAAY,CAAC;AAE5C,SAAO;AACX;"}
1
+ {"version":3,"file":"useBoundaryOverflowDetection.js","sources":["../../src/hooks/useBoundaryOverflowDetection.ts"],"sourcesContent":["import React from 'react';\n\nimport { getIndexOfFirstChildOverflowingParent } from '@/utils/dom';\n\nimport { useBoundingClientRectListener } from './useBoundingClientRectListener';\n\nexport const useBoundaryOverflowDetection = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies: unknown[] = []\n): number | null | undefined => {\n const [boundaryIndex, setBoundaryIndex] = React.useState<number | null>();\n const dimensions = useBoundingClientRectListener(ref, dependencies);\n\n React.useEffect(() => {\n if (ref.current) {\n const boundaryChildIndex = getIndexOfFirstChildOverflowingParent(ref.current);\n setBoundaryIndex(boundaryChildIndex);\n }\n }, [ref, dimensions?.width, ...dependencies]);\n\n return boundaryIndex;\n};\n"],"names":["React"],"mappings":";;;AAMO,MAAM,+BAA+B,CACxC,KACA,eAA0B,OACE;AAC5B,QAAM,CAAC,eAAe,gBAAgB,IAAIA,eAAM,SAAA;AAChD,QAAM,aAAa,8BAA8B,KAAK,YAAY;AAElEA,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,qBAAqB,sCAAsC,IAAI,OAAO;AAC5E,uBAAiB,kBAAkB;AAAA,IACvC;AAAA,EACJ,GAAG,CAAC,KAAK,YAAY,OAAO,GAAG,YAAY,CAAC;AAE5C,SAAO;AACX;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBoundingClientRectListener.cjs","sources":["../../src/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { debounce } from '@/utils/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies?: Array<any>\n): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n React.useEffect(() => {\n if (dependencies) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n }, dependencies);\n\n return dimensions;\n};\n"],"names":["React","debounce"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,gBAAgB,CAAC,YACnB,QAAQ,YAAY,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,eAAA,EAAiB,OAAO;AAEhG,MAAM,gCAAgC,CACzC,KACA,iBAC8B;AAC9B,QAAM,CAAC,YAAY,aAAa,IAAIA,iBAAM,SAAsC,MAAS;AACzF,QAAM,sBAAsB,cAAc,IAAI,OAAO;AACrD,QAAM,CAAC,YAAY,aAAa,IAAIA,iBAAM,SAAS,mBAAmB;AAEtE,QAAM,SAAS,MAAM;AACjB,QAAI,YAAY;AACZ,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ;AAEAA,mBAAM,UAAU,MAAM;AAClB,UAAM,UAAU,WAAW,QAAQ,CAAC;AACpC,UAAM,kBAAkBC,SAAAA,SAAS,QAAQ,GAAG;AAE5C,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,mBAAa,OAAO;AACpB,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC;AAE5BD,mBAAM,UAAU,MAAM;AAClB,UAAM,0BAA0B,cAAc,IAAI,OAAO;AAEzD,QAAI,eAAe,yBAAyB;AAIxC,oBAAc,uBAAuB;AAAA,IACzC;AAAA,EACJ,CAAC;AAEDA,mBAAM,UAAU,MAAM;AAClB,QAAI,cAAc;AACd,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ,GAAG,YAAY;AAEf,SAAO;AACX;;"}
1
+ {"version":3,"file":"useBoundingClientRectListener.cjs","sources":["../../src/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { debounce } from '@/utils/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies?: Array<unknown>\n): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n React.useEffect(() => {\n if (dependencies) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n }, dependencies);\n\n return dimensions;\n};\n"],"names":["React","debounce"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,gBAAgB,CAAC,YACnB,QAAQ,YAAY,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,eAAA,EAAiB,OAAO;AAEhG,MAAM,gCAAgC,CACzC,KACA,iBAC8B;AAC9B,QAAM,CAAC,YAAY,aAAa,IAAIA,iBAAM,SAAsC,MAAS;AACzF,QAAM,sBAAsB,cAAc,IAAI,OAAO;AACrD,QAAM,CAAC,YAAY,aAAa,IAAIA,iBAAM,SAAS,mBAAmB;AAEtE,QAAM,SAAS,MAAM;AACjB,QAAI,YAAY;AACZ,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ;AAEAA,mBAAM,UAAU,MAAM;AAClB,UAAM,UAAU,WAAW,QAAQ,CAAC;AACpC,UAAM,kBAAkBC,SAAAA,SAAS,QAAQ,GAAG;AAE5C,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,mBAAa,OAAO;AACpB,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC;AAE5BD,mBAAM,UAAU,MAAM;AAClB,UAAM,0BAA0B,cAAc,IAAI,OAAO;AAEzD,QAAI,eAAe,yBAAyB;AAIxC,oBAAc,uBAAuB;AAAA,IACzC;AAAA,EACJ,CAAC;AAEDA,mBAAM,UAAU,MAAM;AAClB,QAAI,cAAc;AACd,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ,GAAG,YAAY;AAEf,SAAO;AACX;;"}
@@ -1,2 +1,2 @@
1
1
  import * as React from 'react';
2
- export declare const useBoundingClientRectListener: (ref: React.RefObject<HTMLElement | null>, dependencies?: Array<any>) => DOMRectReadOnly | undefined;
2
+ export declare const useBoundingClientRectListener: (ref: React.RefObject<HTMLElement | null>, dependencies?: Array<unknown>) => DOMRectReadOnly | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useBoundingClientRectListener.js","sources":["../../src/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { debounce } from '@/utils/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies?: Array<any>\n): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n React.useEffect(() => {\n if (dependencies) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n }, dependencies);\n\n return dimensions;\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB,CAAC,YACnB,QAAQ,YAAY,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,eAAA,EAAiB,OAAO;AAEhG,MAAM,gCAAgC,CACzC,KACA,iBAC8B;AAC9B,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAsC,MAAS;AACzF,QAAM,sBAAsB,cAAc,IAAI,OAAO;AACrD,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,mBAAmB;AAEtE,QAAM,SAAS,MAAM;AACjB,QAAI,YAAY;AACZ,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ;AAEA,QAAM,UAAU,MAAM;AAClB,UAAM,UAAU,WAAW,QAAQ,CAAC;AACpC,UAAM,kBAAkB,SAAS,QAAQ,GAAG;AAE5C,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,mBAAa,OAAO;AACpB,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC;AAE5B,QAAM,UAAU,MAAM;AAClB,UAAM,0BAA0B,cAAc,IAAI,OAAO;AAEzD,QAAI,eAAe,yBAAyB;AAIxC,oBAAc,uBAAuB;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,QAAM,UAAU,MAAM;AAClB,QAAI,cAAc;AACd,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ,GAAG,YAAY;AAEf,SAAO;AACX;"}
1
+ {"version":3,"file":"useBoundingClientRectListener.js","sources":["../../src/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { debounce } from '@/utils/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (\n ref: React.RefObject<HTMLElement | null>,\n dependencies?: Array<unknown>\n): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n React.useEffect(() => {\n if (dependencies) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n }, dependencies);\n\n return dimensions;\n};\n"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB,CAAC,YACnB,QAAQ,YAAY,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ,eAAA,EAAiB,OAAO;AAEhG,MAAM,gCAAgC,CACzC,KACA,iBAC8B;AAC9B,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAsC,MAAS;AACzF,QAAM,sBAAsB,cAAc,IAAI,OAAO;AACrD,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,mBAAmB;AAEtE,QAAM,SAAS,MAAM;AACjB,QAAI,YAAY;AACZ,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ;AAEA,QAAM,UAAU,MAAM;AAClB,UAAM,UAAU,WAAW,QAAQ,CAAC;AACpC,UAAM,kBAAkB,SAAS,QAAQ,GAAG;AAE5C,WAAO,iBAAiB,UAAU,eAAe;AAEjD,WAAO,MAAM;AACT,mBAAa,OAAO;AACpB,aAAO,oBAAoB,UAAU,eAAe;AAAA,IACxD;AAAA,EACJ,GAAG,CAAC,IAAI,SAAS,UAAU,CAAC;AAE5B,QAAM,UAAU,MAAM;AAClB,UAAM,0BAA0B,cAAc,IAAI,OAAO;AAEzD,QAAI,eAAe,yBAAyB;AAIxC,oBAAc,uBAAuB;AAAA,IACzC;AAAA,EACJ,CAAC;AAED,QAAM,UAAU,MAAM;AAClB,QAAI,cAAc;AACd,oBAAc,IAAI,SAAS,uBAAuB;AAAA,IACtD;AAAA,EACJ,GAAG,YAAY;AAEf,SAAO;AACX;"}