@economic/taco 13.0.0 → 14.0.0-tanstack-virtual-update.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 (645) hide show
  1. package/dist/charts/components/Area/AreaChart.cjs.map +1 -1
  2. package/dist/charts/components/Area/AreaChart.js.map +1 -1
  3. package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
  4. package/dist/charts/components/Bar/BarChart.js.map +1 -1
  5. package/dist/charts/components/Composed/BarLineChart.cjs.map +1 -1
  6. package/dist/charts/components/Composed/BarLineChart.js.map +1 -1
  7. package/dist/charts/components/Donut/DonutChart.cjs +1 -1
  8. package/dist/charts/components/Donut/DonutChart.cjs.map +1 -1
  9. package/dist/charts/components/Donut/DonutChart.js +1 -1
  10. package/dist/charts/components/Donut/DonutChart.js.map +1 -1
  11. package/dist/charts/components/LegacyDonut/ActiveShape.cjs.map +1 -1
  12. package/dist/charts/components/LegacyDonut/ActiveShape.js.map +1 -1
  13. package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs.map +1 -1
  14. package/dist/charts/components/LegacyDonut/LegacyDonutChart.js.map +1 -1
  15. package/dist/charts/components/LegacyDonut/Legend.cjs.map +1 -1
  16. package/dist/charts/components/LegacyDonut/Legend.js.map +1 -1
  17. package/dist/charts/components/Legend.cjs +3 -3
  18. package/dist/charts/components/Legend.cjs.map +1 -1
  19. package/dist/charts/components/Legend.js +3 -3
  20. package/dist/charts/components/Legend.js.map +1 -1
  21. package/dist/charts/components/Line/LineChart.cjs.map +1 -1
  22. package/dist/charts/components/Line/LineChart.js.map +1 -1
  23. package/dist/charts/components/Pie/PieChart.cjs.map +1 -1
  24. package/dist/charts/components/Pie/PieChart.js.map +1 -1
  25. package/dist/charts/components/useChartData.cjs +1 -1
  26. package/dist/charts/components/useChartData.cjs.map +1 -1
  27. package/dist/charts/components/useChartData.js +1 -1
  28. package/dist/charts/components/useChartData.js.map +1 -1
  29. package/dist/charts/utils/color.cjs.map +1 -1
  30. package/dist/charts/utils/color.js.map +1 -1
  31. package/dist/charts/utils/common.cjs.map +1 -1
  32. package/dist/charts/utils/common.d.ts +1 -1
  33. package/dist/charts/utils/common.js.map +1 -1
  34. package/dist/components/Accordion/Accordion.cjs.map +1 -1
  35. package/dist/components/Accordion/Accordion.js.map +1 -1
  36. package/dist/components/Actions/Button/Button.cjs +2 -2
  37. package/dist/components/Actions/Button/Button.cjs.map +1 -1
  38. package/dist/components/Actions/Button/Button.d.ts +2 -2
  39. package/dist/components/Actions/Button/Button.js +2 -2
  40. package/dist/components/Actions/Button/Button.js.map +1 -1
  41. package/dist/components/Actions/Link/Link.cjs.map +1 -1
  42. package/dist/components/Actions/Link/Link.js.map +1 -1
  43. package/dist/components/Actions/LinkButton/LinkButton.cjs +1 -1
  44. package/dist/components/Actions/LinkButton/LinkButton.cjs.map +1 -1
  45. package/dist/components/Actions/LinkButton/LinkButton.d.ts +2 -2
  46. package/dist/components/Actions/LinkButton/LinkButton.js +1 -1
  47. package/dist/components/Actions/LinkButton/LinkButton.js.map +1 -1
  48. package/dist/components/Alert/Alert.cjs.map +1 -1
  49. package/dist/components/Alert/Alert.js.map +1 -1
  50. package/dist/components/AlertDialog/components/Content.cjs +2 -2
  51. package/dist/components/AlertDialog/components/Content.cjs.map +1 -1
  52. package/dist/components/AlertDialog/components/Content.js +2 -2
  53. package/dist/components/AlertDialog/components/Content.js.map +1 -1
  54. package/dist/components/AlertDialog/components/Trigger.cjs.map +1 -1
  55. package/dist/components/AlertDialog/components/Trigger.js.map +1 -1
  56. package/dist/components/Backdrop/Backdrop.cjs.map +1 -1
  57. package/dist/components/Backdrop/Backdrop.js.map +1 -1
  58. package/dist/components/Badge/Badge.cjs +1 -1
  59. package/dist/components/Badge/Badge.cjs.map +1 -1
  60. package/dist/components/Badge/Badge.js +1 -1
  61. package/dist/components/Badge/Badge.js.map +1 -1
  62. package/dist/components/BadgeIcon/BadgeIcon.cjs.map +1 -1
  63. package/dist/components/BadgeIcon/BadgeIcon.d.ts +1 -1
  64. package/dist/components/BadgeIcon/BadgeIcon.js.map +1 -1
  65. package/dist/components/Banner/Banner.cjs +2 -2
  66. package/dist/components/Banner/Banner.cjs.map +1 -1
  67. package/dist/components/Banner/Banner.js +2 -2
  68. package/dist/components/Banner/Banner.js.map +1 -1
  69. package/dist/components/Banner/util.cjs.map +1 -1
  70. package/dist/components/Banner/util.js.map +1 -1
  71. package/dist/components/Calendar/Calendar.cjs +2 -2
  72. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  73. package/dist/components/Calendar/Calendar.js +2 -2
  74. package/dist/components/Calendar/Calendar.js.map +1 -1
  75. package/dist/components/Card/Card.cjs +2 -2
  76. package/dist/components/Card/Card.cjs.map +1 -1
  77. package/dist/components/Card/Card.d.ts +1 -1
  78. package/dist/components/Card/Card.js +2 -2
  79. package/dist/components/Card/Card.js.map +1 -1
  80. package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
  81. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/components/Combobox/Combobox.cjs +4 -4
  83. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  84. package/dist/components/Combobox/Combobox.d.ts +1 -2
  85. package/dist/components/Combobox/Combobox.js +4 -4
  86. package/dist/components/Combobox/Combobox.js.map +1 -1
  87. package/dist/components/Combobox/useCombobox.cjs +3 -3
  88. package/dist/components/Combobox/useCombobox.cjs.map +1 -1
  89. package/dist/components/Combobox/useCombobox.d.ts +1 -1
  90. package/dist/components/Combobox/useCombobox.js +3 -3
  91. package/dist/components/Combobox/useCombobox.js.map +1 -1
  92. package/dist/components/Datepicker/Datepicker.cjs +3 -3
  93. package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
  94. package/dist/components/Datepicker/Datepicker.d.ts +1 -2
  95. package/dist/components/Datepicker/Datepicker.js +3 -3
  96. package/dist/components/Datepicker/Datepicker.js.map +1 -1
  97. package/dist/components/Datepicker/useDatepicker.cjs.map +1 -1
  98. package/dist/components/Datepicker/useDatepicker.d.ts +1 -2
  99. package/dist/components/Datepicker/useDatepicker.js.map +1 -1
  100. package/dist/components/Dialog/components/Content.cjs +3 -3
  101. package/dist/components/Dialog/components/Content.cjs.map +1 -1
  102. package/dist/components/Dialog/components/Content.js +3 -3
  103. package/dist/components/Dialog/components/Content.js.map +1 -1
  104. package/dist/components/Dialog/components/Trigger.cjs.map +1 -1
  105. package/dist/components/Dialog/components/Trigger.js.map +1 -1
  106. package/dist/components/Drawer/Drawer.cjs.map +1 -1
  107. package/dist/components/Drawer/Drawer.d.ts +1 -1
  108. package/dist/components/Drawer/Drawer.js.map +1 -1
  109. package/dist/components/Drawer/components/Content.cjs +3 -3
  110. package/dist/components/Drawer/components/Content.cjs.map +1 -1
  111. package/dist/components/Drawer/components/Content.js +3 -3
  112. package/dist/components/Drawer/components/Content.js.map +1 -1
  113. package/dist/components/Field/Field.cjs +1 -1
  114. package/dist/components/Field/Field.cjs.map +1 -1
  115. package/dist/components/Field/Field.js +1 -1
  116. package/dist/components/Field/Field.js.map +1 -1
  117. package/dist/components/Form/Form.cjs.map +1 -1
  118. package/dist/components/Form/Form.d.ts +1 -1
  119. package/dist/components/Form/Form.js.map +1 -1
  120. package/dist/components/Group/Group.cjs.map +1 -1
  121. package/dist/components/Group/Group.d.ts +2 -1
  122. package/dist/components/Group/Group.js.map +1 -1
  123. package/dist/components/Hanger/Hanger.cjs +2 -2
  124. package/dist/components/Hanger/Hanger.cjs.map +1 -1
  125. package/dist/components/Hanger/Hanger.d.ts +1 -1
  126. package/dist/components/Hanger/Hanger.js +2 -2
  127. package/dist/components/Hanger/Hanger.js.map +1 -1
  128. package/dist/components/Header/components/Agreement/Badge.cjs.map +1 -1
  129. package/dist/components/Header/components/Agreement/Badge.js.map +1 -1
  130. package/dist/components/Header/components/Agreement/Display.cjs.map +1 -1
  131. package/dist/components/Header/components/Agreement/Display.js.map +1 -1
  132. package/dist/components/Header/components/Agreement/Item.cjs +1 -1
  133. package/dist/components/Header/components/Agreement/Item.cjs.map +1 -1
  134. package/dist/components/Header/components/Agreement/Item.js +1 -1
  135. package/dist/components/Header/components/Agreement/Item.js.map +1 -1
  136. package/dist/components/Header/components/AgreementSelector.cjs +3 -3
  137. package/dist/components/Header/components/AgreementSelector.cjs.map +1 -1
  138. package/dist/components/Header/components/AgreementSelector.js +3 -3
  139. package/dist/components/Header/components/AgreementSelector.js.map +1 -1
  140. package/dist/components/Header/components/Button.cjs.map +1 -1
  141. package/dist/components/Header/components/Button.d.ts +1 -1
  142. package/dist/components/Header/components/Button.js.map +1 -1
  143. package/dist/components/Header/components/Link.cjs +2 -2
  144. package/dist/components/Header/components/Link.cjs.map +1 -1
  145. package/dist/components/Header/components/Link.d.ts +1 -1
  146. package/dist/components/Header/components/Link.js +2 -2
  147. package/dist/components/Header/components/Link.js.map +1 -1
  148. package/dist/components/Header/components/MenuButton.cjs +1 -1
  149. package/dist/components/Header/components/MenuButton.cjs.map +1 -1
  150. package/dist/components/Header/components/MenuButton.js +1 -1
  151. package/dist/components/Header/components/MenuButton.js.map +1 -1
  152. package/dist/components/Header/components/PrimaryNavigation.cjs +3 -3
  153. package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
  154. package/dist/components/Header/components/PrimaryNavigation.js +3 -3
  155. package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
  156. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  157. package/dist/components/HoverCard/HoverCard.d.ts +1 -1
  158. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  159. package/dist/components/Inline/Inline.cjs +2 -6
  160. package/dist/components/Inline/Inline.cjs.map +1 -1
  161. package/dist/components/Inline/Inline.d.ts +1 -1
  162. package/dist/components/Inline/Inline.js +2 -6
  163. package/dist/components/Inline/Inline.js.map +1 -1
  164. package/dist/components/Input/Input.cjs +1 -1
  165. package/dist/components/Input/Input.cjs.map +1 -1
  166. package/dist/components/Input/Input.d.ts +1 -1
  167. package/dist/components/Input/Input.js +1 -1
  168. package/dist/components/Input/Input.js.map +1 -1
  169. package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
  170. package/dist/components/Layout/components/Sidebar.js.map +1 -1
  171. package/dist/components/LegacyComponents/Button/Button.cjs +1 -1
  172. package/dist/components/LegacyComponents/Button/Button.cjs.map +1 -1
  173. package/dist/components/LegacyComponents/Button/Button.d.ts +3 -7
  174. package/dist/components/LegacyComponents/Button/Button.js +1 -1
  175. package/dist/components/LegacyComponents/Button/Button.js.map +1 -1
  176. package/dist/components/LegacyComponents/Button/util.cjs.map +1 -1
  177. package/dist/components/LegacyComponents/Button/util.js.map +1 -1
  178. package/dist/components/LegacyComponents/IconButton/IconButton.cjs +1 -1
  179. package/dist/components/LegacyComponents/IconButton/IconButton.cjs.map +1 -1
  180. package/dist/components/LegacyComponents/IconButton/IconButton.d.ts +4 -8
  181. package/dist/components/LegacyComponents/IconButton/IconButton.js +1 -1
  182. package/dist/components/LegacyComponents/IconButton/IconButton.js.map +1 -1
  183. package/dist/components/List/components/Collapsible.cjs +1 -1
  184. package/dist/components/List/components/Collapsible.cjs.map +1 -1
  185. package/dist/components/List/components/Collapsible.js +1 -1
  186. package/dist/components/List/components/Collapsible.js.map +1 -1
  187. package/dist/components/List/components/Item.cjs.map +1 -1
  188. package/dist/components/List/components/Item.d.ts +1 -1
  189. package/dist/components/List/components/Item.js.map +1 -1
  190. package/dist/components/List/components/Link.cjs +1 -1
  191. package/dist/components/List/components/Link.cjs.map +1 -1
  192. package/dist/components/List/components/Link.js +1 -1
  193. package/dist/components/List/components/Link.js.map +1 -1
  194. package/dist/components/List/components/Toggle.cjs +2 -2
  195. package/dist/components/List/components/Toggle.cjs.map +1 -1
  196. package/dist/components/List/components/Toggle.d.ts +1 -2
  197. package/dist/components/List/components/Toggle.js +2 -2
  198. package/dist/components/List/components/Toggle.js.map +1 -1
  199. package/dist/components/Listbox/Listbox.d.ts +2 -2
  200. package/dist/components/Listbox/ScrollableList.cjs +3 -3
  201. package/dist/components/Listbox/ScrollableList.cjs.map +1 -1
  202. package/dist/components/Listbox/ScrollableList.d.ts +1 -1
  203. package/dist/components/Listbox/ScrollableList.js +3 -3
  204. package/dist/components/Listbox/ScrollableList.js.map +1 -1
  205. package/dist/components/Listbox/useListbox.cjs.map +1 -1
  206. package/dist/components/Listbox/useListbox.js.map +1 -1
  207. package/dist/components/Listbox/useMultiListbox.cjs +1 -1
  208. package/dist/components/Listbox/useMultiListbox.cjs.map +1 -1
  209. package/dist/components/Listbox/useMultiListbox.js +1 -1
  210. package/dist/components/Listbox/useMultiListbox.js.map +1 -1
  211. package/dist/components/Listbox/useTypeahead.cjs.map +1 -1
  212. package/dist/components/Listbox/useTypeahead.js.map +1 -1
  213. package/dist/components/Listbox/util.cjs.map +1 -1
  214. package/dist/components/Listbox/util.js.map +1 -1
  215. package/dist/components/Menu/Menu.cjs.map +1 -1
  216. package/dist/components/Menu/Menu.js.map +1 -1
  217. package/dist/components/Menu/components/Checkbox.cjs +1 -1
  218. package/dist/components/Menu/components/Checkbox.cjs.map +1 -1
  219. package/dist/components/Menu/components/Checkbox.js +1 -1
  220. package/dist/components/Menu/components/Checkbox.js.map +1 -1
  221. package/dist/components/Menu/components/Content.cjs.map +1 -1
  222. package/dist/components/Menu/components/Content.js.map +1 -1
  223. package/dist/components/Menu/components/Item.cjs +1 -1
  224. package/dist/components/Menu/components/Item.cjs.map +1 -1
  225. package/dist/components/Menu/components/Item.d.ts +1 -2
  226. package/dist/components/Menu/components/Item.js +1 -1
  227. package/dist/components/Menu/components/Item.js.map +1 -1
  228. package/dist/components/Menu/components/Link.cjs.map +1 -1
  229. package/dist/components/Menu/components/Link.d.ts +1 -1
  230. package/dist/components/Menu/components/Link.js.map +1 -1
  231. package/dist/components/Menu/components/RadioGroup.cjs.map +1 -1
  232. package/dist/components/Menu/components/RadioGroup.d.ts +1 -1
  233. package/dist/components/Menu/components/RadioGroup.js.map +1 -1
  234. package/dist/components/Menu/components/SubMenu.cjs.map +1 -1
  235. package/dist/components/Menu/components/SubMenu.js.map +1 -1
  236. package/dist/components/Menu/components/Trigger.cjs.map +1 -1
  237. package/dist/components/Menu/components/Trigger.js.map +1 -1
  238. package/dist/components/Navigation2/components/Group.cjs.map +1 -1
  239. package/dist/components/Navigation2/components/Group.js.map +1 -1
  240. package/dist/components/Navigation2/components/Link.cjs +2 -2
  241. package/dist/components/Navigation2/components/Link.cjs.map +1 -1
  242. package/dist/components/Navigation2/components/Link.d.ts +1 -2
  243. package/dist/components/Navigation2/components/Link.js +2 -2
  244. package/dist/components/Navigation2/components/Link.js.map +1 -1
  245. package/dist/components/OverflowGroup/OverflowGroup.cjs +1 -1
  246. package/dist/components/OverflowGroup/OverflowGroup.cjs.map +1 -1
  247. package/dist/components/OverflowGroup/OverflowGroup.d.ts +1 -1
  248. package/dist/components/OverflowGroup/OverflowGroup.js +1 -1
  249. package/dist/components/OverflowGroup/OverflowGroup.js.map +1 -1
  250. package/dist/components/Pagination/PageNumbers.cjs +1 -1
  251. package/dist/components/Pagination/PageNumbers.cjs.map +1 -1
  252. package/dist/components/Pagination/PageNumbers.js +1 -1
  253. package/dist/components/Pagination/PageNumbers.js.map +1 -1
  254. package/dist/components/Pagination/Pagination.cjs +4 -4
  255. package/dist/components/Pagination/Pagination.cjs.map +1 -1
  256. package/dist/components/Pagination/Pagination.js +4 -4
  257. package/dist/components/Pagination/Pagination.js.map +1 -1
  258. package/dist/components/Popover/Popover.cjs.map +1 -1
  259. package/dist/components/Popover/Popover.d.ts +1 -1
  260. package/dist/components/Popover/Popover.js.map +1 -1
  261. package/dist/components/Provider/Localization.cjs.map +1 -1
  262. package/dist/components/Provider/Localization.d.ts +1 -1
  263. package/dist/components/Provider/Localization.js.map +1 -1
  264. package/dist/components/Provider/Provider.cjs +1 -1
  265. package/dist/components/Provider/Provider.cjs.map +1 -1
  266. package/dist/components/Provider/Provider.js +1 -1
  267. package/dist/components/Provider/Provider.js.map +1 -1
  268. package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
  269. package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -1
  270. package/dist/components/RadioGroup/RadioGroup.js +1 -1
  271. package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
  272. package/dist/components/Report/Report.cjs.map +1 -1
  273. package/dist/components/Report/Report.js.map +1 -1
  274. package/dist/components/Report/useReport.cjs.map +1 -1
  275. package/dist/components/Report/useReport.js.map +1 -1
  276. package/dist/components/SearchInput/SearchInput.cjs +1 -1
  277. package/dist/components/SearchInput/SearchInput.cjs.map +1 -1
  278. package/dist/components/SearchInput/SearchInput.d.ts +5 -5
  279. package/dist/components/SearchInput/SearchInput.js +1 -1
  280. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  281. package/dist/components/SearchInput2/SearchInput2.cjs +3 -3
  282. package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
  283. package/dist/components/SearchInput2/SearchInput2.js +3 -3
  284. package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
  285. package/dist/components/Select/Select.cjs +4 -4
  286. package/dist/components/Select/Select.cjs.map +1 -1
  287. package/dist/components/Select/Select.d.ts +5 -5
  288. package/dist/components/Select/Select.js +4 -4
  289. package/dist/components/Select/Select.js.map +1 -1
  290. package/dist/components/Select/useSelect.cjs +1 -1
  291. package/dist/components/Select/useSelect.cjs.map +1 -1
  292. package/dist/components/Select/useSelect.js +1 -1
  293. package/dist/components/Select/useSelect.js.map +1 -1
  294. package/dist/components/Select2/Select2.cjs +4 -4
  295. package/dist/components/Select2/Select2.cjs.map +1 -1
  296. package/dist/components/Select2/Select2.d.ts +2 -2
  297. package/dist/components/Select2/Select2.js +4 -4
  298. package/dist/components/Select2/Select2.js.map +1 -1
  299. package/dist/components/Select2/components/Collection.cjs.map +1 -1
  300. package/dist/components/Select2/components/Collection.js.map +1 -1
  301. package/dist/components/Select2/components/Context.cjs.map +1 -1
  302. package/dist/components/Select2/components/Context.js.map +1 -1
  303. package/dist/components/Select2/components/Create.cjs +4 -4
  304. package/dist/components/Select2/components/Create.cjs.map +1 -1
  305. package/dist/components/Select2/components/Create.js +4 -4
  306. package/dist/components/Select2/components/Create.js.map +1 -1
  307. package/dist/components/Select2/components/Edit.cjs +5 -5
  308. package/dist/components/Select2/components/Edit.cjs.map +1 -1
  309. package/dist/components/Select2/components/Edit.d.ts +1 -1
  310. package/dist/components/Select2/components/Edit.js +5 -5
  311. package/dist/components/Select2/components/Edit.js.map +1 -1
  312. package/dist/components/Select2/components/Group.cjs +1 -1
  313. package/dist/components/Select2/components/Group.cjs.map +1 -1
  314. package/dist/components/Select2/components/Group.js +1 -1
  315. package/dist/components/Select2/components/Group.js.map +1 -1
  316. package/dist/components/Select2/components/Option.cjs +4 -4
  317. package/dist/components/Select2/components/Option.cjs.map +1 -1
  318. package/dist/components/Select2/components/Option.d.ts +1 -1
  319. package/dist/components/Select2/components/Option.js +4 -4
  320. package/dist/components/Select2/components/Option.js.map +1 -1
  321. package/dist/components/Select2/components/Search.cjs +1 -1
  322. package/dist/components/Select2/components/Search.cjs.map +1 -1
  323. package/dist/components/Select2/components/Search.js +1 -1
  324. package/dist/components/Select2/components/Search.js.map +1 -1
  325. package/dist/components/Select2/components/Title.cjs.map +1 -1
  326. package/dist/components/Select2/components/Title.js.map +1 -1
  327. package/dist/components/Select2/components/Trigger.cjs +6 -6
  328. package/dist/components/Select2/components/Trigger.cjs.map +1 -1
  329. package/dist/components/Select2/components/Trigger.d.ts +1 -1
  330. package/dist/components/Select2/components/Trigger.js +6 -6
  331. package/dist/components/Select2/components/Trigger.js.map +1 -1
  332. package/dist/components/Select2/types.d.ts +1 -1
  333. package/dist/components/Select2/utilities.cjs.map +1 -1
  334. package/dist/components/Select2/utilities.js.map +1 -1
  335. package/dist/components/Shortcut/Shortcut.cjs.map +1 -1
  336. package/dist/components/Shortcut/Shortcut.js.map +1 -1
  337. package/dist/components/Stack/Stack.cjs +2 -6
  338. package/dist/components/Stack/Stack.cjs.map +1 -1
  339. package/dist/components/Stack/Stack.d.ts +1 -1
  340. package/dist/components/Stack/Stack.js +2 -6
  341. package/dist/components/Stack/Stack.js.map +1 -1
  342. package/dist/components/Switch/Switch.cjs.map +1 -1
  343. package/dist/components/Switch/Switch.js.map +1 -1
  344. package/dist/components/Table3/Table3.cjs +1 -3
  345. package/dist/components/Table3/Table3.cjs.map +1 -1
  346. package/dist/components/Table3/Table3.d.ts +1 -4
  347. package/dist/components/Table3/Table3.js +1 -3
  348. package/dist/components/Table3/Table3.js.map +1 -1
  349. package/dist/components/Table3/components/Columns/Cell/Cell.cjs.map +1 -1
  350. package/dist/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
  351. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs +1 -1
  352. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs.map +1 -1
  353. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +1 -1
  354. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  355. package/dist/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.cjs.map +1 -1
  356. package/dist/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.js.map +1 -1
  357. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +6 -6
  358. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
  359. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +6 -6
  360. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  361. package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.cjs.map +1 -1
  362. package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.js.map +1 -1
  363. package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
  364. package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
  365. package/dist/components/Table3/components/Editing/Alert.cjs +3 -3
  366. package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
  367. package/dist/components/Table3/components/Editing/Alert.d.ts +1 -1
  368. package/dist/components/Table3/components/Editing/Alert.js +3 -3
  369. package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
  370. package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.cjs +3 -3
  371. package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.cjs.map +1 -1
  372. package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.d.ts +1 -1
  373. package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js +3 -3
  374. package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js.map +1 -1
  375. package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs +2 -2
  376. package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs.map +1 -1
  377. package/dist/components/Table3/components/Row/Editing/CreateNewRow.js +2 -2
  378. package/dist/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  379. package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs +2 -2
  380. package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs.map +1 -1
  381. package/dist/components/Table3/components/Row/Editing/SaveStatus.js +2 -2
  382. package/dist/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
  383. package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs.map +1 -1
  384. package/dist/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  385. package/dist/components/Table3/components/Row/Row.cjs.map +1 -1
  386. package/dist/components/Table3/components/Row/Row.js.map +1 -1
  387. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +2 -2
  388. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
  389. package/dist/components/Table3/components/Toolbar/Editing/Editing.js +2 -2
  390. package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
  391. package/dist/components/Table3/features/useEditingState.cjs +1 -1
  392. package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
  393. package/dist/components/Table3/features/useEditingState.js +1 -1
  394. package/dist/components/Table3/features/useEditingState.js.map +1 -1
  395. package/dist/components/Table3/features/useTableEditing.cjs +1 -1
  396. package/dist/components/Table3/features/useTableEditing.cjs.map +1 -1
  397. package/dist/components/Table3/features/useTableEditing.js +1 -1
  398. package/dist/components/Table3/features/useTableEditing.js.map +1 -1
  399. package/dist/components/Table3/listeners/useTableEditingListener.cjs +1 -1
  400. package/dist/components/Table3/listeners/useTableEditingListener.cjs.map +1 -1
  401. package/dist/components/Table3/listeners/useTableEditingListener.js +1 -1
  402. package/dist/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  403. package/dist/components/Table3/useTable3.cjs +2 -2
  404. package/dist/components/Table3/useTable3.cjs.map +1 -1
  405. package/dist/components/Table3/useTable3.js +2 -2
  406. package/dist/components/Table3/useTable3.js.map +1 -1
  407. package/dist/components/Table3/util/editing.cjs.map +1 -1
  408. package/dist/components/Table3/util/editing.d.ts +2 -2
  409. package/dist/components/Table3/util/editing.js.map +1 -1
  410. package/dist/components/Tabs/Context.cjs.map +1 -1
  411. package/dist/components/Tabs/Context.js.map +1 -1
  412. package/dist/components/Tabs/Tabs.cjs.map +1 -1
  413. package/dist/components/Tabs/Tabs.js.map +1 -1
  414. package/dist/components/Tabs/components/TabList.cjs +2 -2
  415. package/dist/components/Tabs/components/TabList.cjs.map +1 -1
  416. package/dist/components/Tabs/components/TabList.js +2 -2
  417. package/dist/components/Tabs/components/TabList.js.map +1 -1
  418. package/dist/components/Tabs/components/Trigger.cjs +3 -3
  419. package/dist/components/Tabs/components/Trigger.cjs.map +1 -1
  420. package/dist/components/Tabs/components/Trigger.js +3 -3
  421. package/dist/components/Tabs/components/Trigger.js.map +1 -1
  422. package/dist/components/Tag/Tag.cjs.map +1 -1
  423. package/dist/components/Tag/Tag.d.ts +1 -1
  424. package/dist/components/Tag/Tag.js.map +1 -1
  425. package/dist/components/Textarea/Textarea.cjs +1 -1
  426. package/dist/components/Textarea/Textarea.cjs.map +1 -1
  427. package/dist/components/Textarea/Textarea.js +1 -1
  428. package/dist/components/Textarea/Textarea.js.map +1 -1
  429. package/dist/components/Toast/Toast.cjs +2 -2
  430. package/dist/components/Toast/Toast.cjs.map +1 -1
  431. package/dist/components/Toast/Toast.js +2 -2
  432. package/dist/components/Toast/Toast.js.map +1 -1
  433. package/dist/components/Toast/util.cjs +1 -1
  434. package/dist/components/Toast/util.cjs.map +1 -1
  435. package/dist/components/Toast/util.js +1 -1
  436. package/dist/components/Toast/util.js.map +1 -1
  437. package/dist/components/Tour/Tour.cjs +2 -2
  438. package/dist/components/Tour/Tour.cjs.map +1 -1
  439. package/dist/components/Tour/Tour.js +2 -2
  440. package/dist/components/Tour/Tour.js.map +1 -1
  441. package/dist/components/Truncate/Truncate.cjs.map +1 -1
  442. package/dist/components/Truncate/Truncate.js.map +1 -1
  443. package/dist/components/Typography/Heading.cjs.map +1 -1
  444. package/dist/components/Typography/Heading.d.ts +1 -1
  445. package/dist/components/Typography/Heading.js.map +1 -1
  446. package/dist/components/Typography/Text.cjs.map +1 -1
  447. package/dist/components/Typography/Text.d.ts +1 -1
  448. package/dist/components/Typography/Text.js.map +1 -1
  449. package/dist/components/index.d.ts +0 -1
  450. package/dist/hooks/useBoundaryOverflowDetection.cjs.map +1 -1
  451. package/dist/hooks/useBoundaryOverflowDetection.js.map +1 -1
  452. package/dist/hooks/useBoundingClientRectListener.cjs.map +1 -1
  453. package/dist/hooks/useBoundingClientRectListener.js.map +1 -1
  454. package/dist/hooks/useGlobalKeyDown.cjs.map +1 -1
  455. package/dist/hooks/useGlobalKeyDown.js.map +1 -1
  456. package/dist/hooks/useTacoSettings.cjs.map +1 -1
  457. package/dist/hooks/useTacoSettings.d.ts +1 -1
  458. package/dist/hooks/useTacoSettings.js.map +1 -1
  459. package/dist/index.cjs +0 -2
  460. package/dist/index.cjs.map +1 -1
  461. package/dist/index.js +0 -2
  462. package/dist/index.js.map +1 -1
  463. package/dist/primitives/BubbleSelect.cjs.map +1 -1
  464. package/dist/primitives/BubbleSelect.js.map +1 -1
  465. package/dist/primitives/Button.cjs.map +1 -1
  466. package/dist/primitives/Button.js.map +1 -1
  467. package/dist/primitives/Collection/components/Root.cjs.map +1 -1
  468. package/dist/primitives/Collection/components/Root.js.map +1 -1
  469. package/dist/primitives/Listbox2/components/Option.cjs.map +1 -1
  470. package/dist/primitives/Listbox2/components/Option.js.map +1 -1
  471. package/dist/primitives/Listbox2/components/Root.cjs.map +1 -1
  472. package/dist/primitives/Listbox2/components/Root.js.map +1 -1
  473. package/dist/primitives/Listbox2/components/Title.cjs.map +1 -1
  474. package/dist/primitives/Listbox2/components/Title.js.map +1 -1
  475. package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
  476. package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
  477. package/dist/primitives/Table/Core/components/Body/EmptyStateBody.cjs.map +1 -1
  478. package/dist/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  479. package/dist/primitives/Table/Core/components/Body/util.cjs.map +1 -1
  480. package/dist/primitives/Table/Core/components/Body/util.js.map +1 -1
  481. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +1 -1
  482. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
  483. package/dist/primitives/Table/Core/components/Columns/Cell/util.js +1 -1
  484. package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  485. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs +3 -3
  486. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs.map +1 -1
  487. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js +3 -3
  488. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  489. package/dist/primitives/Table/Core/components/Columns/Internal/Drag.cjs +2 -2
  490. package/dist/primitives/Table/Core/components/Columns/Internal/Drag.cjs.map +1 -1
  491. package/dist/primitives/Table/Core/components/Columns/Internal/Drag.js +2 -2
  492. package/dist/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
  493. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs +3 -3
  494. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs.map +1 -1
  495. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js +3 -3
  496. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  497. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs +4 -4
  498. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs.map +1 -1
  499. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js +4 -4
  500. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  501. package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
  502. package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  503. package/dist/primitives/Table/Core/components/Header/Header.cjs +1 -1
  504. package/dist/primitives/Table/Core/components/Header/Header.cjs.map +1 -1
  505. package/dist/primitives/Table/Core/components/Header/Header.js +1 -1
  506. package/dist/primitives/Table/Core/components/Header/Header.js.map +1 -1
  507. package/dist/primitives/Table/Core/components/Header/components/Goto.cjs +1 -1
  508. package/dist/primitives/Table/Core/components/Header/components/Goto.cjs.map +1 -1
  509. package/dist/primitives/Table/Core/components/Header/components/Goto.d.ts +1 -1
  510. package/dist/primitives/Table/Core/components/Header/components/Goto.js +1 -1
  511. package/dist/primitives/Table/Core/components/Header/components/Goto.js.map +1 -1
  512. package/dist/primitives/Table/Core/components/Header/components/Menu.cjs +4 -6
  513. package/dist/primitives/Table/Core/components/Header/components/Menu.cjs.map +1 -1
  514. package/dist/primitives/Table/Core/components/Header/components/Menu.js +4 -6
  515. package/dist/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  516. package/dist/primitives/Table/Core/components/Header/components/Resizer.cjs.map +1 -1
  517. package/dist/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  518. package/dist/primitives/Table/Core/components/Header/components/SortIndicator.cjs.map +1 -1
  519. package/dist/primitives/Table/Core/components/Header/components/SortIndicator.js.map +1 -1
  520. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs +3 -1
  521. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs.map +1 -1
  522. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +3 -1
  523. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  524. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs +5 -5
  525. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs.map +1 -1
  526. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +5 -5
  527. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
  528. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +4 -4
  529. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
  530. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +4 -4
  531. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  532. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs +2 -2
  533. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs.map +1 -1
  534. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js +2 -2
  535. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  536. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.cjs +3 -3
  537. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.cjs.map +1 -1
  538. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.d.ts +1 -1
  539. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +3 -3
  540. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  541. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.cjs +2 -2
  542. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.cjs.map +1 -1
  543. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.d.ts +1 -1
  544. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +2 -2
  545. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
  546. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.cjs +5 -5
  547. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.cjs.map +1 -1
  548. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +5 -5
  549. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  550. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +4 -4
  551. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
  552. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +4 -4
  553. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  554. package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.cjs +6 -6
  555. package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.cjs.map +1 -1
  556. package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.d.ts +1 -2
  557. package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js +6 -6
  558. package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js.map +1 -1
  559. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs +2 -2
  560. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs.map +1 -1
  561. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js +2 -2
  562. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  563. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs +7 -7
  564. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs.map +1 -1
  565. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.d.ts +1 -1
  566. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js +7 -7
  567. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
  568. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs +3 -3
  569. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs.map +1 -1
  570. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js +3 -3
  571. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js.map +1 -1
  572. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs.map +1 -1
  573. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  574. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
  575. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
  576. package/dist/primitives/Table/Core/useTable.cjs.map +1 -1
  577. package/dist/primitives/Table/Core/useTable.js.map +1 -1
  578. package/dist/primitives/Table/types.cjs.map +1 -1
  579. package/dist/primitives/Table/types.d.ts +1 -1
  580. package/dist/primitives/Table/types.js.map +1 -1
  581. package/dist/primitives/Table/useTableManager/features/useTableFontSize.cjs.map +1 -1
  582. package/dist/primitives/Table/useTableManager/features/useTableFontSize.js.map +1 -1
  583. package/dist/primitives/Table/useTableManager/features/useTablePrinting.cjs.map +1 -1
  584. package/dist/primitives/Table/useTableManager/features/useTablePrinting.js.map +1 -1
  585. package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs.map +1 -1
  586. package/dist/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  587. package/dist/primitives/Table/useTableManager/features/useTableSettings.cjs.map +1 -1
  588. package/dist/primitives/Table/useTableManager/features/useTableSettings.js.map +1 -1
  589. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs.map +1 -1
  590. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  591. package/dist/primitives/Table/useTableManager/listeners/useTableFilterListener.cjs.map +1 -1
  592. package/dist/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  593. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs.map +1 -1
  594. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  595. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs.map +1 -1
  596. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -1
  597. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs.map +1 -1
  598. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  599. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs +1 -1
  600. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs.map +1 -1
  601. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js +1 -1
  602. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  603. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs.map +1 -1
  604. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -1
  605. package/dist/primitives/Table/useTableManager/listeners/useTableSortingListener.cjs.map +1 -1
  606. package/dist/primitives/Table/useTableManager/listeners/useTableSortingListener.js.map +1 -1
  607. package/dist/primitives/Table/useTableManager/useTableManager.cjs +1 -1
  608. package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
  609. package/dist/primitives/Table/useTableManager/useTableManager.js +1 -1
  610. package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  611. package/dist/primitives/Table/useTableManager/util/columns.cjs.map +1 -1
  612. package/dist/primitives/Table/useTableManager/util/columns.d.ts +1 -1
  613. package/dist/primitives/Table/useTableManager/util/columns.js.map +1 -1
  614. package/dist/primitives/Table/useTableManager/util/dataTypes.cjs.map +1 -1
  615. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
  616. package/dist/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  617. package/dist/primitives/Table/useTableManager/util/filtering.cjs.map +1 -1
  618. package/dist/primitives/Table/useTableManager/util/filtering.d.ts +1 -1
  619. package/dist/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  620. package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
  621. package/dist/primitives/Table/useTableManager/util/search.d.ts +1 -1
  622. package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
  623. package/dist/primitives/Table/useTableManager/util/setup.cjs +11 -1
  624. package/dist/primitives/Table/useTableManager/util/setup.cjs.map +1 -1
  625. package/dist/primitives/Table/useTableManager/util/setup.d.ts +1 -1
  626. package/dist/primitives/Table/useTableManager/util/setup.js +12 -2
  627. package/dist/primitives/Table/useTableManager/util/setup.js.map +1 -1
  628. package/dist/utils/dom.cjs.map +1 -1
  629. package/dist/utils/dom.js.map +1 -1
  630. package/dist/utils/flattenChildren.cjs +12 -0
  631. package/dist/utils/flattenChildren.cjs.map +1 -0
  632. package/dist/utils/flattenChildren.d.ts +6 -0
  633. package/dist/utils/flattenChildren.js +12 -0
  634. package/dist/utils/flattenChildren.js.map +1 -0
  635. package/dist/utils/hooks/useListKeyboardNavigation.cjs.map +1 -1
  636. package/dist/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  637. package/dist/utils/storyutils.d.ts +1 -1
  638. package/dist/utils/tailwind.cjs.map +1 -1
  639. package/dist/utils/tailwind.js.map +1 -1
  640. package/package.json +6 -5
  641. package/dist/components/Treeview/Treeview.cjs +0 -52
  642. package/dist/components/Treeview/Treeview.cjs.map +0 -1
  643. package/dist/components/Treeview/Treeview.d.ts +0 -25
  644. package/dist/components/Treeview/Treeview.js +0 -52
  645. package/dist/components/Treeview/Treeview.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useEditingState.cjs","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 '../../Provider/Localization';\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":["useLocalization","TEMPORARY_ROW_ID_PREFIX","nanoid","state","willRowMove","rowId","isTemporaryRow","handleDiscard"],"mappings":"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"}
