@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":"search.js","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '../../../../components/Provider/Localization';\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sources":["../../../../../src/primitives/Table/useTableManager/util/search.ts"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnDataType, TableColumnDataTypeOptions } from '../../types';\n\nimport { getDataTypeProperties } from './dataTypes';\nimport { isWeakContains } from './filtering';\n\nconst flattenCellValue = (cellValue: object | string): any => {\n return typeof cellValue === 'object' ? Object.values(cellValue).map(flattenCellValue) : cellValue;\n};\n\nexport function isMatched<TType = unknown>(\n query: any,\n cellValue: any,\n rowValue: TType,\n dataType: TableColumnDataType | undefined,\n dataTypeOptions: TableColumnDataTypeOptions | undefined,\n localization: Localization,\n matcher: (left: any, right: any) => boolean = isWeakContains\n) {\n if (typeof cellValue === 'object') {\n return flattenCellValue(cellValue)\n .flat(Infinity)\n .find((y: any) => matcher(y, query));\n }\n const dataTypeProperties = getDataTypeProperties<TType>(dataType);\n\n if (dataTypeProperties.getDisplayValue) {\n const cellDisplayValue = dataTypeProperties.getDisplayValue(cellValue, rowValue, {\n dataTypeOptions,\n localization,\n });\n\n if (Array.isArray(cellDisplayValue)) {\n return cellDisplayValue.some(cdv => matcher(cdv, query));\n }\n\n if (cellDisplayValue !== undefined && isWeakContains(cellDisplayValue, query)) {\n return true;\n }\n } else {\n const cellValueAsString = String(cellValue ?? '');\n\n if (cellValueAsString !== undefined && matcher(cellValueAsString, query)) {\n return true;\n }\n }\n\n if (typeof query !== typeof cellValue && dataTypeProperties.parse) {\n const parsedQuery = dataTypeProperties.parse(query, localization.locale);\n\n if (parsedQuery !== undefined && matcher(cellValue, parsedQuery)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function globalFilterFn<TType = unknown>(\n row: ReactTableRow<TType>,\n columnId: string,\n searchQuery: string,\n localization: Localization\n) {\n try {\n if (row.original) {\n const cellValue = row.getValue(columnId);\n const columnMeta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n\n return isMatched<TType>(\n searchQuery,\n cellValue,\n row.original,\n columnMeta?.dataType,\n columnMeta?.dataTypeOptions,\n localization\n );\n }\n } catch {\n // we don't care, just fail silently and return no results\n }\n\n return false;\n}\n\nexport function resetHighlightedColumnIndexes<TType = unknown>(\n searchQuery: string | undefined,\n table: ReactTable<TType>,\n localization: Localization,\n // When typing a search we want to jump to the first match. But when this runs to recompute highlights after\n // an edit is saved, moving the active row would yank focus to the top of the list\n moveActiveRowToFirstMatch = true\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let firstRowIndex: undefined | number;\n\n if (searchQuery) {\n const indexes: number[][] = [];\n const columns = table.getVisibleLeafColumns();\n const rowGrouping = table.getState().grouping;\n\n table.getRowModel().rows.forEach((row, rowIndex) => {\n columns.forEach((column, columnIndex) => {\n try {\n let allowSearch = true;\n\n if (rowGrouping?.length) {\n // if it's the grouped row, only allow search of the grouped column - because that's all that's visible\n if (row.getIsGrouped()) {\n allowSearch = column.getIsGrouped();\n }\n // otherwise for other rows, don't search the grouped column - because it isn't visible\n else if (rowGrouping.includes(column.id)) {\n allowSearch = false;\n }\n }\n\n if (column.getIsVisible() && column.columnDef.enableGlobalFilter && allowSearch) {\n const cellValue = row.getValue(column.id);\n const dataType = column.columnDef.meta?.dataType;\n const dataTypeOptions = column.columnDef.meta?.dataTypeOptions;\n\n if (isMatched<TType>(searchQuery, cellValue, row.original, dataType, dataTypeOptions, localization)) {\n indexes.push([rowIndex, columnIndex]);\n }\n }\n } catch {\n //\n }\n });\n });\n\n tableMeta.search.setHighlightedColumnIndexes(indexes);\n\n if (indexes.length) {\n firstRowIndex = indexes[0]?.[0];\n tableMeta.search.setCurrentHighlightColumnIndex(0);\n } else {\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n } else {\n tableMeta.search.setHighlightedColumnIndexes([]);\n tableMeta.search.setCurrentHighlightColumnIndex(undefined);\n }\n\n if (firstRowIndex !== undefined && moveActiveRowToFirstMatch) {\n tableMeta.rowActive.setRowActiveIndex(firstRowIndex);\n }\n\n return firstRowIndex;\n}\n"],"names":[],"mappings":"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"}
@@ -218,6 +218,13 @@ function mapTableChildrenToColumns(props, settings2, options, internalColumns, l
218
218
  }
219
219
  return { columns: columns2, defaultSizing, defaultSorting, defaultVisibility };
220
220
  }
221
+ function getRowGroupExpandedRowModel() {
222
+ return (table) => reactTable.memo(
223
+ () => [table.getState().expanded, table.getPreExpandedRowModel()],
224
+ (_expanded, rowModel) => rowModel.rows.length ? reactTable.expandRows(rowModel) : rowModel,
225
+ reactTable.getMemoOptions(table.options, "debugTable", "getExpandedRowModel")
226
+ );
227
+ }
221
228
  function configureReactTableOptions(options, props, localization) {
222
229
  const reactTableEnableRowSelection = typeof options.enableRowSelection === "function" ? (row) => options.enableRowSelection(row.original) : options.enableRowSelection;
223
230
  let getRowId;
@@ -253,8 +260,11 @@ function configureReactTableOptions(options, props, localization) {
253
260
  enableRowSelection: reactTableEnableRowSelection ?? false,
254
261
  enableSorting: options.enableSorting ?? false,
255
262
  // models for default features
256
- getExpandedRowModel: reactTable.getExpandedRowModel(),
263
+ getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel() : reactTable.getExpandedRowModel(),
257
264
  getGroupedRowModel: reactTable.getGroupedRowModel(),
265
+ // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning
266
+ // undefined for data rows lets react-table fall back to the row expansion state for them
267
+ getIsRowExpanded: ((row) => row.getIsGrouped() ? true : void 0),
258
268
  getRowId,
259
269
  groupedColumnMode: false,
260
270
  keepPinnedRows: false
@@ -1 +1 @@
1
- {"version":3,"file":"setup.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '../../../../components/Provider/Localization';\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["columns","settings","createColumnHelper","child","CELL_MIN_WIDTH","getDataTypeProperties","getSortingFn","getExpandedRowModel","getGroupedRowModel","getFilteredRowModel","columnFilterFn","globalFilterFn","getSortedRowModel","ensureOrdering","freezeUptoExternalColumn","unfreezeAllExternalColumns","ignoreInternalColumns"],"mappings":"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"}
1
+ {"version":3,"file":"setup.cjs","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["columns","settings","createColumnHelper","child","CELL_MIN_WIDTH","getDataTypeProperties","getSortingFn","memo","expandRows","getMemoOptions","getExpandedRowModel","getGroupedRowModel","getFilteredRowModel","columnFilterFn","globalFilterFn","getSortedRowModel","ensureOrdering","freezeUptoExternalColumn","unfreezeAllExternalColumns","ignoreInternalColumns"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TableOptions as ReactTableOptions, ColumnDef as ReactTableColumnDef, ColumnSizingState as ReactTableColumnSizingState, ColumnSort as ReactTableColumnSort, TableState as ReactTableState, VisibilityState as ReactTableVisibilityState } from '@tanstack/react-table';
2
- import { Localization } from '../../../../components/Provider/Localization';
2
+ import { Localization } from '../../../../components';
3
3
  import { TableFeatureProps, TableProps, TableSettings } from '../../types';
4
4
  import { useTableManagerInternalColumns } from '../types';
5
5
  export declare function mapTableChildrenToColumns<TType = unknown>(props: TableProps<TType>, settings: TableSettings, options: TableFeatureProps<TType>, internalColumns: useTableManagerInternalColumns<TType> | undefined, localization: Localization): {
@@ -1,4 +1,4 @@
1
- import { getGroupedRowModel, getExpandedRowModel, getFilteredRowModel, getSortedRowModel, createColumnHelper } from "@tanstack/react-table";
1
+ import { getGroupedRowModel, getExpandedRowModel, getFilteredRowModel, getSortedRowModel, createColumnHelper, memo, expandRows, getMemoOptions } from "@tanstack/react-table";
2
2
  import get from "lodash/get";
3
3
  import React__default from "react";
4
4
  import { ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns, CELL_MIN_WIDTH } from "./columns.js";
@@ -216,6 +216,13 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns, lo
216
216
  }
217
217
  return { columns, defaultSizing, defaultSorting, defaultVisibility };
218
218
  }
219
+ function getRowGroupExpandedRowModel() {
220
+ return (table) => memo(
221
+ () => [table.getState().expanded, table.getPreExpandedRowModel()],
222
+ (_expanded, rowModel) => rowModel.rows.length ? expandRows(rowModel) : rowModel,
223
+ getMemoOptions(table.options, "debugTable", "getExpandedRowModel")
224
+ );
225
+ }
219
226
  function configureReactTableOptions(options, props, localization) {
220
227
  const reactTableEnableRowSelection = typeof options.enableRowSelection === "function" ? (row) => options.enableRowSelection(row.original) : options.enableRowSelection;
221
228
  let getRowId;
@@ -251,8 +258,11 @@ function configureReactTableOptions(options, props, localization) {
251
258
  enableRowSelection: reactTableEnableRowSelection ?? false,
252
259
  enableSorting: options.enableSorting ?? false,
253
260
  // models for default features
254
- getExpandedRowModel: getExpandedRowModel(),
261
+ getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel() : getExpandedRowModel(),
255
262
  getGroupedRowModel: getGroupedRowModel(),
263
+ // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning
264
+ // undefined for data rows lets react-table fall back to the row expansion state for them
265
+ getIsRowExpanded: ((row) => row.getIsGrouped() ? true : void 0),
256
266
  getRowId,
257
267
  groupedColumnMode: false,
258
268
  keepPinnedRows: false
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '../../../../components/Provider/Localization';\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["React","columns","child"],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sources":["../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import type {\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Table as ReactTableInstance,\n CellContext as ReactTableCellContext,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport {\n createColumnHelper,\n expandRows,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getMemoOptions,\n getSortedRowModel,\n memo,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\nimport React from 'react';\n\nimport type { Localization } from '@/components';\n\nimport type { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport type { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\n\nimport { CELL_MIN_WIDTH, ensureOrdering, freezeUptoExternalColumn, unfreezeAllExternalColumns } from './columns';\nimport { getDataTypeProperties } from './dataTypes';\nimport { columnFilterFn } from './filtering';\nimport { globalFilterFn } from './search';\nimport { ignoreInternalColumns } from './settings';\nimport { getSortingFn } from './sorting';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactNode,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId: keyof TType | undefined,\n localization: Localization\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableEditing = !!child.props.control,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = CELL_MIN_WIDTH[settings.fontSize ?? 'medium'] ?? CELL_MIN_WIDTH.medium,\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n // always have an id, if none is defined use the accessor (at least one has to be defined)\n const id = untypedId ?? (accessorKey as string);\n\n const dataTypeProperties = getDataTypeProperties<TType>(child.props.dataType);\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n // dot notated accessors will throw if they return null or undefined, so use accessorFn (instead of accessorKey) to avoid that\n accessorFn: row => get(row, accessorKey as string),\n // The header can be either a string or a React.JSX.Element, but react-table expects it to be a string or a\n // renderer function, so `() => header` ensures compatibility when header is a React.JSX.Element.\n // If we just pass `() => header`, then we will loose truncation for string headers.\n header: typeof header === 'string' ? header : () => header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n align: meta.align ?? dataTypeProperties.align,\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n enableEditing,\n header,\n },\n };\n\n const formattedValueRenderer = (value: any, row: TType) => {\n const displayValue = dataTypeProperties.getDisplayValue?.(value, row, {\n dataTypeOptions: meta.dataTypeOptions as any,\n localization,\n });\n const safeValue = value !== undefined && value !== null ? String(value) : value;\n\n if (Array.isArray(displayValue)) {\n return displayValue[0] ?? safeValue;\n }\n\n return displayValue ?? safeValue;\n };\n\n const rendererArgs = (info: ReactTableCellContext<TType, any>): any => ({\n row: info.row.original,\n get value() {\n return info.getValue();\n },\n get formattedValue() {\n return formattedValueRenderer(info.getValue(), info.row.original);\n },\n });\n\n // renderers - use defined renderers first, then fall back to data type renderers (if there is one)\n if (typeof renderer === 'function') {\n column.cell = info => renderer(rendererArgs(info));\n } else {\n column.cell = info => formattedValueRenderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original === undefined ? [] : row.original)));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(rendererArgs(info));\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns: useTableManagerInternalColumns<TType> | undefined,\n localization: Localization\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId,\n localization\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowSelection && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\n// react-table skips expansion entirely while nothing is expanded, which would also stop row groups from\n// expanding and hide every row inside them. group rows are always expanded (see getIsRowExpanded below),\n// so when grouping we expand regardless of the row expansion state.\nfunction getRowGroupExpandedRowModel<TType = unknown>() {\n return (table: ReactTableInstance<TType>) =>\n memo(\n () => [table.getState().expanded, table.getPreExpandedRowModel()] as const,\n (_expanded, rowModel) => (rowModel.rows.length ? expandRows(rowModel) : rowModel),\n getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel')\n );\n}\n\nexport function configureReactTableOptions<TType = unknown>(\n options: TableFeatureProps<TType>,\n props: TableProps<TType>,\n localization: Localization\n) {\n // We don't want to expose internal Tanstack Table row, so we need to wrap enableRowSelection callback into additional function,\n // which receives the React Table Row object and passes row.original to a callback.\n const reactTableEnableRowSelection =\n typeof options.enableRowSelection === 'function'\n ? (row: ReactTableRow<TType>) => (options.enableRowSelection as (row: TType) => boolean)(row.original)\n : options.enableRowSelection;\n\n let getRowId;\n\n if (props.rowIdentityAccessor) {\n getRowId = (originalRow: TType | undefined, index: number) => {\n if (originalRow) {\n return String(originalRow[props.rowIdentityAccessor as keyof TType]);\n }\n\n return String(index);\n };\n }\n\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowPinning: true, // users can't customise row pinning, so it can just be always enabled\n enableRowSelection: reactTableEnableRowSelection ?? false,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: props.defaultRowGroupColumnId ? getRowGroupExpandedRowModel<TType>() : getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n // group rows are expanded by grouping, not by row expansion, so their state is fixed - returning\n // undefined for data rows lets react-table fall back to the row expansion state for them\n getIsRowExpanded: ((row: ReactTableRow<TType>) => (row.getIsGrouped() ? true : undefined)) as (\n row: ReactTableRow<TType>\n ) => boolean,\n getRowId,\n groupedColumnMode: false,\n keepPinnedRows: false,\n };\n\n if (options.enableRowExpansion) {\n // Prevent expansion state from resetting when data changes (e.g., after editing)\n tableOptions.autoResetExpanded = false;\n }\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) => {\n const meta = row._getAllCellsByColumnId()[columnId]?.column.columnDef.meta;\n return columnFilterFn(row.original, row.getValue(columnId), meta, filter, localization);\n },\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = (row: ReactTableRow<TType>, columnId: string, searchQuery: any) =>\n globalFilterFn(row, columnId, searchQuery, localization);\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) =>\n column.columnDef.meta?.enableSearch !== false && column.getIsVisible();\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n if (props._experimentalDataLoader2) {\n tableOptions.manualFiltering = true;\n } else {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = (column: ReactTableColumnDef<TType>) =>\n columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n const lastPinnedColumn = columnPinning.left[columnPinning.left.length - 1];\n\n if (lastPinnedColumn !== undefined) {\n columnPinning.left = freezeUptoExternalColumn(columnOrder.indexOf(lastPinnedColumn), columnOrder);\n }\n } else if (props.defaultColumnFreezingIndex === undefined) {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n } else {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n }\n\n const columnSizing = {\n ...defaults.defaultSizing,\n ...props.defaultSettings?.columnSizing,\n ...persistedSettings.columnSizing,\n };\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(columnSizing),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : (props.defaultSettings?.sorting ?? defaults.defaultSorting),\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["React","columns","child"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.cjs","sources":["../../src/utils/dom.ts"],"sourcesContent":["import type { TableRef } from '../primitives/Table/types';\n\n// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element === null ? false : element.scrollWidth > element.offsetWidth;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null, direction = 1) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...(document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(',')) as any)];\n\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + direction)\n .filter(element => element.getAttribute('tabindex') !== '-1')\n // Skip Base UI focus-guard sentinels (visually hidden helpers for portal focus trapping)\n .filter(element => !element.hasAttribute('data-base-ui-focus-guard'));\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null): boolean {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n const escapedSelector = CSS.escape(selector);\n\n if (container?.querySelector(escapedSelector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(escapedSelector);\n\n if (elementInDocument === container) {\n return true;\n }\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nconst isDialogOpenedFromContainer = (element: Element | null, container: Element | null) => {\n if (!container) {\n return false;\n }\n\n let currentDialog = element?.closest('[role=\"dialog\"]');\n\n // Iteratively traverse up through nested dialogs to check if any of them were triggered from within the container\n while (currentDialog?.id) {\n const opener = document.querySelector(`[aria-controls=\"${currentDialog.id}\"]`);\n\n if (!opener) {\n return false;\n }\n\n if (container.contains(opener)) {\n return true;\n }\n\n currentDialog = opener.closest('[role=\"dialog\"]');\n }\n\n return false;\n};\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return (\n isElementTriggeredFromContainer(element, container) ||\n !!container?.contains(element) ||\n isDialogOpenedFromContainer(element, container)\n );\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInsideExternalRelatedOverlay(element: Element | null, tableRef: React.RefObject<TableRef>) {\n return (\n (isElementInsideOverlay(element) && !isSiblingElementInsideSameParentOverlay(element, tableRef.current)) ||\n (isElementInteractive(element) && !isElementInsideOrTriggeredFromContainer(element, tableRef.current))\n );\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n const interactiveElements = new Set(['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION']);\n\n const isInteractive =\n interactiveElements.has(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly;\n\n // sometimes buttons contain content like an icon, and we can't rely on pointer events being disabled\n // so search for a focusable parent\n if (!isInteractive) {\n const focusableParent = element.closest(FOCUSABLE_ELEMENTS.join(','));\n return focusableParent ? interactiveElements.has(focusableParent.tagName) : false;\n }\n\n return isInteractive;\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.cjs","sources":["../../src/utils/dom.ts"],"sourcesContent":["import type { TableRef } from '@/primitives/Table/types';\n\n// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element === null ? false : element.scrollWidth > element.offsetWidth;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null, direction = 1) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...(document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(',')) as any)];\n\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + direction)\n .filter(element => element.getAttribute('tabindex') !== '-1')\n // Skip Base UI focus-guard sentinels (visually hidden helpers for portal focus trapping)\n .filter(element => !element.hasAttribute('data-base-ui-focus-guard'));\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null): boolean {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n const escapedSelector = CSS.escape(selector);\n\n if (container?.querySelector(escapedSelector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(escapedSelector);\n\n if (elementInDocument === container) {\n return true;\n }\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nconst isDialogOpenedFromContainer = (element: Element | null, container: Element | null) => {\n if (!container) {\n return false;\n }\n\n let currentDialog = element?.closest('[role=\"dialog\"]');\n\n // Iteratively traverse up through nested dialogs to check if any of them were triggered from within the container\n while (currentDialog?.id) {\n const opener = document.querySelector(`[aria-controls=\"${currentDialog.id}\"]`);\n\n if (!opener) {\n return false;\n }\n\n if (container.contains(opener)) {\n return true;\n }\n\n currentDialog = opener.closest('[role=\"dialog\"]');\n }\n\n return false;\n};\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return (\n isElementTriggeredFromContainer(element, container) ||\n !!container?.contains(element) ||\n isDialogOpenedFromContainer(element, container)\n );\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInsideExternalRelatedOverlay(element: Element | null, tableRef: React.RefObject<TableRef>) {\n return (\n (isElementInsideOverlay(element) && !isSiblingElementInsideSameParentOverlay(element, tableRef.current)) ||\n (isElementInteractive(element) && !isElementInsideOrTriggeredFromContainer(element, tableRef.current))\n );\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n const interactiveElements = new Set(['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION']);\n\n const isInteractive =\n interactiveElements.has(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly;\n\n // sometimes buttons contain content like an icon, and we can't rely on pointer events being disabled\n // so search for a focusable parent\n if (!isInteractive) {\n const focusableParent = element.closest(FOCUSABLE_ELEMENTS.join(','));\n return focusableParent ? interactiveElements.has(focusableParent.tagName) : false;\n }\n\n return isInteractive;\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../src/utils/dom.ts"],"sourcesContent":["import type { TableRef } from '../primitives/Table/types';\n\n// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element === null ? false : element.scrollWidth > element.offsetWidth;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null, direction = 1) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...(document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(',')) as any)];\n\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + direction)\n .filter(element => element.getAttribute('tabindex') !== '-1')\n // Skip Base UI focus-guard sentinels (visually hidden helpers for portal focus trapping)\n .filter(element => !element.hasAttribute('data-base-ui-focus-guard'));\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null): boolean {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n const escapedSelector = CSS.escape(selector);\n\n if (container?.querySelector(escapedSelector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(escapedSelector);\n\n if (elementInDocument === container) {\n return true;\n }\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nconst isDialogOpenedFromContainer = (element: Element | null, container: Element | null) => {\n if (!container) {\n return false;\n }\n\n let currentDialog = element?.closest('[role=\"dialog\"]');\n\n // Iteratively traverse up through nested dialogs to check if any of them were triggered from within the container\n while (currentDialog?.id) {\n const opener = document.querySelector(`[aria-controls=\"${currentDialog.id}\"]`);\n\n if (!opener) {\n return false;\n }\n\n if (container.contains(opener)) {\n return true;\n }\n\n currentDialog = opener.closest('[role=\"dialog\"]');\n }\n\n return false;\n};\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return (\n isElementTriggeredFromContainer(element, container) ||\n !!container?.contains(element) ||\n isDialogOpenedFromContainer(element, container)\n );\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInsideExternalRelatedOverlay(element: Element | null, tableRef: React.RefObject<TableRef>) {\n return (\n (isElementInsideOverlay(element) && !isSiblingElementInsideSameParentOverlay(element, tableRef.current)) ||\n (isElementInteractive(element) && !isElementInsideOrTriggeredFromContainer(element, tableRef.current))\n );\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n const interactiveElements = new Set(['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION']);\n\n const isInteractive =\n interactiveElements.has(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly;\n\n // sometimes buttons contain content like an icon, and we can't rely on pointer events being disabled\n // so search for a focusable parent\n if (!isInteractive) {\n const focusableParent = element.closest(FOCUSABLE_ELEMENTS.join(','));\n return focusableParent ? interactiveElements.has(focusableParent.tagName) : false;\n }\n\n return isInteractive;\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":[],"mappings":"AAGA,MAAM,qBAAqB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,sBAAsB,CAAC,YAAgC;AAChE,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AAEA,SAAO,CAAC,CAAC,QAAQ,cAAc,mBAAmB,KAAK,GAAG,CAAC;AAC/D;AAKO,MAAM,wCAAwC,CAAC,SAAsB,WAAW,MAAM;AACzF,MAAI,QAAQ;AACZ,MAAI,qBAAoC;AACxC,QAAM,aAAa,QAAQ,sBAAA;AAE3B,aAAW,SAAS,MAAM,KAAK,QAAQ,QAAQ,GAAG;AAC9C,UAAM,QAAQ,MAAM,sBAAA,EAAwB,QAAQ,WAAW;AAC/D,UAAM,QAAQ,WAAW,QAAQ;AAEjC,QAAI,QAAQ,OAAO;AACf,2BAAqB;AACrB;AAAA,IACJ;AACA;AAAA,EACJ;AAEA,SAAO;AACX;AAEO,MAAM,2BAA2B,CAAC,gBAAoC,YAAY,MAAM;AAC3F,MAAI,CAAC,gBAAgB;AACjB,WAAO;AAAA,EACX;AAEA,MAAI,qBAAqB,CAAC,GAAI,SAAS,iBAA8B,mBAAmB,KAAK,GAAG,CAAC,CAAS;AAE1G,QAAM,sBAAsB,mBAAmB,QAAQ,cAAc;AAErE,MAAI,sBAAsB,IAAI;AAC1B,yBAAqB,mBAChB,MAAM,sBAAsB,SAAS,EACrC,OAAO,aAAW,QAAQ,aAAa,UAAU,MAAM,IAAI,EAE3D,OAAO,CAAA,YAAW,CAAC,QAAQ,aAAa,0BAA0B,CAAC;AAExE,QAAI,mBAAmB,QAAQ;AAC3B,2BAAqB,mBAAmB,OAAO,CAAA,YAAY,QAAgB,kBAAA,KAAuB,IAAI;AACtG,aAAO,mBAAmB,CAAC,KAAK;AAAA,IACpC;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,MAAM,qBAAqB,CAAC,YAA4B;AACpD,UAAQ,SAAS,aAAa,MAAM,GAAA;AAAA,IAChC,KAAK;AACD,aAAO,mBAAmB,QAAQ,EAAE;AAAA,IAExC,KAAK;AACD,aAAO,IAAI,QAAQ,aAAa,iBAAiB,CAAC;AAAA,IAEtD;AACI,aAAO;AAAA,EAAA;AAEnB;AAEO,SAAS,gCAAgC,SAAyB,WAAoC;AACzG,QAAM,WAAW,mBAAmB,OAAO,KAAK,mBAAmB,SAAS,QAAQ,2BAA2B,KAAK,IAAI;AAExH,MAAI,UAAU;AACV,UAAM,kBAAkB,IAAI,OAAO,QAAQ;AAE3C,QAAI,WAAW,cAAc,eAAe,GAAG;AAC3C,aAAO;AAAA,IACX;AAEA,UAAM,oBAAoB,SAAS,cAAc,eAAe;AAEhE,QAAI,sBAAsB,WAAW;AACjC,aAAO;AAAA,IACX;AAGA,QAAI,mBAAmB;AACnB,aAAO,gCAAgC,mBAAmB,SAAS;AAAA,IACvE;AAEA,WAAO;AAAA,EACX;AAEA,SAAO;AACX;AAEA,MAAM,8BAA8B,CAAC,SAAyB,cAA8B;AACxF,MAAI,CAAC,WAAW;AACZ,WAAO;AAAA,EACX;AAEA,MAAI,gBAAgB,SAAS,QAAQ,iBAAiB;AAGtD,SAAO,eAAe,IAAI;AACtB,UAAM,SAAS,SAAS,cAAc,mBAAmB,cAAc,EAAE,IAAI;AAE7E,QAAI,CAAC,QAAQ;AACT,aAAO;AAAA,IACX;AAEA,QAAI,UAAU,SAAS,MAAM,GAAG;AAC5B,aAAO;AAAA,IACX;AAEA,oBAAgB,OAAO,QAAQ,iBAAiB;AAAA,EACpD;AAEA,SAAO;AACX;AAEO,SAAS,wCAAwC,SAAyB,WAA2B;AACxG,SACI,gCAAgC,SAAS,SAAS,KAClD,CAAC,CAAC,WAAW,SAAS,OAAO,KAC7B,4BAA4B,SAAS,SAAS;AAEtD;AAEO,SAAS,uBAAuB,SAAyB;AAC5D,SAAO,CAAC,CAAC,SAAS,QAAQ,2BAA2B;AACzD;AAEO,SAAS,wCAAwC,SAAyB,SAAyB;AACtG,SAAO,CAAC,CAAC,SAAS,QAAQ,2BAA2B,GAAG,SAAS,OAAO;AAC5E;AAEO,SAAS,sCAAsC,SAAyB,UAAqC;AAChH,SACK,uBAAuB,OAAO,KAAK,CAAC,wCAAwC,SAAS,SAAS,OAAO,KACrG,qBAAqB,OAAO,KAAK,CAAC,wCAAwC,SAAS,SAAS,OAAO;AAE5G;AAEO,SAAS,qBAAqB,SAAyB;AAC1D,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AAEA,QAAM,sBAAsB,oBAAI,IAAI,CAAC,KAAK,UAAU,SAAS,YAAY,UAAU,SAAS,QAAQ,CAAC;AAErG,QAAM,gBACF,oBAAoB,IAAI,QAAQ,OAAO,KACvC,CAAE,QAAwB,UAC1B,CAAE,QAA2F,YAC7F,CAAE,QAAmD;AAIzD,MAAI,CAAC,eAAe;AAChB,UAAM,kBAAkB,QAAQ,QAAQ,mBAAmB,KAAK,GAAG,CAAC;AACpE,WAAO,kBAAkB,oBAAoB,IAAI,gBAAgB,OAAO,IAAI;AAAA,EAChF;AAEA,SAAO;AACX;AAEO,SAAS,8BAA8B,SAAyB;AACnE,SAAO,CAAC,CAAC,SAAS,QAAQ,oBAAoB;AAClD;AAEO,SAAS,sBAAsB,QAAiB;AACnD,SAAO,aAAa,cAAc,cAAc;AAEhD,QAAM,UAAU,MAAM;AAClB,WAAO,gBAAgB,YAAY;AACnC,WAAO,oBAAoB,QAAQ,OAAO;AAAA,EAC9C;AAEA,SAAO,iBAAiB,QAAQ,OAAO;AAC3C;"}
1
+ {"version":3,"file":"dom.js","sources":["../../src/utils/dom.ts"],"sourcesContent":["import type { TableRef } from '@/primitives/Table/types';\n\n// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element === null ? false : element.scrollWidth > element.offsetWidth;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null, direction = 1) => {\n if (!currentElement) {\n return null;\n }\n\n let focussableElements = [...(document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(',')) as any)];\n\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n if (currentElementIndex > -1) {\n focussableElements = focussableElements\n .slice(currentElementIndex + direction)\n .filter(element => element.getAttribute('tabindex') !== '-1')\n // Skip Base UI focus-guard sentinels (visually hidden helpers for portal focus trapping)\n .filter(element => !element.hasAttribute('data-base-ui-focus-guard'));\n\n if (focussableElements.length) {\n focussableElements = focussableElements.filter(element => (element as any).checkVisibility?.() ?? true);\n return focussableElements[0] ?? null;\n }\n }\n\n return null;\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementTriggeredFromContainer(element: Element | null, container: Element | null): boolean {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n const escapedSelector = CSS.escape(selector);\n\n if (container?.querySelector(escapedSelector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(escapedSelector);\n\n if (elementInDocument === container) {\n return true;\n }\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return false;\n}\n\nconst isDialogOpenedFromContainer = (element: Element | null, container: Element | null) => {\n if (!container) {\n return false;\n }\n\n let currentDialog = element?.closest('[role=\"dialog\"]');\n\n // Iteratively traverse up through nested dialogs to check if any of them were triggered from within the container\n while (currentDialog?.id) {\n const opener = document.querySelector(`[aria-controls=\"${currentDialog.id}\"]`);\n\n if (!opener) {\n return false;\n }\n\n if (container.contains(opener)) {\n return true;\n }\n\n currentDialog = opener.closest('[role=\"dialog\"]');\n }\n\n return false;\n};\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n return (\n isElementTriggeredFromContainer(element, container) ||\n !!container?.contains(element) ||\n isDialogOpenedFromContainer(element, container)\n );\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInsideExternalRelatedOverlay(element: Element | null, tableRef: React.RefObject<TableRef>) {\n return (\n (isElementInsideOverlay(element) && !isSiblingElementInsideSameParentOverlay(element, tableRef.current)) ||\n (isElementInteractive(element) && !isElementInsideOrTriggeredFromContainer(element, tableRef.current))\n );\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n const interactiveElements = new Set(['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION']);\n\n const isInteractive =\n interactiveElements.has(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly;\n\n // sometimes buttons contain content like an icon, and we can't rely on pointer events being disabled\n // so search for a focusable parent\n if (!isInteractive) {\n const focusableParent = element.closest(FOCUSABLE_ELEMENTS.join(','));\n return focusableParent ? interactiveElements.has(focusableParent.tagName) : false;\n }\n\n return isInteractive;\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n\nexport function setDataFocusAttribute(target: Element) {\n target.setAttribute('data-focus', 'programmatic');\n\n const cleanup = () => {\n target.removeAttribute('data-focus');\n target.removeEventListener('blur', cleanup);\n };\n\n target.addEventListener('blur', cleanup);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ function isFragment(child) {
5
+ return React.isValidElement(child) && child.type === React.Fragment;
6
+ }
7
+ const flattenChildren = (children, keyPrefix = "") => React.Children.toArray(children).flatMap((child, index) => {
8
+ const key = `${keyPrefix}${React.isValidElement(child) ? child.key : `.${index}`}`;
9
+ return isFragment(child) ? flattenChildren(child.props.children, key) : [{ key, child }];
10
+ });
11
+ exports.flattenChildren = flattenChildren;
12
+ //# sourceMappingURL=flattenChildren.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattenChildren.cjs","sources":["../../src/utils/flattenChildren.ts"],"sourcesContent":["import React from 'react';\n\n// React 19 types default `ReactElement`'s props to `unknown` when the generic\n// cannot be inferred, so declare the predicate explicitly to keep `props.children` usable.\nfunction isFragment(child: React.ReactNode): child is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(child) && child.type === React.Fragment;\n}\n\nexport type FlattenedChild = { key: React.Key; child: React.ReactNode };\n\n// React.Children.toArray already drops null/undefined/boolean children, so only fragments need unwrapping.\n// The key comes from toArray (stable when a conditional sibling disappears, unlike an array index) and is\n// prefixed with the fragment's key when recursing, since every toArray call restarts numbering at \".0\".\nexport const flattenChildren = (children: React.ReactNode, keyPrefix = ''): FlattenedChild[] =>\n React.Children.toArray(children).flatMap((child, index) => {\n const key = `${keyPrefix}${React.isValidElement(child) ? child.key : `.${index}`}`;\n return isFragment(child) ? flattenChildren(child.props.children, key) : [{ key, child }];\n });\n"],"names":[],"mappings":";;;AAIA,SAAS,WAAW,OAAqF;AACrG,SAAO,MAAM,eAAe,KAAK,KAAK,MAAM,SAAS,MAAM;AAC/D;AAOO,MAAM,kBAAkB,CAAC,UAA2B,YAAY,OACnE,MAAM,SAAS,QAAQ,QAAQ,EAAE,QAAQ,CAAC,OAAO,UAAU;AACvD,QAAM,MAAM,GAAG,SAAS,GAAG,MAAM,eAAe,KAAK,IAAI,MAAM,MAAM,IAAI,KAAK,EAAE;AAChF,SAAO,WAAW,KAAK,IAAI,gBAAgB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,OAAO;AAC3F,CAAC;;"}
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ export type FlattenedChild = {
3
+ key: React.Key;
4
+ child: React.ReactNode;
5
+ };
6
+ export declare const flattenChildren: (children: React.ReactNode, keyPrefix?: string) => FlattenedChild[];
@@ -0,0 +1,12 @@
1
+ import React__default from "react";
2
+ function isFragment(child) {
3
+ return React__default.isValidElement(child) && child.type === React__default.Fragment;
4
+ }
5
+ const flattenChildren = (children, keyPrefix = "") => React__default.Children.toArray(children).flatMap((child, index) => {
6
+ const key = `${keyPrefix}${React__default.isValidElement(child) ? child.key : `.${index}`}`;
7
+ return isFragment(child) ? flattenChildren(child.props.children, key) : [{ key, child }];
8
+ });
9
+ export {
10
+ flattenChildren
11
+ };
12
+ //# sourceMappingURL=flattenChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flattenChildren.js","sources":["../../src/utils/flattenChildren.ts"],"sourcesContent":["import React from 'react';\n\n// React 19 types default `ReactElement`'s props to `unknown` when the generic\n// cannot be inferred, so declare the predicate explicitly to keep `props.children` usable.\nfunction isFragment(child: React.ReactNode): child is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(child) && child.type === React.Fragment;\n}\n\nexport type FlattenedChild = { key: React.Key; child: React.ReactNode };\n\n// React.Children.toArray already drops null/undefined/boolean children, so only fragments need unwrapping.\n// The key comes from toArray (stable when a conditional sibling disappears, unlike an array index) and is\n// prefixed with the fragment's key when recursing, since every toArray call restarts numbering at \".0\".\nexport const flattenChildren = (children: React.ReactNode, keyPrefix = ''): FlattenedChild[] =>\n React.Children.toArray(children).flatMap((child, index) => {\n const key = `${keyPrefix}${React.isValidElement(child) ? child.key : `.${index}`}`;\n return isFragment(child) ? flattenChildren(child.props.children, key) : [{ key, child }];\n });\n"],"names":["React"],"mappings":";AAIA,SAAS,WAAW,OAAqF;AACrG,SAAOA,eAAM,eAAe,KAAK,KAAK,MAAM,SAASA,eAAM;AAC/D;AAOO,MAAM,kBAAkB,CAAC,UAA2B,YAAY,OACnEA,eAAM,SAAS,QAAQ,QAAQ,EAAE,QAAQ,CAAC,OAAO,UAAU;AACvD,QAAM,MAAM,GAAG,SAAS,GAAGA,eAAM,eAAe,KAAK,IAAI,MAAM,MAAM,IAAI,KAAK,EAAE;AAChF,SAAO,WAAW,KAAK,IAAI,gBAAgB,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,OAAO;AAC3F,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useListKeyboardNavigation.cjs","sources":["../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\n\nimport type { Orientation } from '../../types';\n\nexport const getNextIndexFromKey = (\n key: string,\n length: number,\n index: number | undefined,\n direction: Orientation = 'vertical'\n): number | undefined => {\n const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n switch (key) {\n case previousKey:\n return index === undefined ? 0 : index - 1 < 0 ? 0 : index - 1;\n\n case nextKey:\n return index === undefined ? length - 1 : index + 1 >= length ? index : index + 1;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport type useListKeyboardNavigationOptions = {\n direction?: Orientation;\n initialIndex?: number;\n};\n\nexport const useListKeyboardNavigation = (\n length = 0,\n options: useListKeyboardNavigationOptions = {\n direction: 'vertical',\n }\n): [number | undefined, (index: number | undefined) => void, (event: React.KeyboardEvent<HTMLElement>) => number | undefined] => {\n const [index, setIndex] = React.useState<number | undefined>(options.initialIndex);\n\n const getNextIndex = (event: React.KeyboardEvent<HTMLElement>): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);\n\n if (nextIndex !== undefined) {\n event.preventDefault();\n }\n\n return nextIndex;\n };\n\n return [index, setIndex, getNextIndex];\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,sBAAsB,CAC/B,KACA,QACA,OACA,YAAyB,eACJ;AACrB,QAAM,cAAc,cAAc,eAAe,cAAc;AAC/D,QAAM,UAAU,cAAc,eAAe,eAAe;AAE5D,UAAQ,KAAA;AAAA,IACJ,KAAK;AACD,aAAO,UAAU,SAAY,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ;AAAA,IAEjE,KAAK;AACD,aAAO,UAAU,SAAY,SAAS,IAAI,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAAA,IAEpF,KAAK;AACD,aAAO;AAAA,IAEX,KAAK;AACD,aAAO,SAAS;AAAA,IAEpB;AACI;AAAA,EAAA;AAEZ;AAOO,MAAM,4BAA4B,CACrC,SAAS,GACT,UAA4C;AAAA,EACxC,WAAW;AACf,MAC6H;AAC7H,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAA6B,QAAQ,YAAY;AAEjF,QAAM,eAAe,CAAC,UAAgE;AAClF,UAAM,YAAY,oBAAoB,MAAM,KAAK,QAAQ,OAAO,QAAQ,SAAS;AAEjF,QAAI,cAAc,QAAW;AACzB,YAAM,eAAA;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAEA,SAAO,CAAC,OAAO,UAAU,YAAY;AACzC;;;"}
1
+ {"version":3,"file":"useListKeyboardNavigation.cjs","sources":["../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\n\nimport type { Orientation } from '@/types';\n\nexport const getNextIndexFromKey = (\n key: string,\n length: number,\n index: number | undefined,\n direction: Orientation = 'vertical'\n): number | undefined => {\n const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n switch (key) {\n case previousKey:\n return index === undefined ? 0 : index - 1 < 0 ? 0 : index - 1;\n\n case nextKey:\n return index === undefined ? length - 1 : index + 1 >= length ? index : index + 1;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport type useListKeyboardNavigationOptions = {\n direction?: Orientation;\n initialIndex?: number;\n};\n\nexport const useListKeyboardNavigation = (\n length = 0,\n options: useListKeyboardNavigationOptions = {\n direction: 'vertical',\n }\n): [number | undefined, (index: number | undefined) => void, (event: React.KeyboardEvent<HTMLElement>) => number | undefined] => {\n const [index, setIndex] = React.useState<number | undefined>(options.initialIndex);\n\n const getNextIndex = (event: React.KeyboardEvent<HTMLElement>): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);\n\n if (nextIndex !== undefined) {\n event.preventDefault();\n }\n\n return nextIndex;\n };\n\n return [index, setIndex, getNextIndex];\n};\n"],"names":[],"mappings":";;;AAIO,MAAM,sBAAsB,CAC/B,KACA,QACA,OACA,YAAyB,eACJ;AACrB,QAAM,cAAc,cAAc,eAAe,cAAc;AAC/D,QAAM,UAAU,cAAc,eAAe,eAAe;AAE5D,UAAQ,KAAA;AAAA,IACJ,KAAK;AACD,aAAO,UAAU,SAAY,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ;AAAA,IAEjE,KAAK;AACD,aAAO,UAAU,SAAY,SAAS,IAAI,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAAA,IAEpF,KAAK;AACD,aAAO;AAAA,IAEX,KAAK;AACD,aAAO,SAAS;AAAA,IAEpB;AACI;AAAA,EAAA;AAEZ;AAOO,MAAM,4BAA4B,CACrC,SAAS,GACT,UAA4C;AAAA,EACxC,WAAW;AACf,MAC6H;AAC7H,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAA6B,QAAQ,YAAY;AAEjF,QAAM,eAAe,CAAC,UAAgE;AAClF,UAAM,YAAY,oBAAoB,MAAM,KAAK,QAAQ,OAAO,QAAQ,SAAS;AAEjF,QAAI,cAAc,QAAW;AACzB,YAAM,eAAA;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAEA,SAAO,CAAC,OAAO,UAAU,YAAY;AACzC;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useListKeyboardNavigation.js","sources":["../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\n\nimport type { Orientation } from '../../types';\n\nexport const getNextIndexFromKey = (\n key: string,\n length: number,\n index: number | undefined,\n direction: Orientation = 'vertical'\n): number | undefined => {\n const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n switch (key) {\n case previousKey:\n return index === undefined ? 0 : index - 1 < 0 ? 0 : index - 1;\n\n case nextKey:\n return index === undefined ? length - 1 : index + 1 >= length ? index : index + 1;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport type useListKeyboardNavigationOptions = {\n direction?: Orientation;\n initialIndex?: number;\n};\n\nexport const useListKeyboardNavigation = (\n length = 0,\n options: useListKeyboardNavigationOptions = {\n direction: 'vertical',\n }\n): [number | undefined, (index: number | undefined) => void, (event: React.KeyboardEvent<HTMLElement>) => number | undefined] => {\n const [index, setIndex] = React.useState<number | undefined>(options.initialIndex);\n\n const getNextIndex = (event: React.KeyboardEvent<HTMLElement>): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);\n\n if (nextIndex !== undefined) {\n event.preventDefault();\n }\n\n return nextIndex;\n };\n\n return [index, setIndex, getNextIndex];\n};\n"],"names":["React"],"mappings":";AAIO,MAAM,sBAAsB,CAC/B,KACA,QACA,OACA,YAAyB,eACJ;AACrB,QAAM,cAAc,cAAc,eAAe,cAAc;AAC/D,QAAM,UAAU,cAAc,eAAe,eAAe;AAE5D,UAAQ,KAAA;AAAA,IACJ,KAAK;AACD,aAAO,UAAU,SAAY,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ;AAAA,IAEjE,KAAK;AACD,aAAO,UAAU,SAAY,SAAS,IAAI,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAAA,IAEpF,KAAK;AACD,aAAO;AAAA,IAEX,KAAK;AACD,aAAO,SAAS;AAAA,IAEpB;AACI;AAAA,EAAA;AAEZ;AAOO,MAAM,4BAA4B,CACrC,SAAS,GACT,UAA4C;AAAA,EACxC,WAAW;AACf,MAC6H;AAC7H,QAAM,CAAC,OAAO,QAAQ,IAAIA,eAAM,SAA6B,QAAQ,YAAY;AAEjF,QAAM,eAAe,CAAC,UAAgE;AAClF,UAAM,YAAY,oBAAoB,MAAM,KAAK,QAAQ,OAAO,QAAQ,SAAS;AAEjF,QAAI,cAAc,QAAW;AACzB,YAAM,eAAA;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAEA,SAAO,CAAC,OAAO,UAAU,YAAY;AACzC;"}
1
+ {"version":3,"file":"useListKeyboardNavigation.js","sources":["../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\n\nimport type { Orientation } from '@/types';\n\nexport const getNextIndexFromKey = (\n key: string,\n length: number,\n index: number | undefined,\n direction: Orientation = 'vertical'\n): number | undefined => {\n const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n switch (key) {\n case previousKey:\n return index === undefined ? 0 : index - 1 < 0 ? 0 : index - 1;\n\n case nextKey:\n return index === undefined ? length - 1 : index + 1 >= length ? index : index + 1;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport type useListKeyboardNavigationOptions = {\n direction?: Orientation;\n initialIndex?: number;\n};\n\nexport const useListKeyboardNavigation = (\n length = 0,\n options: useListKeyboardNavigationOptions = {\n direction: 'vertical',\n }\n): [number | undefined, (index: number | undefined) => void, (event: React.KeyboardEvent<HTMLElement>) => number | undefined] => {\n const [index, setIndex] = React.useState<number | undefined>(options.initialIndex);\n\n const getNextIndex = (event: React.KeyboardEvent<HTMLElement>): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);\n\n if (nextIndex !== undefined) {\n event.preventDefault();\n }\n\n return nextIndex;\n };\n\n return [index, setIndex, getNextIndex];\n};\n"],"names":["React"],"mappings":";AAIO,MAAM,sBAAsB,CAC/B,KACA,QACA,OACA,YAAyB,eACJ;AACrB,QAAM,cAAc,cAAc,eAAe,cAAc;AAC/D,QAAM,UAAU,cAAc,eAAe,eAAe;AAE5D,UAAQ,KAAA;AAAA,IACJ,KAAK;AACD,aAAO,UAAU,SAAY,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ;AAAA,IAEjE,KAAK;AACD,aAAO,UAAU,SAAY,SAAS,IAAI,QAAQ,KAAK,SAAS,QAAQ,QAAQ;AAAA,IAEpF,KAAK;AACD,aAAO;AAAA,IAEX,KAAK;AACD,aAAO,SAAS;AAAA,IAEpB;AACI;AAAA,EAAA;AAEZ;AAOO,MAAM,4BAA4B,CACrC,SAAS,GACT,UAA4C;AAAA,EACxC,WAAW;AACf,MAC6H;AAC7H,QAAM,CAAC,OAAO,QAAQ,IAAIA,eAAM,SAA6B,QAAQ,YAAY;AAEjF,QAAM,eAAe,CAAC,UAAgE;AAClF,UAAM,YAAY,oBAAoB,MAAM,KAAK,QAAQ,OAAO,QAAQ,SAAS;AAEjF,QAAI,cAAc,QAAW;AACzB,YAAM,eAAA;AAAA,IACV;AAEA,WAAO;AAAA,EACX;AAEA,SAAO,CAAC,OAAO,UAAU,YAAY;AACzC;"}
@@ -1,5 +1,6 @@
1
1
  import { Faker } from '@faker-js/faker';
2
2
  import { default as sort } from 'fast-sort';
3
+ export { sort };
3
4
  export type { Faker };
4
5
  export declare const faker: Faker;
5
6
  export declare const createFakeData: (creator: (faker: Faker) => any, ...length: any) => any[];
@@ -7,4 +8,3 @@ export declare const getRandomNumber: (max: number, min?: number) => number;
7
8
  export declare const iconNames: string[];
8
9
  export declare const generateId: () => string;
9
10
  export declare const sleep: (ms: number) => Promise<void>;
10
- export { sort };