1
+ {"version":3,"file":"useEditingState.cjs","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":["useLocalization","TEMPORARY_ROW_ID_PREFIX","nanoid","state","willRowMove","rowId","isTemporaryRow","handleDiscard"],"mappings":"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"}
@@ -2,8 +2,8 @@ import omit from "lodash/omit";
2
2
  import setWith from "lodash/setWith";
3
3
  import { nanoid } from "nanoid";
4
4
  import React__default from "react";
5
- import { useLocalization } from "../../Provider/Localization.js";
6
5
  import { TEMPORARY_ROW_ID_PREFIX, isTemporaryRow, willRowMove } from "../util/editing.js";
6
+ import { useLocalization } from "../../Provider/Localization.js";
7
7
  const DELAY_BEFORE_REMOVING_SAVE_STATUS = 3e3;
8
8
  function reducer(state, action) {
9
9
  const { type, payload } = action;
@@ -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 '../../Provider/Localization';\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.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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"}
@@ -49,7 +49,7 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
49
49
  return;
50
50
  }
51
51
  }
52
- const currentRow = table.options.meta?.rowActive.rowActiveIndex !== void 0 ? table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex] : void 0;
52
+ const currentRow = table.options.meta?.rowActive.rowActiveIndex === void 0 ? void 0 : table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex];
53
53
  const changeset = row ?? await handleCreate({
54
54
  activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : void 0
55
55
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useTableEditing.cjs","sources":["../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport type { TableEventHandler } from '../../../primitives/Table/types';\nimport type {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow } from '../util/editing';\n\nimport { usePendingChangesState } from './useEditingState';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n defaultToggleEditing = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined,\n showEditingActions = false,\n onEvent?: TableEventHandler | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(defaultToggleEditing);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n handleDiscard,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n useLazyEffect(() => {\n if (onEvent) {\n onEvent('editing-mode', { enabled: isEditing });\n }\n }, [isEditing]);\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n pendingChangesFns.saveChanges(table);\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (!saved) {\n return;\n }\n }\n const currentRow =\n table.options.meta?.rowActive.rowActiveIndex !== undefined\n ? table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex]\n : undefined;\n\n const changeset =\n row ??\n (await handleCreate({\n activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : undefined,\n }));\n\n try {\n if (changeset) {\n // set the active row to the new row before toggling editing on\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;\n tableMeta.rowActive.setRowActiveIndex(nextRowIndex);\n\n // it's important that row active sets before we insert the row, because row active change triggers save\n requestAnimationFrame(() => {\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);\n\n // prep the row\n table.setRowPinning(currentState => ({\n ...currentState,\n bottom: (currentState.bottom ?? [])?.concat(newRowId),\n }));\n\n // prep editing mode\n toggleDetailedMode(false);\n setLastFocusedCellIndex(undefined);\n\n table.resetRowSelection();\n\n if (!tableMeta.editing.isEditing) {\n setEditing(true);\n }\n });\n }\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n }\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n showEditingActions,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n createRow,\n createRowButtonRef,\n ...pendingChangesFns,\n };\n}\n"],"names":["usePendingChangesState","useLazyEffect","isTemporaryRow"],"mappings":";;;;;;AAgBO,SAAS,gBACZ,YAAY,OACZ,uBAAuB,OACvB,YACA,cACA,cACA,eACA,qBACA,WACA,qBAAqB,OACrB,SACF;AAEE,QAAM,CAAC,WAAW,UAAU,IAAI,MAAM,SAAS,oBAAoB;AAGnE,QAAM,CAAC,gBAAgB,kBAAkB,IAAI,MAAM,SAAS,KAAK;AAGjE,QAAM,qBAAqB,MAAM,OAA0B,IAAI;AAG/D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,MAAM,SAA6B,MAAS;AAEpG,QAAM,oBAAoBA,gBAAAA;AAAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGJC,gBAAAA,cAAc,MAAM;AAChB,QAAI,SAAS;AACT,cAAQ,gBAAgB,EAAE,SAAS,UAAA,CAAW;AAAA,IAClD;AAAA,EACJ,GAAG,CAAC,SAAS,CAAC;AAEd,WAAS,cACL,SACA,OACA,eACF;AACE,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,SAAS;AACT,YAAM,QAAQ,UAAU,UAAU,kBAAkB;AAEpD,UAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,kBAAU,UAAU,kBAAkB,KAAK;AAAA,MAC/C;AAEA,UAAI,CAACC,QAAAA,eAAe,MAAM,YAAA,EAAc,KAAK,KAAK,GAAG,EAAE,GAAG;AACtD,sBAAc,KAAK;AAAA,MACvB;AAAA,IACJ,WAAW,CAAC,SAAS;AAEjB,yBAAmB,KAAK;AAExB,8BAAwB,MAAS;AAAA,IACrC;AAEA,eAAW,OAAO;AAClB,sBAAkB,YAAY,KAAK;AAAA,EACvC;AAEA,iBAAe,UAA2B,OAAsB,KAAkB;AAC9E,QAAI,CAAC,cAAc;AACf;AAAA,IACJ;AAEA,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,YAAM,QAAQ,MAAM,UAAU,QAAQ,YAAY,KAAK;AAEvD,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,aACF,MAAM,QAAQ,MAAM,UAAU,mBAAmB,SAC3C,MAAM,YAAA,EAAc,SAAS,MAAM,QAAQ,MAAM,UAAU,cAAc,IACzE;AAEV,UAAM,YACF,OACC,MAAM,aAAa;AAAA,MAChB,WAAW,aAAa,EAAE,GAAG,WAAW,UAAU,GAAG,UAAU,QAAQ,YAAY,WAAW,EAAE,MAAM;AAAA,IAAA,CACzG;AAEL,QAAI;AACA,UAAI,WAAW;AAEX,cAAM,gBAAgB,UAAU,QAAQ;AACxC,cAAM,eAAe,cAAc,SAAS,UAAU,SAAS,IAAI,UAAU;AAC7E,kBAAU,UAAU,kBAAkB,YAAY;AAGlD,8BAAsB,MAAM;AACxB,gBAAM,WAAW,kBAAkB,mBAAmB,WAAW,YAAY;AAG7E,gBAAM,cAAc,CAAA,kBAAiB;AAAA,YACjC,GAAG;AAAA,YACH,SAAS,aAAa,UAAU,CAAA,IAAK,OAAO,QAAQ;AAAA,UAAA,EACtD;AAGF,6BAAmB,KAAK;AACxB,kCAAwB,MAAS;AAEjC,gBAAM,kBAAA;AAEN,cAAI,CAAC,UAAU,QAAQ,WAAW;AAC9B,uBAAW,IAAI;AAAA,UACnB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,SAAS,OAAO;AAEZ,cAAQ,MAAM,KAAK;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY,qBAAqB,MAAM;AAAA,IAC3D,eAAe,YAAY,gBAAgB,MAAM;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA;AAEX;;"}
1
+ {"version":3,"file":"useTableEditing.cjs","sources":["../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport type { TableEventHandler } from '@/primitives/Table/types';\n\nimport type {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow } from '../util/editing';\n\nimport { usePendingChangesState } from './useEditingState';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n defaultToggleEditing = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined,\n showEditingActions = false,\n onEvent?: TableEventHandler | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(defaultToggleEditing);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n handleDiscard,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n useLazyEffect(() => {\n if (onEvent) {\n onEvent('editing-mode', { enabled: isEditing });\n }\n }, [isEditing]);\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n pendingChangesFns.saveChanges(table);\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (!saved) {\n return;\n }\n }\n const currentRow =\n table.options.meta?.rowActive.rowActiveIndex === undefined\n ? undefined\n : table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex];\n\n const changeset =\n row ??\n (await handleCreate({\n activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : undefined,\n }));\n\n try {\n if (changeset) {\n // set the active row to the new row before toggling editing on\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;\n tableMeta.rowActive.setRowActiveIndex(nextRowIndex);\n\n // it's important that row active sets before we insert the row, because row active change triggers save\n requestAnimationFrame(() => {\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);\n\n // prep the row\n table.setRowPinning(currentState => ({\n ...currentState,\n bottom: (currentState.bottom ?? [])?.concat(newRowId),\n }));\n\n // prep editing mode\n toggleDetailedMode(false);\n setLastFocusedCellIndex(undefined);\n\n table.resetRowSelection();\n\n if (!tableMeta.editing.isEditing) {\n setEditing(true);\n }\n });\n }\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n }\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n showEditingActions,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n createRow,\n createRowButtonRef,\n ...pendingChangesFns,\n };\n}\n"],"names":["usePendingChangesState","useLazyEffect","isTemporaryRow"],"mappings":";;;;;;AAiBO,SAAS,gBACZ,YAAY,OACZ,uBAAuB,OACvB,YACA,cACA,cACA,eACA,qBACA,WACA,qBAAqB,OACrB,SACF;AAEE,QAAM,CAAC,WAAW,UAAU,IAAI,MAAM,SAAS,oBAAoB;AAGnE,QAAM,CAAC,gBAAgB,kBAAkB,IAAI,MAAM,SAAS,KAAK;AAGjE,QAAM,qBAAqB,MAAM,OAA0B,IAAI;AAG/D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,MAAM,SAA6B,MAAS;AAEpG,QAAM,oBAAoBA,gBAAAA;AAAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGJC,gBAAAA,cAAc,MAAM;AAChB,QAAI,SAAS;AACT,cAAQ,gBAAgB,EAAE,SAAS,UAAA,CAAW;AAAA,IAClD;AAAA,EACJ,GAAG,CAAC,SAAS,CAAC;AAEd,WAAS,cACL,SACA,OACA,eACF;AACE,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,SAAS;AACT,YAAM,QAAQ,UAAU,UAAU,kBAAkB;AAEpD,UAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,kBAAU,UAAU,kBAAkB,KAAK;AAAA,MAC/C;AAEA,UAAI,CAACC,QAAAA,eAAe,MAAM,YAAA,EAAc,KAAK,KAAK,GAAG,EAAE,GAAG;AACtD,sBAAc,KAAK;AAAA,MACvB;AAAA,IACJ,WAAW,CAAC,SAAS;AAEjB,yBAAmB,KAAK;AAExB,8BAAwB,MAAS;AAAA,IACrC;AAEA,eAAW,OAAO;AAClB,sBAAkB,YAAY,KAAK;AAAA,EACvC;AAEA,iBAAe,UAA2B,OAAsB,KAAkB;AAC9E,QAAI,CAAC,cAAc;AACf;AAAA,IACJ;AAEA,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,YAAM,QAAQ,MAAM,UAAU,QAAQ,YAAY,KAAK;AAEvD,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,aACF,MAAM,QAAQ,MAAM,UAAU,mBAAmB,SAC3C,SACA,MAAM,YAAA,EAAc,SAAS,MAAM,QAAQ,MAAM,UAAU,cAAc;AAEnF,UAAM,YACF,OACC,MAAM,aAAa;AAAA,MAChB,WAAW,aAAa,EAAE,GAAG,WAAW,UAAU,GAAG,UAAU,QAAQ,YAAY,WAAW,EAAE,MAAM;AAAA,IAAA,CACzG;AAEL,QAAI;AACA,UAAI,WAAW;AAEX,cAAM,gBAAgB,UAAU,QAAQ;AACxC,cAAM,eAAe,cAAc,SAAS,UAAU,SAAS,IAAI,UAAU;AAC7E,kBAAU,UAAU,kBAAkB,YAAY;AAGlD,8BAAsB,MAAM;AACxB,gBAAM,WAAW,kBAAkB,mBAAmB,WAAW,YAAY;AAG7E,gBAAM,cAAc,CAAA,kBAAiB;AAAA,YACjC,GAAG;AAAA,YACH,SAAS,aAAa,UAAU,CAAA,IAAK,OAAO,QAAQ;AAAA,UAAA,EACtD;AAGF,6BAAmB,KAAK;AACxB,kCAAwB,MAAS;AAEjC,gBAAM,kBAAA;AAEN,cAAI,CAAC,UAAU,QAAQ,WAAW;AAC9B,uBAAW,IAAI;AAAA,UACnB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,SAAS,OAAO;AAEZ,cAAQ,MAAM,KAAK;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY,qBAAqB,MAAM;AAAA,IAC3D,eAAe,YAAY,gBAAgB,MAAM;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA;AAEX;;"}
@@ -47,7 +47,7 @@ function useTableEditing(isEnabled = false, defaultToggleEditing = false, handle
47
47
  return;
48
48
  }
49
49
  }
50
- const currentRow = table.options.meta?.rowActive.rowActiveIndex !== void 0 ? table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex] : void 0;
50
+ const currentRow = table.options.meta?.rowActive.rowActiveIndex === void 0 ? void 0 : table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex];
51
51
  const changeset = row ?? await handleCreate({
52
52
  activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : void 0
53
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useTableEditing.js","sources":["../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport type { TableEventHandler } from '../../../primitives/Table/types';\nimport type {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow } from '../util/editing';\n\nimport { usePendingChangesState } from './useEditingState';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n defaultToggleEditing = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined,\n showEditingActions = false,\n onEvent?: TableEventHandler | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(defaultToggleEditing);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n handleDiscard,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n useLazyEffect(() => {\n if (onEvent) {\n onEvent('editing-mode', { enabled: isEditing });\n }\n }, [isEditing]);\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n pendingChangesFns.saveChanges(table);\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (!saved) {\n return;\n }\n }\n const currentRow =\n table.options.meta?.rowActive.rowActiveIndex !== undefined\n ? table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex]\n : undefined;\n\n const changeset =\n row ??\n (await handleCreate({\n activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : undefined,\n }));\n\n try {\n if (changeset) {\n // set the active row to the new row before toggling editing on\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;\n tableMeta.rowActive.setRowActiveIndex(nextRowIndex);\n\n // it's important that row active sets before we insert the row, because row active change triggers save\n requestAnimationFrame(() => {\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);\n\n // prep the row\n table.setRowPinning(currentState => ({\n ...currentState,\n bottom: (currentState.bottom ?? [])?.concat(newRowId),\n }));\n\n // prep editing mode\n toggleDetailedMode(false);\n setLastFocusedCellIndex(undefined);\n\n table.resetRowSelection();\n\n if (!tableMeta.editing.isEditing) {\n setEditing(true);\n }\n });\n }\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n }\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n showEditingActions,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n createRow,\n createRowButtonRef,\n ...pendingChangesFns,\n };\n}\n"],"names":["React"],"mappings":";;;;AAgBO,SAAS,gBACZ,YAAY,OACZ,uBAAuB,OACvB,YACA,cACA,cACA,eACA,qBACA,WACA,qBAAqB,OACrB,SACF;AAEE,QAAM,CAAC,WAAW,UAAU,IAAIA,eAAM,SAAS,oBAAoB;AAGnE,QAAM,CAAC,gBAAgB,kBAAkB,IAAIA,eAAM,SAAS,KAAK;AAGjE,QAAM,qBAAqBA,eAAM,OAA0B,IAAI;AAG/D,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA,eAAM,SAA6B,MAAS;AAEpG,QAAM,oBAAoB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGJ,gBAAc,MAAM;AAChB,QAAI,SAAS;AACT,cAAQ,gBAAgB,EAAE,SAAS,UAAA,CAAW;AAAA,IAClD;AAAA,EACJ,GAAG,CAAC,SAAS,CAAC;AAEd,WAAS,cACL,SACA,OACA,eACF;AACE,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,SAAS;AACT,YAAM,QAAQ,UAAU,UAAU,kBAAkB;AAEpD,UAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,kBAAU,UAAU,kBAAkB,KAAK;AAAA,MAC/C;AAEA,UAAI,CAAC,eAAe,MAAM,YAAA,EAAc,KAAK,KAAK,GAAG,EAAE,GAAG;AACtD,sBAAc,KAAK;AAAA,MACvB;AAAA,IACJ,WAAW,CAAC,SAAS;AAEjB,yBAAmB,KAAK;AAExB,8BAAwB,MAAS;AAAA,IACrC;AAEA,eAAW,OAAO;AAClB,sBAAkB,YAAY,KAAK;AAAA,EACvC;AAEA,iBAAe,UAA2B,OAAsB,KAAkB;AAC9E,QAAI,CAAC,cAAc;AACf;AAAA,IACJ;AAEA,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,YAAM,QAAQ,MAAM,UAAU,QAAQ,YAAY,KAAK;AAEvD,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,aACF,MAAM,QAAQ,MAAM,UAAU,mBAAmB,SAC3C,MAAM,YAAA,EAAc,SAAS,MAAM,QAAQ,MAAM,UAAU,cAAc,IACzE;AAEV,UAAM,YACF,OACC,MAAM,aAAa;AAAA,MAChB,WAAW,aAAa,EAAE,GAAG,WAAW,UAAU,GAAG,UAAU,QAAQ,YAAY,WAAW,EAAE,MAAM;AAAA,IAAA,CACzG;AAEL,QAAI;AACA,UAAI,WAAW;AAEX,cAAM,gBAAgB,UAAU,QAAQ;AACxC,cAAM,eAAe,cAAc,SAAS,UAAU,SAAS,IAAI,UAAU;AAC7E,kBAAU,UAAU,kBAAkB,YAAY;AAGlD,8BAAsB,MAAM;AACxB,gBAAM,WAAW,kBAAkB,mBAAmB,WAAW,YAAY;AAG7E,gBAAM,cAAc,CAAA,kBAAiB;AAAA,YACjC,GAAG;AAAA,YACH,SAAS,aAAa,UAAU,CAAA,IAAK,OAAO,QAAQ;AAAA,UAAA,EACtD;AAGF,6BAAmB,KAAK;AACxB,kCAAwB,MAAS;AAEjC,gBAAM,kBAAA;AAEN,cAAI,CAAC,UAAU,QAAQ,WAAW;AAC9B,uBAAW,IAAI;AAAA,UACnB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,SAAS,OAAO;AAEZ,cAAQ,MAAM,KAAK;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY,qBAAqB,MAAM;AAAA,IAC3D,eAAe,YAAY,gBAAgB,MAAM;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA;AAEX;"}
1
+ {"version":3,"file":"useTableEditing.js","sources":["../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport type { TableEventHandler } from '@/primitives/Table/types';\n\nimport type {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow } from '../util/editing';\n\nimport { usePendingChangesState } from './useEditingState';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n defaultToggleEditing = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined,\n showEditingActions = false,\n onEvent?: TableEventHandler | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(defaultToggleEditing);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n handleDiscard,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n useLazyEffect(() => {\n if (onEvent) {\n onEvent('editing-mode', { enabled: isEditing });\n }\n }, [isEditing]);\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n pendingChangesFns.saveChanges(table);\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (!saved) {\n return;\n }\n }\n const currentRow =\n table.options.meta?.rowActive.rowActiveIndex === undefined\n ? undefined\n : table.getRowModel().flatRows[table.options.meta?.rowActive.rowActiveIndex];\n\n const changeset =\n row ??\n (await handleCreate({\n activeRow: currentRow ? { ...currentRow.original, ...tableMeta.editing.getRowValue(currentRow.id) } : undefined,\n }));\n\n try {\n if (changeset) {\n // set the active row to the new row before toggling editing on\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;\n tableMeta.rowActive.setRowActiveIndex(nextRowIndex);\n\n // it's important that row active sets before we insert the row, because row active change triggers save\n requestAnimationFrame(() => {\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);\n\n // prep the row\n table.setRowPinning(currentState => ({\n ...currentState,\n bottom: (currentState.bottom ?? [])?.concat(newRowId),\n }));\n\n // prep editing mode\n toggleDetailedMode(false);\n setLastFocusedCellIndex(undefined);\n\n table.resetRowSelection();\n\n if (!tableMeta.editing.isEditing) {\n setEditing(true);\n }\n });\n }\n } catch (error) {\n // oxlint-disable-next-line no-console\n console.error(error);\n }\n }\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n showEditingActions,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n createRow,\n createRowButtonRef,\n ...pendingChangesFns,\n };\n}\n"],"names":["React"],"mappings":";;;;AAiBO,SAAS,gBACZ,YAAY,OACZ,uBAAuB,OACvB,YACA,cACA,cACA,eACA,qBACA,WACA,qBAAqB,OACrB,SACF;AAEE,QAAM,CAAC,WAAW,UAAU,IAAIA,eAAM,SAAS,oBAAoB;AAGnE,QAAM,CAAC,gBAAgB,kBAAkB,IAAIA,eAAM,SAAS,KAAK;AAGjE,QAAM,qBAAqBA,eAAM,OAA0B,IAAI;AAG/D,QAAM,CAAC,sBAAsB,uBAAuB,IAAIA,eAAM,SAA6B,MAAS;AAEpG,QAAM,oBAAoB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGJ,gBAAc,MAAM;AAChB,QAAI,SAAS;AACT,cAAQ,gBAAgB,EAAE,SAAS,UAAA,CAAW;AAAA,IAClD;AAAA,EACJ,GAAG,CAAC,SAAS,CAAC;AAEd,WAAS,cACL,SACA,OACA,eACF;AACE,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,SAAS;AACT,YAAM,QAAQ,UAAU,UAAU,kBAAkB;AAEpD,UAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,kBAAU,UAAU,kBAAkB,KAAK;AAAA,MAC/C;AAEA,UAAI,CAAC,eAAe,MAAM,YAAA,EAAc,KAAK,KAAK,GAAG,EAAE,GAAG;AACtD,sBAAc,KAAK;AAAA,MACvB;AAAA,IACJ,WAAW,CAAC,SAAS;AAEjB,yBAAmB,KAAK;AAExB,8BAAwB,MAAS;AAAA,IACrC;AAEA,eAAW,OAAO;AAClB,sBAAkB,YAAY,KAAK;AAAA,EACvC;AAEA,iBAAe,UAA2B,OAAsB,KAAkB;AAC9E,QAAI,CAAC,cAAc;AACf;AAAA,IACJ;AAEA,UAAM,YAAY,MAAM,QAAQ;AAEhC,QAAI,UAAU,UAAU,mBAAmB,QAAW;AAClD,YAAM,QAAQ,MAAM,UAAU,QAAQ,YAAY,KAAK;AAEvD,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAAA,IACJ;AACA,UAAM,aACF,MAAM,QAAQ,MAAM,UAAU,mBAAmB,SAC3C,SACA,MAAM,YAAA,EAAc,SAAS,MAAM,QAAQ,MAAM,UAAU,cAAc;AAEnF,UAAM,YACF,OACC,MAAM,aAAa;AAAA,MAChB,WAAW,aAAa,EAAE,GAAG,WAAW,UAAU,GAAG,UAAU,QAAQ,YAAY,WAAW,EAAE,MAAM;AAAA,IAAA,CACzG;AAEL,QAAI;AACA,UAAI,WAAW;AAEX,cAAM,gBAAgB,UAAU,QAAQ;AACxC,cAAM,eAAe,cAAc,SAAS,UAAU,SAAS,IAAI,UAAU;AAC7E,kBAAU,UAAU,kBAAkB,YAAY;AAGlD,8BAAsB,MAAM;AACxB,gBAAM,WAAW,kBAAkB,mBAAmB,WAAW,YAAY;AAG7E,gBAAM,cAAc,CAAA,kBAAiB;AAAA,YACjC,GAAG;AAAA,YACH,SAAS,aAAa,UAAU,CAAA,IAAK,OAAO,QAAQ;AAAA,UAAA,EACtD;AAGF,6BAAmB,KAAK;AACxB,kCAAwB,MAAS;AAEjC,gBAAM,kBAAA;AAEN,cAAI,CAAC,UAAU,QAAQ,WAAW;AAC9B,uBAAW,IAAI;AAAA,UACnB;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,SAAS,OAAO;AAEZ,cAAQ,MAAM,KAAK;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,YAAY,qBAAqB,MAAM;AAAA,IAC3D,eAAe,YAAY,gBAAgB,MAAM;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA;AAEX;"}
@@ -5,8 +5,8 @@ const useGlobalKeyDown = require("../../../hooks/useGlobalKeyDown.cjs");
5
5
  const useLazyEffect = require("../../../hooks/useLazyEffect.cjs");
6
6
  const search = require("../../../primitives/Table/useTableManager/util/search.cjs");
7
7
  const dom = require("../../../utils/dom.cjs");
8
- const Localization = require("../../Provider/Localization.cjs");
9
8
  const editing = require("../util/editing.cjs");
9
+ const Localization = require("../../Provider/Localization.cjs");
10
10
  function useTableEditingListener(table, tableRef, scrollToIndex) {
11
11
  const tableMeta = table.options.meta;
12
12
  const localization = Localization.useLocalization();
@@ -1 +1 @@
1
- {"version":3,"file":"useTableEditingListener.cjs","sources":["../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport type { TableRef } from '../../../primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '../../../primitives/Table/useTableManager/util/search';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../utils/dom';\nimport { useLocalization } from '../../Provider/Localization';\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n // recompute search highlights against the freshly saved data, but keep the active row where it is -\n // moving it to the first match would jump focus to the top of the list mid-edit.\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization, false);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n\n const isClickOnTableOrInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n if (isClickOnTableOrInsideTable) {\n return;\n }\n\n const dialog = element.closest('[role=\"dialog\"]');\n const isClickInsideParentDialog = dialog !== null && tableRef.current?.closest('[role=\"dialog\"]') === dialog;\n // If dialog doesn't exist then the click is outside the table on a non dialog element\n const isClickOutside = dialog === null;\n\n // The below condition makes sure that we don't save the changes when click is inside a non parent dialog.\n // Those dialogs can possibly be opened by row actions and editing cell controls.\n // Users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (isClickInsideParentDialog || isClickOutside) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["useLocalization","useLazyEffect","resetHighlightedColumnIndexes","isElementInsideOrTriggeredFromContainer","useGlobalKeyDown","shortcut"],"mappings":";;;;;;;;;AAWO,SAAS,wBACZ,OACA,UACA,eACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,eAAeA,aAAAA,gBAAA;AAGrB,QAAM,aAAa,UAAU,QAAQ,WAAA;AAErC,QAAM,UAAU,MAAM;AAClB,aAAS,0BAA0B,OAA0B;AACzD,UAAI,UAAU,QAAQ,aAAa,YAAY;AAC3C,cAAM,cAAc;AACpB,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,iBAAiB,gBAAgB,yBAAyB;AAEjE,WAAO,MAAM;AACT,aAAO,oBAAoB,gBAAgB,yBAAyB;AAAA,IACxE;AAAA,EACJ,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,CAAC;AAE5C,QAAM,kBAAkB,UAAU,QAAQ,SAAA;AAE1CC,gBAAAA,cAAc,MAAM;AAChB,QAAI,iBAAiB;AAGjBC,aAAAA,8BAA8B,MAAM,SAAA,EAAW,cAAc,OAAO,cAAc,KAAK;AAAA,IAC3F;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,UAAU,MAAM;AAClB,UAAM,iBAAiB,CAAC,UAAsB;AAC1C,UAAI,UAAU,QAAQ,WAAW;AAC7B,cAAM,UAAU,MAAM;AAEtB,cAAM,8BACF,QAAQ,YAAY,WACpB,QAAQ,YAAY,WACpB,QAAQ,aAAa,WAAW,MAAM,cACtC,QAAQ,aAAa,YAAY,MAAM,oBACvC,CAAC,SAAS,KAAK,SAAS,OAAO,KAC/BC,IAAAA,wCAAwC,SAAS,SAAS,OAAO;AAErE,YAAI,6BAA6B;AAC7B;AAAA,QACJ;AAEA,cAAM,SAAS,QAAQ,QAAQ,iBAAiB;AAChD,cAAM,4BAA4B,WAAW,QAAQ,SAAS,SAAS,QAAQ,iBAAiB,MAAM;AAEtG,cAAM,iBAAiB,WAAW;AAKlC,YAAI,6BAA6B,gBAAgB;AAC7C,oBAAU,QAAQ,YAAY,KAAK;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAEA,aAAS,iBAAiB,SAAS,cAAc;AAEjD,WAAO,MAAM,SAAS,oBAAoB,SAAS,cAAc;AAAA,EACrE,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,QAAQ,WAAW,CAAC;AAG/DC,mBAAAA,iBAAiB,UAAU,QAAQ,YAAYC,QAAAA,WAAW,QAAW,CAAC,UAAyB;AAC3F,UAAM,eAAA;AACN,cAAU,QAAQ,cAAc,CAAC,UAAU,QAAQ,WAAW,OAAO,aAAa;AAAA,EACtF,CAAC;AAEDD,mBAAAA,iBAAiB,UAAU,QAAQ,YAAY,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,MAAA,IAAU,QAAW,CAAA,UAAS;AACxG,UAAM,eAAA;AACN,cAAU,QAAQ,YAAY,KAAK;AAAA,EACvC,CAAC;AACL;;"}
1
+ {"version":3,"file":"useTableEditingListener.cjs","sources":["../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\nimport { useGlobalKeyDown } from '@/hooks/useGlobalKeyDown';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport type { TableRef } from '@/primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '@/primitives/Table/useTableManager/util/search';\nimport { isElementInsideOrTriggeredFromContainer } from '@/utils/dom';\n\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n // recompute search highlights against the freshly saved data, but keep the active row where it is -\n // moving it to the first match would jump focus to the top of the list mid-edit.\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization, false);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n\n const isClickOnTableOrInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n if (isClickOnTableOrInsideTable) {\n return;\n }\n\n const dialog = element.closest('[role=\"dialog\"]');\n const isClickInsideParentDialog = dialog !== null && tableRef.current?.closest('[role=\"dialog\"]') === dialog;\n // If dialog doesn't exist then the click is outside the table on a non dialog element\n const isClickOutside = dialog === null;\n\n // The below condition makes sure that we don't save the changes when click is inside a non parent dialog.\n // Those dialogs can possibly be opened by row actions and editing cell controls.\n // Users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (isClickInsideParentDialog || isClickOutside) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["useLocalization","useLazyEffect","resetHighlightedColumnIndexes","isElementInsideOrTriggeredFromContainer","useGlobalKeyDown","shortcut"],"mappings":";;;;;;;;;AAYO,SAAS,wBACZ,OACA,UACA,eACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,eAAeA,aAAAA,gBAAA;AAGrB,QAAM,aAAa,UAAU,QAAQ,WAAA;AAErC,QAAM,UAAU,MAAM;AAClB,aAAS,0BAA0B,OAA0B;AACzD,UAAI,UAAU,QAAQ,aAAa,YAAY;AAC3C,cAAM,cAAc;AACpB,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,iBAAiB,gBAAgB,yBAAyB;AAEjE,WAAO,MAAM;AACT,aAAO,oBAAoB,gBAAgB,yBAAyB;AAAA,IACxE;AAAA,EACJ,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,CAAC;AAE5C,QAAM,kBAAkB,UAAU,QAAQ,SAAA;AAE1CC,gBAAAA,cAAc,MAAM;AAChB,QAAI,iBAAiB;AAGjBC,aAAAA,8BAA8B,MAAM,SAAA,EAAW,cAAc,OAAO,cAAc,KAAK;AAAA,IAC3F;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpB,QAAM,UAAU,MAAM;AAClB,UAAM,iBAAiB,CAAC,UAAsB;AAC1C,UAAI,UAAU,QAAQ,WAAW;AAC7B,cAAM,UAAU,MAAM;AAEtB,cAAM,8BACF,QAAQ,YAAY,WACpB,QAAQ,YAAY,WACpB,QAAQ,aAAa,WAAW,MAAM,cACtC,QAAQ,aAAa,YAAY,MAAM,oBACvC,CAAC,SAAS,KAAK,SAAS,OAAO,KAC/BC,IAAAA,wCAAwC,SAAS,SAAS,OAAO;AAErE,YAAI,6BAA6B;AAC7B;AAAA,QACJ;AAEA,cAAM,SAAS,QAAQ,QAAQ,iBAAiB;AAChD,cAAM,4BAA4B,WAAW,QAAQ,SAAS,SAAS,QAAQ,iBAAiB,MAAM;AAEtG,cAAM,iBAAiB,WAAW;AAKlC,YAAI,6BAA6B,gBAAgB;AAC7C,oBAAU,QAAQ,YAAY,KAAK;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAEA,aAAS,iBAAiB,SAAS,cAAc;AAEjD,WAAO,MAAM,SAAS,oBAAoB,SAAS,cAAc;AAAA,EACrE,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,QAAQ,WAAW,CAAC;AAG/DC,mBAAAA,iBAAiB,UAAU,QAAQ,YAAYC,QAAAA,WAAW,QAAW,CAAC,UAAyB;AAC3F,UAAM,eAAA;AACN,cAAU,QAAQ,cAAc,CAAC,UAAU,QAAQ,WAAW,OAAO,aAAa;AAAA,EACtF,CAAC;AAEDD,mBAAAA,iBAAiB,UAAU,QAAQ,YAAY,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,MAAA,IAAU,QAAW,CAAA,UAAS;AACxG,UAAM,eAAA;AACN,cAAU,QAAQ,YAAY,KAAK;AAAA,EACvC,CAAC;AACL;;"}
@@ -3,8 +3,8 @@ import { useGlobalKeyDown } from "../../../hooks/useGlobalKeyDown.js";
3
3
  import { useLazyEffect } from "../../../hooks/useLazyEffect.js";
4
4
  import { resetHighlightedColumnIndexes } from "../../../primitives/Table/useTableManager/util/search.js";
5
5
  import { isElementInsideOrTriggeredFromContainer } from "../../../utils/dom.js";
6
- import { useLocalization } from "../../Provider/Localization.js";
7
6
  import { shortcut } from "../util/editing.js";
7
+ import { useLocalization } from "../../Provider/Localization.js";
8
8
  function useTableEditingListener(table, tableRef, scrollToIndex) {
9
9
  const tableMeta = table.options.meta;
10
10
  const localization = useLocalization();
@@ -1 +1 @@
1
- {"version":3,"file":"useTableEditingListener.js","sources":["../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport type { TableRef } from '../../../primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '../../../primitives/Table/useTableManager/util/search';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../utils/dom';\nimport { useLocalization } from '../../Provider/Localization';\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n // recompute search highlights against the freshly saved data, but keep the active row where it is -\n // moving it to the first match would jump focus to the top of the list mid-edit.\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization, false);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n\n const isClickOnTableOrInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n if (isClickOnTableOrInsideTable) {\n return;\n }\n\n const dialog = element.closest('[role=\"dialog\"]');\n const isClickInsideParentDialog = dialog !== null && tableRef.current?.closest('[role=\"dialog\"]') === dialog;\n // If dialog doesn't exist then the click is outside the table on a non dialog element\n const isClickOutside = dialog === null;\n\n // The below condition makes sure that we don't save the changes when click is inside a non parent dialog.\n // Those dialogs can possibly be opened by row actions and editing cell controls.\n // Users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (isClickInsideParentDialog || isClickOutside) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["React"],"mappings":";;;;;;;AAWO,SAAS,wBACZ,OACA,UACA,eACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,eAAe,gBAAA;AAGrB,QAAM,aAAa,UAAU,QAAQ,WAAA;AAErCA,iBAAM,UAAU,MAAM;AAClB,aAAS,0BAA0B,OAA0B;AACzD,UAAI,UAAU,QAAQ,aAAa,YAAY;AAC3C,cAAM,cAAc;AACpB,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,iBAAiB,gBAAgB,yBAAyB;AAEjE,WAAO,MAAM;AACT,aAAO,oBAAoB,gBAAgB,yBAAyB;AAAA,IACxE;AAAA,EACJ,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,CAAC;AAE5C,QAAM,kBAAkB,UAAU,QAAQ,SAAA;AAE1C,gBAAc,MAAM;AAChB,QAAI,iBAAiB;AAGjB,oCAA8B,MAAM,SAAA,EAAW,cAAc,OAAO,cAAc,KAAK;AAAA,IAC3F;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpBA,iBAAM,UAAU,MAAM;AAClB,UAAM,iBAAiB,CAAC,UAAsB;AAC1C,UAAI,UAAU,QAAQ,WAAW;AAC7B,cAAM,UAAU,MAAM;AAEtB,cAAM,8BACF,QAAQ,YAAY,WACpB,QAAQ,YAAY,WACpB,QAAQ,aAAa,WAAW,MAAM,cACtC,QAAQ,aAAa,YAAY,MAAM,oBACvC,CAAC,SAAS,KAAK,SAAS,OAAO,KAC/B,wCAAwC,SAAS,SAAS,OAAO;AAErE,YAAI,6BAA6B;AAC7B;AAAA,QACJ;AAEA,cAAM,SAAS,QAAQ,QAAQ,iBAAiB;AAChD,cAAM,4BAA4B,WAAW,QAAQ,SAAS,SAAS,QAAQ,iBAAiB,MAAM;AAEtG,cAAM,iBAAiB,WAAW;AAKlC,YAAI,6BAA6B,gBAAgB;AAC7C,oBAAU,QAAQ,YAAY,KAAK;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAEA,aAAS,iBAAiB,SAAS,cAAc;AAEjD,WAAO,MAAM,SAAS,oBAAoB,SAAS,cAAc;AAAA,EACrE,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,QAAQ,WAAW,CAAC;AAG/D,mBAAiB,UAAU,QAAQ,YAAY,WAAW,QAAW,CAAC,UAAyB;AAC3F,UAAM,eAAA;AACN,cAAU,QAAQ,cAAc,CAAC,UAAU,QAAQ,WAAW,OAAO,aAAa;AAAA,EACtF,CAAC;AAED,mBAAiB,UAAU,QAAQ,YAAY,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,MAAA,IAAU,QAAW,CAAA,UAAS;AACxG,UAAM,eAAA;AACN,cAAU,QAAQ,YAAY,KAAK;AAAA,EACvC,CAAC;AACL;"}
1
+ {"version":3,"file":"useTableEditingListener.js","sources":["../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\nimport { useGlobalKeyDown } from '@/hooks/useGlobalKeyDown';\nimport { useLazyEffect } from '@/hooks/useLazyEffect';\nimport type { TableRef } from '@/primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '@/primitives/Table/useTableManager/util/search';\nimport { isElementInsideOrTriggeredFromContainer } from '@/utils/dom';\n\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n // recompute search highlights against the freshly saved data, but keep the active row where it is -\n // moving it to the first match would jump focus to the top of the list mid-edit.\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization, false);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n\n const isClickOnTableOrInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n if (isClickOnTableOrInsideTable) {\n return;\n }\n\n const dialog = element.closest('[role=\"dialog\"]');\n const isClickInsideParentDialog = dialog !== null && tableRef.current?.closest('[role=\"dialog\"]') === dialog;\n // If dialog doesn't exist then the click is outside the table on a non dialog element\n const isClickOutside = dialog === null;\n\n // The below condition makes sure that we don't save the changes when click is inside a non parent dialog.\n // Those dialogs can possibly be opened by row actions and editing cell controls.\n // Users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (isClickInsideParentDialog || isClickOutside) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["React"],"mappings":";;;;;;;AAYO,SAAS,wBACZ,OACA,UACA,eACF;AACE,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,eAAe,gBAAA;AAGrB,QAAM,aAAa,UAAU,QAAQ,WAAA;AAErCA,iBAAM,UAAU,MAAM;AAClB,aAAS,0BAA0B,OAA0B;AACzD,UAAI,UAAU,QAAQ,aAAa,YAAY;AAC3C,cAAM,cAAc;AACpB,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,iBAAiB,gBAAgB,yBAAyB;AAEjE,WAAO,MAAM;AACT,aAAO,oBAAoB,gBAAgB,yBAAyB;AAAA,IACxE;AAAA,EACJ,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,CAAC;AAE5C,QAAM,kBAAkB,UAAU,QAAQ,SAAA;AAE1C,gBAAc,MAAM;AAChB,QAAI,iBAAiB;AAGjB,oCAA8B,MAAM,SAAA,EAAW,cAAc,OAAO,cAAc,KAAK;AAAA,IAC3F;AAAA,EACJ,GAAG,CAAC,eAAe,CAAC;AAEpBA,iBAAM,UAAU,MAAM;AAClB,UAAM,iBAAiB,CAAC,UAAsB;AAC1C,UAAI,UAAU,QAAQ,WAAW;AAC7B,cAAM,UAAU,MAAM;AAEtB,cAAM,8BACF,QAAQ,YAAY,WACpB,QAAQ,YAAY,WACpB,QAAQ,aAAa,WAAW,MAAM,cACtC,QAAQ,aAAa,YAAY,MAAM,oBACvC,CAAC,SAAS,KAAK,SAAS,OAAO,KAC/B,wCAAwC,SAAS,SAAS,OAAO;AAErE,YAAI,6BAA6B;AAC7B;AAAA,QACJ;AAEA,cAAM,SAAS,QAAQ,QAAQ,iBAAiB;AAChD,cAAM,4BAA4B,WAAW,QAAQ,SAAS,SAAS,QAAQ,iBAAiB,MAAM;AAEtG,cAAM,iBAAiB,WAAW;AAKlC,YAAI,6BAA6B,gBAAgB;AAC7C,oBAAU,QAAQ,YAAY,KAAK;AAAA,QACvC;AAAA,MACJ;AAAA,IACJ;AAEA,aAAS,iBAAiB,SAAS,cAAc;AAEjD,WAAO,MAAM,SAAS,oBAAoB,SAAS,cAAc;AAAA,EACrE,GAAG,CAAC,UAAU,QAAQ,WAAW,UAAU,QAAQ,WAAW,CAAC;AAG/D,mBAAiB,UAAU,QAAQ,YAAY,WAAW,QAAW,CAAC,UAAyB;AAC3F,UAAM,eAAA;AACN,cAAU,QAAQ,cAAc,CAAC,UAAU,QAAQ,WAAW,OAAO,aAAa;AAAA,EACtF,CAAC;AAED,mBAAiB,UAAU,QAAQ,YAAY,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,MAAA,IAAU,QAAW,CAAA,UAAS;AACxG,UAAM,eAAA;AACN,cAAU,QAAQ,YAAY,KAAK;AAAA,EACvC,CAAC;AACL;"}
@@ -3,13 +3,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const useLazyEffect = require("../../hooks/useLazyEffect.cjs");
5
5
  const useTable = require("../../primitives/Table/Core/useTable.cjs");
6
- const IconButton = require("../LegacyComponents/IconButton/IconButton.cjs");
7
- const Localization = require("../Provider/Localization.cjs");
8
6
  const Cell = require("./components/Columns/Cell/Cell.cjs");
9
7
  const DiscardChangesConfirmationDialog = require("./components/Editing/DiscardChangesConfirmationDialog.cjs");
10
8
  const Row = require("./components/Row/Row.cjs");
11
9
  const useTableEditing = require("./features/useTableEditing.cjs");
12
10
  const useTableEditingListener = require("./listeners/useTableEditingListener.cjs");
11
+ const Localization = require("../Provider/Localization.cjs");
12
+ const IconButton = require("../LegacyComponents/IconButton/IconButton.cjs");
13
13
  const RENDERERS = {
14
14
  row: Row.Row,
15
15
  cell: Cell.Cell