@oracle/oraclejet-preact 20.0.4 → 20.1.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 (1831) hide show
  1. package/amd/BarChart-e3c190b5.js +2 -0
  2. package/amd/BarChart-e3c190b5.js.map +1 -0
  3. package/amd/BaseDiagram-b9695479.js +2 -0
  4. package/amd/BaseDiagram-b9695479.js.map +1 -0
  5. package/amd/ButtonSetButton-ded680bb.js +2 -0
  6. package/amd/ButtonSetButton-ded680bb.js.map +1 -0
  7. package/amd/ButtonSetIconButton-c4dcbd9a.js +2 -0
  8. package/amd/ButtonSetIconButton-c4dcbd9a.js.map +1 -0
  9. package/amd/ButtonSetItem-4d644b7d.js +2 -0
  10. package/amd/ButtonSetItem-4d644b7d.js.map +1 -0
  11. package/amd/Chart-00a1b01f.js +2 -0
  12. package/amd/Chart-00a1b01f.js.map +1 -0
  13. package/amd/CheckboxSet-f000e5c2.js +2 -0
  14. package/amd/CheckboxSet-f000e5c2.js.map +1 -0
  15. package/amd/ComboChart-36e22cb8.js +2 -0
  16. package/amd/ComboChart-36e22cb8.js.map +1 -0
  17. package/amd/ContainerDiagram-6f41a26a.js +2 -0
  18. package/amd/ContainerDiagram-6f41a26a.js.map +1 -0
  19. package/amd/DatePicker-cf0e3fcd.js +2 -0
  20. package/amd/DatePicker-cf0e3fcd.js.map +1 -0
  21. package/amd/DatePickerHeader-406aa5c6.js +2 -0
  22. package/amd/DatePickerHeader-406aa5c6.js.map +1 -0
  23. package/amd/Diagram-6072b867.js +2 -0
  24. package/amd/Diagram-6072b867.js.map +1 -0
  25. package/amd/Dropdown-7cc463f6.js +2 -0
  26. package/amd/Dropdown-7cc463f6.js.map +1 -0
  27. package/amd/IconMenuButton-ec28ecfb.js +2 -0
  28. package/amd/IconMenuButton-ec28ecfb.js.map +1 -0
  29. package/amd/IconSwitchButton-28f4854a.js +2 -0
  30. package/amd/IconSwitchButton-28f4854a.js.map +1 -0
  31. package/amd/IconToggleButton-56035aa0.js +2 -0
  32. package/amd/IconToggleButton-56035aa0.js.map +1 -0
  33. package/amd/InlineSelectSingle-a1c1f520.js +2 -0
  34. package/amd/InlineSelectSingle-a1c1f520.js.map +1 -0
  35. package/amd/InputColor-bde91b03.js +2 -0
  36. package/amd/InputColor-bde91b03.js.map +1 -0
  37. package/amd/InputDatePicker-3351af0f.js +2 -0
  38. package/amd/InputDatePicker-3351af0f.js.map +1 -0
  39. package/amd/InputPassword-59369c13.js +2 -0
  40. package/amd/InputPassword-59369c13.js.map +1 -0
  41. package/amd/InputSensitiveText-ad79acc4.js +2 -0
  42. package/amd/InputSensitiveText-ad79acc4.js.map +1 -0
  43. package/amd/Legend-482f99eb.js +2 -0
  44. package/amd/Legend-482f99eb.js.map +1 -0
  45. package/amd/LineAreaChart-6f5dabc1.js +2 -0
  46. package/amd/LineAreaChart-6f5dabc1.js.map +1 -0
  47. package/amd/Link-20f7e72d.js +2 -0
  48. package/amd/Link-20f7e72d.js.map +1 -0
  49. package/amd/LinkVariants.styles.css +0 -1
  50. package/amd/LinkVariants.styles2.css +0 -1
  51. package/amd/ListView-dfbd3f41.js +2 -0
  52. package/amd/ListView-dfbd3f41.js.map +1 -0
  53. package/amd/Menu-0c8295f2.js +2 -0
  54. package/amd/Menu-0c8295f2.js.map +1 -0
  55. package/amd/MenuButton-1fbc486e.js +2 -0
  56. package/amd/MenuButton-1fbc486e.js.map +1 -0
  57. package/amd/MenuItem-f3de5e35.js +2 -0
  58. package/amd/MenuItem-f3de5e35.js.map +1 -0
  59. package/amd/MonthView-effa60a5.js +2 -0
  60. package/amd/MonthView-effa60a5.js.map +1 -0
  61. package/amd/NavigationListItem-0e162c3e.js +2 -0
  62. package/amd/NavigationListItem-0e162c3e.js.map +1 -0
  63. package/amd/OverflowTabBar-aa6557e2.js +2 -0
  64. package/amd/OverflowTabBar-aa6557e2.js.map +1 -0
  65. package/amd/OverflowTabBarItem-f05a778f.js +2 -0
  66. package/amd/OverflowTabBarItem-f05a778f.js.map +1 -0
  67. package/amd/PRIVATE_BaseDiagram.js +1 -1
  68. package/amd/PRIVATE_Chart.js +1 -1
  69. package/amd/PRIVATE_DatePickerHeader.js +1 -1
  70. package/amd/PRIVATE_FormControls.js +1 -1
  71. package/amd/PRIVATE_IconSwitchButton.js +1 -1
  72. package/amd/PRIVATE_MonthView.js +1 -1
  73. package/amd/PRIVATE_MonthYearGridView.js +1 -1
  74. package/amd/PRIVATE_RevealToggleIcon.js +1 -1
  75. package/amd/PRIVATE_SelectCommon.js +1 -1
  76. package/amd/PRIVATE_StyledDatePickerButton/themes/StyledDatePickerButtonStyles.css.js +1 -1
  77. package/amd/PRIVATE_StyledDatePickerButton.js +1 -1
  78. package/amd/PRIVATE_Table.js +1 -1
  79. package/amd/PRIVATE_TableList.js +1 -1
  80. package/amd/PRIVATE_TruncatingLink.js +1 -1
  81. package/amd/PictoChart-c303675a.js +2 -0
  82. package/amd/PictoChart-c303675a.js.map +1 -0
  83. package/amd/PieChart-df15d363.js +2 -0
  84. package/amd/PieChart-df15d363.js.map +1 -0
  85. package/amd/ReorderableTabBar-e82d2982.js +2 -0
  86. package/amd/ReorderableTabBar-e82d2982.js.map +1 -0
  87. package/amd/RevealToggleIcon-be164a7b.js +2 -0
  88. package/amd/RevealToggleIcon-be164a7b.js.map +1 -0
  89. package/amd/ScatterChart-88bc2872.js +2 -0
  90. package/amd/ScatterChart-88bc2872.js.map +1 -0
  91. package/amd/SectionalLegend-3bae380b.js +2 -0
  92. package/amd/SectionalLegend-3bae380b.js.map +1 -0
  93. package/amd/SectionedContent-878a2df1.js +2 -0
  94. package/amd/SectionedContent-878a2df1.js.map +1 -0
  95. package/amd/SelectMenuItem-5bd09f45.js +2 -0
  96. package/amd/SelectMenuItem-5bd09f45.js.map +1 -0
  97. package/amd/SelectMobileFieldInput-d8be9c82.js +2 -0
  98. package/amd/SelectMobileFieldInput-d8be9c82.js.map +1 -0
  99. package/amd/SelectMultiple-467c640d.js +2 -0
  100. package/amd/SelectMultiple-467c640d.js.map +1 -0
  101. package/amd/SelectSingle-a600e403.js +2 -0
  102. package/amd/SelectSingle-a600e403.js.map +1 -0
  103. package/amd/SplitMenuButton-42f95b11.js +2 -0
  104. package/amd/SplitMenuButton-42f95b11.js.map +1 -0
  105. package/amd/StyledDatePickerButton-416ddc14.js +2 -0
  106. package/amd/StyledDatePickerButton-416ddc14.js.map +1 -0
  107. package/amd/StyledDatePickerButtonStyles.styles.css +18 -12
  108. package/amd/Submenu-f8ab8c2e.js +2 -0
  109. package/amd/Submenu-f8ab8c2e.js.map +1 -0
  110. package/amd/TabBar-61d65c39.js +2 -0
  111. package/amd/TabBar-61d65c39.js.map +1 -0
  112. package/amd/TabBarContextMenu-6977866c.js +2 -0
  113. package/amd/TabBarContextMenu-6977866c.js.map +1 -0
  114. package/amd/TabBarMixed-092116bd.js +2 -0
  115. package/amd/TabBarMixed-092116bd.js.map +1 -0
  116. package/amd/Table-225ba4db.js +2 -0
  117. package/amd/Table-225ba4db.js.map +1 -0
  118. package/amd/TableView-f7990126.js +2 -0
  119. package/amd/TableView-f7990126.js.map +1 -0
  120. package/amd/TagCloud-69af60c1.js +2 -0
  121. package/amd/TagCloud-69af60c1.js.map +1 -0
  122. package/amd/TextArea-345f89d4.js +2 -0
  123. package/amd/TextArea-345f89d4.js.map +1 -0
  124. package/amd/TextAreaAutosize-01dfd98e.js +2 -0
  125. package/amd/TextAreaAutosize-01dfd98e.js.map +1 -0
  126. package/amd/Theme-redwood/theme.css +218 -218
  127. package/amd/Theme-stable/theme.css +360 -360
  128. package/amd/ToggleButton-c9e433d4.js +2 -0
  129. package/amd/ToggleButton-c9e433d4.js.map +1 -0
  130. package/amd/ToggleButtonLabel-367494b8.js +2 -0
  131. package/amd/ToggleButtonLabel-367494b8.js.map +1 -0
  132. package/amd/TruncatingLink-2e947915.js +2 -0
  133. package/amd/TruncatingLink-2e947915.js.map +1 -0
  134. package/amd/UNSAFE_BarChart/__test__/BarChart.spec.js +1 -1
  135. package/amd/UNSAFE_BarChart.js +1 -1
  136. package/amd/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +1 -1
  137. package/amd/UNSAFE_ButtonSetButton.js +1 -1
  138. package/amd/UNSAFE_ButtonSetIconButton.js +1 -1
  139. package/amd/UNSAFE_ButtonSetItem.js +1 -1
  140. package/amd/UNSAFE_CheckboxItem.js +1 -1
  141. package/amd/UNSAFE_CheckboxItem.js.map +1 -1
  142. package/amd/UNSAFE_CheckboxSet.js +1 -1
  143. package/amd/UNSAFE_CheckboxSet.js.map +1 -1
  144. package/amd/UNSAFE_ComboChart.js +1 -1
  145. package/amd/UNSAFE_ContainerDiagram.js +1 -1
  146. package/amd/UNSAFE_DatePicker.js +1 -1
  147. package/amd/UNSAFE_Diagram.js +1 -1
  148. package/amd/UNSAFE_Dropdown.js +1 -1
  149. package/amd/UNSAFE_IconMenuButton.js +1 -1
  150. package/amd/UNSAFE_IconToggleButton.js +1 -1
  151. package/amd/UNSAFE_InlineSelectSingle.js +1 -1
  152. package/amd/UNSAFE_InputColor.js +1 -1
  153. package/amd/UNSAFE_InputDatePicker.js +1 -1
  154. package/amd/UNSAFE_InputPassword.js +1 -1
  155. package/amd/UNSAFE_InputSensitiveText.js +1 -1
  156. package/amd/UNSAFE_LabelledLink.js +1 -1
  157. package/amd/UNSAFE_LabelledLink.js.map +1 -1
  158. package/amd/UNSAFE_Legend.js +1 -1
  159. package/amd/UNSAFE_LineAreaChart.js +1 -1
  160. package/amd/UNSAFE_Link/themes/LinkStyles.css.js +1 -1
  161. package/amd/UNSAFE_Link.js +1 -1
  162. package/amd/UNSAFE_ListView.js +1 -1
  163. package/amd/UNSAFE_Menu.js +1 -1
  164. package/amd/UNSAFE_MenuButton.js +1 -1
  165. package/amd/UNSAFE_NavigationList.js +1 -1
  166. package/amd/UNSAFE_OverflowTabBar.js +1 -1
  167. package/amd/UNSAFE_PictoChart.js +1 -1
  168. package/amd/UNSAFE_PieChart/__test__/PieChart.spec.js +1 -1
  169. package/amd/UNSAFE_PieChart.js +1 -1
  170. package/amd/UNSAFE_ReorderableTabBar.js +1 -1
  171. package/amd/UNSAFE_RichCheckboxSet.js +1 -1
  172. package/amd/UNSAFE_RichCheckboxSet.js.map +1 -1
  173. package/amd/UNSAFE_RichSelectionItem.js +1 -1
  174. package/amd/UNSAFE_RichSelectionItem.js.map +1 -1
  175. package/amd/UNSAFE_ScatterChart.js +1 -1
  176. package/amd/UNSAFE_SectionalLegend.js +1 -1
  177. package/amd/UNSAFE_SelectMultiple.js +1 -1
  178. package/amd/UNSAFE_SelectSingle.js +1 -1
  179. package/amd/UNSAFE_SplitMenuButton.js +1 -1
  180. package/amd/UNSAFE_TabBar.js +1 -1
  181. package/amd/UNSAFE_TabBarCommon.js +1 -1
  182. package/amd/UNSAFE_TabBarMixed.js +1 -1
  183. package/amd/UNSAFE_TableView.js +1 -1
  184. package/amd/UNSAFE_TagCloud.js +1 -1
  185. package/amd/UNSAFE_TextArea.js +1 -1
  186. package/amd/UNSAFE_TextAreaAutosize.js +1 -1
  187. package/amd/UNSAFE_ToggleButton.js +1 -1
  188. package/amd/UNSAFE_ToggleButtonLabel.js +1 -1
  189. package/amd/UNSAFE_Toolbar/tests/Toolbar.spec.js +1 -1
  190. package/amd/YearsGridView-09b45b4e.js +2 -0
  191. package/amd/YearsGridView-09b45b4e.js.map +1 -0
  192. package/amd/hooks/PRIVATE_useChartContextMenu.js +1 -1
  193. package/amd/hooks/PRIVATE_useChartMarquee.js +1 -1
  194. package/amd/hooks/PRIVATE_useMiddleEllipsis.js +2 -0
  195. package/amd/hooks/PRIVATE_useMiddleEllipsis.js.map +1 -0
  196. package/amd/hooks/PRIVATE_useTabBar.js +1 -1
  197. package/amd/hooks/PRIVATE_useVisContextMenu.js +1 -1
  198. package/amd/hooks/PRIVATE_useVisDragModeControls.js +1 -1
  199. package/amd/listViewSelectionTests-e7898c59.js +2 -0
  200. package/amd/listViewSelectionTests-e7898c59.js.map +1 -0
  201. package/amd/useChartContextMenu-9abf418f.js +2 -0
  202. package/amd/useChartContextMenu-9abf418f.js.map +1 -0
  203. package/amd/useChartMarquee-ec70d86c.js +2 -0
  204. package/amd/useChartMarquee-ec70d86c.js.map +1 -0
  205. package/amd/useContextMenu-49bd8ffb.js +2 -0
  206. package/amd/useContextMenu-49bd8ffb.js.map +1 -0
  207. package/amd/useDisplayValue-8b0c1851.js +2 -0
  208. package/amd/useDisplayValue-8b0c1851.js.map +1 -0
  209. package/amd/useLegendContextMenu-90023a78.js +2 -0
  210. package/amd/useLegendContextMenu-90023a78.js.map +1 -0
  211. package/amd/useMiddleEllipsis-9ade43e6.js +2 -0
  212. package/amd/useMiddleEllipsis-9ade43e6.js.map +1 -0
  213. package/amd/useSelectCommon-af642fe7.js +2 -0
  214. package/amd/useSelectCommon-af642fe7.js.map +1 -0
  215. package/amd/useTabBar-430d9e32.js +2 -0
  216. package/amd/useTabBar-430d9e32.js.map +1 -0
  217. package/amd/useVisDragModeControls-c1d2abc6.js +2 -0
  218. package/amd/useVisDragModeControls-c1d2abc6.js.map +1 -0
  219. package/cjs/BaseButton-15b86552.js +86 -0
  220. package/cjs/BaseButton-15b86552.js.map +1 -0
  221. package/cjs/BaseCardView-ba63723a.js +6 -6
  222. package/cjs/BaseDiagram-576c2a13.js +2956 -0
  223. package/cjs/BaseDiagram-576c2a13.js.map +1 -0
  224. package/cjs/BaseRichSelection-c7cad1af.js +9 -9
  225. package/cjs/BaseSelector-2dc69917.js +1 -1
  226. package/cjs/BaseSwatchView-76da473f.js +2 -2
  227. package/cjs/Button-d79df225.js +24 -0
  228. package/cjs/Button-d79df225.js.map +1 -0
  229. package/cjs/ButtonSet-ed013090.js +2 -2
  230. package/cjs/ButtonSetButton-a7384fb3.js +35 -0
  231. package/cjs/ButtonSetButton-a7384fb3.js.map +1 -0
  232. package/cjs/ButtonSetIconButton-345ead86.js +40 -0
  233. package/cjs/ButtonSetIconButton-345ead86.js.map +1 -0
  234. package/cjs/ButtonSetItem-1f2f6742.js +67 -0
  235. package/cjs/ButtonSetItem-1f2f6742.js.map +1 -0
  236. package/cjs/Center-a23cf0cd.js +18 -0
  237. package/cjs/Center-a23cf0cd.js.map +1 -0
  238. package/cjs/Chart-3360191e.js +754 -0
  239. package/cjs/Chart-3360191e.js.map +1 -0
  240. package/cjs/CheckboxControl-d37c7764.js +6 -6
  241. package/cjs/CheckboxRadioField-24e06523.js +6 -6
  242. package/cjs/CheckboxRadioLabelValueLayout-0ed43779.js +1 -1
  243. package/cjs/CheckboxSetContext-c62db26d.js +12 -0
  244. package/cjs/CheckboxSetContext-c62db26d.js.map +1 -0
  245. package/cjs/Chip-b2dd59ed.js +1 -1
  246. package/cjs/ClearIcon-f61fc0b9.js +1 -1
  247. package/cjs/CollapseIcon-9fbe13a9.js +1 -1
  248. package/cjs/Collapsible-9315585f.js +2 -2
  249. package/cjs/ColorPalette-9f041744.js +83 -0
  250. package/cjs/ColorPalette-9f041744.js.map +1 -0
  251. package/cjs/ColorPicker-24ca67b6.js +25 -0
  252. package/cjs/ColorPicker-24ca67b6.js.map +1 -0
  253. package/cjs/ColorSwatch-cddebd6b.js +4 -4
  254. package/cjs/CompactLabelAssistance-f7b3b814.js +95 -0
  255. package/cjs/CompactLabelAssistance-f7b3b814.js.map +1 -0
  256. package/cjs/CompactUserAssistance-a5f1bb2b.js +5 -5
  257. package/cjs/ComponentMessageContainer-b692adf3.js +4 -4
  258. package/cjs/DatePicker-c4d49200.js +601 -0
  259. package/cjs/DatePicker-c4d49200.js.map +1 -0
  260. package/cjs/DatePickerHeader-9bcd2308.js +48 -0
  261. package/cjs/DatePickerHeader-9bcd2308.js.map +1 -0
  262. package/cjs/Dialog-871d9a7c.js +389 -0
  263. package/cjs/Dialog-871d9a7c.js.map +1 -0
  264. package/cjs/DirectionalCollapseArrowIcon-392d6599.js +1 -1
  265. package/cjs/DirectionalExpandArrowIcon-ff9f6f78.js +1 -1
  266. package/cjs/Dropdown-b73f547b.js +337 -0
  267. package/cjs/Dropdown-b73f547b.js.map +1 -0
  268. package/cjs/EmbeddedIconButton-f2e69758.js +13 -0
  269. package/cjs/EmbeddedIconButton-f2e69758.js.map +1 -0
  270. package/cjs/EnvironmentProvider-932667b2.js +61 -0
  271. package/cjs/EnvironmentProvider-932667b2.js.map +1 -0
  272. package/cjs/Expander-f4c574e5.js +1 -1
  273. package/cjs/Flex-ec48072d.js +32 -0
  274. package/cjs/Flex-ec48072d.js.map +1 -0
  275. package/cjs/Floating-de219e52.js +467 -0
  276. package/cjs/Floating-de219e52.js.map +1 -0
  277. package/cjs/Grid-156807d4.js +29 -0
  278. package/cjs/Grid-156807d4.js.map +1 -0
  279. package/cjs/GroupLoadingIndicator-7e035ba2.js +1 -1
  280. package/cjs/HighlightText-93f2fea0.js +33 -0
  281. package/cjs/HighlightText-93f2fea0.js.map +1 -0
  282. package/cjs/Icon-56789beb.js +3 -3
  283. package/cjs/IconButton-7503293b.js +4 -4
  284. package/cjs/IconSwitchButton-550d6ced.js +44 -0
  285. package/cjs/IconSwitchButton-550d6ced.js.map +1 -0
  286. package/cjs/IconToggleButton-b7a72539.js +43 -0
  287. package/cjs/IconToggleButton-b7a72539.js.map +1 -0
  288. package/cjs/IconUserAssistance-848c227c.js +76 -0
  289. package/cjs/IconUserAssistance-848c227c.js.map +1 -0
  290. package/cjs/InlineHelp-2add2d34.js +1 -1
  291. package/cjs/InlineUserAssistance-cfaa3d3e.js +5 -5
  292. package/cjs/InputDateMask-c7baadd4.js +7 -7
  293. package/cjs/Label-eb654b0e.js +8 -8
  294. package/cjs/LabelValueLayout-d67109b3.js +1 -1
  295. package/cjs/Layer-06e11b9c.js +94 -0
  296. package/cjs/Layer-06e11b9c.js.map +1 -0
  297. package/cjs/LayerHost-21391a0d.js +46 -0
  298. package/cjs/LayerHost-21391a0d.js.map +1 -0
  299. package/cjs/LayerManager-fd7f4d2f.js +36 -0
  300. package/cjs/LayerManager-fd7f4d2f.js.map +1 -0
  301. package/cjs/Link-f8403e9f.js +35 -0
  302. package/cjs/Link-f8403e9f.js.map +1 -0
  303. package/cjs/LinkVariants.styles.css +0 -1
  304. package/cjs/LinkVariants.styles2.css +0 -1
  305. package/cjs/List-afcfa338.js +5 -5
  306. package/cjs/LiveRegion-60535481.js +41 -0
  307. package/cjs/LiveRegion-60535481.js.map +1 -0
  308. package/cjs/MaxLengthLiveRegion-82e6c492.js +28 -0
  309. package/cjs/MaxLengthLiveRegion-82e6c492.js.map +1 -0
  310. package/cjs/Message-258e59da.js +2 -2
  311. package/cjs/MessageLayer-a18a7c26.js +61 -0
  312. package/cjs/MessageLayer-a18a7c26.js.map +1 -0
  313. package/cjs/MessagesManager-cba4bc60.js +3 -3
  314. package/cjs/Modal-b751b643.js +3 -3
  315. package/cjs/MonthView-25653876.js +231 -0
  316. package/cjs/MonthView-25653876.js.map +1 -0
  317. package/cjs/NavigationListItem-ef597eb9.js +312 -0
  318. package/cjs/NavigationListItem-ef597eb9.js.map +1 -0
  319. package/cjs/NavigationListLinkItem-62c3912e.js +5 -5
  320. package/cjs/NumberInputText-36164d46.js +6 -6
  321. package/cjs/OverflowTabBarItem-4053a20b.js +262 -0
  322. package/cjs/OverflowTabBarItem-4053a20b.js.map +1 -0
  323. package/cjs/PRIVATE_BaseCardView.js +22 -22
  324. package/cjs/PRIVATE_BaseDiagram.js +38 -38
  325. package/cjs/PRIVATE_BaseSelector.js +17 -17
  326. package/cjs/PRIVATE_BaseSwatchView.js +18 -18
  327. package/cjs/PRIVATE_Chart.js +48 -48
  328. package/cjs/PRIVATE_CheckboxControl.js +25 -25
  329. package/cjs/PRIVATE_CheckboxRadioField.js +27 -27
  330. package/cjs/PRIVATE_ClearIcon.js +18 -18
  331. package/cjs/PRIVATE_CollapsibleNavigationList.js +20 -20
  332. package/cjs/PRIVATE_DatePickerHeader.js +23 -23
  333. package/cjs/PRIVATE_DatePickerLayout.js +4 -4
  334. package/cjs/PRIVATE_EmbeddedIconButton.js +6 -6
  335. package/cjs/PRIVATE_Expander.js +19 -19
  336. package/cjs/PRIVATE_FormControls.js +21 -21
  337. package/cjs/PRIVATE_IconSwitchButton.js +19 -19
  338. package/cjs/PRIVATE_Icons/CheckboxCrossed.js +16 -16
  339. package/cjs/PRIVATE_Icons/CheckboxMixed.js +16 -16
  340. package/cjs/PRIVATE_Icons/CheckboxOff.js +16 -16
  341. package/cjs/PRIVATE_Icons/CheckboxOn.js +16 -16
  342. package/cjs/PRIVATE_Icons/DragV.js +16 -16
  343. package/cjs/PRIVATE_Icons/None.js +16 -16
  344. package/cjs/PRIVATE_List.js +21 -21
  345. package/cjs/PRIVATE_Message.js +20 -20
  346. package/cjs/PRIVATE_MessageLayer.js +12 -12
  347. package/cjs/PRIVATE_MonthView.js +81 -8
  348. package/cjs/PRIVATE_MonthView.js.map +1 -1
  349. package/cjs/PRIVATE_MonthYearGridView.js +8 -8
  350. package/cjs/PRIVATE_PlotArea.js +5 -5
  351. package/cjs/PRIVATE_RevealToggleIcon.js +21 -21
  352. package/cjs/PRIVATE_RichSelectionCommon.js +28 -28
  353. package/cjs/PRIVATE_SelectCommon.js +34 -34
  354. package/cjs/PRIVATE_StyledCard.js +3 -3
  355. package/cjs/PRIVATE_StyledCheckbox.js +16 -16
  356. package/cjs/PRIVATE_StyledDatePickerButton/themes/StyledDatePickerButtonStyles.css.js +1 -1
  357. package/cjs/PRIVATE_StyledDatePickerButton.js +1 -1
  358. package/cjs/PRIVATE_StyledSwitch.js +4 -4
  359. package/cjs/PRIVATE_SwatchFlexView.js +18 -18
  360. package/cjs/PRIVATE_Table.js +38 -38
  361. package/cjs/PRIVATE_TableDisplay.js +19 -19
  362. package/cjs/PRIVATE_TableList.js +27 -27
  363. package/cjs/PRIVATE_ThemedIcons/CalendarIcon.js +16 -16
  364. package/cjs/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +16 -16
  365. package/cjs/PRIVATE_ThemedIcons/ChartPanIcon.js +16 -16
  366. package/cjs/PRIVATE_ThemedIcons/ChartZoomIcon.js +16 -16
  367. package/cjs/PRIVATE_ThemedIcons/CheckIcon.js +16 -16
  368. package/cjs/PRIVATE_ThemedIcons/CheckboxCrossedIcon.js +16 -16
  369. package/cjs/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +16 -16
  370. package/cjs/PRIVATE_ThemedIcons/CheckboxOffIcon.js +16 -16
  371. package/cjs/PRIVATE_ThemedIcons/CheckboxOnIcon.js +16 -16
  372. package/cjs/PRIVATE_ThemedIcons/CloseIcon.js +16 -16
  373. package/cjs/PRIVATE_ThemedIcons/CollapseIcon.js +17 -17
  374. package/cjs/PRIVATE_ThemedIcons/CollapseUpIcon.js +16 -16
  375. package/cjs/PRIVATE_ThemedIcons/DecrementIcon.js +16 -16
  376. package/cjs/PRIVATE_ThemedIcons/DeleteIcon.js +16 -16
  377. package/cjs/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +17 -17
  378. package/cjs/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +17 -17
  379. package/cjs/PRIVATE_ThemedIcons/DragHandleIcon.js +16 -16
  380. package/cjs/PRIVATE_ThemedIcons/DropdownArrowIcon.js +16 -16
  381. package/cjs/PRIVATE_ThemedIcons/ExpandIcon.js +16 -16
  382. package/cjs/PRIVATE_ThemedIcons/HelpIcon.js +16 -16
  383. package/cjs/PRIVATE_ThemedIcons/IncrementIcon.js +16 -16
  384. package/cjs/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +16 -16
  385. package/cjs/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +16 -16
  386. package/cjs/PRIVATE_ThemedIcons/MessageErrorIcon.js +16 -16
  387. package/cjs/PRIVATE_ThemedIcons/MessageInfoIcon.js +16 -16
  388. package/cjs/PRIVATE_ThemedIcons/MessageWarningIcon.js +16 -16
  389. package/cjs/PRIVATE_ThemedIcons/MinusIcon.js +16 -16
  390. package/cjs/PRIVATE_ThemedIcons/NavDownIcon.js +16 -16
  391. package/cjs/PRIVATE_ThemedIcons/None.js +16 -16
  392. package/cjs/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +16 -16
  393. package/cjs/PRIVATE_ThemedIcons/PlusIcon.js +16 -16
  394. package/cjs/PRIVATE_ThemedIcons/RadioOffIcon.js +16 -16
  395. package/cjs/PRIVATE_ThemedIcons/RadioOnIcon.js +16 -16
  396. package/cjs/PRIVATE_ThemedIcons/SortAscendingIcon.js +16 -16
  397. package/cjs/PRIVATE_ThemedIcons/SortDescendingIcon.js +16 -16
  398. package/cjs/PRIVATE_ThemedIcons/ViewHideIcon.js +16 -16
  399. package/cjs/PRIVATE_ThemedIcons/ViewIcon.js +16 -16
  400. package/cjs/PRIVATE_TimeComponent.js +19 -19
  401. package/cjs/PRIVATE_TruncatingLink.js +20 -17
  402. package/cjs/PRIVATE_TruncatingLink.js.map +1 -1
  403. package/cjs/PRIVATE_VisOverview.js +16 -16
  404. package/cjs/PRIVATE_VisStatusMessage.js +5 -5
  405. package/cjs/PRIVATE_VisTabularDatatip.js +4 -4
  406. package/cjs/Popup-6de390dd.js +300 -0
  407. package/cjs/Popup-6de390dd.js.map +1 -0
  408. package/cjs/ProgressButtonLabelLayout-2e429893.js +3 -3
  409. package/cjs/ProgressCircle-f9c43168.js +50 -0
  410. package/cjs/ProgressCircle-f9c43168.js.map +1 -0
  411. package/cjs/RadioItem-c74ac827.js +6 -6
  412. package/cjs/ReadonlyTextFieldInput-60965d77.js +1 -1
  413. package/cjs/ReferenceLineArea-d00d2b33.js +592 -0
  414. package/cjs/ReferenceLineArea-d00d2b33.js.map +1 -0
  415. package/cjs/RevealToggleIcon-6a86726c.js +28 -0
  416. package/cjs/RevealToggleIcon-6a86726c.js.map +1 -0
  417. package/cjs/SectionedContent-463bf70e.js +68 -0
  418. package/cjs/SectionedContent-463bf70e.js.map +1 -0
  419. package/cjs/SelectMenuGroupContext-002c9144.js +563 -0
  420. package/cjs/SelectMenuGroupContext-002c9144.js.map +1 -0
  421. package/cjs/SelectMobileFieldInput-2adf002d.js +248 -0
  422. package/cjs/SelectMobileFieldInput-2adf002d.js.map +1 -0
  423. package/cjs/SelectorAll-2905a1c9.js +53 -0
  424. package/cjs/SelectorAll-2905a1c9.js.map +1 -0
  425. package/cjs/Sheet-1d6e8cf8.js +2 -2
  426. package/cjs/SortControl-8c15705b.js +3 -3
  427. package/cjs/StyledCard-13c323e4.js +1 -1
  428. package/cjs/StyledDatePickerButton-f20c0596.js +34 -0
  429. package/cjs/StyledDatePickerButton-f20c0596.js.map +1 -0
  430. package/cjs/StyledDatePickerButtonStyles.styles.css +18 -12
  431. package/cjs/StyledLabelValueLayout-3ee66ef1.js +22 -0
  432. package/cjs/StyledLabelValueLayout-3ee66ef1.js.map +1 -0
  433. package/cjs/StyledSwitch-17127a03.js +2 -2
  434. package/cjs/StyledTextField-7839c90d.js +5 -5
  435. package/cjs/Submenu-fb652ff4.js +251 -0
  436. package/cjs/Submenu-fb652ff4.js.map +1 -0
  437. package/cjs/TabBar-1e6a97b5.js +73 -0
  438. package/cjs/TabBar-1e6a97b5.js.map +1 -0
  439. package/cjs/TabBarContextMenu-f7acee3d.js +102 -0
  440. package/cjs/TabBarContextMenu-f7acee3d.js.map +1 -0
  441. package/cjs/TabBarLayout-ca8af14b.js +1 -1
  442. package/cjs/TabBarLinkItem-8f54f16d.js +15 -0
  443. package/cjs/TabBarLinkItem-8f54f16d.js.map +1 -0
  444. package/cjs/Table-daa93733.js +4114 -0
  445. package/cjs/Table-daa93733.js.map +1 -0
  446. package/cjs/TableColGroup-b7e1e296.js +1 -1
  447. package/cjs/TextArea-85d34b3e.js +229 -0
  448. package/cjs/TextArea-85d34b3e.js.map +1 -0
  449. package/cjs/TextField-5c164264.js +3 -3
  450. package/cjs/Theme-redwood/theme.css +136 -136
  451. package/cjs/Theme-stable/theme.css +209 -209
  452. package/cjs/TimeComponentCanvas2D-baa58795.js +6 -6
  453. package/cjs/ToggleButton-0ec0c75b.js +30 -0
  454. package/cjs/ToggleButton-0ec0c75b.js.map +1 -0
  455. package/cjs/ToggleButtonLabel-ce19879c.js +77 -0
  456. package/cjs/ToggleButtonLabel-ce19879c.js.map +1 -0
  457. package/cjs/TruncatingLink-f6a80ee5.js +95 -0
  458. package/cjs/TruncatingLink-f6a80ee5.js.map +1 -0
  459. package/cjs/TruncatingText-ac1f6793.js +1 -1
  460. package/cjs/UNSAFE_AccordionItemMultiple.js +18 -18
  461. package/cjs/UNSAFE_AccordionItemSingle.js +18 -18
  462. package/cjs/UNSAFE_ActionCard.js +2 -2
  463. package/cjs/UNSAFE_BarChart.js +49 -49
  464. package/cjs/UNSAFE_BareButton.js +2 -2
  465. package/cjs/UNSAFE_BaseButton.js +5 -5
  466. package/cjs/UNSAFE_Button.js +6 -6
  467. package/cjs/UNSAFE_ButtonSet.js +4 -4
  468. package/cjs/UNSAFE_ButtonSetButton.js +7 -7
  469. package/cjs/UNSAFE_ButtonSetIconButton.js +19 -19
  470. package/cjs/UNSAFE_ButtonSetItem.js +22 -22
  471. package/cjs/UNSAFE_ButtonSetMultiple.js +4 -4
  472. package/cjs/UNSAFE_ButtonSetSingle.js +4 -4
  473. package/cjs/UNSAFE_Card.js +3 -3
  474. package/cjs/UNSAFE_CardFlexView.js +22 -22
  475. package/cjs/UNSAFE_CardGridView.js +22 -22
  476. package/cjs/UNSAFE_Center.js +5 -5
  477. package/cjs/UNSAFE_Checkbox.js +25 -25
  478. package/cjs/UNSAFE_CheckboxItem.js +71 -132
  479. package/cjs/UNSAFE_CheckboxItem.js.map +1 -1
  480. package/cjs/UNSAFE_CheckboxRadioField.js +4 -4
  481. package/cjs/UNSAFE_CheckboxSet.js +75 -46
  482. package/cjs/UNSAFE_CheckboxSet.js.map +1 -1
  483. package/cjs/UNSAFE_Chip.js +2 -2
  484. package/cjs/UNSAFE_Collapsible.js +18 -18
  485. package/cjs/UNSAFE_ColorPalette.js +95 -95
  486. package/cjs/UNSAFE_ColorPicker.js +77 -77
  487. package/cjs/UNSAFE_ColorSwatch.js +17 -17
  488. package/cjs/UNSAFE_ComboChart.js +49 -49
  489. package/cjs/UNSAFE_ComponentMessage.js +20 -20
  490. package/cjs/UNSAFE_ContainerDiagram.js +38 -38
  491. package/cjs/UNSAFE_ConveyorBelt.js +18 -18
  492. package/cjs/UNSAFE_DatePicker.js +54 -31
  493. package/cjs/UNSAFE_DatePicker.js.map +1 -1
  494. package/cjs/UNSAFE_Diagram.js +38 -38
  495. package/cjs/UNSAFE_Dialog.js +22 -22
  496. package/cjs/UNSAFE_DragHandle.js +17 -17
  497. package/cjs/UNSAFE_DrawerLayout.js +12 -12
  498. package/cjs/UNSAFE_DrawerPopup.js +11 -11
  499. package/cjs/UNSAFE_Dropdown.js +15 -15
  500. package/cjs/UNSAFE_Environment.js +4 -4
  501. package/cjs/UNSAFE_ExpandableList.js +25 -25
  502. package/cjs/UNSAFE_FilePicker.js +4 -4
  503. package/cjs/UNSAFE_FlatTreeView.js +25 -25
  504. package/cjs/UNSAFE_Flex.js +4 -4
  505. package/cjs/UNSAFE_Floating.js +11 -11
  506. package/cjs/UNSAFE_FormLayout.js +2 -2
  507. package/cjs/UNSAFE_Gantt.js +23 -23
  508. package/cjs/UNSAFE_Grid.js +4 -4
  509. package/cjs/UNSAFE_HighlightText.js +4 -4
  510. package/cjs/UNSAFE_Icon.js +16 -16
  511. package/cjs/UNSAFE_IconButton.js +17 -17
  512. package/cjs/UNSAFE_IconMenuButton.js +26 -26
  513. package/cjs/UNSAFE_IconProgressButton.js +21 -21
  514. package/cjs/UNSAFE_IconToggleButton.js +19 -19
  515. package/cjs/UNSAFE_Indexer.js +19 -19
  516. package/cjs/UNSAFE_InlineSelectSingle.js +34 -34
  517. package/cjs/UNSAFE_InputColor.js +42 -42
  518. package/cjs/UNSAFE_InputDateMask.js +26 -26
  519. package/cjs/UNSAFE_InputDatePicker.js +149 -127
  520. package/cjs/UNSAFE_InputDatePicker.js.map +1 -1
  521. package/cjs/UNSAFE_InputPassword.js +29 -29
  522. package/cjs/UNSAFE_InputSensitiveText.js +30 -30
  523. package/cjs/UNSAFE_InputText.js +28 -28
  524. package/cjs/UNSAFE_InputTimeMask.js +26 -26
  525. package/cjs/UNSAFE_Label.js +25 -25
  526. package/cjs/UNSAFE_LabelValueLayout.js +4 -4
  527. package/cjs/UNSAFE_LabelledLink.js +36 -31
  528. package/cjs/UNSAFE_LabelledLink.js.map +1 -1
  529. package/cjs/UNSAFE_Layer.js +8 -8
  530. package/cjs/UNSAFE_Legend.js +30 -30
  531. package/cjs/UNSAFE_LineAreaChart.js +49 -49
  532. package/cjs/UNSAFE_Link/themes/LinkStyles.css.js +1 -1
  533. package/cjs/UNSAFE_Link.js +3 -3
  534. package/cjs/UNSAFE_ListItemLayout.js +4 -4
  535. package/cjs/UNSAFE_ListView.js +29 -29
  536. package/cjs/UNSAFE_LiveRegion.js +4 -4
  537. package/cjs/UNSAFE_Menu.js +28 -28
  538. package/cjs/UNSAFE_MenuButton.js +26 -26
  539. package/cjs/UNSAFE_MessageBanner.js +20 -20
  540. package/cjs/UNSAFE_MessageToast.js +22 -22
  541. package/cjs/UNSAFE_MeterBar.js +16 -16
  542. package/cjs/UNSAFE_MeterCircle.js +17 -17
  543. package/cjs/UNSAFE_Modal.js +8 -8
  544. package/cjs/UNSAFE_NavigationList.js +41 -41
  545. package/cjs/UNSAFE_NavigationListCommon.js +20 -20
  546. package/cjs/UNSAFE_NumberInputText.js +28 -28
  547. package/cjs/UNSAFE_OverflowTabBar.js +34 -34
  548. package/cjs/UNSAFE_PictoChart.js +27 -27
  549. package/cjs/UNSAFE_PieChart.js +28 -28
  550. package/cjs/UNSAFE_Popup.js +18 -18
  551. package/cjs/UNSAFE_ProgressBar.js +4 -4
  552. package/cjs/UNSAFE_ProgressButton.js +21 -21
  553. package/cjs/UNSAFE_ProgressButtonLabelLayout.js +10 -10
  554. package/cjs/UNSAFE_ProgressCircle.js +4 -4
  555. package/cjs/UNSAFE_RadioItem.js +25 -25
  556. package/cjs/UNSAFE_RadioSet.js +27 -27
  557. package/cjs/UNSAFE_RatingGauge.js +18 -18
  558. package/cjs/UNSAFE_ReorderableTabBar.js +31 -31
  559. package/cjs/UNSAFE_RichCheckboxSet.js +64 -68
  560. package/cjs/UNSAFE_RichCheckboxSet.js.map +1 -1
  561. package/cjs/UNSAFE_RichRadioSet.js +29 -29
  562. package/cjs/UNSAFE_RichSelectionItem.js +112 -175
  563. package/cjs/UNSAFE_RichSelectionItem.js.map +1 -1
  564. package/cjs/UNSAFE_ScatterChart.js +49 -49
  565. package/cjs/UNSAFE_SectionalLegend.js +30 -30
  566. package/cjs/UNSAFE_SelectMultiple.js +38 -38
  567. package/cjs/UNSAFE_SelectSingle.js +38 -38
  568. package/cjs/UNSAFE_SelectionCard.js +3 -3
  569. package/cjs/UNSAFE_Selector.js +17 -17
  570. package/cjs/UNSAFE_SelectorAll.js +19 -19
  571. package/cjs/UNSAFE_Sheet.js +11 -11
  572. package/cjs/UNSAFE_SortControl.js +20 -20
  573. package/cjs/UNSAFE_SplitMenuButton.js +27 -27
  574. package/cjs/UNSAFE_SplitMenuButton.js.map +1 -1
  575. package/cjs/UNSAFE_Switch.js +26 -26
  576. package/cjs/UNSAFE_TabBar.js +35 -35
  577. package/cjs/UNSAFE_TabBarCommon.js +33 -33
  578. package/cjs/UNSAFE_TabBarMixed.js +33 -33
  579. package/cjs/UNSAFE_TableView.js +38 -38
  580. package/cjs/UNSAFE_TagCloud.js +28 -28
  581. package/cjs/UNSAFE_TextArea.js +119 -234
  582. package/cjs/UNSAFE_TextArea.js.map +1 -1
  583. package/cjs/UNSAFE_TextAreaAutosize.js +30 -30
  584. package/cjs/UNSAFE_TextAreaAutosize.js.map +1 -1
  585. package/cjs/UNSAFE_TextField.js +20 -20
  586. package/cjs/UNSAFE_ToggleButton.js +7 -7
  587. package/cjs/UNSAFE_ToggleButtonLabel.js +1 -1
  588. package/cjs/UNSAFE_Toolbar.js +4 -4
  589. package/cjs/UNSAFE_Train.js +17 -17
  590. package/cjs/UNSAFE_TruncatingBadge.js +17 -17
  591. package/cjs/UNSAFE_TruncatingText.js +17 -17
  592. package/cjs/UNSAFE_UserAssistance.js +26 -26
  593. package/cjs/UNSAFE_View.js +7 -7
  594. package/cjs/UNSAFE_VirtualizedListView.js +21 -21
  595. package/cjs/UNSAFE_VisInvalidDataMessage.js +6 -6
  596. package/cjs/UNSAFE_VisNoDataMessage.js +6 -6
  597. package/cjs/UNSAFE_VisProgressiveLoader.js +5 -5
  598. package/cjs/UNSAFE_WindowOverlay.js +4 -4
  599. package/cjs/View-67ff7d0e.js +170 -0
  600. package/cjs/View-67ff7d0e.js.map +1 -0
  601. package/cjs/VisStatusMessage-3ca153ac.js +31 -0
  602. package/cjs/VisStatusMessage-3ca153ac.js.map +1 -0
  603. package/cjs/VisTabularDatatip-e79da9de.js +26 -0
  604. package/cjs/VisTabularDatatip-e79da9de.js.map +1 -0
  605. package/cjs/WindowOverlay-b9595d88.js +112 -0
  606. package/cjs/WindowOverlay-b9595d88.js.map +1 -0
  607. package/cjs/YearsGridView-9fd78c0f.js +190 -0
  608. package/cjs/YearsGridView-9fd78c0f.js.map +1 -0
  609. package/cjs/hoc/PRIVATE_withDirectionIcon.js +4 -4
  610. package/cjs/hoc/PRIVATE_withThemeIcon.js +3 -3
  611. package/cjs/hoc/UNSAFE_withThemeProps.js +3 -3
  612. package/cjs/hooks/PRIVATE_useChartContextMenu.js +26 -26
  613. package/cjs/hooks/PRIVATE_useChartDatatip.js +14 -14
  614. package/cjs/hooks/PRIVATE_useChartEvents.js +19 -19
  615. package/cjs/hooks/PRIVATE_useChartMarquee.js +26 -26
  616. package/cjs/hooks/PRIVATE_useCollectionFocusRing.js +17 -17
  617. package/cjs/hooks/PRIVATE_useCssVars.js +7 -7
  618. package/cjs/hooks/PRIVATE_useCurrentKey.js +4 -4
  619. package/cjs/hooks/PRIVATE_useDatatip.js +12 -12
  620. package/cjs/hooks/PRIVATE_useDetectHorizontalOverflow.js +16 -16
  621. package/cjs/hooks/PRIVATE_useFloating.js +4 -4
  622. package/cjs/hooks/PRIVATE_useItemAction.js +17 -17
  623. package/cjs/hooks/PRIVATE_useListCommon.js +19 -19
  624. package/cjs/hooks/PRIVATE_useMiddleEllipsis.js +12 -0
  625. package/cjs/hooks/PRIVATE_useMiddleEllipsis.js.map +1 -0
  626. package/cjs/hooks/PRIVATE_useOutsideMousedown.js +9 -9
  627. package/cjs/hooks/PRIVATE_useRadioFocusManager.js +4 -4
  628. package/cjs/hooks/PRIVATE_useReorderable.js +19 -19
  629. package/cjs/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  630. package/cjs/hooks/PRIVATE_useSelection.js +4 -4
  631. package/cjs/hooks/PRIVATE_useTabBar.js +29 -29
  632. package/cjs/hooks/PRIVATE_useTabbableModeSet.js +17 -17
  633. package/cjs/hooks/PRIVATE_useTooltipOnTruncation.js +17 -17
  634. package/cjs/hooks/PRIVATE_useVisContextMenu.js +25 -25
  635. package/cjs/hooks/PRIVATE_useVisDragModeControls.js +25 -25
  636. package/cjs/hooks/PRIVATE_useVisEvents.js +4 -4
  637. package/cjs/hooks/PRIVATE_useVisMeterEvents.js +14 -14
  638. package/cjs/hooks/PRIVATE_useVisSelection.js +15 -15
  639. package/cjs/hooks/UNSAFE_useBareButton.js +2 -2
  640. package/cjs/hooks/UNSAFE_useColorScheme.js +3 -3
  641. package/cjs/hooks/UNSAFE_useCurrentBgColor.js +2 -2
  642. package/cjs/hooks/UNSAFE_useDensity.js +3 -3
  643. package/cjs/hooks/UNSAFE_useHiddenTestMethod.js +3 -3
  644. package/cjs/hooks/UNSAFE_useOutsideClick.js +8 -8
  645. package/cjs/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  646. package/cjs/hooks/UNSAFE_useScale.js +3 -3
  647. package/cjs/hooks/UNSAFE_useTestId.js +3 -3
  648. package/cjs/hooks/UNSAFE_useTheme.js +3 -3
  649. package/cjs/hooks/UNSAFE_useThemeInterpolations.js +6 -6
  650. package/cjs/hooks/UNSAFE_useTooltip.js +17 -17
  651. package/cjs/hooks/UNSAFE_useTranslationBundle.js +3 -3
  652. package/cjs/hooks/UNSAFE_useUser.js +3 -3
  653. package/cjs/popupUtils-79656e59.js +31 -0
  654. package/cjs/popupUtils-79656e59.js.map +1 -0
  655. package/cjs/tooltipUtils-c554343d.js +115 -0
  656. package/cjs/tooltipUtils-c554343d.js.map +1 -0
  657. package/cjs/useBareButton-463210c9.js +1 -1
  658. package/cjs/useCellNavigation-09201a92.js +1 -1
  659. package/cjs/useChartContextMenu-c961873c.js +125 -0
  660. package/cjs/useChartContextMenu-c961873c.js.map +1 -0
  661. package/cjs/useChartDatatip-0ead533e.js +341 -0
  662. package/cjs/useChartDatatip-0ead533e.js.map +1 -0
  663. package/cjs/useChartMarquee-ade8e91c.js +306 -0
  664. package/cjs/useChartMarquee-ade8e91c.js.map +1 -0
  665. package/cjs/useColorScheme-852ec82e.js +21 -0
  666. package/cjs/useColorScheme-852ec82e.js.map +1 -0
  667. package/cjs/useContextMenu-c02f8dee.js +119 -0
  668. package/cjs/useContextMenu-c02f8dee.js.map +1 -0
  669. package/cjs/useCssVars-b7192b44.js +60 -0
  670. package/cjs/useCssVars-b7192b44.js.map +1 -0
  671. package/cjs/useCurrentKey-b66cf089.js +85 -0
  672. package/cjs/useCurrentKey-b66cf089.js.map +1 -0
  673. package/cjs/useDatatip-3462cc49.js +96 -0
  674. package/cjs/useDatatip-3462cc49.js.map +1 -0
  675. package/cjs/useDensity-2a45f4dd.js +21 -0
  676. package/cjs/useDensity-2a45f4dd.js.map +1 -0
  677. package/cjs/useDisplayValue-047ff360.js +82 -0
  678. package/cjs/useDisplayValue-047ff360.js.map +1 -0
  679. package/cjs/useExpandCollapse-359c0224.js +72 -0
  680. package/cjs/useExpandCollapse-359c0224.js.map +1 -0
  681. package/cjs/useFloating-c408d4be.js +1926 -0
  682. package/cjs/useFloating-c408d4be.js.map +1 -0
  683. package/cjs/useHiddenTestMethod-620e91e0.js +30 -0
  684. package/cjs/useHiddenTestMethod-620e91e0.js.map +1 -0
  685. package/cjs/useKeyboardEvents-d9528b16.js +88 -0
  686. package/cjs/useKeyboardEvents-d9528b16.js.map +1 -0
  687. package/cjs/useLegendContextMenu-b7993cf0.js +285 -0
  688. package/cjs/useLegendContextMenu-b7993cf0.js.map +1 -0
  689. package/cjs/useMeterDatatip-fdab9ee5.js +76 -0
  690. package/cjs/useMeterDatatip-fdab9ee5.js.map +1 -0
  691. package/cjs/useMiddleEllipsis-792e61a9.js +230 -0
  692. package/cjs/useMiddleEllipsis-792e61a9.js.map +1 -0
  693. package/cjs/useNavigation-fa3f5a50.js +1 -1
  694. package/cjs/useOutsideClick-5c31ee35.js +117 -0
  695. package/cjs/useOutsideClick-5c31ee35.js.map +1 -0
  696. package/cjs/useOutsideMousedown-eda95637.js +50 -0
  697. package/cjs/useOutsideMousedown-eda95637.js.map +1 -0
  698. package/cjs/usePopupAnimation-985e90a2.js +87 -0
  699. package/cjs/usePopupAnimation-985e90a2.js.map +1 -0
  700. package/cjs/usePrefixSuffix-a6a1b772.js +72 -0
  701. package/cjs/usePrefixSuffix-a6a1b772.js.map +1 -0
  702. package/cjs/useRadioFocusManager-58e51026.js +110 -0
  703. package/cjs/useRadioFocusManager-58e51026.js.map +1 -0
  704. package/cjs/useReorderableItem-969a3eac.js +299 -0
  705. package/cjs/useReorderableItem-969a3eac.js.map +1 -0
  706. package/cjs/useRovingTabIndexContainer-46b897fd.js +108 -0
  707. package/cjs/useRovingTabIndexContainer-46b897fd.js.map +1 -0
  708. package/cjs/useScale-529046e3.js +21 -0
  709. package/cjs/useScale-529046e3.js.map +1 -0
  710. package/cjs/useSelectCommon-728573f9.js +507 -0
  711. package/cjs/useSelectCommon-728573f9.js.map +1 -0
  712. package/cjs/useSelectDrill-813d4fbe.js +114 -0
  713. package/cjs/useSelectDrill-813d4fbe.js.map +1 -0
  714. package/cjs/useSelection-0b3dd2cf.js +188 -0
  715. package/cjs/useSelection-0b3dd2cf.js.map +1 -0
  716. package/cjs/useSelection-0ef0ee3c.js +260 -0
  717. package/cjs/useSelection-0ef0ee3c.js.map +1 -0
  718. package/cjs/useTabBar-114caa2f.js +309 -0
  719. package/cjs/useTabBar-114caa2f.js.map +1 -0
  720. package/cjs/useTestId-a8b07506.js +23 -0
  721. package/cjs/useTestId-a8b07506.js.map +1 -0
  722. package/cjs/useTheme-71e406b0.js +21 -0
  723. package/cjs/useTheme-71e406b0.js.map +1 -0
  724. package/cjs/useThemeInterpolations-ca3ddfd9.js +71 -0
  725. package/cjs/useThemeInterpolations-ca3ddfd9.js.map +1 -0
  726. package/cjs/useTooltip-d1200aff.js +51 -0
  727. package/cjs/useTooltip-d1200aff.js.map +1 -0
  728. package/cjs/useTooltipControlled-0dc34549.js +376 -0
  729. package/cjs/useTooltipControlled-0dc34549.js.map +1 -0
  730. package/cjs/useTooltipOnTruncation-d8253c7e.js +29 -0
  731. package/cjs/useTooltipOnTruncation-d8253c7e.js.map +1 -0
  732. package/cjs/useTranslationBundle-990e7928.js +31 -0
  733. package/cjs/useTranslationBundle-990e7928.js.map +1 -0
  734. package/cjs/useUser-cc045b3e.js +21 -0
  735. package/cjs/useUser-cc045b3e.js.map +1 -0
  736. package/cjs/useVisDragModeControls-737aa2dd.js +89 -0
  737. package/cjs/useVisDragModeControls-737aa2dd.js.map +1 -0
  738. package/cjs/useVisEvents-4ad7b798.js +155 -0
  739. package/cjs/useVisEvents-4ad7b798.js.map +1 -0
  740. package/cjs/utils/PRIVATE_collectionUtils.js +17 -17
  741. package/cjs/utils/PRIVATE_tabBarUtils.js +17 -17
  742. package/cjs/utils/PRIVATE_tooltipUtils.js +14 -14
  743. package/cjs/utils/PRIVATE_visTestUtils.js +4 -4
  744. package/cjs/utils/UNSAFE_popupUtils.js +8 -8
  745. package/cjs/withDirectionIcon-a14b071b.js +16 -0
  746. package/cjs/withDirectionIcon-a14b071b.js.map +1 -0
  747. package/cjs/withThemeProps-894a40fc.js +2 -2
  748. package/es/BaseButton-243d200f.js +84 -0
  749. package/es/BaseButton-243d200f.js.map +1 -0
  750. package/es/BaseCardView-85b9a71e.js +6 -6
  751. package/es/BaseDiagram-19f481a0.js +2954 -0
  752. package/es/BaseDiagram-19f481a0.js.map +1 -0
  753. package/es/BaseRichSelection-223d9830.js +9 -9
  754. package/es/BaseSelector-7cbc48bc.js +1 -1
  755. package/es/BaseSwatchView-2e1e6bd2.js +2 -2
  756. package/es/Button-a76ecfa8.js +22 -0
  757. package/es/Button-a76ecfa8.js.map +1 -0
  758. package/es/ButtonLayoutVariants.styles.css +2 -2
  759. package/es/ButtonLayoutVariants.styles2.css +2 -2
  760. package/es/ButtonSet-b7464e9a.js +2 -2
  761. package/es/ButtonSetButton-5e07834a.js +33 -0
  762. package/es/ButtonSetButton-5e07834a.js.map +1 -0
  763. package/es/ButtonSetIconButton-7e6573a0.js +38 -0
  764. package/es/ButtonSetIconButton-7e6573a0.js.map +1 -0
  765. package/es/ButtonSetItem-08dd9bd2.js +65 -0
  766. package/es/ButtonSetItem-08dd9bd2.js.map +1 -0
  767. package/es/Center-3860fe60.js +16 -0
  768. package/es/Center-3860fe60.js.map +1 -0
  769. package/es/Chart-aeda6a0c.js +752 -0
  770. package/es/Chart-aeda6a0c.js.map +1 -0
  771. package/es/CheckboxControl-c008372a.js +6 -6
  772. package/es/CheckboxRadioField-a387b3cb.js +6 -6
  773. package/es/CheckboxRadioLabelValueLayout-e3845f16.js +1 -1
  774. package/es/CheckboxSet-3aab5935.js +51 -0
  775. package/es/CheckboxSet-3aab5935.js.map +1 -0
  776. package/es/Chip-4efea02e.js +1 -1
  777. package/es/ClearIcon-f85ea340.js +1 -1
  778. package/es/CollapseIcon-84f6ba8e.js +1 -1
  779. package/es/Collapsible-2608ce3b.js +2 -2
  780. package/es/ColorPalette-950c6fc6.js +2 -2
  781. package/es/ColorPicker-8c297849.js +23 -0
  782. package/es/ColorPicker-8c297849.js.map +1 -0
  783. package/es/ColorSwatch-8339ee2f.js +4 -4
  784. package/es/CompactLabelAssistance-50ff3f7e.js +92 -0
  785. package/es/CompactLabelAssistance-50ff3f7e.js.map +1 -0
  786. package/es/CompactUserAssistance-6aa8894b.js +5 -5
  787. package/es/ComponentMessageContainer-d16c8b1f.js +4 -4
  788. package/es/DatePicker-6861ae90.js +599 -0
  789. package/es/DatePicker-6861ae90.js.map +1 -0
  790. package/es/DatePickerHeader-1a050945.js +46 -0
  791. package/es/DatePickerHeader-1a050945.js.map +1 -0
  792. package/es/DiagramStyles.styles2.css +10 -16
  793. package/es/DiagramStyles.styles3.css +16 -10
  794. package/es/Dialog-d1de5b06.js +387 -0
  795. package/es/Dialog-d1de5b06.js.map +1 -0
  796. package/es/DirectionalCollapseArrowIcon-132761da.js +1 -1
  797. package/es/DirectionalExpandArrowIcon-5bc45cad.js +1 -1
  798. package/es/Dropdown-f7992670.js +322 -0
  799. package/es/Dropdown-f7992670.js.map +1 -0
  800. package/es/EmbeddedIconButton-9f0e56b7.js +11 -0
  801. package/es/EmbeddedIconButton-9f0e56b7.js.map +1 -0
  802. package/es/EnvironmentProvider-6cf8ed37.js +58 -0
  803. package/es/EnvironmentProvider-6cf8ed37.js.map +1 -0
  804. package/es/Expander-1347e769.js +1 -1
  805. package/es/Flex-fc483125.js +30 -0
  806. package/es/Flex-fc483125.js.map +1 -0
  807. package/es/Floating-be4c0cb6.js +465 -0
  808. package/es/Floating-be4c0cb6.js.map +1 -0
  809. package/es/Grid-6f92d323.js +27 -0
  810. package/es/Grid-6f92d323.js.map +1 -0
  811. package/es/GroupLoadingIndicator-19c6545a.js +1 -1
  812. package/es/HighlightText-dd484ffd.js +31 -0
  813. package/es/HighlightText-dd484ffd.js.map +1 -0
  814. package/es/Icon-4983d06e.js +3 -3
  815. package/es/IconButton-7f91481c.js +4 -4
  816. package/es/IconSwitchButton-0ef3178f.js +42 -0
  817. package/es/IconSwitchButton-0ef3178f.js.map +1 -0
  818. package/es/IconToggleButton-7d9efcb3.js +41 -0
  819. package/es/IconToggleButton-7d9efcb3.js.map +1 -0
  820. package/es/IconUserAssistance-6abc7837.js +74 -0
  821. package/es/IconUserAssistance-6abc7837.js.map +1 -0
  822. package/es/InlineHelp-9eaac91c.js +1 -1
  823. package/es/InlineUserAssistance-890293dd.js +5 -5
  824. package/es/InputDateMask-ec27aee7.js +7 -7
  825. package/es/Label-5d1ae8d7.js +8 -8
  826. package/es/LabelValueLayout-c6b9945a.js +1 -1
  827. package/es/Layer-6c27170e.js +91 -0
  828. package/es/Layer-6c27170e.js.map +1 -0
  829. package/es/LayerHost-3cf255a6.js +41 -0
  830. package/es/LayerHost-3cf255a6.js.map +1 -0
  831. package/es/LayerManager-e30fbfd6.js +34 -0
  832. package/es/LayerManager-e30fbfd6.js.map +1 -0
  833. package/es/Link-db2fdeab.js +33 -0
  834. package/es/Link-db2fdeab.js.map +1 -0
  835. package/es/LinkVariants.styles.css +0 -1
  836. package/es/LinkVariants.styles2.css +0 -1
  837. package/es/List-4636ba9b.js +5 -5
  838. package/es/LiveRegion-2e8830ae.js +39 -0
  839. package/es/LiveRegion-2e8830ae.js.map +1 -0
  840. package/es/MaxLengthLiveRegion-8f552ae2.js +26 -0
  841. package/es/MaxLengthLiveRegion-8f552ae2.js.map +1 -0
  842. package/es/Message-510c2db8.js +2 -2
  843. package/es/MessageLayer-1dbdc0b6.js +58 -0
  844. package/es/MessageLayer-1dbdc0b6.js.map +1 -0
  845. package/es/MessagesManager-47000438.js +3 -3
  846. package/es/Modal-c0f730b8.js +3 -3
  847. package/es/MonthView-6628071f.js +229 -0
  848. package/es/MonthView-6628071f.js.map +1 -0
  849. package/es/NavigationListItem-3a9e0951.js +291 -0
  850. package/es/NavigationListItem-3a9e0951.js.map +1 -0
  851. package/es/NavigationListLinkItem-e28fd846.js +5 -5
  852. package/es/NumberInputText-60be5757.js +6 -6
  853. package/es/OverflowTabBarItem-ee746856.js +257 -0
  854. package/es/OverflowTabBarItem-ee746856.js.map +1 -0
  855. package/es/PRIVATE_BaseCardView.js +22 -22
  856. package/es/PRIVATE_BaseDiagram.js +38 -38
  857. package/es/PRIVATE_BaseSelector.js +17 -17
  858. package/es/PRIVATE_BaseSwatchView.js +18 -18
  859. package/es/PRIVATE_Chart.js +45 -45
  860. package/es/PRIVATE_CheckboxControl.js +25 -25
  861. package/es/PRIVATE_CheckboxRadioField.js +27 -27
  862. package/es/PRIVATE_ClearIcon.js +18 -18
  863. package/es/PRIVATE_CollapsibleNavigationList.js +43 -43
  864. package/es/PRIVATE_DatePickerHeader.js +23 -23
  865. package/es/PRIVATE_DatePickerLayout.js +4 -4
  866. package/es/PRIVATE_EmbeddedIconButton.js +6 -6
  867. package/es/PRIVATE_Expander.js +19 -19
  868. package/es/PRIVATE_FormControls.js +21 -21
  869. package/es/PRIVATE_IconSwitchButton.js +19 -19
  870. package/es/PRIVATE_Icons/CheckboxCrossed.js +16 -16
  871. package/es/PRIVATE_Icons/CheckboxMixed.js +16 -16
  872. package/es/PRIVATE_Icons/CheckboxOff.js +16 -16
  873. package/es/PRIVATE_Icons/CheckboxOn.js +16 -16
  874. package/es/PRIVATE_Icons/DragV.js +16 -16
  875. package/es/PRIVATE_Icons/None.js +16 -16
  876. package/es/PRIVATE_List.js +21 -21
  877. package/es/PRIVATE_Message.js +20 -20
  878. package/es/PRIVATE_MessageLayer.js +12 -12
  879. package/es/PRIVATE_MonthView.js +81 -8
  880. package/es/PRIVATE_MonthView.js.map +1 -1
  881. package/es/PRIVATE_MonthYearGridView.js +8 -8
  882. package/es/PRIVATE_PlotArea.js +5 -5
  883. package/es/PRIVATE_RevealToggleIcon.js +21 -21
  884. package/es/PRIVATE_RichSelectionCommon.js +28 -28
  885. package/es/PRIVATE_SelectCommon.js +34 -34
  886. package/es/PRIVATE_StyledCard.js +3 -3
  887. package/es/PRIVATE_StyledCheckbox.js +16 -16
  888. package/es/PRIVATE_StyledDatePickerButton/themes/StyledDatePickerButtonStyles.css.js +1 -1
  889. package/es/PRIVATE_StyledDatePickerButton.js +1 -1
  890. package/es/PRIVATE_StyledSwitch.js +4 -4
  891. package/es/PRIVATE_SwatchFlexView.js +18 -18
  892. package/es/PRIVATE_Table.js +38 -38
  893. package/es/PRIVATE_TableDisplay.js +19 -19
  894. package/es/PRIVATE_TableList.js +27 -27
  895. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +16 -16
  896. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +16 -16
  897. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +16 -16
  898. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +16 -16
  899. package/es/PRIVATE_ThemedIcons/CheckIcon.js +16 -16
  900. package/es/PRIVATE_ThemedIcons/CheckboxCrossedIcon.js +16 -16
  901. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +16 -16
  902. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +16 -16
  903. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +16 -16
  904. package/es/PRIVATE_ThemedIcons/CloseIcon.js +16 -16
  905. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +17 -17
  906. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +16 -16
  907. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +16 -16
  908. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +16 -16
  909. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +17 -17
  910. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +17 -17
  911. package/es/PRIVATE_ThemedIcons/DragHandleIcon.js +16 -16
  912. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +16 -16
  913. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +16 -16
  914. package/es/PRIVATE_ThemedIcons/HelpIcon.js +16 -16
  915. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +16 -16
  916. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +16 -16
  917. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +16 -16
  918. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +16 -16
  919. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +16 -16
  920. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +16 -16
  921. package/es/PRIVATE_ThemedIcons/MinusIcon.js +16 -16
  922. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +16 -16
  923. package/es/PRIVATE_ThemedIcons/None.js +16 -16
  924. package/es/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +16 -16
  925. package/es/PRIVATE_ThemedIcons/PlusIcon.js +16 -16
  926. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +16 -16
  927. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +16 -16
  928. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +16 -16
  929. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +16 -16
  930. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +16 -16
  931. package/es/PRIVATE_ThemedIcons/ViewIcon.js +16 -16
  932. package/es/PRIVATE_TimeComponent.js +19 -19
  933. package/es/PRIVATE_TruncatingLink.js +20 -17
  934. package/es/PRIVATE_TruncatingLink.js.map +1 -1
  935. package/es/PRIVATE_VisOverview.js +16 -16
  936. package/es/PRIVATE_VisStatusMessage.js +5 -5
  937. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  938. package/es/Popup-22d51095.js +298 -0
  939. package/es/Popup-22d51095.js.map +1 -0
  940. package/es/ProgressButtonLabelLayout-69549cf9.js +3 -3
  941. package/es/ProgressCircle-bce87dad.js +48 -0
  942. package/es/ProgressCircle-bce87dad.js.map +1 -0
  943. package/es/RadioItem-94909632.js +6 -6
  944. package/es/ReadonlyTextFieldInput-106ce959.js +1 -1
  945. package/es/ReferenceLineArea-cc72b070.js +586 -0
  946. package/es/ReferenceLineArea-cc72b070.js.map +1 -0
  947. package/es/RevealToggleIcon-c5d9d731.js +26 -0
  948. package/es/RevealToggleIcon-c5d9d731.js.map +1 -0
  949. package/es/SectionedContent-ac90a3d0.js +65 -0
  950. package/es/SectionedContent-ac90a3d0.js.map +1 -0
  951. package/es/SelectMenuGroupContext-130a850c.js +554 -0
  952. package/es/SelectMenuGroupContext-130a850c.js.map +1 -0
  953. package/es/SelectMobileFieldInput-5ca800d5.js +241 -0
  954. package/es/SelectMobileFieldInput-5ca800d5.js.map +1 -0
  955. package/es/SelectorAll-3d39196b.js +51 -0
  956. package/es/SelectorAll-3d39196b.js.map +1 -0
  957. package/es/Sheet-f9f8a4a4.js +2 -2
  958. package/es/SortControl-1044fcd9.js +3 -3
  959. package/es/StyledCard-77623731.js +1 -1
  960. package/es/StyledDatePickerButton-a7782821.js +32 -0
  961. package/es/StyledDatePickerButton-a7782821.js.map +1 -0
  962. package/es/StyledDatePickerButtonStyles.styles.css +18 -12
  963. package/es/StyledLabelValueLayout-bddfb884.js +18 -0
  964. package/es/StyledLabelValueLayout-bddfb884.js.map +1 -0
  965. package/es/StyledSwitch-dbf29d95.js +2 -2
  966. package/es/StyledTextField-7605d76a.js +5 -5
  967. package/es/Submenu-fa7c2b4f.js +247 -0
  968. package/es/Submenu-fa7c2b4f.js.map +1 -0
  969. package/es/TabBar-fd31ca03.js +69 -0
  970. package/es/TabBar-fd31ca03.js.map +1 -0
  971. package/es/TabBarContextMenu-3bf4dc64.js +99 -0
  972. package/es/TabBarContextMenu-3bf4dc64.js.map +1 -0
  973. package/es/TabBarLayout-9b67d1b6.js +1 -1
  974. package/es/TabBarLinkItem-43854314.js +13 -0
  975. package/es/TabBarLinkItem-43854314.js.map +1 -0
  976. package/es/Table-535987d0.js +4112 -0
  977. package/es/Table-535987d0.js.map +1 -0
  978. package/es/TableColGroup-d74bd4f5.js +1 -1
  979. package/es/TextField-7884fcd7.js +3 -3
  980. package/es/Theme-redwood/theme.css +369 -369
  981. package/es/Theme-stable/theme.css +521 -521
  982. package/es/TimeComponentCanvas2D-cfb0066d.js +6 -6
  983. package/es/ToggleButton-65f5d293.js +28 -0
  984. package/es/ToggleButton-65f5d293.js.map +1 -0
  985. package/es/ToggleButtonLabel-bf4e1599.js +75 -0
  986. package/es/ToggleButtonLabel-bf4e1599.js.map +1 -0
  987. package/es/TrainVariants.styles.css +6 -6
  988. package/es/TrainVariants.styles2.css +6 -6
  989. package/es/TruncatingLink-6aaf40b9.js +93 -0
  990. package/es/TruncatingLink-6aaf40b9.js.map +1 -0
  991. package/es/TruncatingText-1bf00351.js +1 -1
  992. package/es/UNSAFE_AccordionItemMultiple.js +18 -18
  993. package/es/UNSAFE_AccordionItemSingle.js +18 -18
  994. package/es/UNSAFE_ActionCard.js +2 -2
  995. package/es/UNSAFE_BarChart.js +46 -46
  996. package/es/UNSAFE_BareButton.js +2 -2
  997. package/es/UNSAFE_BaseButton.js +5 -5
  998. package/es/UNSAFE_Button.js +6 -6
  999. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutTheme.js +1 -1
  1000. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutVariants.css.js +1 -1
  1001. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutTheme.js +1 -1
  1002. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutVariants.css.js +1 -1
  1003. package/es/UNSAFE_ButtonLayout.js +1 -1
  1004. package/es/UNSAFE_ButtonSet.js +4 -4
  1005. package/es/UNSAFE_ButtonSetButton.js +7 -7
  1006. package/es/UNSAFE_ButtonSetIconButton.js +19 -19
  1007. package/es/UNSAFE_ButtonSetItem.js +22 -22
  1008. package/es/UNSAFE_ButtonSetMultiple.js +4 -4
  1009. package/es/UNSAFE_ButtonSetSingle.js +4 -4
  1010. package/es/UNSAFE_Card.js +3 -3
  1011. package/es/UNSAFE_CardFlexView.js +22 -22
  1012. package/es/UNSAFE_CardGridView.js +22 -22
  1013. package/es/UNSAFE_Center.js +5 -5
  1014. package/es/UNSAFE_Checkbox.js +25 -25
  1015. package/es/UNSAFE_CheckboxItem.js +137 -76
  1016. package/es/UNSAFE_CheckboxItem.js.map +1 -1
  1017. package/es/UNSAFE_CheckboxRadioField.js +4 -4
  1018. package/es/UNSAFE_CheckboxSet.js +40 -74
  1019. package/es/UNSAFE_CheckboxSet.js.map +1 -1
  1020. package/es/UNSAFE_Chip.js +2 -2
  1021. package/es/UNSAFE_Collapsible.js +18 -18
  1022. package/es/UNSAFE_ColorPalette.js +19 -19
  1023. package/es/UNSAFE_ColorPicker.js +44 -44
  1024. package/es/UNSAFE_ColorSwatch.js +17 -17
  1025. package/es/UNSAFE_ComboChart.js +46 -46
  1026. package/es/UNSAFE_ComponentMessage.js +20 -20
  1027. package/es/UNSAFE_ContainerDiagram/themes/DiagramStyles.css.js +1 -1
  1028. package/es/UNSAFE_ContainerDiagram.js +38 -38
  1029. package/es/UNSAFE_ConveyorBelt.js +18 -18
  1030. package/es/UNSAFE_DatePicker.js +54 -31
  1031. package/es/UNSAFE_DatePicker.js.map +1 -1
  1032. package/es/UNSAFE_Diagram/themes/DiagramStyles.css.js +1 -1
  1033. package/es/UNSAFE_Diagram.js +38 -38
  1034. package/es/UNSAFE_Dialog.js +22 -22
  1035. package/es/UNSAFE_DragHandle.js +17 -17
  1036. package/es/UNSAFE_DrawerLayout.js +12 -12
  1037. package/es/UNSAFE_DrawerPopup.js +11 -11
  1038. package/es/UNSAFE_Dropdown.js +15 -15
  1039. package/es/UNSAFE_Environment.js +4 -4
  1040. package/es/UNSAFE_ExpandableList.js +25 -25
  1041. package/es/UNSAFE_FilePicker.js +4 -4
  1042. package/es/UNSAFE_FlatTreeView.js +39 -39
  1043. package/es/UNSAFE_Flex.js +4 -4
  1044. package/es/UNSAFE_Floating.js +11 -11
  1045. package/es/UNSAFE_FormLayout.js +2 -2
  1046. package/es/UNSAFE_Gantt.js +23 -23
  1047. package/es/UNSAFE_Grid.js +4 -4
  1048. package/es/UNSAFE_HighlightText.js +4 -4
  1049. package/es/UNSAFE_Icon.js +16 -16
  1050. package/es/UNSAFE_IconButton.js +17 -17
  1051. package/es/UNSAFE_IconMenuButton.js +26 -26
  1052. package/es/UNSAFE_IconProgressButton.js +21 -21
  1053. package/es/UNSAFE_IconToggleButton.js +19 -19
  1054. package/es/UNSAFE_Indexer.js +19 -19
  1055. package/es/UNSAFE_InlineSelectSingle.js +34 -34
  1056. package/es/UNSAFE_InputColor.js +33 -33
  1057. package/es/UNSAFE_InputDateMask.js +26 -26
  1058. package/es/UNSAFE_InputDatePicker.js +63 -41
  1059. package/es/UNSAFE_InputDatePicker.js.map +1 -1
  1060. package/es/UNSAFE_InputPassword.js +29 -29
  1061. package/es/UNSAFE_InputSensitiveText.js +30 -30
  1062. package/es/UNSAFE_InputText.js +28 -28
  1063. package/es/UNSAFE_InputTimeMask.js +26 -26
  1064. package/es/UNSAFE_Label.js +25 -25
  1065. package/es/UNSAFE_LabelValueLayout.js +4 -4
  1066. package/es/UNSAFE_LabelledLink.js +36 -31
  1067. package/es/UNSAFE_LabelledLink.js.map +1 -1
  1068. package/es/UNSAFE_Layer.js +8 -8
  1069. package/es/UNSAFE_Legend.js +30 -30
  1070. package/es/UNSAFE_LineAreaChart.js +46 -46
  1071. package/es/UNSAFE_Link/themes/LinkStyles.css.js +1 -1
  1072. package/es/UNSAFE_Link.js +3 -3
  1073. package/es/UNSAFE_ListItemLayout.js +4 -4
  1074. package/es/UNSAFE_ListView.js +29 -29
  1075. package/es/UNSAFE_LiveRegion.js +4 -4
  1076. package/es/UNSAFE_Menu.js +29 -29
  1077. package/es/UNSAFE_MenuButton.js +26 -26
  1078. package/es/UNSAFE_MessageBanner.js +20 -20
  1079. package/es/UNSAFE_MessageToast.js +22 -22
  1080. package/es/UNSAFE_MeterBar.js +16 -16
  1081. package/es/UNSAFE_MeterCircle.js +17 -17
  1082. package/es/UNSAFE_Modal.js +8 -8
  1083. package/es/UNSAFE_NavigationList.js +42 -42
  1084. package/es/UNSAFE_NavigationListCommon.js +20 -20
  1085. package/es/UNSAFE_NumberInputText.js +28 -28
  1086. package/es/UNSAFE_OverflowTabBar.js +34 -34
  1087. package/es/UNSAFE_PictoChart.js +27 -27
  1088. package/es/UNSAFE_PieChart.js +28 -28
  1089. package/es/UNSAFE_Popup.js +18 -18
  1090. package/es/UNSAFE_ProgressBar.js +4 -4
  1091. package/es/UNSAFE_ProgressButton.js +21 -21
  1092. package/es/UNSAFE_ProgressButtonLabelLayout.js +10 -10
  1093. package/es/UNSAFE_ProgressCircle.js +4 -4
  1094. package/es/UNSAFE_RadioItem.js +25 -25
  1095. package/es/UNSAFE_RadioSet.js +27 -27
  1096. package/es/UNSAFE_RatingGauge.js +18 -18
  1097. package/es/UNSAFE_ReorderableTabBar.js +31 -31
  1098. package/es/UNSAFE_RichCheckboxSet.js +68 -64
  1099. package/es/UNSAFE_RichCheckboxSet.js.map +1 -1
  1100. package/es/UNSAFE_RichRadioSet.js +29 -29
  1101. package/es/UNSAFE_RichSelectionItem.js +174 -111
  1102. package/es/UNSAFE_RichSelectionItem.js.map +1 -1
  1103. package/es/UNSAFE_ScatterChart.js +46 -46
  1104. package/es/UNSAFE_SectionalLegend.js +30 -30
  1105. package/es/UNSAFE_SelectMultiple.js +38 -38
  1106. package/es/UNSAFE_SelectSingle.js +38 -38
  1107. package/es/UNSAFE_SelectionCard.js +3 -3
  1108. package/es/UNSAFE_Selector.js +17 -17
  1109. package/es/UNSAFE_SelectorAll.js +19 -19
  1110. package/es/UNSAFE_Sheet.js +11 -11
  1111. package/es/UNSAFE_SortControl.js +20 -20
  1112. package/es/UNSAFE_SplitMenuButton.js +27 -27
  1113. package/es/UNSAFE_SplitMenuButton.js.map +1 -1
  1114. package/es/UNSAFE_Switch.js +26 -26
  1115. package/es/UNSAFE_TabBar.js +35 -35
  1116. package/es/UNSAFE_TabBarCommon.js +33 -33
  1117. package/es/UNSAFE_TabBarMixed.js +33 -33
  1118. package/es/UNSAFE_TableView.js +38 -38
  1119. package/es/UNSAFE_TagCloud.js +28 -28
  1120. package/es/UNSAFE_TextArea.js +27 -27
  1121. package/es/UNSAFE_TextAreaAutosize.js +27 -27
  1122. package/es/UNSAFE_TextField.js +20 -20
  1123. package/es/UNSAFE_ToggleButton.js +7 -7
  1124. package/es/UNSAFE_ToggleButtonLabel.js +1 -1
  1125. package/es/UNSAFE_Toolbar.js +5 -5
  1126. package/es/UNSAFE_Train/themes/redwood/TrainTheme.js +1 -1
  1127. package/es/UNSAFE_Train/themes/redwood/TrainVariants.css.js +1 -1
  1128. package/es/UNSAFE_Train/themes/stable/TrainTheme.js +1 -1
  1129. package/es/UNSAFE_Train/themes/stable/TrainVariants.css.js +1 -1
  1130. package/es/UNSAFE_Train.js +18 -18
  1131. package/es/UNSAFE_TruncatingBadge.js +17 -17
  1132. package/es/UNSAFE_TruncatingText.js +17 -17
  1133. package/es/UNSAFE_UserAssistance.js +26 -26
  1134. package/es/UNSAFE_View.js +7 -7
  1135. package/es/UNSAFE_VirtualizedListView.js +21 -21
  1136. package/es/UNSAFE_VisInvalidDataMessage.js +6 -6
  1137. package/es/UNSAFE_VisNoDataMessage.js +6 -6
  1138. package/es/UNSAFE_VisProgressiveLoader.js +5 -5
  1139. package/es/UNSAFE_WindowOverlay.js +4 -4
  1140. package/es/View-818f2f31.js +167 -0
  1141. package/es/View-818f2f31.js.map +1 -0
  1142. package/es/VisStatusMessage-09c532e3.js +29 -0
  1143. package/es/VisStatusMessage-09c532e3.js.map +1 -0
  1144. package/es/VisTabularDatatip-f45069f1.js +24 -0
  1145. package/es/VisTabularDatatip-f45069f1.js.map +1 -0
  1146. package/es/WindowOverlay-467c2d12.js +110 -0
  1147. package/es/WindowOverlay-467c2d12.js.map +1 -0
  1148. package/es/YearsGridView-27d6fa06.js +187 -0
  1149. package/es/YearsGridView-27d6fa06.js.map +1 -0
  1150. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  1151. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  1152. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  1153. package/es/hooks/PRIVATE_useChartContextMenu.js +26 -26
  1154. package/es/hooks/PRIVATE_useChartDatatip.js +14 -14
  1155. package/es/hooks/PRIVATE_useChartEvents.js +19 -19
  1156. package/es/hooks/PRIVATE_useChartMarquee.js +26 -26
  1157. package/es/hooks/PRIVATE_useCollectionFocusRing.js +17 -17
  1158. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  1159. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  1160. package/es/hooks/PRIVATE_useDatatip.js +12 -12
  1161. package/es/hooks/PRIVATE_useDetectHorizontalOverflow.js +16 -16
  1162. package/es/hooks/PRIVATE_useFloating.js +4 -4
  1163. package/es/hooks/PRIVATE_useItemAction.js +17 -17
  1164. package/es/hooks/PRIVATE_useListCommon.js +19 -19
  1165. package/es/hooks/PRIVATE_useMiddleEllipsis.js +4 -0
  1166. package/es/hooks/PRIVATE_useMiddleEllipsis.js.map +1 -0
  1167. package/es/hooks/PRIVATE_useOutsideMousedown.js +9 -9
  1168. package/es/hooks/PRIVATE_useRadioFocusManager.js +4 -4
  1169. package/es/hooks/PRIVATE_useReorderable.js +19 -19
  1170. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  1171. package/es/hooks/PRIVATE_useSelection.js +4 -4
  1172. package/es/hooks/PRIVATE_useTabBar.js +29 -29
  1173. package/es/hooks/PRIVATE_useTabbableModeSet.js +17 -17
  1174. package/es/hooks/PRIVATE_useTooltipOnTruncation.js +17 -17
  1175. package/es/hooks/PRIVATE_useVisContextMenu.js +25 -25
  1176. package/es/hooks/PRIVATE_useVisDragModeControls.js +25 -25
  1177. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  1178. package/es/hooks/PRIVATE_useVisMeterEvents.js +14 -14
  1179. package/es/hooks/PRIVATE_useVisSelection.js +15 -15
  1180. package/es/hooks/UNSAFE_useBareButton.js +2 -2
  1181. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  1182. package/es/hooks/UNSAFE_useCurrentBgColor.js +2 -2
  1183. package/es/hooks/UNSAFE_useDensity.js +3 -3
  1184. package/es/hooks/UNSAFE_useHiddenTestMethod.js +3 -3
  1185. package/es/hooks/UNSAFE_useOutsideClick.js +8 -8
  1186. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  1187. package/es/hooks/UNSAFE_useScale.js +3 -3
  1188. package/es/hooks/UNSAFE_useTestId.js +3 -3
  1189. package/es/hooks/UNSAFE_useTheme.js +3 -3
  1190. package/es/hooks/UNSAFE_useThemeInterpolations.js +6 -6
  1191. package/es/hooks/UNSAFE_useTooltip.js +17 -17
  1192. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  1193. package/es/hooks/UNSAFE_useUser.js +3 -3
  1194. package/es/popupUtils-7774330e.js +29 -0
  1195. package/es/popupUtils-7774330e.js.map +1 -0
  1196. package/es/tooltipUtils-90fb656f.js +110 -0
  1197. package/es/tooltipUtils-90fb656f.js.map +1 -0
  1198. package/es/useBareButton-ff4bd21e.js +1 -1
  1199. package/es/useCellNavigation-0565b6dd.js +1 -1
  1200. package/es/useChartContextMenu-933091d8.js +123 -0
  1201. package/es/useChartContextMenu-933091d8.js.map +1 -0
  1202. package/es/useChartDatatip-cba78e0f.js +336 -0
  1203. package/es/useChartDatatip-cba78e0f.js.map +1 -0
  1204. package/es/useChartMarquee-914929b6.js +304 -0
  1205. package/es/useChartMarquee-914929b6.js.map +1 -0
  1206. package/es/useColorScheme-67245285.js +19 -0
  1207. package/es/useColorScheme-67245285.js.map +1 -0
  1208. package/es/useContextMenu-8a1230a3.js +116 -0
  1209. package/es/useContextMenu-8a1230a3.js.map +1 -0
  1210. package/es/useCssVars-048a52d8.js +58 -0
  1211. package/es/useCssVars-048a52d8.js.map +1 -0
  1212. package/es/useCurrentKey-38e5f097.js +83 -0
  1213. package/es/useCurrentKey-38e5f097.js.map +1 -0
  1214. package/es/useDatatip-ef5c47a7.js +94 -0
  1215. package/es/useDatatip-ef5c47a7.js.map +1 -0
  1216. package/es/useDensity-969273f3.js +19 -0
  1217. package/es/useDensity-969273f3.js.map +1 -0
  1218. package/es/useDisplayValue-29f03329.js +78 -0
  1219. package/es/useDisplayValue-29f03329.js.map +1 -0
  1220. package/es/useExpandCollapse-51f9bb4b.js +70 -0
  1221. package/es/useExpandCollapse-51f9bb4b.js.map +1 -0
  1222. package/es/useFloating-c74a7f54.js +1916 -0
  1223. package/es/useFloating-c74a7f54.js.map +1 -0
  1224. package/es/useHiddenTestMethod-ec7b3989.js +28 -0
  1225. package/es/useHiddenTestMethod-ec7b3989.js.map +1 -0
  1226. package/es/useKeyboardEvents-a1495728.js +85 -0
  1227. package/es/useKeyboardEvents-a1495728.js.map +1 -0
  1228. package/es/useLegendContextMenu-6ea00771.js +279 -0
  1229. package/es/useLegendContextMenu-6ea00771.js.map +1 -0
  1230. package/es/useMeterDatatip-f61ca3e0.js +73 -0
  1231. package/es/useMeterDatatip-f61ca3e0.js.map +1 -0
  1232. package/es/useMiddleEllipsis-b073ca6b.js +228 -0
  1233. package/es/useMiddleEllipsis-b073ca6b.js.map +1 -0
  1234. package/es/useNavigation-b257c33a.js +1 -1
  1235. package/es/useOutsideClick-01f3d3e1.js +115 -0
  1236. package/es/useOutsideClick-01f3d3e1.js.map +1 -0
  1237. package/es/useOutsideMousedown-e0866d58.js +48 -0
  1238. package/es/useOutsideMousedown-e0866d58.js.map +1 -0
  1239. package/es/usePopupAnimation-7c5db425.js +85 -0
  1240. package/es/usePopupAnimation-7c5db425.js.map +1 -0
  1241. package/es/usePrefixSuffix-95fc00fd.js +70 -0
  1242. package/es/usePrefixSuffix-95fc00fd.js.map +1 -0
  1243. package/es/useRadioFocusManager-d9eecfb4.js +108 -0
  1244. package/es/useRadioFocusManager-d9eecfb4.js.map +1 -0
  1245. package/es/useReorderableItem-06bd7a7b.js +296 -0
  1246. package/es/useReorderableItem-06bd7a7b.js.map +1 -0
  1247. package/es/useRovingTabIndexContainer-c0356f5d.js +106 -0
  1248. package/es/useRovingTabIndexContainer-c0356f5d.js.map +1 -0
  1249. package/es/useScale-93490e54.js +19 -0
  1250. package/es/useScale-93490e54.js.map +1 -0
  1251. package/es/useSelectCommon-c70bb10f.js +489 -0
  1252. package/es/useSelectCommon-c70bb10f.js.map +1 -0
  1253. package/es/useSelectDrill-2f855daa.js +111 -0
  1254. package/es/useSelectDrill-2f855daa.js.map +1 -0
  1255. package/es/useSelection-10ed8060.js +186 -0
  1256. package/es/useSelection-10ed8060.js.map +1 -0
  1257. package/es/useSelection-d6fefa3d.js +258 -0
  1258. package/es/useSelection-d6fefa3d.js.map +1 -0
  1259. package/es/useTabBar-27e8c4ea.js +305 -0
  1260. package/es/useTabBar-27e8c4ea.js.map +1 -0
  1261. package/es/useTestId-ab1bede6.js +21 -0
  1262. package/es/useTestId-ab1bede6.js.map +1 -0
  1263. package/es/useTheme-c2cfbc29.js +19 -0
  1264. package/es/useTheme-c2cfbc29.js.map +1 -0
  1265. package/es/useThemeInterpolations-5f358139.js +68 -0
  1266. package/es/useThemeInterpolations-5f358139.js.map +1 -0
  1267. package/es/useTooltip-ab739df0.js +49 -0
  1268. package/es/useTooltip-ab739df0.js.map +1 -0
  1269. package/es/useTooltipControlled-b7f30aee.js +373 -0
  1270. package/es/useTooltipControlled-b7f30aee.js.map +1 -0
  1271. package/es/useTooltipOnTruncation-31afc3f2.js +27 -0
  1272. package/es/useTooltipOnTruncation-31afc3f2.js.map +1 -0
  1273. package/es/useTranslationBundle-bc6e0896.js +29 -0
  1274. package/es/useTranslationBundle-bc6e0896.js.map +1 -0
  1275. package/es/useUser-e543b73c.js +19 -0
  1276. package/es/useUser-e543b73c.js.map +1 -0
  1277. package/es/useVisDragModeControls-6865056f.js +87 -0
  1278. package/es/useVisDragModeControls-6865056f.js.map +1 -0
  1279. package/es/useVisEvents-0edc925f.js +153 -0
  1280. package/es/useVisEvents-0edc925f.js.map +1 -0
  1281. package/es/utils/PRIVATE_collectionUtils.js +17 -17
  1282. package/es/utils/PRIVATE_tabBarUtils.js +17 -17
  1283. package/es/utils/PRIVATE_tooltipUtils.js +14 -14
  1284. package/es/utils/PRIVATE_visTestUtils.js +4 -4
  1285. package/es/utils/UNSAFE_popupUtils.js +8 -8
  1286. package/es/withDirectionIcon-b725a6d7.js +14 -0
  1287. package/es/withDirectionIcon-b725a6d7.js.map +1 -0
  1288. package/es/withThemeProps-dbd4fedf.js +2 -2
  1289. package/package.json +2 -2
  1290. package/types/UNSAFE_Dropdown/Dropdown.d.ts +5 -1
  1291. package/types/UNSAFE_LabelledLink/LabelledLink.d.ts +5 -1
  1292. package/types/UNSAFE_Link/themes/LinkStyles.css.d.ts +0 -1
  1293. package/types/UNSAFE_Link/themes/redwood/LinkVariants.css.d.ts +0 -1
  1294. package/types/UNSAFE_Link/themes/stable/LinkVariants.css.d.ts +0 -1
  1295. package/types/UNSAFE_Menu/DropdownMenu.d.ts +1 -0
  1296. package/amd/BarChart-994cb8f0.js +0 -2
  1297. package/amd/BarChart-994cb8f0.js.map +0 -1
  1298. package/amd/BaseDiagram-00ea8628.js +0 -2
  1299. package/amd/BaseDiagram-00ea8628.js.map +0 -1
  1300. package/amd/ButtonSetButton-fa0256aa.js +0 -2
  1301. package/amd/ButtonSetButton-fa0256aa.js.map +0 -1
  1302. package/amd/ButtonSetIconButton-9010f20c.js +0 -2
  1303. package/amd/ButtonSetIconButton-9010f20c.js.map +0 -1
  1304. package/amd/ButtonSetItem-4b29107a.js +0 -2
  1305. package/amd/ButtonSetItem-4b29107a.js.map +0 -1
  1306. package/amd/Chart-d9eafc7a.js +0 -2
  1307. package/amd/Chart-d9eafc7a.js.map +0 -1
  1308. package/amd/CheckboxSetContext-2e486ea8.js +0 -2
  1309. package/amd/CheckboxSetContext-2e486ea8.js.map +0 -1
  1310. package/amd/ComboChart-5a6f6c8a.js +0 -2
  1311. package/amd/ComboChart-5a6f6c8a.js.map +0 -1
  1312. package/amd/ContainerDiagram-678f9746.js +0 -2
  1313. package/amd/ContainerDiagram-678f9746.js.map +0 -1
  1314. package/amd/DatePicker-bf521b1c.js +0 -2
  1315. package/amd/DatePicker-bf521b1c.js.map +0 -1
  1316. package/amd/DatePickerHeader-82f4f285.js +0 -2
  1317. package/amd/DatePickerHeader-82f4f285.js.map +0 -1
  1318. package/amd/Diagram-492f8b21.js +0 -2
  1319. package/amd/Diagram-492f8b21.js.map +0 -1
  1320. package/amd/Dropdown-7eca9554.js +0 -2
  1321. package/amd/Dropdown-7eca9554.js.map +0 -1
  1322. package/amd/IconMenuButton-82b8431d.js +0 -2
  1323. package/amd/IconMenuButton-82b8431d.js.map +0 -1
  1324. package/amd/IconSwitchButton-c44e0edf.js +0 -2
  1325. package/amd/IconSwitchButton-c44e0edf.js.map +0 -1
  1326. package/amd/IconToggleButton-0ab34b44.js +0 -2
  1327. package/amd/IconToggleButton-0ab34b44.js.map +0 -1
  1328. package/amd/InlineSelectSingle-87bc8a45.js +0 -2
  1329. package/amd/InlineSelectSingle-87bc8a45.js.map +0 -1
  1330. package/amd/InputColor-58e3fce3.js +0 -2
  1331. package/amd/InputColor-58e3fce3.js.map +0 -1
  1332. package/amd/InputDatePicker-7227a858.js +0 -2
  1333. package/amd/InputDatePicker-7227a858.js.map +0 -1
  1334. package/amd/InputPassword-450915c8.js +0 -2
  1335. package/amd/InputPassword-450915c8.js.map +0 -1
  1336. package/amd/InputSensitiveText-d94d24f0.js +0 -2
  1337. package/amd/InputSensitiveText-d94d24f0.js.map +0 -1
  1338. package/amd/Legend-47a1bf23.js +0 -2
  1339. package/amd/Legend-47a1bf23.js.map +0 -1
  1340. package/amd/LineAreaChart-47fc17d2.js +0 -2
  1341. package/amd/LineAreaChart-47fc17d2.js.map +0 -1
  1342. package/amd/Link-a8fad252.js +0 -2
  1343. package/amd/Link-a8fad252.js.map +0 -1
  1344. package/amd/ListView-02a92d18.js +0 -2
  1345. package/amd/ListView-02a92d18.js.map +0 -1
  1346. package/amd/Menu-1b8fefc5.js +0 -2
  1347. package/amd/Menu-1b8fefc5.js.map +0 -1
  1348. package/amd/MenuButton-2fe1ef2c.js +0 -2
  1349. package/amd/MenuButton-2fe1ef2c.js.map +0 -1
  1350. package/amd/MenuItem-85e4ffdc.js +0 -2
  1351. package/amd/MenuItem-85e4ffdc.js.map +0 -1
  1352. package/amd/MonthView-96fafba4.js +0 -2
  1353. package/amd/MonthView-96fafba4.js.map +0 -1
  1354. package/amd/NavigationListItem-9df5446c.js +0 -2
  1355. package/amd/NavigationListItem-9df5446c.js.map +0 -1
  1356. package/amd/OverflowTabBar-5ff68da7.js +0 -2
  1357. package/amd/OverflowTabBar-5ff68da7.js.map +0 -1
  1358. package/amd/OverflowTabBarItem-926b0c8a.js +0 -2
  1359. package/amd/OverflowTabBarItem-926b0c8a.js.map +0 -1
  1360. package/amd/PictoChart-ab426a71.js +0 -2
  1361. package/amd/PictoChart-ab426a71.js.map +0 -1
  1362. package/amd/PieChart-57ffe4c0.js +0 -2
  1363. package/amd/PieChart-57ffe4c0.js.map +0 -1
  1364. package/amd/ReorderableTabBar-0c69bfd4.js +0 -2
  1365. package/amd/ReorderableTabBar-0c69bfd4.js.map +0 -1
  1366. package/amd/RevealToggleIcon-093f60c4.js +0 -2
  1367. package/amd/RevealToggleIcon-093f60c4.js.map +0 -1
  1368. package/amd/ScatterChart-7bd0f601.js +0 -2
  1369. package/amd/ScatterChart-7bd0f601.js.map +0 -1
  1370. package/amd/SectionalLegend-bd980f3f.js +0 -2
  1371. package/amd/SectionalLegend-bd980f3f.js.map +0 -1
  1372. package/amd/SectionedContent-74559d9d.js +0 -2
  1373. package/amd/SectionedContent-74559d9d.js.map +0 -1
  1374. package/amd/SelectMenuItem-affab9f3.js +0 -2
  1375. package/amd/SelectMenuItem-affab9f3.js.map +0 -1
  1376. package/amd/SelectMobileFieldInput-4795a794.js +0 -2
  1377. package/amd/SelectMobileFieldInput-4795a794.js.map +0 -1
  1378. package/amd/SelectMultiple-e216b16c.js +0 -2
  1379. package/amd/SelectMultiple-e216b16c.js.map +0 -1
  1380. package/amd/SelectSingle-d53cf202.js +0 -2
  1381. package/amd/SelectSingle-d53cf202.js.map +0 -1
  1382. package/amd/SplitMenuButton-76adec12.js +0 -2
  1383. package/amd/SplitMenuButton-76adec12.js.map +0 -1
  1384. package/amd/StyledDatePickerButton-bceb62e1.js +0 -2
  1385. package/amd/StyledDatePickerButton-bceb62e1.js.map +0 -1
  1386. package/amd/Submenu-52ec8bfb.js +0 -2
  1387. package/amd/Submenu-52ec8bfb.js.map +0 -1
  1388. package/amd/TabBar-de723fbc.js +0 -2
  1389. package/amd/TabBar-de723fbc.js.map +0 -1
  1390. package/amd/TabBarContextMenu-6a167e27.js +0 -2
  1391. package/amd/TabBarContextMenu-6a167e27.js.map +0 -1
  1392. package/amd/TabBarMixed-cfd346bf.js +0 -2
  1393. package/amd/TabBarMixed-cfd346bf.js.map +0 -1
  1394. package/amd/Table-74566993.js +0 -2
  1395. package/amd/Table-74566993.js.map +0 -1
  1396. package/amd/TableView-3d82855c.js +0 -2
  1397. package/amd/TableView-3d82855c.js.map +0 -1
  1398. package/amd/TagCloud-c10a166e.js +0 -2
  1399. package/amd/TagCloud-c10a166e.js.map +0 -1
  1400. package/amd/TextArea-4a3b8b56.js +0 -2
  1401. package/amd/TextArea-4a3b8b56.js.map +0 -1
  1402. package/amd/TextAreaAutosize-3a13ebb2.js +0 -2
  1403. package/amd/TextAreaAutosize-3a13ebb2.js.map +0 -1
  1404. package/amd/ToggleButton-b77486fe.js +0 -2
  1405. package/amd/ToggleButton-b77486fe.js.map +0 -1
  1406. package/amd/ToggleButtonLabel-87364773.js +0 -2
  1407. package/amd/ToggleButtonLabel-87364773.js.map +0 -1
  1408. package/amd/TruncatingLink-591e7ff1.js +0 -2
  1409. package/amd/TruncatingLink-591e7ff1.js.map +0 -1
  1410. package/amd/YearsGridView-561c3074.js +0 -2
  1411. package/amd/YearsGridView-561c3074.js.map +0 -1
  1412. package/amd/listViewSelectionTests-7d18f09e.js +0 -2
  1413. package/amd/listViewSelectionTests-7d18f09e.js.map +0 -1
  1414. package/amd/useChartContextMenu-abadeabc.js +0 -2
  1415. package/amd/useChartContextMenu-abadeabc.js.map +0 -1
  1416. package/amd/useChartMarquee-3865426f.js +0 -2
  1417. package/amd/useChartMarquee-3865426f.js.map +0 -1
  1418. package/amd/useContextMenu-67972d45.js +0 -2
  1419. package/amd/useContextMenu-67972d45.js.map +0 -1
  1420. package/amd/useDisplayValue-9b671893.js +0 -2
  1421. package/amd/useDisplayValue-9b671893.js.map +0 -1
  1422. package/amd/useLegendContextMenu-55fedade.js +0 -2
  1423. package/amd/useLegendContextMenu-55fedade.js.map +0 -1
  1424. package/amd/useSelectCommon-f33709d2.js +0 -2
  1425. package/amd/useSelectCommon-f33709d2.js.map +0 -1
  1426. package/amd/useTabBar-b05edef0.js +0 -2
  1427. package/amd/useTabBar-b05edef0.js.map +0 -1
  1428. package/amd/useTextAreaAltEnter-32272da6.js +0 -2
  1429. package/amd/useTextAreaAltEnter-32272da6.js.map +0 -1
  1430. package/amd/useVisDragModeControls-5f059d09.js +0 -2
  1431. package/amd/useVisDragModeControls-5f059d09.js.map +0 -1
  1432. package/cjs/BaseButton-d8f96bfa.js +0 -86
  1433. package/cjs/BaseButton-d8f96bfa.js.map +0 -1
  1434. package/cjs/BaseDiagram-ce4f1a20.js +0 -2956
  1435. package/cjs/BaseDiagram-ce4f1a20.js.map +0 -1
  1436. package/cjs/Button-020e0381.js +0 -24
  1437. package/cjs/Button-020e0381.js.map +0 -1
  1438. package/cjs/ButtonSetButton-569e0efb.js +0 -35
  1439. package/cjs/ButtonSetButton-569e0efb.js.map +0 -1
  1440. package/cjs/ButtonSetIconButton-3778ac7b.js +0 -40
  1441. package/cjs/ButtonSetIconButton-3778ac7b.js.map +0 -1
  1442. package/cjs/ButtonSetItem-4322c957.js +0 -67
  1443. package/cjs/ButtonSetItem-4322c957.js.map +0 -1
  1444. package/cjs/Center-9a0ee4f3.js +0 -18
  1445. package/cjs/Center-9a0ee4f3.js.map +0 -1
  1446. package/cjs/Chart-966da017.js +0 -754
  1447. package/cjs/Chart-966da017.js.map +0 -1
  1448. package/cjs/CheckboxSet-6865f4fd.js +0 -55
  1449. package/cjs/CheckboxSet-6865f4fd.js.map +0 -1
  1450. package/cjs/ColorPalette-b14114d8.js +0 -83
  1451. package/cjs/ColorPalette-b14114d8.js.map +0 -1
  1452. package/cjs/ColorPicker-8f0b6000.js +0 -25
  1453. package/cjs/ColorPicker-8f0b6000.js.map +0 -1
  1454. package/cjs/CompactLabelAssistance-e910bb56.js +0 -95
  1455. package/cjs/CompactLabelAssistance-e910bb56.js.map +0 -1
  1456. package/cjs/DatePicker-b60f8a7e.js +0 -601
  1457. package/cjs/DatePicker-b60f8a7e.js.map +0 -1
  1458. package/cjs/DatePickerHeader-1010204c.js +0 -48
  1459. package/cjs/DatePickerHeader-1010204c.js.map +0 -1
  1460. package/cjs/Dialog-8b65180c.js +0 -389
  1461. package/cjs/Dialog-8b65180c.js.map +0 -1
  1462. package/cjs/Dropdown-1ba432a8.js +0 -333
  1463. package/cjs/Dropdown-1ba432a8.js.map +0 -1
  1464. package/cjs/EmbeddedIconButton-cc159a01.js +0 -13
  1465. package/cjs/EmbeddedIconButton-cc159a01.js.map +0 -1
  1466. package/cjs/EnvironmentProvider-5f2435e6.js +0 -61
  1467. package/cjs/EnvironmentProvider-5f2435e6.js.map +0 -1
  1468. package/cjs/Flex-3a257bc3.js +0 -32
  1469. package/cjs/Flex-3a257bc3.js.map +0 -1
  1470. package/cjs/Floating-79cbe5ad.js +0 -467
  1471. package/cjs/Floating-79cbe5ad.js.map +0 -1
  1472. package/cjs/Grid-cef20569.js +0 -29
  1473. package/cjs/Grid-cef20569.js.map +0 -1
  1474. package/cjs/HighlightText-f4535f3d.js +0 -33
  1475. package/cjs/HighlightText-f4535f3d.js.map +0 -1
  1476. package/cjs/IconSwitchButton-9b0df2d6.js +0 -44
  1477. package/cjs/IconSwitchButton-9b0df2d6.js.map +0 -1
  1478. package/cjs/IconToggleButton-d2147159.js +0 -43
  1479. package/cjs/IconToggleButton-d2147159.js.map +0 -1
  1480. package/cjs/IconUserAssistance-89913ad1.js +0 -76
  1481. package/cjs/IconUserAssistance-89913ad1.js.map +0 -1
  1482. package/cjs/Layer-b60deb1b.js +0 -94
  1483. package/cjs/Layer-b60deb1b.js.map +0 -1
  1484. package/cjs/LayerHost-3cd73603.js +0 -46
  1485. package/cjs/LayerHost-3cd73603.js.map +0 -1
  1486. package/cjs/LayerManager-c535d963.js +0 -36
  1487. package/cjs/LayerManager-c535d963.js.map +0 -1
  1488. package/cjs/Link-cc34e4c1.js +0 -35
  1489. package/cjs/Link-cc34e4c1.js.map +0 -1
  1490. package/cjs/LiveRegion-62ce9ac7.js +0 -41
  1491. package/cjs/LiveRegion-62ce9ac7.js.map +0 -1
  1492. package/cjs/MaxLengthLiveRegion-0a6ba765.js +0 -28
  1493. package/cjs/MaxLengthLiveRegion-0a6ba765.js.map +0 -1
  1494. package/cjs/MessageLayer-8e6e3d98.js +0 -61
  1495. package/cjs/MessageLayer-8e6e3d98.js.map +0 -1
  1496. package/cjs/MonthView-a2661a58.js +0 -210
  1497. package/cjs/MonthView-a2661a58.js.map +0 -1
  1498. package/cjs/NavigationListItem-3b9eb0fb.js +0 -294
  1499. package/cjs/NavigationListItem-3b9eb0fb.js.map +0 -1
  1500. package/cjs/OverflowTabBarItem-abcd2327.js +0 -262
  1501. package/cjs/OverflowTabBarItem-abcd2327.js.map +0 -1
  1502. package/cjs/Popup-de16d915.js +0 -300
  1503. package/cjs/Popup-de16d915.js.map +0 -1
  1504. package/cjs/ProgressCircle-cac3c03a.js +0 -50
  1505. package/cjs/ProgressCircle-cac3c03a.js.map +0 -1
  1506. package/cjs/ReferenceLineArea-7bc34276.js +0 -592
  1507. package/cjs/ReferenceLineArea-7bc34276.js.map +0 -1
  1508. package/cjs/RevealToggleIcon-a6a4f8db.js +0 -28
  1509. package/cjs/RevealToggleIcon-a6a4f8db.js.map +0 -1
  1510. package/cjs/SectionedContent-5eff5dce.js +0 -68
  1511. package/cjs/SectionedContent-5eff5dce.js.map +0 -1
  1512. package/cjs/SelectMenuGroupContext-a349d259.js +0 -551
  1513. package/cjs/SelectMenuGroupContext-a349d259.js.map +0 -1
  1514. package/cjs/SelectMobileFieldInput-cbf57541.js +0 -248
  1515. package/cjs/SelectMobileFieldInput-cbf57541.js.map +0 -1
  1516. package/cjs/SelectorAll-9118eb07.js +0 -53
  1517. package/cjs/SelectorAll-9118eb07.js.map +0 -1
  1518. package/cjs/StyledDatePickerButton-becd2a7d.js +0 -33
  1519. package/cjs/StyledDatePickerButton-becd2a7d.js.map +0 -1
  1520. package/cjs/StyledLabelValueLayout-48da61b9.js +0 -22
  1521. package/cjs/StyledLabelValueLayout-48da61b9.js.map +0 -1
  1522. package/cjs/Submenu-8e92469f.js +0 -251
  1523. package/cjs/Submenu-8e92469f.js.map +0 -1
  1524. package/cjs/TabBar-4bc753a9.js +0 -73
  1525. package/cjs/TabBar-4bc753a9.js.map +0 -1
  1526. package/cjs/TabBarContextMenu-d9bf65c2.js +0 -102
  1527. package/cjs/TabBarContextMenu-d9bf65c2.js.map +0 -1
  1528. package/cjs/TabBarLinkItem-b0c4b100.js +0 -15
  1529. package/cjs/TabBarLinkItem-b0c4b100.js.map +0 -1
  1530. package/cjs/Table-a102e1ee.js +0 -4114
  1531. package/cjs/Table-a102e1ee.js.map +0 -1
  1532. package/cjs/ToggleButton-5ebfe20e.js +0 -30
  1533. package/cjs/ToggleButton-5ebfe20e.js.map +0 -1
  1534. package/cjs/ToggleButtonLabel-c8f36317.js +0 -73
  1535. package/cjs/ToggleButtonLabel-c8f36317.js.map +0 -1
  1536. package/cjs/TruncatingLink-867da10e.js +0 -58
  1537. package/cjs/TruncatingLink-867da10e.js.map +0 -1
  1538. package/cjs/View-ed116d78.js +0 -170
  1539. package/cjs/View-ed116d78.js.map +0 -1
  1540. package/cjs/VisStatusMessage-07e63c6e.js +0 -31
  1541. package/cjs/VisStatusMessage-07e63c6e.js.map +0 -1
  1542. package/cjs/VisTabularDatatip-abfef042.js +0 -26
  1543. package/cjs/VisTabularDatatip-abfef042.js.map +0 -1
  1544. package/cjs/WindowOverlay-85d999fa.js +0 -112
  1545. package/cjs/WindowOverlay-85d999fa.js.map +0 -1
  1546. package/cjs/YearsGridView-d0d4e8e1.js +0 -190
  1547. package/cjs/YearsGridView-d0d4e8e1.js.map +0 -1
  1548. package/cjs/popupUtils-1d123cbe.js +0 -31
  1549. package/cjs/popupUtils-1d123cbe.js.map +0 -1
  1550. package/cjs/tooltipUtils-2bc15136.js +0 -115
  1551. package/cjs/tooltipUtils-2bc15136.js.map +0 -1
  1552. package/cjs/useChartContextMenu-af989b4f.js +0 -125
  1553. package/cjs/useChartContextMenu-af989b4f.js.map +0 -1
  1554. package/cjs/useChartDatatip-1bceba5d.js +0 -341
  1555. package/cjs/useChartDatatip-1bceba5d.js.map +0 -1
  1556. package/cjs/useChartMarquee-ede5cae4.js +0 -306
  1557. package/cjs/useChartMarquee-ede5cae4.js.map +0 -1
  1558. package/cjs/useColorScheme-f8b1447d.js +0 -21
  1559. package/cjs/useColorScheme-f8b1447d.js.map +0 -1
  1560. package/cjs/useContextMenu-2500df06.js +0 -119
  1561. package/cjs/useContextMenu-2500df06.js.map +0 -1
  1562. package/cjs/useCssVars-8e83d496.js +0 -60
  1563. package/cjs/useCssVars-8e83d496.js.map +0 -1
  1564. package/cjs/useCurrentKey-1b9e3382.js +0 -85
  1565. package/cjs/useCurrentKey-1b9e3382.js.map +0 -1
  1566. package/cjs/useDatatip-b7b4f13f.js +0 -96
  1567. package/cjs/useDatatip-b7b4f13f.js.map +0 -1
  1568. package/cjs/useDensity-0b9fd9ca.js +0 -21
  1569. package/cjs/useDensity-0b9fd9ca.js.map +0 -1
  1570. package/cjs/useDisplayValue-4ace417c.js +0 -82
  1571. package/cjs/useDisplayValue-4ace417c.js.map +0 -1
  1572. package/cjs/useExpandCollapse-ef990199.js +0 -72
  1573. package/cjs/useExpandCollapse-ef990199.js.map +0 -1
  1574. package/cjs/useFloating-c753a7f9.js +0 -1926
  1575. package/cjs/useFloating-c753a7f9.js.map +0 -1
  1576. package/cjs/useHiddenTestMethod-eae1d48b.js +0 -30
  1577. package/cjs/useHiddenTestMethod-eae1d48b.js.map +0 -1
  1578. package/cjs/useKeyboardEvents-0ab70381.js +0 -88
  1579. package/cjs/useKeyboardEvents-0ab70381.js.map +0 -1
  1580. package/cjs/useLegendContextMenu-2cf579d7.js +0 -285
  1581. package/cjs/useLegendContextMenu-2cf579d7.js.map +0 -1
  1582. package/cjs/useMeterDatatip-92ca91d9.js +0 -76
  1583. package/cjs/useMeterDatatip-92ca91d9.js.map +0 -1
  1584. package/cjs/useOutsideClick-dbf3d604.js +0 -117
  1585. package/cjs/useOutsideClick-dbf3d604.js.map +0 -1
  1586. package/cjs/useOutsideMousedown-70f36cca.js +0 -50
  1587. package/cjs/useOutsideMousedown-70f36cca.js.map +0 -1
  1588. package/cjs/usePopupAnimation-f3b34413.js +0 -87
  1589. package/cjs/usePopupAnimation-f3b34413.js.map +0 -1
  1590. package/cjs/usePrefixSuffix-23d1cc33.js +0 -72
  1591. package/cjs/usePrefixSuffix-23d1cc33.js.map +0 -1
  1592. package/cjs/useRadioFocusManager-a11750e7.js +0 -110
  1593. package/cjs/useRadioFocusManager-a11750e7.js.map +0 -1
  1594. package/cjs/useReorderableItem-64be8d2b.js +0 -299
  1595. package/cjs/useReorderableItem-64be8d2b.js.map +0 -1
  1596. package/cjs/useRovingTabIndexContainer-0ce4681d.js +0 -108
  1597. package/cjs/useRovingTabIndexContainer-0ce4681d.js.map +0 -1
  1598. package/cjs/useScale-db16c2b8.js +0 -21
  1599. package/cjs/useScale-db16c2b8.js.map +0 -1
  1600. package/cjs/useSelectCommon-27afecfa.js +0 -507
  1601. package/cjs/useSelectCommon-27afecfa.js.map +0 -1
  1602. package/cjs/useSelectDrill-0b4b47ec.js +0 -114
  1603. package/cjs/useSelectDrill-0b4b47ec.js.map +0 -1
  1604. package/cjs/useSelection-37939f09.js +0 -260
  1605. package/cjs/useSelection-37939f09.js.map +0 -1
  1606. package/cjs/useSelection-da64e28e.js +0 -188
  1607. package/cjs/useSelection-da64e28e.js.map +0 -1
  1608. package/cjs/useTabBar-35b73d10.js +0 -309
  1609. package/cjs/useTabBar-35b73d10.js.map +0 -1
  1610. package/cjs/useTestId-4f53d561.js +0 -23
  1611. package/cjs/useTestId-4f53d561.js.map +0 -1
  1612. package/cjs/useTextAreaAltEnter-11424062.js +0 -64
  1613. package/cjs/useTextAreaAltEnter-11424062.js.map +0 -1
  1614. package/cjs/useTheme-2a034a21.js +0 -21
  1615. package/cjs/useTheme-2a034a21.js.map +0 -1
  1616. package/cjs/useThemeInterpolations-a37b37d9.js +0 -71
  1617. package/cjs/useThemeInterpolations-a37b37d9.js.map +0 -1
  1618. package/cjs/useTooltip-34accecc.js +0 -51
  1619. package/cjs/useTooltip-34accecc.js.map +0 -1
  1620. package/cjs/useTooltipControlled-0a95856c.js +0 -376
  1621. package/cjs/useTooltipControlled-0a95856c.js.map +0 -1
  1622. package/cjs/useTooltipOnTruncation-8867b10e.js +0 -29
  1623. package/cjs/useTooltipOnTruncation-8867b10e.js.map +0 -1
  1624. package/cjs/useTranslationBundle-12dd087d.js +0 -31
  1625. package/cjs/useTranslationBundle-12dd087d.js.map +0 -1
  1626. package/cjs/useUser-1295b5cb.js +0 -21
  1627. package/cjs/useUser-1295b5cb.js.map +0 -1
  1628. package/cjs/useVisDragModeControls-2443a4e0.js +0 -89
  1629. package/cjs/useVisDragModeControls-2443a4e0.js.map +0 -1
  1630. package/cjs/useVisEvents-334c2c8d.js +0 -155
  1631. package/cjs/useVisEvents-334c2c8d.js.map +0 -1
  1632. package/cjs/withDirectionIcon-4940a248.js +0 -16
  1633. package/cjs/withDirectionIcon-4940a248.js.map +0 -1
  1634. package/es/BaseButton-41068c85.js +0 -84
  1635. package/es/BaseButton-41068c85.js.map +0 -1
  1636. package/es/BaseDiagram-b5b22e53.js +0 -2954
  1637. package/es/BaseDiagram-b5b22e53.js.map +0 -1
  1638. package/es/Button-956f51c7.js +0 -22
  1639. package/es/Button-956f51c7.js.map +0 -1
  1640. package/es/ButtonSetButton-8685c752.js +0 -33
  1641. package/es/ButtonSetButton-8685c752.js.map +0 -1
  1642. package/es/ButtonSetIconButton-c8ed85f9.js +0 -38
  1643. package/es/ButtonSetIconButton-c8ed85f9.js.map +0 -1
  1644. package/es/ButtonSetItem-280755f3.js +0 -65
  1645. package/es/ButtonSetItem-280755f3.js.map +0 -1
  1646. package/es/Center-71a03e65.js +0 -16
  1647. package/es/Center-71a03e65.js.map +0 -1
  1648. package/es/Chart-8c63da28.js +0 -752
  1649. package/es/Chart-8c63da28.js.map +0 -1
  1650. package/es/CheckboxSetContext-1be56556.js +0 -9
  1651. package/es/CheckboxSetContext-1be56556.js.map +0 -1
  1652. package/es/ColorPicker-fa103067.js +0 -23
  1653. package/es/ColorPicker-fa103067.js.map +0 -1
  1654. package/es/CompactLabelAssistance-e2fcfcab.js +0 -92
  1655. package/es/CompactLabelAssistance-e2fcfcab.js.map +0 -1
  1656. package/es/DatePicker-7287f0f9.js +0 -599
  1657. package/es/DatePicker-7287f0f9.js.map +0 -1
  1658. package/es/DatePickerHeader-f8cf86bb.js +0 -46
  1659. package/es/DatePickerHeader-f8cf86bb.js.map +0 -1
  1660. package/es/Dialog-83368f52.js +0 -387
  1661. package/es/Dialog-83368f52.js.map +0 -1
  1662. package/es/Dropdown-019aba37.js +0 -318
  1663. package/es/Dropdown-019aba37.js.map +0 -1
  1664. package/es/EmbeddedIconButton-46434710.js +0 -11
  1665. package/es/EmbeddedIconButton-46434710.js.map +0 -1
  1666. package/es/EnvironmentProvider-6a0a8212.js +0 -58
  1667. package/es/EnvironmentProvider-6a0a8212.js.map +0 -1
  1668. package/es/Flex-03129963.js +0 -30
  1669. package/es/Flex-03129963.js.map +0 -1
  1670. package/es/Floating-4a82db94.js +0 -465
  1671. package/es/Floating-4a82db94.js.map +0 -1
  1672. package/es/Grid-9e4b4f19.js +0 -27
  1673. package/es/Grid-9e4b4f19.js.map +0 -1
  1674. package/es/HighlightText-0205faef.js +0 -31
  1675. package/es/HighlightText-0205faef.js.map +0 -1
  1676. package/es/IconSwitchButton-05f1f602.js +0 -42
  1677. package/es/IconSwitchButton-05f1f602.js.map +0 -1
  1678. package/es/IconToggleButton-808818f5.js +0 -41
  1679. package/es/IconToggleButton-808818f5.js.map +0 -1
  1680. package/es/IconUserAssistance-61978211.js +0 -74
  1681. package/es/IconUserAssistance-61978211.js.map +0 -1
  1682. package/es/Layer-535577b5.js +0 -91
  1683. package/es/Layer-535577b5.js.map +0 -1
  1684. package/es/LayerHost-7931b424.js +0 -41
  1685. package/es/LayerHost-7931b424.js.map +0 -1
  1686. package/es/LayerManager-52a26c55.js +0 -34
  1687. package/es/LayerManager-52a26c55.js.map +0 -1
  1688. package/es/Link-8503aab2.js +0 -33
  1689. package/es/Link-8503aab2.js.map +0 -1
  1690. package/es/LiveRegion-cebac18d.js +0 -39
  1691. package/es/LiveRegion-cebac18d.js.map +0 -1
  1692. package/es/MaxLengthLiveRegion-8099fde5.js +0 -26
  1693. package/es/MaxLengthLiveRegion-8099fde5.js.map +0 -1
  1694. package/es/MessageLayer-2a7fdec7.js +0 -58
  1695. package/es/MessageLayer-2a7fdec7.js.map +0 -1
  1696. package/es/MonthView-4b2b483a.js +0 -208
  1697. package/es/MonthView-4b2b483a.js.map +0 -1
  1698. package/es/NavigationListItem-340ab770.js +0 -309
  1699. package/es/NavigationListItem-340ab770.js.map +0 -1
  1700. package/es/OverflowTabBarItem-aa0ce915.js +0 -257
  1701. package/es/OverflowTabBarItem-aa0ce915.js.map +0 -1
  1702. package/es/Popup-992b6c27.js +0 -298
  1703. package/es/Popup-992b6c27.js.map +0 -1
  1704. package/es/ProgressCircle-46084d0b.js +0 -48
  1705. package/es/ProgressCircle-46084d0b.js.map +0 -1
  1706. package/es/ReferenceLineArea-53129f72.js +0 -586
  1707. package/es/ReferenceLineArea-53129f72.js.map +0 -1
  1708. package/es/RevealToggleIcon-2d622d8f.js +0 -26
  1709. package/es/RevealToggleIcon-2d622d8f.js.map +0 -1
  1710. package/es/SectionedContent-30e5bf98.js +0 -65
  1711. package/es/SectionedContent-30e5bf98.js.map +0 -1
  1712. package/es/SelectMenuGroupContext-aa1fe822.js +0 -542
  1713. package/es/SelectMenuGroupContext-aa1fe822.js.map +0 -1
  1714. package/es/SelectMobileFieldInput-345c4d45.js +0 -241
  1715. package/es/SelectMobileFieldInput-345c4d45.js.map +0 -1
  1716. package/es/SelectorAll-de7ba2e1.js +0 -51
  1717. package/es/SelectorAll-de7ba2e1.js.map +0 -1
  1718. package/es/StyledDatePickerButton-78f2f6e8.js +0 -31
  1719. package/es/StyledDatePickerButton-78f2f6e8.js.map +0 -1
  1720. package/es/StyledLabelValueLayout-bb05f474.js +0 -18
  1721. package/es/StyledLabelValueLayout-bb05f474.js.map +0 -1
  1722. package/es/Submenu-cbd77756.js +0 -247
  1723. package/es/Submenu-cbd77756.js.map +0 -1
  1724. package/es/TabBar-10488830.js +0 -69
  1725. package/es/TabBar-10488830.js.map +0 -1
  1726. package/es/TabBarContextMenu-c3326d67.js +0 -99
  1727. package/es/TabBarContextMenu-c3326d67.js.map +0 -1
  1728. package/es/TabBarLinkItem-e7be54fa.js +0 -13
  1729. package/es/TabBarLinkItem-e7be54fa.js.map +0 -1
  1730. package/es/Table-2f197c6a.js +0 -4112
  1731. package/es/Table-2f197c6a.js.map +0 -1
  1732. package/es/ToggleButton-bb69cf10.js +0 -28
  1733. package/es/ToggleButton-bb69cf10.js.map +0 -1
  1734. package/es/ToggleButtonLabel-7f53fbee.js +0 -71
  1735. package/es/ToggleButtonLabel-7f53fbee.js.map +0 -1
  1736. package/es/TruncatingLink-298c6343.js +0 -56
  1737. package/es/TruncatingLink-298c6343.js.map +0 -1
  1738. package/es/View-5bdd9b3c.js +0 -167
  1739. package/es/View-5bdd9b3c.js.map +0 -1
  1740. package/es/VisStatusMessage-e2d629bb.js +0 -29
  1741. package/es/VisStatusMessage-e2d629bb.js.map +0 -1
  1742. package/es/VisTabularDatatip-85b00c1b.js +0 -24
  1743. package/es/VisTabularDatatip-85b00c1b.js.map +0 -1
  1744. package/es/WindowOverlay-7264c44a.js +0 -110
  1745. package/es/WindowOverlay-7264c44a.js.map +0 -1
  1746. package/es/YearsGridView-6c18094a.js +0 -187
  1747. package/es/YearsGridView-6c18094a.js.map +0 -1
  1748. package/es/popupUtils-51366a29.js +0 -29
  1749. package/es/popupUtils-51366a29.js.map +0 -1
  1750. package/es/tooltipUtils-af0abd38.js +0 -110
  1751. package/es/tooltipUtils-af0abd38.js.map +0 -1
  1752. package/es/useChartContextMenu-5de82cd7.js +0 -123
  1753. package/es/useChartContextMenu-5de82cd7.js.map +0 -1
  1754. package/es/useChartDatatip-8dd22b71.js +0 -336
  1755. package/es/useChartDatatip-8dd22b71.js.map +0 -1
  1756. package/es/useChartMarquee-761eb7db.js +0 -304
  1757. package/es/useChartMarquee-761eb7db.js.map +0 -1
  1758. package/es/useColorScheme-c4f6caab.js +0 -19
  1759. package/es/useColorScheme-c4f6caab.js.map +0 -1
  1760. package/es/useContextMenu-730d6c12.js +0 -116
  1761. package/es/useContextMenu-730d6c12.js.map +0 -1
  1762. package/es/useCssVars-bc2527ac.js +0 -58
  1763. package/es/useCssVars-bc2527ac.js.map +0 -1
  1764. package/es/useCurrentKey-5f865bbd.js +0 -83
  1765. package/es/useCurrentKey-5f865bbd.js.map +0 -1
  1766. package/es/useDatatip-4895a07a.js +0 -94
  1767. package/es/useDatatip-4895a07a.js.map +0 -1
  1768. package/es/useDensity-1acb0153.js +0 -19
  1769. package/es/useDensity-1acb0153.js.map +0 -1
  1770. package/es/useDisplayValue-65bbc74e.js +0 -78
  1771. package/es/useDisplayValue-65bbc74e.js.map +0 -1
  1772. package/es/useExpandCollapse-5739cfd2.js +0 -70
  1773. package/es/useExpandCollapse-5739cfd2.js.map +0 -1
  1774. package/es/useFloating-b9d680f7.js +0 -1916
  1775. package/es/useFloating-b9d680f7.js.map +0 -1
  1776. package/es/useHiddenTestMethod-f3f25093.js +0 -28
  1777. package/es/useHiddenTestMethod-f3f25093.js.map +0 -1
  1778. package/es/useKeyboardEvents-9aae7ea3.js +0 -85
  1779. package/es/useKeyboardEvents-9aae7ea3.js.map +0 -1
  1780. package/es/useLegendContextMenu-a678b26f.js +0 -279
  1781. package/es/useLegendContextMenu-a678b26f.js.map +0 -1
  1782. package/es/useMeterDatatip-538a4d53.js +0 -73
  1783. package/es/useMeterDatatip-538a4d53.js.map +0 -1
  1784. package/es/useOutsideClick-b777a43e.js +0 -115
  1785. package/es/useOutsideClick-b777a43e.js.map +0 -1
  1786. package/es/useOutsideMousedown-c45c22c0.js +0 -48
  1787. package/es/useOutsideMousedown-c45c22c0.js.map +0 -1
  1788. package/es/usePopupAnimation-96d2bc83.js +0 -85
  1789. package/es/usePopupAnimation-96d2bc83.js.map +0 -1
  1790. package/es/usePrefixSuffix-f981b65f.js +0 -70
  1791. package/es/usePrefixSuffix-f981b65f.js.map +0 -1
  1792. package/es/useRadioFocusManager-36eb283e.js +0 -108
  1793. package/es/useRadioFocusManager-36eb283e.js.map +0 -1
  1794. package/es/useReorderableItem-857636b7.js +0 -296
  1795. package/es/useReorderableItem-857636b7.js.map +0 -1
  1796. package/es/useRovingTabIndexContainer-5992e107.js +0 -106
  1797. package/es/useRovingTabIndexContainer-5992e107.js.map +0 -1
  1798. package/es/useScale-434ad939.js +0 -19
  1799. package/es/useScale-434ad939.js.map +0 -1
  1800. package/es/useSelectCommon-a3c69d60.js +0 -489
  1801. package/es/useSelectCommon-a3c69d60.js.map +0 -1
  1802. package/es/useSelectDrill-f669e729.js +0 -111
  1803. package/es/useSelectDrill-f669e729.js.map +0 -1
  1804. package/es/useSelection-65134722.js +0 -258
  1805. package/es/useSelection-65134722.js.map +0 -1
  1806. package/es/useSelection-82bec039.js +0 -186
  1807. package/es/useSelection-82bec039.js.map +0 -1
  1808. package/es/useTabBar-c5558e77.js +0 -305
  1809. package/es/useTabBar-c5558e77.js.map +0 -1
  1810. package/es/useTestId-f24ac480.js +0 -21
  1811. package/es/useTestId-f24ac480.js.map +0 -1
  1812. package/es/useTheme-0e7497db.js +0 -19
  1813. package/es/useTheme-0e7497db.js.map +0 -1
  1814. package/es/useThemeInterpolations-e144e8ec.js +0 -68
  1815. package/es/useThemeInterpolations-e144e8ec.js.map +0 -1
  1816. package/es/useTooltip-94af94d4.js +0 -49
  1817. package/es/useTooltip-94af94d4.js.map +0 -1
  1818. package/es/useTooltipControlled-f2cfa454.js +0 -373
  1819. package/es/useTooltipControlled-f2cfa454.js.map +0 -1
  1820. package/es/useTooltipOnTruncation-94282e75.js +0 -27
  1821. package/es/useTooltipOnTruncation-94282e75.js.map +0 -1
  1822. package/es/useTranslationBundle-4822502f.js +0 -29
  1823. package/es/useTranslationBundle-4822502f.js.map +0 -1
  1824. package/es/useUser-06d34d19.js +0 -19
  1825. package/es/useUser-06d34d19.js.map +0 -1
  1826. package/es/useVisDragModeControls-af64848c.js +0 -87
  1827. package/es/useVisDragModeControls-af64848c.js.map +0 -1
  1828. package/es/useVisEvents-256dee29.js +0 -153
  1829. package/es/useVisEvents-256dee29.js.map +0 -1
  1830. package/es/withDirectionIcon-a8d84a3d.js +0 -14
  1831. package/es/withDirectionIcon-a8d84a3d.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Table-74566993.js","sources":["../../src/PRIVATE_Table/TableContextMenu.tsx","../../src/PRIVATE_Table/utils/TableFocusUtils.tsx","../../src/PRIVATE_Table/hooks/useContextMenu.ts","../../src/PRIVATE_Table/utils/TableTooltipUtils.ts","../../src/PRIVATE_Table/hooks/useTruncationTooltip.tsx","../../src/PRIVATE_Table/hooks/useFocusHandling.ts","../../src/PRIVATE_Table/utils/TableActionUtils.ts","../../src/PRIVATE_Table/utils/TableInteractionUtils.ts","../../src/PRIVATE_Table/utils/TableNavigationUtils.ts","../../src/PRIVATE_Table/utils/TableSelectionUtils.ts","../../src/PRIVATE_Table/hooks/useKeyboardHandling.ts","../../src/PRIVATE_Table/utils/TableSizingUtils.ts","../../src/PRIVATE_Table/hooks/usePointerHandling.ts","../../src/PRIVATE_Table/hooks/useInteractionManager.ts","../../src/PRIVATE_Table/TableNoData.tsx","../../src/PRIVATE_TableCommon/utils/TooltipUtils.ts","../../src/PRIVATE_Table/TableCell.tsx","../../src/PRIVATE_Table/TableRow.tsx","../../src/PRIVATE_Table/TableBody.tsx","../../src/PRIVATE_Table/TableDragIndicator.tsx","../../src/PRIVATE_Table/TableFooterCell.tsx","../../src/PRIVATE_Table/TableFooter.tsx","../../src/PRIVATE_Table/TableHeaderCell.tsx","../../src/PRIVATE_Table/TableHeader.tsx","../../src/PRIVATE_Table/Table.tsx"],"sourcesContent":["/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentProps } from 'preact';\nimport type { Dispatch, StateUpdater } from 'preact/hooks';\nimport type { FocusableHandle } from '#hooks/UNSAFE_useFocusableTextField';\nimport type { SelectableHandle } from '#hooks/UNSAFE_useSelectableTextField';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { ValueUpdateDetail } from '#utils/UNSAFE_valueUpdateDetail';\nimport type {\n CellContextMenuContext,\n ColumnResizeDetail,\n SortCriterionDetail,\n TableContextMenuConfig\n} from '#UNSAFE_TableView';\nimport type { AppliedColumnWidths } from './Table';\n\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { Button } from '#UNSAFE_Button';\nimport { Dialog } from '#UNSAFE_Dialog';\nimport { Flex } from '#UNSAFE_Flex';\nimport { Menu, MenuItem, SelectMenuItem, SelectSingleMenuGroup, Submenu } from '#UNSAFE_Menu';\nimport { NumberInputText } from '#UNSAFE_NumberInputText';\n\ntype Props<K extends string | number, D, C extends string> = {\n contextMenuConfig: TableContextMenuConfig<K, D, C>;\n contextMenuContext: CellContextMenuContext<K, D, C>;\n} & Omit<ComponentProps<typeof Menu>, 'children'>;\n\n/**\n * The internal component used to render a custom context menu on the Table\n */\nexport function TableContextMenu<K extends string | number, D, C extends string>({\n contextMenuConfig,\n contextMenuContext,\n ...menuProps\n}: Props<K, D, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const accessibleLabel =\n contextMenuConfig.accessibleLabel != null\n ? contextMenuConfig.accessibleLabel\n : translations.accContextMenuLabel();\n\n return contextMenuConfig.itemsRenderer(contextMenuContext) != null ? (\n <Menu aria-label={accessibleLabel} {...menuProps}>\n {menuProps.isOpen && contextMenuConfig.itemsRenderer(contextMenuContext)}\n </Menu>\n ) : (\n <></>\n );\n}\n\ntype SortItemProps<C extends string> = {\n columnKey: C;\n isDisabled: boolean;\n currentSortDirection?: 'ascending' | 'descending';\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * The internal component used to render the context menu sort item on the Table\n */\nexport function TableContextMenuSort<C extends string>({\n columnKey,\n isDisabled,\n currentSortDirection,\n onSortCriterionChange\n}: SortItemProps<C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const _handleSort: Required<ComponentProps<typeof SelectSingleMenuGroup>>['onCommit'] = ({\n value\n }) => {\n if (onSortCriterionChange != null && value !== currentSortDirection) {\n onSortCriterionChange([\n { key: columnKey, sortDirection: value === 'ascending' ? 'ascending' : 'descending' }\n ]);\n }\n };\n\n return (\n <Submenu label={translations.collection_sortColumnMenu()}>\n <SelectSingleMenuGroup value={currentSortDirection} onCommit={_handleSort}>\n <SelectMenuItem\n isDisabled={isDisabled}\n value=\"ascending\"\n label={translations.collection_sortAscendingSubMenu()}\n />\n <SelectMenuItem\n isDisabled={isDisabled}\n value=\"descending\"\n label={translations.collection_sortDescendingSubMenu()}\n />\n </SelectSingleMenuGroup>\n </Submenu>\n );\n}\n\ntype ResizeItemProps = {\n isDisabled: boolean;\n setIsResizeDialogOpen: Dispatch<StateUpdater<boolean>>;\n};\n\n/**\n * The internal component used to render the context menu column resize item on the Table\n */\nexport function TableContextMenuResize({ isDisabled, setIsResizeDialogOpen }: ResizeItemProps) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const handleResize = () => {\n setIsResizeDialogOpen(true);\n };\n\n return (\n <MenuItem\n label={translations.collection_resizeColumnMenu()}\n onAction={handleResize}\n isDisabled={isDisabled}\n />\n );\n}\n\ntype ResizeDialogProps<C extends string> = {\n isOpen: boolean;\n columnKey: C;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n appliedColumnWidths: AppliedColumnWidths<C>;\n setIsResizeDialogOpen: Dispatch<StateUpdater<boolean>>;\n};\n\n/**\n * The internal component used to render the column resize dialog on the Table\n */\nexport function TableResizeColumnDialog<C extends string>({\n isOpen,\n columnKey,\n onColumnResize,\n appliedColumnWidths,\n setIsResizeDialogOpen\n}: ResizeDialogProps<C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const initialWidth = Math.round(appliedColumnWidths.netColumnWidths[columnKey]);\n const initialWidthRef = useRef<number>(initialWidth);\n\n const numberInputRef = useRef<FocusableHandle & SelectableHandle>(null);\n\n const [widthValue, setWidthValue] = useState<string | undefined>(String(initialWidth));\n\n let isDisabled;\n let messages: ComponentProps<typeof NumberInputText>['messages'];\n if (\n widthValue == null ||\n Number.isNaN(parseInt(widthValue)) ||\n String(parseInt(widthValue)) !== widthValue.trim() ||\n parseInt(widthValue) < 16 ||\n parseInt(widthValue) > 100000\n ) {\n messages = [\n {\n severity: 'error',\n detail: translations.collection_resizeMessageDetail({ MIN: '16', MAX: '100000' })\n }\n ];\n isDisabled = true;\n } else {\n isDisabled = false;\n }\n\n const apply = useCallback(() => {\n if (columnKey != null && onColumnResize != null && widthValue != null) {\n if (parseInt(widthValue) !== initialWidthRef.current) {\n onColumnResize({\n key: columnKey,\n newWidth: parseInt(widthValue),\n allColumnWidths: appliedColumnWidths.netColumnWidths,\n paddingWidth: appliedColumnWidths.totalBorderOffset,\n gesture: 'contextMenu',\n type: 'absolute'\n });\n }\n }\n setIsResizeDialogOpen(false);\n }, [columnKey, onColumnResize, widthValue, appliedColumnWidths, setIsResizeDialogOpen]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' && !isDisabled) {\n apply();\n }\n },\n [apply, isDisabled]\n );\n\n const cancel = useCallback(() => {\n setIsResizeDialogOpen(false);\n }, [setIsResizeDialogOpen]);\n\n const handleOnInput = useCallback((detail: ValueUpdateDetail<string>) => {\n setWidthValue(detail.value);\n }, []);\n\n const footer = (\n <Flex gap=\"2x\">\n <Button onAction={cancel} label={translations.collection_cancel()} />\n <Button\n variant=\"callToAction\"\n onAction={apply}\n label={translations.collection_apply()}\n isDisabled={isDisabled}\n />\n </Flex>\n );\n\n return (\n <Dialog\n autoFocusRef={numberInputRef}\n isOpen={isOpen}\n modality={'modal'}\n header={translations.collection_resizeColumnDialog()}\n footer={footer}>\n <div onKeyDown={handleKeyDown}>\n <NumberInputText\n label={translations.collection_width()}\n onInput={handleOnInput}\n suffix={translations.collection_pixels()}\n messages={messages}\n isRequired={true}\n isRequiredShown={true}\n ref={numberInputRef}\n value={widthValue}\n />\n </div>\n </Dialog>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { Dispatch, MutableRef, StateUpdater } from 'preact/hooks';\nimport type {\n Cell,\n CellContextMenuContext,\n CellOverride,\n SortCriterionDetail\n} from '#UNSAFE_TableView';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n AppliedColumnWidths,\n CurrencyStatus,\n OverflowInfo,\n SizingInfo,\n StickyColumnInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { getBoundaryColumnKey, getElementFromCell, isAutoFocusCell } from './TableDomUtils';\nimport { applyScrollDetail, resetVerticalScrollPosition } from './TableScrollUtils';\nimport { TableContextMenuResize, TableContextMenuSort } from '../TableContextMenu';\n\n/**\n * Helper function to determine if a given active cell represents a 'transient' state.\n */\nexport function isTransientCell<K, C>(activeCell?: ActiveCell<K, C>) {\n return (\n activeCell != null &&\n (activeCell.type === 'loadMore' ||\n activeCell.type === 'loading' ||\n activeCell.type === 'pending')\n );\n}\n\n/**\n * Helper function to compare two given cell descriptors.\n */\nexport function cellComparator<K, C>(\n cell1?: ActiveCell<K, C> | Cell<K, C>,\n cell2?: ActiveCell<K, C> | Cell<K, C>\n) {\n if (cell1 == null) {\n return cell2 == null;\n }\n if (cell2 == null) {\n return false;\n }\n if (cell1.type === cell2.type && cell1.rowKey === cell2.rowKey) {\n // special case the transient 'loading' cell types as column keys are hints used for when a user\n // navigates back to another region using the keyboard - otherwise we'd go to the first column\n if (cell1.type === 'loading' || cell1.type === 'loadMore' || cell1.type === 'pending') {\n return true;\n }\n return cell1.columnKey === cell2.columnKey;\n }\n return false;\n}\n\nexport function getCellContextMenuContextFromCell<K extends string | number, D, C extends string>(\n tableData: CollectionData<K, D>[],\n columnsArray: TableColumn<K, D, C>[],\n setIsResizeDialogOpen: Dispatch<StateUpdater<boolean>>,\n cell?: ActiveCell<K, C>,\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[],\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void\n) {\n if (cell?.type === 'data' || cell?.type === 'header' || cell?.type === 'footer') {\n let isSortable = false;\n let isResizable = false;\n for (let i = 0; i < columnsArray.length; i++) {\n const column = columnsArray[i];\n if (column.key === cell.columnKey) {\n isSortable = column.value.sortable === 'enabled';\n isResizable = column.value.resizable === 'enabled';\n break;\n }\n }\n let currentSortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === cell.columnKey) {\n currentSortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const allMenuItems = {\n resizeColumn: (\n <TableContextMenuResize\n isDisabled={!isResizable}\n setIsResizeDialogOpen={setIsResizeDialogOpen}\n />\n ),\n sortColumn: (\n <TableContextMenuSort\n columnKey={cell.columnKey}\n isDisabled={!isSortable}\n currentSortDirection={currentSortDirection}\n onSortCriterionChange={onSortCriterionChange}\n />\n )\n };\n\n const hasResizableColumns = columnsArray.some((column: TableColumn<K, D, C>) => {\n return column.value.resizable === 'enabled';\n });\n const hasSortableColumns = columnsArray.some((column: TableColumn<K, D, C>) => {\n return column.value.sortable === 'enabled';\n });\n\n const defaultMenuItems =\n hasResizableColumns || hasSortableColumns ? (\n <>\n {hasResizableColumns ? allMenuItems['resizeColumn'] : undefined}\n {hasSortableColumns ? allMenuItems['sortColumn'] : undefined}\n </>\n ) : undefined;\n\n if (cell.type === 'data') {\n for (const rowData of tableData) {\n if (rowData.metadata.key === cell.rowKey) {\n return {\n allMenuItems,\n defaultMenuItems,\n rowData: rowData.data,\n rowKey: cell.rowKey,\n columnKey: cell.columnKey,\n type: 'data'\n } as CellContextMenuContext<K, D, C>;\n }\n }\n } else {\n return {\n allMenuItems,\n defaultMenuItems,\n columnKey: cell.columnKey,\n type: cell.type\n } as CellContextMenuContext<K, D, C>;\n }\n }\n return undefined;\n}\n\n/**\n * Helper function to determine the resulting cell from a cell override.\n */\nfunction _getCellFromCellOverride<K, D, C>(\n tableData: CollectionData<K, D>[],\n columnsArray: TableColumn<K, D, C>[],\n cellOverride: CellOverride<K, C>,\n currentCell?: Cell<K, C>\n): Cell<K, C> | undefined {\n let cellType;\n let cellRowKey;\n let cellColumnKey;\n if (cellOverride.rowKey != null) {\n cellType = 'data';\n cellRowKey = cellOverride.rowKey;\n if (cellOverride.columnKey != null) {\n cellColumnKey = cellOverride.columnKey;\n } else if (currentCell?.columnKey != null) {\n cellColumnKey = currentCell.columnKey;\n } else {\n cellColumnKey = getBoundaryColumnKey<K, D, C>(columnsArray, true);\n }\n if (cellColumnKey == null) {\n return undefined;\n }\n } else if (cellOverride.columnKey != null) {\n cellColumnKey = cellOverride.columnKey;\n if (cellOverride.type != null) {\n cellType = cellOverride.type;\n } else if (currentCell?.type != null && currentCell.type !== 'noData') {\n cellType = currentCell.type;\n } else {\n cellType = 'header';\n }\n if (cellType === 'data') {\n if (currentCell?.rowKey != null) {\n cellRowKey = currentCell.rowKey;\n } else if (tableData.length > 0) {\n cellRowKey = tableData[0].metadata.key;\n }\n if (cellRowKey == null) {\n return undefined;\n }\n }\n } else if (cellOverride.type != null) {\n cellType = cellOverride.type;\n if (cellType !== 'noData') {\n if (currentCell?.columnKey != null) {\n cellColumnKey = currentCell.columnKey;\n } else {\n cellColumnKey = getBoundaryColumnKey<K, D, C>(columnsArray, true);\n }\n if (cellColumnKey == null) {\n return undefined;\n }\n if (cellType === 'data') {\n if (currentCell?.rowKey != null) {\n cellRowKey = currentCell.rowKey;\n } else if (tableData.length > 0) {\n cellRowKey = tableData[0].metadata.key;\n }\n if (cellRowKey == null) {\n return undefined;\n }\n }\n }\n } else {\n return undefined;\n }\n return { type: cellType, rowKey: cellRowKey, columnKey: cellColumnKey } as Cell<K, C>;\n}\n\n/**\n * Helper function to determine the resulting cell type from a cell override.\n */\nfunction _getCellTypeFromCellOverride<K, C>(\n cellOverride: CellOverride<K, C>,\n currentCell?: Cell<K, C>\n) {\n if (cellOverride.type != null) {\n return cellOverride.type;\n }\n if (cellOverride.rowKey != null) {\n return 'data';\n }\n // if no type or rowKey was given, a columnKey must have been given\n if (currentCell?.type != null && currentCell.type !== 'noData') {\n return currentCell.type;\n }\n return 'header';\n}\n\n/**\n * Helper function to apply a current cell override if necessary.\n */\nexport function applyCurrentCellOverride<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n tableId: string,\n tableData: CollectionData<K, D>[],\n columnsArray: TableColumn<K, D, C>[],\n stickyColumnInfo: StickyColumnInfo,\n sizingInfo: SizingInfo,\n overflowInfo: OverflowInfo,\n currencyStatusRef: MutableRef<CurrencyStatus<K, D, C>>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isEmbeddedSelect: boolean,\n isPendingLayout: boolean,\n isDataLoaded: boolean,\n isRtl: boolean,\n currentCellOverride?: CellOverride<K, C>,\n appliedColumnWidths?: AppliedColumnWidths<C>\n) {\n // when embedded select, use most recent non-null current cell value as override base\n const currentCell = isEmbeddedSelect\n ? currencyStatusRef.current.previousEmbeddedSelectCurrentCell\n : currencyStatusRef.current.currentCell;\n // ensure any new currentCellOverride settings are applied if necessary\n if (\n currencyStatusRef.current.hasPendingCurrentCellOverride ||\n currencyStatusRef.current.currentCellOverride !== currentCellOverride\n ) {\n if (currentCellOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K, D, C>(\n tableData,\n columnsArray,\n currentCellOverride,\n currentCell\n );\n if (realizedCell != null) {\n // override cell was determined - apply the override immediately\n onActiveCellChanged(\n { value: realizedCell },\n isAutoFocusCell(rootElement, tableId, realizedCell),\n false,\n true\n );\n currencyStatusRef.current.currentCellOverride = currentCellOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n if (isEmbeddedSelect) {\n // scroll 'current-cell-override' vertically into view immediately for embedded select\n // otherwise, cell will be scrolled into view once the component or cell receives focus\n if (!isPendingLayout && getElementFromCell(rootElement, tableId, realizedCell) != null) {\n applyScrollDetail(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n columnsArray,\n stickyColumnInfo,\n sizingInfo,\n overflowInfo,\n { cell: realizedCell, locationY: 'inView' },\n isRtl,\n appliedColumnWidths\n );\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (isPendingLayout || !isDataLoaded) {\n // corresponding element was not found - data is not ready for scrolling\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = true;\n } else {\n // corresponding element was not found - value was garbage\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n } else {\n // not in an embedded select, so no scrolling should be performed\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n } else if (!isDataLoaded) {\n // override cell could not be determined - data is still fetching\n currencyStatusRef.current.hasPendingCurrentCellOverride = true;\n } else {\n // override cell could not be determined - value was garbage\n currencyStatusRef.current.currentCellOverride = currentCellOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n } else {\n // override is set to clear the current cell\n onActiveCellChanged({ value: currentCellOverride });\n currencyStatusRef.current.currentCellOverride = currentCellOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n if (isEmbeddedSelect) {\n // scroll back to the top for embedded select\n resetVerticalScrollPosition(scrollerElement);\n }\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n } else if (currencyStatusRef.current.hasPendingCurrentCellOverrideScroll) {\n // try and apply any pending scroll from a previous cell override at this time\n if (currencyStatusRef.current.currentCell != null) {\n if (\n !isPendingLayout &&\n getElementFromCell(rootElement, tableId, currencyStatusRef.current.currentCell) != null\n ) {\n applyScrollDetail(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n columnsArray,\n stickyColumnInfo,\n sizingInfo,\n overflowInfo,\n { cell: currencyStatusRef.current.currentCell, locationY: 'inView' },\n isRtl,\n appliedColumnWidths\n );\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (!isPendingLayout && isDataLoaded) {\n // corresponding element was not found - value was garbage\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n } else {\n // there is no longer a current cell to try and scroll to\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n }\n }\n}\n\n/**\n * Helper to determine if the given render state includes the cell specified.\n */\nfunction _renderIncludesCell<K, D, C>(\n cell: ActiveCell<K, C>,\n columnsArray: TableColumn<K, D, C>[],\n tableData: CollectionData<K, D>[],\n hasMore: boolean,\n isPendingLayout: boolean,\n hasFooters: boolean\n) {\n // pending layout is special as other regions exist, but are not yet navigable\n if (isPendingLayout) {\n return cell.type === 'pending';\n }\n if (cell.type === 'header' || (hasFooters && cell.type === 'footer')) {\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === cell.columnKey) {\n return true;\n }\n }\n } else if (tableData.length > 0) {\n if (cell.type === 'loadMore') {\n return hasMore;\n }\n if (cell.type === 'data') {\n let isColumnValid = false;\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === cell.columnKey) {\n isColumnValid = true;\n break;\n }\n }\n if (isColumnValid) {\n for (let i = 0; i < tableData.length; i++) {\n if (tableData[i].metadata.key === cell.rowKey) {\n return true;\n }\n }\n }\n }\n } else {\n return (cell.type === 'loading' && hasMore) || (cell.type === 'noData' && !hasMore);\n }\n return false;\n}\n\n/**\n * Helper to get the cell that should currently be a tab stop for the given render state.\n */\nexport function determineActiveCell<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n currencyStatusRef: MutableRef<CurrencyStatus<K, D, C>>,\n tableData: CollectionData<K, D>[],\n hasMore: boolean,\n isPendingLayout: boolean,\n isEmbeddedSelect: boolean,\n hasFooters: boolean,\n currentCellOverride?: CellOverride<K, C>\n): ActiveCell<K, C> | undefined {\n if (isPendingLayout) {\n return { type: 'pending' };\n }\n // if no columns are specified, it is a special case 'noData' display\n const firstColumnKey = getBoundaryColumnKey<K, D, C>(columnsArray, true);\n if (firstColumnKey == null) {\n return { type: 'noData' };\n }\n // if nothing specifies where focus should go, use the first header cell\n const defaultFirstCell: ActiveCell<K, C> = {\n type: 'header',\n columnKey: firstColumnKey\n };\n\n // when embedded select, use most recent non-null current cell value as override base\n const currentCell = isEmbeddedSelect\n ? currencyStatusRef.current.previousEmbeddedSelectCurrentCell\n : currencyStatusRef.current.currentCell;\n if (\n currencyStatusRef.current.hasPendingCurrentCellOverride ||\n currencyStatusRef.current.currentCellOverride !== currentCellOverride\n ) {\n if (currentCellOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K, D, C>(\n tableData,\n columnsArray,\n currentCellOverride,\n currentCell\n );\n if (\n realizedCell != null &&\n _renderIncludesCell(\n realizedCell,\n columnsArray,\n tableData,\n hasMore,\n isPendingLayout,\n hasFooters\n )\n ) {\n return realizedCell;\n }\n // if here, the resulting cell from the override could not be determined or was not valid\n const overrideCellType = _getCellTypeFromCellOverride(currentCellOverride, currentCell);\n if (overrideCellType === 'data') {\n if (tableData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading', columnKey: currentCell?.columnKey as C };\n }\n } else if (overrideCellType === 'noData' && tableData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading', columnKey: currentCell?.columnKey as C };\n }\n } else if (\n _renderIncludesCell(\n defaultFirstCell,\n columnsArray,\n tableData,\n hasMore,\n isPendingLayout,\n hasFooters\n )\n ) {\n return defaultFirstCell;\n } else {\n return undefined;\n }\n }\n\n // if here, there is no current cell override that can be applied during this render\n const activeCell = currencyStatusRef.current.activeCell;\n if (activeCell != null) {\n if (activeCell.type === 'loadMore') {\n const initialData = currencyStatusRef.current.loadMoreInitialData;\n // if loadMore skeletons are no longer shown, or the data has changed, shift to\n // the next row in the data set if possible - otherwise just the closest row\n if (tableData.length > 0 && tableData !== initialData) {\n const rowKey =\n initialData != null && tableData.length > initialData.length\n ? tableData[initialData.length].metadata.key\n : tableData[tableData.length - 1].metadata.key;\n const columnKey = currentCell?.columnKey != null ? currentCell.columnKey : firstColumnKey;\n const cell: ActiveCell<K, C> = { type: 'data', rowKey: rowKey, columnKey: columnKey };\n if (\n _renderIncludesCell(cell, columnsArray, tableData, hasMore, isPendingLayout, hasFooters)\n ) {\n return cell;\n }\n } else if (tableData.length === 0) {\n if (hasMore) {\n return { type: 'loading', columnKey: currentCell?.columnKey as C };\n } else {\n return { type: 'noData' };\n }\n }\n }\n if (\n _renderIncludesCell(activeCell, columnsArray, tableData, hasMore, isPendingLayout, hasFooters)\n ) {\n return activeCell;\n } else if (activeCell.type === 'loading') {\n if (currentCell != null && (currentCell.type === 'data' || currentCell.type === 'noData')) {\n // if the current cell is already set to 'data' or 'noData', and is now available, return it\n if (\n _renderIncludesCell(\n currentCell,\n columnsArray,\n tableData,\n hasMore,\n isPendingLayout,\n hasFooters\n )\n ) {\n return currentCell;\n }\n }\n // otherwise, find the first row if available, and try and maintain the columnKey\n if (tableData.length > 0) {\n const rowKey = tableData[0].metadata.key;\n const columnKey = currentCell?.columnKey != null ? currentCell.columnKey : firstColumnKey;\n const cell: ActiveCell<K, C> = { type: 'data', rowKey: rowKey, columnKey: columnKey };\n if (\n _renderIncludesCell(cell, columnsArray, tableData, hasMore, isPendingLayout, hasFooters)\n ) {\n return cell;\n }\n } else {\n return { type: 'noData' };\n }\n }\n }\n\n // if here, there is no active cell, or the active cell is no longer valid\n if (currentCell != null) {\n if (\n _renderIncludesCell(\n currentCell,\n columnsArray,\n tableData,\n hasMore,\n isPendingLayout,\n hasFooters\n )\n ) {\n return currentCell;\n }\n if (currentCell.type === 'data') {\n if (tableData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading', columnKey: currentCell.columnKey };\n }\n } else if (currentCell.type === 'noData' && tableData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading', columnKey: firstColumnKey };\n }\n }\n if (\n _renderIncludesCell(\n defaultFirstCell,\n columnsArray,\n tableData,\n hasMore,\n isPendingLayout,\n hasFooters\n )\n ) {\n return defaultFirstCell;\n }\n return undefined;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentProps, RefObject } from 'preact';\nimport type {\n CellContextMenuContext,\n SortCriterionDetail,\n TableContextMenuConfig\n} from '#UNSAFE_TableView';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type { TableColumn } from '../Table';\n\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { useContextMenuGesture } from '#hooks/UNSAFE_useContextMenuGesture';\nimport { Menu } from '#UNSAFE_Menu';\nimport { logicalCellExtractor, TABLE_FOCUSABLE_SELECTOR } from '../utils/TableDomUtils';\nimport { getCellContextMenuContextFromCell } from '../utils/TableFocusUtils';\n\ntype MenuProps = Pick<\n ComponentProps<typeof Menu>,\n 'anchorRef' | 'initialFocus' | 'placement' | 'offsetValue' | 'isOpen'\n>;\n\nconst TOUCH_OFFSET_VALUE = 40;\n\nconst menuPropGestureStates: Record<\n 'mouse' | 'keyboard' | 'touch',\n Omit<Required<MenuProps>, 'anchorRef' | 'isOpen'>\n> = {\n mouse: {\n initialFocus: 'menu',\n placement: 'bottom-start',\n offsetValue: 2\n },\n keyboard: {\n initialFocus: 'firstItem',\n placement: 'bottom-start',\n offsetValue: 0\n },\n touch: {\n initialFocus: 'menu',\n placement: 'end',\n offsetValue: TOUCH_OFFSET_VALUE\n }\n};\n\nconst _initialMenuProps: MenuProps = {\n isOpen: false,\n initialFocus: 'menu',\n placement: 'bottom-start',\n offsetValue: 0,\n anchorRef: { current: null }\n};\n\nexport const useContextMenu = <K extends string | number, D, C extends string>(\n rootRef: RefObject<HTMLDivElement>,\n tableId: string,\n tableData: CollectionData<K, D>[],\n columnsArray: TableColumn<K, D, C>[],\n contextMenuConfig?: TableContextMenuConfig<K, D, C>,\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[],\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void\n) => {\n const [contextMenuContext, setContextMenuContext] = useState<CellContextMenuContext<K, D, C>>();\n const [menuProps, setMenuProps] = useState<MenuProps>(_initialMenuProps);\n const currentCellElementRef = useRef<HTMLElement>();\n\n const [isResizeDialogOpen, setIsResizeDialogOpen] = useState<boolean>(false);\n\n const { triggerProps } = useContextMenuGesture(\n ({ gesture, anchor, target }) => {\n if (rootRef.current) {\n // find the cell element the menu is being launched from\n const cellElement = (target as HTMLElement).closest(\n `[${TABLE_FOCUSABLE_SELECTOR}='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const targetCell = logicalCellExtractor<K, D, C>(cellElement, tableId, columnsArray);\n if (targetCell != null) {\n const cellContextMenuContext = getCellContextMenuContextFromCell<K, D, C>(\n tableData,\n columnsArray,\n setIsResizeDialogOpen,\n targetCell,\n sortCriterion,\n onSortCriterionChange\n );\n if (cellContextMenuContext != null) {\n currentCellElementRef.current = cellElement;\n const anchorBasedOnGesture = gesture === 'keyboard' ? cellElement : anchor;\n setContextMenuContext(cellContextMenuContext);\n setMenuProps({\n ...menuPropGestureStates[gesture],\n anchorRef: { current: anchorBasedOnGesture },\n isOpen: true\n });\n }\n }\n }\n }\n },\n { isDisabled: !contextMenuConfig }\n );\n\n const handleCloseContextMenu = useCallback<Required<ComponentProps<typeof Menu>>['onClose']>(\n (detail) => {\n // set focus back on the cell that was determined as the initial target\n if (detail.reason === 'dismissed' || detail.reason === 'itemAction') {\n currentCellElementRef.current?.focus({ preventScroll: true });\n }\n // close the menu\n setMenuProps({ ..._initialMenuProps });\n },\n []\n );\n\n return {\n menuProps: { ...menuProps, onClose: handleCloseContextMenu },\n contextMenuContext: contextMenuContext,\n contextMenuTriggerProps: triggerProps,\n isResizeDialogOpen: isResizeDialogOpen,\n setIsResizeDialogOpen: setIsResizeDialogOpen\n };\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { Cell } from '#UNSAFE_TableView';\nimport type { ActiveCell, TableColumn } from '../Table';\n\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getElementFromCell,\n logicalCellExtractor,\n TABLE_FOCUSABLE_SELECTOR\n} from './TableDomUtils';\n\n/**\n * Browser zoom levels are not handled identically between Range sizes and Element sizes, so this offset\n * should be used when comparing horizontal widths. Using a smaller value (0.01 for example) causes false\n * positives, while using a larger value (0.05 for example) causes actual truncations to be missed.\n */\nconst HORIZONTAL_TRUNCATION_OFFSET = 0.015;\n\n/**\n * Default Redwood line-height overrides cause false positives as the Range sizes are always for a 'normal'\n * line-height, and none of the default scale fonts have 'normal' line-height values. This causes offsets\n * of between 0.5px and 1.5px. As a true truncation will cause an offset of closer to a full line height\n * (at least 12px for 2xs text), use a larger offset value than the currently observed 1.5px max for safety.\n */\nconst VERTICAL_TRUNCATION_OFFSET = 5;\n\n/**\n * Helper method to determine if a given cell contains truncated text.\n */\nexport const hasTruncatedText = (cellElement: HTMLElement) => {\n if (cellElement.getAttribute('data-oj-table-tooltip') !== 'enabled') {\n return false;\n }\n const innerText = String(cellElement.innerText).trim();\n if (innerText === '') {\n return false;\n }\n\n const walker = document.createTreeWalker(cellElement, NodeFilter.SHOW_TEXT);\n while (walker.nextNode()) {\n const range = new Range();\n const textNode = walker.currentNode;\n range.selectNodeContents(textNode);\n const untruncatedTextLength = range.getBoundingClientRect().width;\n const untruncatedTextHeight = range.getBoundingClientRect().height;\n\n let firstParent = true;\n let parentElement = textNode.parentElement;\n while (parentElement != null) {\n const parentStyles = getComputedStyle(parentElement);\n if (firstParent) {\n // only verify truncation status of 'visible' text nodes\n if (untruncatedTextLength === 0 || parentStyles.visibility === 'hidden') {\n break;\n }\n firstParent = false;\n }\n const horizontalPadding =\n parseFloat(parentStyles.paddingLeft) + parseFloat(parentStyles.paddingRight);\n const horizontalBorder =\n parseFloat(parentStyles.borderLeft) + parseFloat(parentStyles.borderRight);\n const renderedTextLength =\n parentElement.getBoundingClientRect().width - horizontalPadding - horizontalBorder;\n\n const verticalPadding =\n parseFloat(parentStyles.paddingTop) + parseFloat(parentStyles.paddingBottom);\n const verticalBorder =\n parseFloat(parentStyles.borderTop) + parseFloat(parentStyles.borderBottom);\n const renderedTextHeight =\n parentElement.getBoundingClientRect().height - verticalPadding - verticalBorder;\n\n if (\n untruncatedTextLength - renderedTextLength > HORIZONTAL_TRUNCATION_OFFSET ||\n untruncatedTextHeight - renderedTextHeight > VERTICAL_TRUNCATION_OFFSET\n ) {\n return true;\n }\n if (parentElement === cellElement) {\n break;\n }\n parentElement = parentElement.parentElement;\n }\n }\n return false;\n};\n\n/**\n * Helper function to handle updating the Table's tooltip due to a focus navigation gesture.\n */\nexport function handleNavigationTooltipGesture<K, C>(\n rootElement: HTMLDivElement,\n tableId: string,\n cell: ActiveCell<K, C>,\n showTooltip: (cell: Cell<K, C>) => void,\n hideTooltip: (isImmediate?: boolean) => void\n) {\n hideTooltip(true);\n if (cell.type === 'data' || cell.type === 'header' || cell.type === 'footer') {\n const cellElement = getElementFromCell(rootElement, tableId, cell);\n if (cellElement != null) {\n showTooltip(cell);\n }\n }\n}\n\n/**\n * Helper function to handle updating the Table's tooltip due to a pointer move gesture.\n */\nexport function handleMoveTooltipGesture<K extends string | number, D, C extends string>(\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n event: PointerEvent,\n showTooltip: (cell: Cell<K, C>) => void,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) {\n let tooltipShown = false;\n const targetElement = event.relatedTarget as HTMLElement;\n if (targetElement != null && targetElement.closest(`#${tooltipId}`) != null) {\n return;\n }\n const cellElement = (event.target as HTMLElement).closest(\n `[${TABLE_FOCUSABLE_SELECTOR}='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const type = getCellType(cellElement);\n if (type === 'data' || type === 'header' || type === 'footer') {\n showTooltip(logicalCellExtractor<K, D, C>(cellElement, tableId, columnsArray) as Cell<K, C>);\n tooltipShown = true;\n }\n }\n if (!tooltipShown) {\n hideTooltip();\n }\n}\n\n/**\n * Helper function to handle updating the Table's tooltip due to a pointer leave gesture.\n */\nexport const handleLeaveTableTooltipGesture = (\n rootElement: HTMLDivElement,\n event: PointerEvent,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) => {\n const targetElement = event.relatedTarget as HTMLElement;\n if (targetElement != null && targetElement.closest(`#${tooltipId}`) != null) {\n // the pointer 'left' the table, but is only over a cell tooltip - in most cases, we want\n // to just return here as the pointer is still 'over' the table. however, this can also\n // occur when the pointer is technically outside of the table's bounds, and in that case\n // we don't actually want to return as we should clear out our cell tooltip as expected\n const boundingRect = rootElement.getBoundingClientRect();\n const isOutOfBounds =\n event.clientX < boundingRect.left ||\n event.clientX > boundingRect.right ||\n event.clientY < boundingRect.top ||\n event.clientY > boundingRect.bottom;\n if (!isOutOfBounds) {\n return;\n }\n }\n hideTooltip();\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport type { MutableRef } from 'preact/hooks';\nimport type { Cell } from '#UNSAFE_TableView';\nimport type { ColumnResizeInfo } from '../Table';\n\nimport { useCallback, useEffect, useRef, useState } from 'preact/hooks';\nimport { useColorScheme } from '#hooks/UNSAFE_useColorScheme';\nimport { useId } from '#hooks/UNSAFE_useId';\nimport { useScale } from '#hooks/UNSAFE_useScale';\nimport { TooltipContent } from '#hooks/UNSAFE_useTooltip/TooltipContent';\nimport {\n getGlobalTooltipManager,\n getWrappedTooltipContent,\n HIDE_TOOLTIP_DELAY,\n SHOW_TOOLTIP_DELAY\n} from '#utils/PRIVATE_tooltipUtils';\nimport { getElementFromCell } from '../utils/TableDomUtils';\nimport { cellComparator } from '../utils/TableFocusUtils';\nimport { hasTruncatedText } from '../utils/TableTooltipUtils';\n\ntype UseTruncationTooltipOptions<C> = {\n rootRef: RefObject<HTMLDivElement>;\n tableId: string;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n};\n\n// delay small interaction times concerning a tooltip\nconst SMALL_INTERACTION_DELAY = 50;\nconst TABLE_HIDE_TOOLTIP_DELAY = Math.max(\n Math.min(SHOW_TOOLTIP_DELAY - SMALL_INTERACTION_DELAY, HIDE_TOOLTIP_DELAY),\n 0\n);\n\n/**\n * Hook that manages cell template tooltip interactions on the Table when truncation is present.\n */\nexport function useTruncationTooltip<K, C>({\n rootRef,\n tableId,\n resizeInfoRef\n}: UseTruncationTooltipOptions<C>) {\n const globalTooltipManager = getGlobalTooltipManager();\n\n const tooltipId = useId();\n\n const tooltipCellRef = useRef<Cell<K, C>>();\n const pendingShowTooltipCellRef = useRef<Cell<K, C>>();\n const tooltipAnchorRef = useRef<HTMLElement>();\n const tooltipTextRef = useRef<string>();\n const [tooltipText, setTooltipText] = useState<string>();\n\n const pointerDownRef = useRef<boolean>(false);\n const pointerDownTimeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n const showTooltipTimeoutRef = useRef<ReturnType<typeof setTimeout>>();\n const hideTooltipTimeoutRef = useRef<ReturnType<typeof setTimeout>>();\n\n // helper method for clearing the hide tooltip timeout\n const _clearHideTooltipTimeout = useCallback(() => {\n clearTimeout(hideTooltipTimeoutRef.current);\n hideTooltipTimeoutRef.current = undefined;\n }, []);\n\n // helper method for clearing the show tooltip timeout\n const _clearShowTooltipTimeout = useCallback(() => {\n clearTimeout(showTooltipTimeoutRef.current);\n showTooltipTimeoutRef.current = undefined;\n pendingShowTooltipCellRef.current = undefined;\n }, []);\n\n // helper method for setting up the show tooltip timeout\n const _setupShowTooltipTimeout = useCallback(() => {\n showTooltipTimeoutRef.current = setTimeout(function () {\n // when showing a tooltip, clear any pending 'clear tooltip timeouts'\n if (hideTooltipTimeoutRef.current != null) {\n _clearHideTooltipTimeout();\n }\n // only show a tooltip if not currently performing a column resize gesture\n if (!resizeInfoRef.current.isResizing) {\n showTooltipTimeoutRef.current = undefined;\n const cell = pendingShowTooltipCellRef.current;\n const rootElement = rootRef.current;\n if (rootElement != null && cell != null) {\n const cellElement = getElementFromCell(rootElement, tableId, cell);\n if (cellElement != null && hasTruncatedText(cellElement)) {\n setTooltipText(String(cellElement.innerText).trim());\n tooltipAnchorRef.current = cellElement;\n tooltipCellRef.current = cell;\n }\n }\n }\n pendingShowTooltipCellRef.current = undefined;\n }, SHOW_TOOLTIP_DELAY);\n }, [rootRef, tableId, resizeInfoRef, _clearHideTooltipTimeout]);\n\n // helper method for setting up the hide tooltip timeout\n const _setupHideTooltipTimeout = useCallback(() => {\n hideTooltipTimeoutRef.current = setTimeout(function () {\n // unlike in the showtooltip timeout logic, we do not want to clear\n // pending show tooltip timeouts when clearing a tooltip as it could\n // still be waiting to be shown in another location at this time\n hideTooltipTimeoutRef.current = undefined;\n setTooltipText(undefined);\n tooltipAnchorRef.current = undefined;\n tooltipCellRef.current = undefined;\n }, TABLE_HIDE_TOOLTIP_DELAY);\n }, []);\n\n // callback method to signal a tooltip is desired on the given cell\n const showTooltip = useCallback(\n (anchorCell: Cell<K, C>) => {\n if (cellComparator(tooltipCellRef.current, anchorCell)) {\n // if the tooltip is already showing in the right cell, clear all timeouts\n if (showTooltipTimeoutRef.current != null) {\n _clearShowTooltipTimeout();\n }\n if (hideTooltipTimeoutRef.current != null) {\n _clearHideTooltipTimeout();\n }\n return;\n }\n if (showTooltipTimeoutRef.current == null) {\n // if no tooltip is already pending, start a new tooltip timeout\n pendingShowTooltipCellRef.current = anchorCell;\n _setupShowTooltipTimeout();\n } else if (!cellComparator(pendingShowTooltipCellRef.current, anchorCell)) {\n // if a different tooltip is already pending, start a new tooltip timeout\n _clearShowTooltipTimeout();\n pendingShowTooltipCellRef.current = anchorCell;\n _setupShowTooltipTimeout();\n }\n if (tooltipCellRef.current != null && hideTooltipTimeoutRef.current == null) {\n // if the tooltip is showing on a different cell, ensure a hide timeout is setup\n _setupHideTooltipTimeout();\n }\n },\n [\n _setupShowTooltipTimeout,\n _setupHideTooltipTimeout,\n _clearShowTooltipTimeout,\n _clearHideTooltipTimeout\n ]\n );\n\n // callback method to signal the current tooltip is no longer desired\n const hideTooltip = useCallback(\n (isImmediate?: boolean) => {\n // ignore hide tooltip calls if due to focus loss from a pointer down on the tooltip itself\n if (pointerDownRef.current) {\n return;\n }\n if (showTooltipTimeoutRef.current != null) {\n _clearShowTooltipTimeout();\n }\n if (isImmediate) {\n if (hideTooltipTimeoutRef.current != null) {\n _clearHideTooltipTimeout();\n }\n setTooltipText(undefined);\n tooltipAnchorRef.current = undefined;\n tooltipCellRef.current = undefined;\n } else if (hideTooltipTimeoutRef.current == null) {\n _setupHideTooltipTimeout();\n }\n },\n [_setupHideTooltipTimeout, _clearShowTooltipTimeout, _clearHideTooltipTimeout]\n );\n\n // Pointer move handler for the tooltip.\n const _pointerMoveHandler = useCallback((_event: PointerEvent) => {\n if (showTooltipTimeoutRef.current != null) {\n clearTimeout(showTooltipTimeoutRef.current);\n showTooltipTimeoutRef.current = undefined;\n pendingShowTooltipCellRef.current = undefined;\n }\n if (hideTooltipTimeoutRef.current != null) {\n clearTimeout(hideTooltipTimeoutRef.current);\n hideTooltipTimeoutRef.current = undefined;\n }\n }, []);\n\n // Pointer leave handler for the tooltip.\n const _pointerLeaveHandler = useCallback(\n (event: PointerEvent) => {\n const targetElement = event.relatedTarget as HTMLElement;\n if (targetElement != null && targetElement.closest(`#${tableId}`) != null) {\n return;\n }\n hideTooltip();\n },\n [tableId, hideTooltip]\n );\n\n // Pointer down handler for the tooltip.\n const _pointerDownHandler = useCallback((_event: PointerEvent) => {\n pointerDownRef.current = true;\n if (pointerDownTimeoutRef.current != null) {\n clearTimeout(pointerDownTimeoutRef.current);\n }\n pointerDownTimeoutRef.current = setTimeout(function () {\n pointerDownRef.current = false;\n pointerDownTimeoutRef.current = undefined;\n }, SMALL_INTERACTION_DELAY);\n }, []);\n\n // handles logic involving competing tooltips managed outside of the TableView.\n // make sure this check runs BEFORE the rendered content is created below\n const isOpenOverrideRef = useRef<boolean>(true);\n if (tooltipText != null && tooltipText !== tooltipTextRef.current) {\n isOpenOverrideRef.current = true;\n }\n\n const tooltipPointerProps = {\n onPointerLeave: _pointerLeaveHandler,\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler\n };\n\n // avoid applying undefined text after initial render completes as it can appear\n // while the tooltip is going through its closing animation and looks broken\n const renderRawContent = (\n <TooltipContent\n {...tooltipPointerProps}\n id={tooltipId}\n isOpen={isOpenOverrideRef.current}\n isDatatip={false}>\n {tooltipText != null ? tooltipText : tooltipTextRef.current}\n </TooltipContent>\n );\n\n // make sure these are in sync AFTER the rendered content is created above - this helps ensure\n // that empty text does not show up while the tooltip is going through a closing animation.\n tooltipTextRef.current = tooltipText;\n\n // offsets attempt to show the tooltip without overlapping content of nearby cells\n const scale = useScale();\n let mainAxisOffset = -8;\n let crossAxisOffset = -14;\n if (scale === 'md') {\n mainAxisOffset = -7;\n crossAxisOffset = -12;\n } else if (scale === 'sm') {\n mainAxisOffset = -6;\n crossAxisOffset = -11;\n }\n const currentColorScheme = useColorScheme();\n const tooltipContent =\n tooltipAnchorRef.current != null\n ? getWrappedTooltipContent(\n renderRawContent,\n 'tooltip',\n currentColorScheme,\n tooltipAnchorRef as RefObject<HTMLElement>,\n 'end-top',\n { mainAxis: mainAxisOffset, crossAxis: crossAxisOffset }\n )\n : undefined;\n\n const destroyCallback = useCallback(() => {\n hideTooltip(true);\n }, [hideTooltip]);\n\n useEffect(() => {\n if (isOpenOverrideRef.current && tooltipAnchorRef.current != null) {\n globalTooltipManager.register(destroyCallback);\n } else {\n globalTooltipManager.unregister(destroyCallback);\n }\n }, [tooltipAnchorRef, destroyCallback, tooltipText, globalTooltipManager]);\n\n return { tooltipContent, tooltipId, showTooltip, hideTooltip, tooltipAnchorRef };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport type { MutableRef } from 'preact/hooks';\nimport type { Cell, CellOverride, CurrentCellDetail } from '#UNSAFE_TableView';\nimport type { FocusableElement } from '#utils/PRIVATE_tabbableUtils';\nimport type { FocusGuardCallbackDetail } from '#PRIVATE_FocusTracker';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n AppliedColumnWidths,\n CurrencyStatus,\n OverflowInfo,\n ScrollDetail,\n SizingInfo,\n StickyColumnInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport {\n getElementContainsFunc,\n handleEnterActionableMode,\n handleWrapActionableFocus\n} from '#utils/PRIVATE_collectionUtils';\nimport {\n allTabbableElements,\n getActiveElement,\n getBodyElement,\n isTabbableElement\n} from '#utils/PRIVATE_tabbableUtils';\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { getElementFromCell, isAutoFocusCell, logicalCellExtractor } from '../utils/TableDomUtils';\nimport {\n applyCurrentCellOverride,\n cellComparator,\n determineActiveCell,\n isTransientCell\n} from '../utils/TableFocusUtils';\nimport { applyScrollDetail } from '../utils/TableScrollUtils';\nimport { handleNavigationTooltipGesture } from '../utils/TableTooltipUtils';\n\ntype UseFocusHandlingProps<K, D, C extends string> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n tableId: string;\n tableData: CollectionData<K, D>[];\n hasMore: boolean;\n hasFooters: boolean;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n stickyColumnInfo: StickyColumnInfo;\n sizingInfoRef: MutableRef<SizingInfo>;\n overflowInfoRef: MutableRef<OverflowInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n cellSupportsTabbable: (cell: ActiveCell<K, C>) => boolean;\n appliedColumnWidths?: AppliedColumnWidths<C>;\n currentCellOverride?: CellOverride<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n showTooltip: (cell: Cell<K, C>) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n isPendingLayout: boolean;\n isEmbedded: boolean;\n isDataLoaded: boolean;\n};\n\n// constant timeout values for delays following a input gesture until enabling focus rings\nconst MOUSE_FOCUS_SHIFT_TIMEOUT = 100;\nconst TOUCH_FOCUS_SHIFT_TIMEOUT = 200;\n\n// constant event.key values that trigger focus ring logic\nconst NAVIGATION_KEYS = [\n ' ',\n 'F2',\n 'Enter',\n 'Esc', // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n 'Escape',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown'\n];\n\n// constant event.key values that trigger 'scroll to current' logic\nconst SCROLL_KEYS = [\n ' ',\n 'F2',\n 'Enter',\n 'Esc', // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n 'Escape'\n];\n\n/**\n * Hook that manages focus interactions on the Preact Table\n */\nexport function useFocusHandling<K extends string | number, D, C extends string>({\n rootRef,\n viewportInfo,\n tableId,\n isRtl,\n tableData,\n hasMore,\n hasFooters,\n columnsArray,\n stickyColumnInfo,\n sizingInfoRef,\n overflowInfoRef,\n selectionExtensionElementRef,\n cellSupportsTabbable,\n appliedColumnWidths,\n currentCellOverride,\n onPersistCurrentCell,\n showTooltip,\n hideTooltip,\n isPendingLayout,\n isEmbedded,\n isDataLoaded\n}: UseFocusHandlingProps<K, D, C>) {\n // tracks whether the most recent 'blur' was caused by focus being lost by the browser window (or iframe)\n // used when determining whether scrolling active into view should be skipped when focus is regained\n const blurFromWindowRef = useRef<boolean>(false);\n\n // tracks whether a keydown 'tab' is currently detected - used when handling a keyup 'tab' event to scroll\n // the active cell into view in the event that focus is received from outside of the page (or iframe)\n const isTabDownDetectedRef = useRef<boolean>(false);\n\n // tracks focus loss during render cycle for potential focus recapture cases\n const isRenderCycle = useRef<boolean>(true);\n isRenderCycle.current = true;\n const blurredRenderCycleElementRef = useRef<FocusableElement | null>(null);\n const isPendingLayoutFocusRef = useRef<boolean>(false);\n\n // track current 'focus info' state\n const hasFocusRef = useRef<boolean>(false);\n const [isTabbableMode, setIsTabbableMode] = useState<boolean>(false);\n const [isShowFocusRing, setIsShowFocusRing] = useState<boolean>(false);\n\n // track pointer down information\n const recentPointerRef = useRef<boolean>(false);\n const pointerTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isShowFocusRingOverrideRef = useRef<boolean | null>(null);\n\n // track the active and current cell information\n const [activeCell, setActiveCell] = useState<ActiveCell<K, C> | undefined>(undefined);\n const currencyStatusRef = useRef<CurrencyStatus<K, D, C>>({\n hasPendingCurrentCellOverride: false,\n hasPendingCurrentCellOverrideScroll: false\n });\n\n // track pending scrolls to minimize 'flash' of focus rings when scrolling\n const [deferredScrollDetail, setDeferredScrollDetail] = useState<ScrollDetail<K, C> | undefined>(\n undefined\n );\n const deferredScrollDetailRef = useRef<ScrollDetail<K, C>>();\n\n // keep state and ref in-sync to avoid edge cases where a gesture updating the scroll detail is handled\n // inbetween a render cycle that changes the scroll detail and the useEffect that applies the detail\n const updateDeferredScrollDetail = useCallback((scrollDetail: ScrollDetail<K, C>) => {\n setDeferredScrollDetail(scrollDetail);\n deferredScrollDetailRef.current = scrollDetail;\n }, []);\n\n const wasTransient = isTransientCell(currencyStatusRef.current.activeCell);\n const currentActiveCell = determineActiveCell<K, D, C>(\n columnsArray,\n currencyStatusRef,\n tableData,\n hasMore,\n isPendingLayout,\n isEmbedded,\n hasFooters,\n currentCellOverride\n );\n\n // intercept onPersistCurrentCell calls to ensure internal state is updated appropriately\n const onActiveCellChanged = useMemo(() => {\n return (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => {\n const newActiveCell = detail.value;\n if (!cellComparator(currencyStatusRef.current.activeCell, newActiveCell)) {\n setActiveCell(newActiveCell);\n currencyStatusRef.current.activeCell = newActiveCell;\n if (!isTransientCell(newActiveCell)) {\n const newCurrentCell = newActiveCell as Cell<K, C>;\n // only update current cell when 'active' is not one of the transient 'skeleton' regions\n if (onPersistCurrentCell != null) {\n onPersistCurrentCell({ value: newCurrentCell });\n }\n currencyStatusRef.current.currentCell = newCurrentCell;\n\n // make sure pending current cell override states are updated on current changed\n if (newCurrentCell != null) {\n currencyStatusRef.current.previousEmbeddedSelectCurrentCell = newCurrentCell;\n }\n currencyStatusRef.current.currentCellOverride = currentCellOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (newActiveCell?.type === 'loadMore') {\n currencyStatusRef.current.loadMoreInitialData = tableData;\n }\n if (!isSelectionExtension) {\n selectionExtensionElementRef.current = undefined;\n if (isAutoFocus && newActiveCell != null && cellSupportsTabbable(newActiveCell)) {\n // attempt to auto-focus cell contents\n setIsTabbableMode(true);\n setIsShowFocusRing(false);\n } else if (isTabbableMode) {\n // exit tabbable mode when navigating away from auto-focus cell\n setIsTabbableMode(false);\n }\n }\n }\n if (newActiveCell != null && !recentPointerRef.current && !skipScrollCellIntoView) {\n updateDeferredScrollDetail({\n cell: newActiveCell,\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n };\n }, [\n currentCellOverride,\n isTabbableMode,\n cellSupportsTabbable,\n tableData,\n onPersistCurrentCell,\n selectionExtensionElementRef,\n updateDeferredScrollDetail\n ]);\n\n // Helper function to set the Table's focus tracking state to reflect that it is inactive.\n const _setAsInactive = useCallback(() => {\n hasFocusRef.current = false;\n isPendingLayoutFocusRef.current = false;\n\n setIsTabbableMode(false);\n setIsShowFocusRing(false);\n hideTooltip();\n }, [hideTooltip]);\n\n // Helper function to set the Table's focus tracking state to reflect that one of its cells has focus.\n const _enableNavigationMode = useCallback(\n (cell: ActiveCell<K, C>, skipScrollCellIntoView?: boolean) => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n setIsTabbableMode(false);\n const focusRingState =\n isShowFocusRingOverrideRef.current !== null\n ? isShowFocusRingOverrideRef.current\n : !recentPointerRef.current;\n setIsShowFocusRing(focusRingState);\n if (focusRingState) {\n handleNavigationTooltipGesture(rootElement, tableId, cell, showTooltip, hideTooltip);\n }\n onActiveCellChanged({ value: cell }, false, false, skipScrollCellIntoView);\n }\n },\n [rootRef, viewportInfo, tableId, onActiveCellChanged, showTooltip, hideTooltip]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that it is tabbable.\n const _enableTabbableMode = useCallback(\n (cell: ActiveCell<K, C>, isKeyboard?: boolean, skipScrollCellIntoView?: boolean) => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n setIsTabbableMode(true);\n if (!isKeyboard) {\n setIsShowFocusRing(false);\n onActiveCellChanged({ value: cell }, true, false, skipScrollCellIntoView);\n }\n }\n },\n [rootRef, viewportInfo, onActiveCellChanged]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that a user has\n // exited tabbable mode via the keyboard (esc or 'F2')\n const _disableTabbableMode = useCallback(\n (cell: ActiveCell<K, C>) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n const cellElement = getElementFromCell(rootElement, tableId, cell);\n if (cellElement != null) {\n cellElement.focus({ preventScroll: true });\n } else {\n rootElement.focus({ preventScroll: true });\n }\n }\n },\n [rootRef, tableId]\n );\n\n const notifyFocusFromPointer = useCallback((isTouch: boolean) => {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n recentPointerRef.current = true;\n pointerTimerRef.current = setTimeout(\n () => {\n recentPointerRef.current = false;\n },\n isTouch ? TOUCH_FOCUS_SHIFT_TIMEOUT : MOUSE_FOCUS_SHIFT_TIMEOUT\n );\n }, []);\n\n // PointerDown handler for the outer Table. Focus transfers that occur following a pointerdown\n // on desktop devices should not result in a focus ring being shown on the focused element\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n if (isShowFocusRing) {\n setIsShowFocusRing(false);\n }\n if (event.pointerType !== 'touch') {\n notifyFocusFromPointer(false);\n }\n },\n [isShowFocusRing, notifyFocusFromPointer]\n );\n\n // PointerUp handler for the outer Table. Focus transfers that occur following a pointerup\n // on any type of device should not result in a focus ring being shown on the focused element\n const _pointerUpHandler = useCallback(\n (event: PointerEvent) => {\n notifyFocusFromPointer(event.pointerType === 'touch');\n },\n [notifyFocusFromPointer]\n );\n\n // Focus handler for the outer Table. On focus, a focusable area needs to be 'active'.\n // If an 'active' area already exists, nothing further is needed. Otherwise, the first\n // focusable element should be made 'active'.\n const _onFocusHandler = (event: FocusEvent) => {\n hasFocusRef.current = true;\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null) {\n // don't scroll active into view if previous blur was due to window focus loss\n const skipScrollCellIntoView = blurFromWindowRef.current || isPendingLayout;\n blurFromWindowRef.current = false;\n\n const targetElement = event.target as HTMLElement;\n if (targetElement === rootElement || targetElement === scrollerElement) {\n if (currentActiveCell != null) {\n _enableNavigationMode(currentActiveCell, skipScrollCellIntoView);\n }\n } else {\n const cell = logicalCellExtractor<K, D, C>(targetElement, tableId, columnsArray);\n if (cell != null) {\n if (getCellType(targetElement) != null) {\n // handle individual focusable regions receiving focus\n _enableNavigationMode(cell, skipScrollCellIntoView);\n } else {\n _enableTabbableMode(cell, false, skipScrollCellIntoView);\n }\n }\n }\n }\n isShowFocusRingOverrideRef.current = null;\n };\n\n // Blur handler for the outer Table. When a blur is caused by the browser window itself\n // losing focus (changing tabs or leaving an iframe for example), an eventual re-focus due\n // to the window re-gaining focus needs to be handled differently (no auto-scroll mostly).\n const _onBlurHandler = useCallback(\n (event: FocusEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n if (event.target === document.activeElement) {\n // save focus ring state so it's set once focus comes back\n isShowFocusRingOverrideRef.current = isShowFocusRing;\n }\n const relatedTarget = event.relatedTarget as Element;\n const isUnknownRelatedTarget = relatedTarget == null;\n blurFromWindowRef.current = isUnknownRelatedTarget;\n if (isUnknownRelatedTarget || !getElementContainsFunc(rootElement, true)(relatedTarget)) {\n _setAsInactive();\n if (isRenderCycle.current) {\n // store element that loses focus during a render cycle for recapturing focus logic\n blurredRenderCycleElementRef.current = event.target as FocusableElement;\n }\n // reset tab down detection when component loses focus\n isTabDownDetectedRef.current = false;\n }\n }\n },\n [rootRef, isShowFocusRing, _setAsInactive]\n );\n\n // KeyDown handler for the outer Table. This specific handler tracks 'focus' transfer keys\n // Esc, F2, Enter, and Tab. It also ensures the active cell is scrolled into view on any key\n const _onKeyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n isTabDownDetectedRef.current = true;\n }\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n const isNavigationKey = NAVIGATION_KEYS.indexOf(event.key) > -1;\n if (isNavigationKey) {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n pointerTimerRef.current = null;\n recentPointerRef.current = false;\n }\n if (isPendingLayout) {\n if (isNavigationKey) {\n setIsShowFocusRing(true);\n }\n } else if (activeCell != null) {\n if (cellSupportsTabbable(activeCell)) {\n if (event.key === 'F2') {\n if (isTabbableMode) {\n _disableTabbableMode(activeCell);\n } else {\n _enableTabbableMode(activeCell, true);\n }\n } else if (event.key === 'Esc' || event.key === 'Escape') {\n // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n _disableTabbableMode(activeCell);\n } else if (event.key === 'Enter' && !isTabbableMode && !isEmbedded) {\n _enableTabbableMode(activeCell, true);\n }\n }\n if (!isTabbableMode) {\n if (isNavigationKey) {\n setIsShowFocusRing(true);\n }\n if (SCROLL_KEYS.indexOf(event.key) > -1) {\n updateDeferredScrollDetail({\n cell: activeCell,\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n },\n [\n rootRef,\n viewportInfo,\n isTabbableMode,\n isEmbedded,\n activeCell,\n cellSupportsTabbable,\n isPendingLayout,\n _enableTabbableMode,\n _disableTabbableMode,\n updateDeferredScrollDetail\n ]\n );\n\n // KeyUp handler for the outer Table. This specific handler tracks the 'tab' key\n // It ensures the active cell is scrolled into view when tabbing into the component\n const _onKeyUpHandler = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n // if a keyup 'tab' event is detected without a matching keydown 'tab', scroll active\n // cell into view to handle case where focus is gained from outside the page (or iframe)\n if (activeCell != null && !isTabDownDetectedRef.current) {\n updateDeferredScrollDetail({\n cell: activeCell,\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n isTabDownDetectedRef.current = false;\n }\n },\n [activeCell, updateDeferredScrollDetail]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onStartFocusTracking = useCallback(\n (detail: {\n activeElement: FocusableElement;\n hasFocusWithin: boolean;\n tabbableElements: FocusableElement[];\n }) => {\n const rootElement = rootRef.current;\n if (rootElement != null && activeCell != null) {\n handleEnterActionableMode(\n detail.hasFocusWithin && getCellType(detail.activeElement) == null,\n allTabbableElements(\n getElementFromCell(rootElement, tableId, activeCell) as FocusableElement\n ),\n (value?: ActiveCell<K, D>) => {\n setIsTabbableMode(value != undefined);\n }\n );\n }\n },\n [rootRef, activeCell, tableId]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusStartEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(true, detail.tabbableElements, (value?: ActiveCell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusEndEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(false, detail.tabbableElements, (value?: ActiveCell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Ensure focus is properly set at the completion of every render cycle\n // NO DEPENDENCY ARRAY HERE TO ENSURE THIS RUNS ON EVERY RENDER CYCLE\n useEffect(() => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n // internal method responsible for ensuring focus is applied to the appropriate cells or contents\n const _applyInternalFocus = (\n rootElement: HTMLDivElement,\n activeElement: FocusableElement,\n isCaptureFocus?: boolean\n ) => {\n if (currentActiveCell != null) {\n // ensure real browser focus is on the correct cell element\n const cellElement = getElementFromCell(rootElement, tableId, currentActiveCell);\n if (cellElement != null) {\n if (isCaptureFocus) {\n applyScrollDetail(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n columnsArray,\n stickyColumnInfo,\n sizingInfoRef.current,\n overflowInfoRef.current,\n {\n cell: currentActiveCell,\n locationX: 'inView',\n locationY: 'inView'\n },\n isRtl,\n appliedColumnWidths\n );\n }\n // cell is valid, so set focus on it if needed\n if (!isTabbableMode && activeElement !== cellElement) {\n if (\n wasTransient &&\n !isTransientCell(currentActiveCell) &&\n isAutoFocusCell(rootElement, tableId, currentActiveCell) &&\n cellSupportsTabbable(currentActiveCell)\n ) {\n _enableTabbableMode(currentActiveCell);\n } else {\n cellElement.focus({ preventScroll: true });\n }\n return;\n } else if (\n isTabbableMode &&\n !getElementContainsFunc(cellElement, true)(activeElement)\n ) {\n if (isCaptureFocus && !isAutoFocusCell(rootElement, tableId, currentActiveCell)) {\n _disableTabbableMode(currentActiveCell);\n } else {\n handleEnterActionableMode(\n false,\n allTabbableElements(cellElement),\n (value?: ActiveCell<K, D>) => {\n setIsTabbableMode(value != undefined);\n if (isCaptureFocus) {\n rootElement.focus({ preventScroll: true });\n }\n },\n true\n );\n }\n return;\n } else if (activeCell !== currentActiveCell) {\n // if element is already focused, ensure state is up to date\n onActiveCellChanged({ value: currentActiveCell }, false, false, true);\n }\n }\n }\n if (isCaptureFocus) {\n rootElement.focus({ preventScroll: true });\n }\n };\n\n // ensure the current cell is scrolled into view when necessary\n // only run if the state and ref match - otherwise another render cycle may be pending\n if (\n deferredScrollDetail != null &&\n deferredScrollDetail === deferredScrollDetailRef.current\n ) {\n applyScrollDetail(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n columnsArray,\n stickyColumnInfo,\n sizingInfoRef.current,\n overflowInfoRef.current,\n deferredScrollDetail,\n isRtl,\n appliedColumnWidths\n );\n deferredScrollDetailRef.current = undefined;\n }\n\n // ensure current-cell-override is up to date on each render\n applyCurrentCellOverride(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n tableData,\n columnsArray,\n stickyColumnInfo,\n sizingInfoRef.current,\n overflowInfoRef.current,\n currencyStatusRef,\n onActiveCellChanged,\n isEmbedded,\n isPendingLayout,\n isDataLoaded,\n isRtl,\n currentCellOverride,\n appliedColumnWidths\n );\n\n const blurredRenderCycleElement = blurredRenderCycleElementRef.current;\n blurredRenderCycleElementRef.current = null;\n isRenderCycle.current = false;\n\n const activeElement = getActiveElement(rootElement);\n // if we were tracking focus during the render cycle, ensure we recapture focus if needed\n if (\n blurredRenderCycleElement != null &&\n activeElement === getBodyElement(rootElement) &&\n (!getElementContainsFunc(rootElement, true)(blurredRenderCycleElement) ||\n !isTabbableElement(blurredRenderCycleElement, true))\n ) {\n deferredScrollDetailRef.current = undefined;\n _applyInternalFocus(rootElement, activeElement, true);\n } else if (\n hasFocusRef.current &&\n cellComparator(activeCell, currencyStatusRef.current.activeCell)\n ) {\n _applyInternalFocus(rootElement, activeElement);\n }\n }\n });\n\n return {\n focusHandlingProps: {\n onPointerDown: _pointerDownHandler,\n onPointerUp: _pointerUpHandler,\n onFocus: _onFocusHandler,\n onBlur: _onBlurHandler,\n onKeyDown: _onKeyDownHandler,\n onKeyUp: _onKeyUpHandler\n },\n activeCell,\n onActiveCellChanged,\n currentCell: currencyStatusRef.current.currentCell,\n currentActiveCell,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n updateDeferredScrollDetail\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { SortCriterionDetail } from '#UNSAFE_TableView';\nimport type { TableColumn } from '../Table';\n\n/**\n * Helper function to get the row action context from row information\n */\nexport const getActionContext = <K extends string | number, D>(_index: number, key: K, data: D) => {\n return { key, data };\n};\n\n/**\n * Helper function to determine if a pointer or keyboard event should trigger a sort action gesture\n */\nexport const isSortActionGesture = <K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n columnKey: C\n) => {\n for (const column of columnsArray) {\n if (column.key === columnKey) {\n return column.value.sortable === 'enabled';\n }\n }\n return false;\n};\n\n/**\n * Helper function to handle a sort action gesture\n */\nexport const handleSortActionGesture = <K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n columnKey: C,\n onSortCriterionChange: (detail: SortCriterionDetail<C>) => void,\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[]\n) => {\n if (isSortActionGesture(columnsArray, columnKey)) {\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === columnKey) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n return true;\n }\n return false;\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { Dispatch, StateUpdater } from 'preact/hooks';\nimport type { ActiveCell, ColumnHeaderFooterInfo } from '../Table';\n\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { getColumnKey, TABLE_FOCUSABLE_SELECTOR } from './TableDomUtils';\n\n/**\n * Helper function to handle a hover gesture over a column header or footer region.\n */\nexport function handleOverColumnHeaderFooterGesture<C>(\n tableId: string,\n event: PointerEvent,\n setHoverStyleColumnInfo: Dispatch<StateUpdater<ColumnHeaderFooterInfo<C> | undefined>>,\n hoverStyleColumnInfo?: ColumnHeaderFooterInfo<C>\n) {\n // only track 'hover' information for mouse events\n if (event.pointerType === 'mouse') {\n const cellElement = (event.target as HTMLElement).closest(\n `[${TABLE_FOCUSABLE_SELECTOR}='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'header' || cellType === 'footer') {\n const isHeader = cellType === 'header';\n const columnKey = getColumnKey<C>(cellElement);\n if (\n columnKey !== hoverStyleColumnInfo?.key ||\n !hoverStyleColumnInfo?.isHeader !== isHeader\n ) {\n setHoverStyleColumnInfo({ key: columnKey, isHeader: cellType === 'header' });\n return;\n }\n }\n }\n }\n handleEndInteractionColumnHeaderFooterGesture(setHoverStyleColumnInfo, hoverStyleColumnInfo);\n}\n\n/**\n * Helper function to handle an active gesture over a column header or footer region.\n */\nexport function handleActiveColumnHeaderFooterGesture<K, C>(\n tableId: string,\n event: KeyboardEvent | PointerEvent,\n setActiveStyleColumnInfo: Dispatch<StateUpdater<ColumnHeaderFooterInfo<C> | undefined>>,\n activeStyleColumnInfo?: ColumnHeaderFooterInfo<C>,\n activeCell?: ActiveCell<K, C>\n) {\n let cellType;\n let columnKey;\n if (activeCell != null) {\n cellType = activeCell.type;\n columnKey = activeCell.columnKey;\n } else if (event instanceof PointerEvent && event.pointerType === 'touch') {\n // only handle touch events since hover events have the same treatment\n const cellElement = (event.target as HTMLElement).closest(\n `[${TABLE_FOCUSABLE_SELECTOR}='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n cellType = getCellType(cellElement);\n columnKey = getColumnKey<C>(cellElement);\n }\n }\n if (columnKey != null && (cellType === 'header' || cellType === 'footer')) {\n const isHeader = cellType === 'header';\n if (columnKey !== activeStyleColumnInfo?.key || !activeStyleColumnInfo?.isHeader !== isHeader) {\n setActiveStyleColumnInfo({ key: columnKey, isHeader: cellType === 'header' });\n return;\n }\n }\n handleEndInteractionColumnHeaderFooterGesture(setActiveStyleColumnInfo, activeStyleColumnInfo);\n}\n\n/**\n * Helper function to handle the end of an interaction style gesture for the table region.\n */\nexport function handleEndInteractionColumnHeaderFooterGesture<C>(\n setInteractionStyleColumnInfo: Dispatch<StateUpdater<ColumnHeaderFooterInfo<C> | undefined>>,\n interactionStyleColumnInfo?: ColumnHeaderFooterInfo<C>\n) {\n if (interactionStyleColumnInfo != null) {\n setInteractionStyleColumnInfo(undefined);\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ScrollDetail,\n SizingInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { findElementByKey } from '#utils/PRIVATE_collectionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getBoundaryColumnKey,\n getElementFromCell,\n getFirstRenderedRowKey,\n getLastRenderedRowKey,\n getRowIndexForRowKey,\n getRowKeyForRowIndex,\n hasFooterCells,\n hasLoadMoreCell,\n hasNoDataCell,\n isAutoFocusCell,\n TABLE_ROW_SELECTOR\n} from './TableDomUtils';\nimport { cellComparator } from './TableFocusUtils';\nimport { getScrollerBottom, getVerticalScrollPosition } from './TableScrollUtils';\n\n/**\n * Helper function to handle an 'Up' or 'Down' arrow key press.\n * Up - Moves to the same cell in the previous row (including headers and footers). No op if already on the first row.\n * Down - Moves to the same cell in the next row (including headers and footers). No op if already on the last row.\n */\nexport function handleAdjacentRowGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: ActiveCell<K, C>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n isExtendSelectionGesture: boolean,\n hideTooltip: (isImmediate?: boolean) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void\n) {\n const firstColumnKey = getBoundaryColumnKey<K, D, C>(columnsArray, true);\n if (firstColumnKey == null) {\n return;\n }\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'noData') {\n const newColumnKey = firstColumnKey;\n if (isPrevious) {\n newCell = { columnKey: newColumnKey, type: 'header' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else if (hasFooterCells(rootElement, tableId)) {\n newCell = { columnKey: newColumnKey, type: 'footer' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n } else if (cellType === 'loading') {\n if (isPrevious) {\n newCell = { columnKey: initialCell.columnKey, type: 'header' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else if (hasFooterCells(rootElement, tableId)) {\n newCell = { columnKey: initialCell.columnKey, type: 'footer' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n } else if (cellType === 'loadMore') {\n if (isPrevious) {\n const rowKey = getLastRenderedRowKey<K>(rootElement, tableId);\n if (rowKey != null) {\n newCell = { rowKey: rowKey, columnKey: initialCell.columnKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n } else if (hasFooterCells(rootElement, tableId)) {\n newCell = { columnKey: initialCell.columnKey, type: 'footer' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n } else if (cellType !== 'pending') {\n if (cellType === 'data') {\n const currentRowKey = initialCell.rowKey;\n const currentRowElement = findElementByKey(\n rootElement,\n currentRowKey,\n `[${TABLE_ROW_SELECTOR}='${tableId}']`\n );\n if (currentRowElement != null) {\n const rowElements = [\n ...rootElement.querySelectorAll(`[${TABLE_ROW_SELECTOR}='${tableId}']`)\n ];\n const currentRowIndex = rowElements.indexOf(currentRowElement);\n let adjacentRowElement;\n if (isPrevious && currentRowIndex > 0) {\n adjacentRowElement = rowElements[currentRowIndex - 1] as HTMLElement;\n } else if (!isPrevious && currentRowIndex < rowElements.length - 1) {\n adjacentRowElement = rowElements[currentRowIndex + 1] as HTMLElement;\n }\n if (adjacentRowElement != null) {\n const rowKey = getRowKey<K>(adjacentRowElement);\n if (rowKey != null) {\n newCell = { rowKey: rowKey, columnKey: initialCell.columnKey, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, tableId, newCell),\n isExtendSelectionGesture\n );\n }\n } else if (!isExtendSelectionGesture) {\n if (isPrevious) {\n newCell = { columnKey: initialCell.columnKey, type: 'header' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else if (hasLoadMoreCell(rootElement, tableId)) {\n newCell = { columnKey: initialCell.columnKey, type: 'loadMore' };\n if (getElementFromCell(rootElement, tableId, newCell) != null) {\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, tableId, newCell)\n );\n }\n } else if (hasFooterCells(rootElement, tableId)) {\n newCell = { columnKey: initialCell.columnKey, type: 'footer' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n }\n }\n } else if (cellType === 'header' && !isPrevious) {\n const rowKey = getFirstRenderedRowKey<K>(rootElement, tableId);\n if (rowKey != null) {\n newCell = { rowKey: rowKey, columnKey: initialCell.columnKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else if (hasNoDataCell(rootElement, tableId)) {\n newCell = { type: 'noData' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n newCell = { columnKey: initialCell.columnKey, type: 'loading' };\n if (getElementFromCell(rootElement, tableId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else if (hasFooterCells(rootElement, tableId)) {\n newCell = { columnKey: initialCell.columnKey, type: 'footer' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n }\n } else if (cellType === 'footer' && isPrevious) {\n if (hasNoDataCell(rootElement, tableId)) {\n newCell = { type: 'noData' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n newCell = { columnKey: initialCell.columnKey, type: 'loading' };\n if (getElementFromCell(rootElement, tableId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n newCell = { columnKey: initialCell.columnKey, type: 'loadMore' };\n if (getElementFromCell(rootElement, tableId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n const rowKey = getLastRenderedRowKey<K>(rootElement, tableId);\n if (rowKey != null) {\n newCell = { rowKey: rowKey, columnKey: initialCell.columnKey, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, tableId, newCell)\n );\n } else {\n newCell = { columnKey: initialCell.columnKey, type: 'header' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, tableId, newCell)\n );\n }\n }\n }\n }\n }\n }\n if (!cellComparator(initialCell, newCell)) {\n hideTooltip(true);\n } else {\n updateDeferredScrollDetail({ cell: newCell, locationX: 'inView', locationY: 'inView' });\n }\n}\n\n/**\n * Helper function to handle a 'PageUp' or 'PageDown' arrow key press.\n * PageUp - Moves to the same cell in the first visible row in the current viewport,\n * and scrolls the Table so it becomes the last visible row in the viewport when able.\n * PageDown - Moves to the same cell in the last visible row in the current viewport,\n * and scrolls the Table so it becomes the first visible row in the viewport when able.\n */\nexport function handlePageRowGesture<K extends string | number, C extends string>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n tableId: string,\n sizingInfo: SizingInfo,\n initialCell: ActiveCell<K, C>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n hideTooltip: (isImmediate?: boolean) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void\n) {\n if (initialCell.type !== 'noData' && initialCell.type !== 'pending') {\n const rowElements = rootElement.querySelectorAll(`[${TABLE_ROW_SELECTOR}='${tableId}']`);\n if (rowElements.length > 0) {\n const verticalScrollPosition = getVerticalScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId\n );\n const verticalRowIndex = getRowIndexForRowKey(\n rootElement,\n tableId,\n verticalScrollPosition.rowKey!\n );\n let targetRowIndex;\n if (isPrevious) {\n if (verticalScrollPosition.offsetY === 0) {\n targetRowIndex = Math.max(verticalRowIndex! - 1, 0);\n } else {\n targetRowIndex = verticalRowIndex!;\n }\n } else {\n const scrollerBottom = getScrollerBottom(\n rootElement,\n scrollerElement,\n viewportInfo.viewportConfig,\n sizingInfo,\n tableId\n );\n targetRowIndex = verticalRowIndex!;\n while (rowElements.length > targetRowIndex + 1) {\n targetRowIndex += 1;\n const elementBottom = rowElements[targetRowIndex].getBoundingClientRect().bottom;\n if (elementBottom > scrollerBottom) {\n break;\n }\n }\n }\n const newRowKey = getRowKeyForRowIndex<K>(rootElement, tableId, targetRowIndex);\n if (newRowKey != null) {\n const newCell: ActiveCell<K, C> = {\n rowKey: newRowKey,\n columnKey: initialCell.columnKey,\n type: 'data'\n };\n if (newRowKey !== initialCell.rowKey) {\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, tableId, newCell),\n false,\n true\n );\n }\n if (!cellComparator(initialCell, newCell)) {\n hideTooltip(true);\n }\n updateDeferredScrollDetail({\n cell: newCell,\n locationX: 'inView',\n locationY: isPrevious ? 'bottom' : 'top'\n });\n }\n }\n }\n}\n\n/**\n * Helper function to get the column key next to the given column key in the specified direction. Returns\n * null if there is no adjacent column in the direction specified.\n */\nfunction _getAdjacentColumnKey<K, D, C>(\n initialKey: C,\n columnsArray: TableColumn<K, D, C>[],\n isPrevious: boolean\n) {\n let currentIndex = -1;\n const columnsCount = columnsArray.length;\n for (let i = 0; i < columnsCount; i++) {\n if (columnsArray[i].key === initialKey) {\n currentIndex = i;\n break;\n }\n }\n if (isPrevious && currentIndex !== 0) {\n return columnsArray[currentIndex - 1].key;\n } else if (!isPrevious && currentIndex !== columnsCount - 1) {\n return columnsArray[currentIndex + 1].key;\n }\n return undefined;\n}\n\n/**\n * Helper function to handle a 'Previous' or 'Next' arrow key press.\n * Previous - Moves to the previous cell in the current row. No op if already on the first cell in that row.\n * Next - Moves to the next cell in the current row. No op if already on the last cell in that row.\n */\nexport function handleAdjacentColumnGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: ActiveCell<K, C>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n hideTooltip: (isImmediate?: boolean) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void\n) {\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'data' || cellType === 'header' || cellType === 'footer') {\n const initialKey = initialCell.columnKey;\n const newKey = _getAdjacentColumnKey(initialKey, columnsArray, isPrevious);\n if (newKey != null) {\n if (cellType === 'data') {\n newCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n newCell = { columnKey: newKey, type: cellType };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n }\n }\n if (!cellComparator(initialCell, newCell)) {\n hideTooltip(true);\n } else {\n updateDeferredScrollDetail({ cell: newCell, locationX: 'inView', locationY: 'inView' });\n }\n}\n\n/**\n * Helper function to handle a 'Home' or 'End' key press.\n * Home - Jumps to the first cell in the current row. No op if already on the first cell in that row.\n * Ctrl/Cmd + Home - Jumps to the first cell in the first data row. If no data rows are present,\n * jumps to the first cell in the current region (header or footer). No op if already on that cell.\n * End - Jumps to the last cell in the current row. No op if already on the last cell in that row.\n * Ctrl/Cmd + End - Jumps to the last cell in the last data row. If no data rows are present,\n * jumps to the last cell in the current region (header or footer). No op if already on that cell.\n */\nexport function handleJumpColumnGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: ActiveCell<K, C>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n includeRows: boolean,\n hideTooltip: (isImmediate?: boolean) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void\n) {\n const newKey = getBoundaryColumnKey<K, D, C>(columnsArray, isPrevious);\n if (newKey == null) {\n return;\n }\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'data' || cellType === 'header' || cellType === 'footer') {\n const initialKey = initialCell.columnKey;\n if (includeRows) {\n if (hasNoDataCell(rootElement, tableId)) {\n newCell = { type: 'noData' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n const newRowKey = isPrevious\n ? getFirstRenderedRowKey<K>(rootElement, tableId)\n : getLastRenderedRowKey<K>(rootElement, tableId);\n if (newRowKey != null) {\n newCell = { rowKey: newRowKey, columnKey: newKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n }\n } else if (newKey !== initialKey) {\n if (cellType === 'data') {\n newCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n } else {\n newCell = { columnKey: newKey, type: cellType };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, tableId, newCell));\n }\n }\n }\n if (!cellComparator(initialCell, newCell)) {\n hideTooltip(true);\n } else {\n updateDeferredScrollDetail({ cell: newCell, locationX: 'inView', locationY: 'inView' });\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { MutableRef } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { TableSelectionDetail, TableSelectionMode } from '#UNSAFE_TableView';\nimport type { ActiveCell, ActiveCellDetail, ScrollDetail, TableColumn } from '../Table';\n\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { addKey, containsKey, isSameKey, removeKey } from '#utils/UNSAFE_keys';\nimport { getCellType, getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getColumnIndexForHeaderFooterElement,\n getElementFromCell,\n getRowIndexForRowElement,\n getRowKeyForRowIndex,\n logicalCellExtractor,\n TABLE_FOCUSABLE_SELECTOR,\n TABLE_ROW_SELECTOR\n} from './TableDomUtils';\n\n/**\n * Helper function to handle a selection gesture (click, spacebar, etc...)\n */\nexport function handleSelectionGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n isModifierKey: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: TableSelectionMode,\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n const newRowKey = keyExtractor<K>(targetElement, `[${TABLE_ROW_SELECTOR}='${tableId}']`);\n if (newRowKey != null) {\n if (\n selectionMode?.row === 'single' ||\n selectionMode?.row === 'multiple' ||\n selectionMode?.row === 'multipleToggle'\n ) {\n const isToggleSelectionMode = isDropDownSelection || selectionMode.row === 'multipleToggle';\n const isMultiSelectRowGesture = isModifierKey || isToggleSelectionMode;\n if (selectedRows == null) {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n } else if (!containsKey(selectedRows, newRowKey)) {\n if (isMultiSelectRowGesture && selectionMode.row !== 'single') {\n selectedRows = addKey(selectedRows, newRowKey);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n } else if (isMultiSelectRowGesture) {\n selectedRows = removeKey(selectedRows, newRowKey, false);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n selectedColumns = emptyKeys as Keys<C>;\n }\n } else if (selectionMode?.column === 'single' || selectionMode?.column === 'multiple') {\n const cellElement = targetElement.closest(\n `[${TABLE_FOCUSABLE_SELECTOR}='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'header' || cellType === 'footer') {\n const index = getColumnIndexForHeaderFooterElement(\n rootElement,\n tableId,\n cellElement,\n cellType === 'header'\n );\n if (index != null) {\n const column = columnsArray[index];\n if (column.value.selectable !== 'disabled') {\n if (selectedColumns == null) {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n } else if (!containsKey(selectedColumns, column.key)) {\n if (isModifierKey && selectionMode.column === 'multiple') {\n selectedColumns = addKey(selectedColumns, column.key);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n } else if (isModifierKey) {\n selectedColumns = removeKey(selectedColumns, column.key, false);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n selectedRows = emptyKeys as Keys<K>;\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n false\n );\n }\n}\n\n/**\n * Helper function to calculate and apply a new selection state corresponding to the range provided\n */\nfunction _applyRangeSelection<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n startIndex: number,\n endIndex: number,\n isRowGesture: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: TableSelectionMode,\n selected?: { row?: Keys<K>; column?: Keys<C> },\n previousEndIndex?: number\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n if (isRowGesture) {\n selectedColumns = emptyKeys as Keys<C>;\n if (selectionMode?.row === 'multiple' || selectionMode?.row === 'multipleToggle') {\n const isToggleSelectionMode = isDropDownSelection || selectionMode.row === 'multipleToggle';\n selectedRows = isToggleSelectionMode ? selectedRows : (emptyKeys as Keys<K>);\n // selected rows should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n // toggle selection gesture is additive except for rows added from previous gesture\n if (isToggleSelectionMode && previousEndIndex != null) {\n if (previousEndIndex > endIndex) {\n for (let i = previousEndIndex; i > endIndex; i--) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n } else if (previousEndIndex < startIndex) {\n for (let i = previousEndIndex; i < startIndex; i++) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n }\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n // toggle selection gesture is additive except for rows added from previous gesture\n if (isToggleSelectionMode && previousEndIndex != null) {\n if (previousEndIndex < endIndex) {\n for (let i = previousEndIndex; i < endIndex; i++) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n } else if (previousEndIndex > startIndex) {\n for (let i = previousEndIndex; i > startIndex; i--) {\n const key = getRowKeyForRowIndex<K>(rootElement, tableId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n }\n }\n }\n }\n } else {\n selectedRows = emptyKeys as Keys<K>;\n if (selectionMode?.column === 'multiple') {\n selectedColumns = emptyKeys as Keys<C>;\n // selected columns should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n true\n );\n }\n}\n\n/**\n * Determines whether a potential range selection gesture is valid based on the given target\n */\nexport function isRangeSelectionGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n activeCell: ActiveCell<K, C>,\n selectionMode?: TableSelectionMode\n) {\n const targetCell = logicalCellExtractor<K, D, C>(targetElement, tableId, columnsArray);\n if (\n (((selectionMode?.row === 'multiple' || selectionMode?.row === 'multipleToggle') &&\n activeCell.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (activeCell.type === 'header' || activeCell.type === 'footer'))) &&\n targetCell?.type === activeCell.type\n ) {\n const activeCellElement = getElementFromCell(rootElement, tableId, activeCell);\n const targetCellElement = getElementFromCell(rootElement, tableId, targetCell);\n if (activeCellElement != null && targetCellElement != null) {\n const isRow = targetCell.type === 'data';\n if (isRow) {\n return (\n getRowIndexForRowElement(\n rootElement,\n tableId,\n activeCellElement.parentElement as HTMLElement\n ) != null &&\n getRowIndexForRowElement(\n rootElement,\n tableId,\n targetCellElement.parentElement as HTMLElement\n ) != null\n );\n } else if (targetCell.type === 'header' || targetCell.type === 'footer') {\n const isHeader = targetCell.type === 'header';\n return (\n getColumnIndexForHeaderFooterElement(rootElement, tableId, activeCellElement, isHeader) !=\n null &&\n getColumnIndexForHeaderFooterElement(rootElement, tableId, targetCellElement, isHeader) !=\n null\n );\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a range selection gesture (shift+click)\n */\nexport function handleRangeSelectionGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n activeCell: ActiveCell<K, C>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: TableSelectionMode,\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const targetCell = logicalCellExtractor<K, D, C>(targetElement, tableId, columnsArray);\n if (targetCell != null) {\n const activeCellElement = getElementFromCell(rootElement, tableId, activeCell);\n const targetCellElement = getElementFromCell(rootElement, tableId, targetCell);\n if (activeCellElement != null && targetCellElement != null) {\n if (\n (((selectionMode?.row === 'multiple' || selectionMode?.row === 'multipleToggle') &&\n targetCell.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (targetCell.type === 'header' || targetCell.type === 'footer'))) &&\n targetCell.type === activeCell.type\n ) {\n let startIndex;\n let endIndex;\n let previousEndIndex;\n let endElement;\n const isToggleSelectionMode = isDropDownSelection || selectionMode.row === 'multipleToggle';\n const isRow = targetCell.type === 'data';\n if (isRow) {\n endElement = targetCellElement.parentElement as HTMLElement;\n const startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n startIndex = getRowIndexForRowElement(rootElement, tableId, startElement);\n endIndex = getRowIndexForRowElement(rootElement, tableId, endElement);\n const previousElement = isToggleSelectionMode\n ? (activeCellElement.parentElement as HTMLElement)\n : selectionExtensionElementRef.current;\n if (previousElement != null) {\n previousEndIndex = getRowIndexForRowElement(rootElement, tableId, previousElement);\n }\n } else if (targetCell.type === 'header' || targetCell.type === 'footer') {\n const isHeader = targetCell.type === 'header';\n endElement = targetCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(\n rootElement,\n tableId,\n activeCellElement,\n isHeader\n );\n endIndex = getColumnIndexForHeaderFooterElement(\n rootElement,\n tableId,\n targetCellElement,\n isHeader\n );\n }\n if (startIndex != null && endIndex != null) {\n if (!isRow || !isToggleSelectionMode) {\n selectionExtensionElementRef.current = endElement;\n } else {\n if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current = activeCellElement.parentElement as HTMLElement;\n }\n onActiveCellChanged({ value: targetCell }, false, true);\n targetCellElement.focus({ preventScroll: true });\n }\n _applyRangeSelection(\n rootElement,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n previousEndIndex\n );\n return true;\n }\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a selection extension gesture (shift+arrow key)\n */\nexport function handleExtendSelectionGesture<K extends string | number, D, C extends string>(\n rootElement: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n isPrevious: boolean,\n activeCell: ActiveCell<K, C>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void,\n selectionMode?: TableSelectionMode,\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const activeCellElement = getElementFromCell(rootElement, tableId, activeCell);\n if (activeCellElement != null) {\n let startIndex;\n let startElement;\n const isToggleSelectionMode = isDropDownSelection || selectionMode?.row === 'multipleToggle';\n const isRow = activeCell.type === 'data';\n const isHeader = activeCell.type === 'header';\n if (isRow) {\n startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n startIndex = getRowIndexForRowElement(rootElement, tableId, startElement);\n } else {\n startElement = activeCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(\n rootElement,\n tableId,\n startElement,\n isHeader\n );\n }\n if (startIndex != null) {\n let endIndex;\n let previousEndIndex;\n let extendedElement;\n const cursorElement =\n isToggleSelectionMode && isRow\n ? (activeCellElement.parentElement as HTMLElement)\n : selectionExtensionElementRef.current;\n if (cursorElement != null) {\n previousEndIndex = isRow\n ? getRowIndexForRowElement(rootElement, tableId, cursorElement)\n : getColumnIndexForHeaderFooterElement(rootElement, tableId, cursorElement, isHeader);\n extendedElement = isPrevious\n ? (cursorElement.previousElementSibling as HTMLElement)\n : (cursorElement.nextElementSibling as HTMLElement);\n if (extendedElement != null && (!isRow || (isRow && getRowKey(extendedElement) != null))) {\n if (!isToggleSelectionMode || !isRow) {\n selectionExtensionElementRef.current = extendedElement;\n } else if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current = activeCellElement.parentElement as HTMLElement;\n }\n endIndex = isRow\n ? getRowIndexForRowElement(rootElement, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(rootElement, tableId, extendedElement, isHeader);\n } else {\n endIndex = isRow\n ? getRowIndexForRowElement(rootElement, tableId, cursorElement)\n : getColumnIndexForHeaderFooterElement(rootElement, tableId, cursorElement, isHeader);\n }\n } else {\n extendedElement = isPrevious\n ? (startElement.previousElementSibling as HTMLElement)\n : (startElement.nextElementSibling as HTMLElement);\n if (extendedElement != null && (!isRow || (isRow && getRowKey(extendedElement) != null))) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = isRow\n ? getRowIndexForRowElement(rootElement, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(rootElement, tableId, extendedElement, isHeader);\n } else {\n endIndex = startIndex;\n }\n }\n if (endIndex != null) {\n _applyRangeSelection(\n rootElement,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n previousEndIndex\n );\n }\n\n // scroll 'extensionElement' into view if focus is not shifted\n if (!isRow || !isToggleSelectionMode) {\n const extensionElement =\n selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : activeCellElement;\n let extensionCell;\n if (isRow) {\n const rowKey = keyExtractor<K>(extensionElement, `[${TABLE_ROW_SELECTOR}='${tableId}']`);\n if (rowKey != null) {\n extensionCell = {\n type: activeCell.type,\n rowKey: rowKey,\n columnKey: activeCell.columnKey\n };\n }\n } else {\n extensionCell = logicalCellExtractor<K, D, C>(extensionElement, tableId, columnsArray);\n }\n if (extensionCell != null) {\n updateDeferredScrollDetail({\n cell: extensionCell,\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport type { Dispatch, MutableRef, StateUpdater } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n RowActionDetail,\n SortCriterionDetail,\n TableSelectionDetail,\n TableSelectionMode\n} from '#UNSAFE_TableView';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ColumnHeaderFooterInfo,\n ScrollDetail,\n SizingInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { useCallback, useRef } from 'preact/hooks';\nimport {\n getRowActionGestureContext,\n handleRowActionGesture\n} from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport {\n getActionContext,\n handleSortActionGesture,\n isSortActionGesture\n} from '../utils/TableActionUtils';\nimport { getElementFromCell, isAutoFocusCell, TABLE_ROW_SELECTOR } from '../utils/TableDomUtils';\nimport {\n handleActiveColumnHeaderFooterGesture,\n handleEndInteractionColumnHeaderFooterGesture\n} from '../utils/TableInteractionUtils';\nimport {\n handleAdjacentRowGesture,\n handleAdjacentColumnGesture,\n handlePageRowGesture,\n handleJumpColumnGesture\n} from '../utils/TableNavigationUtils';\nimport { handleExtendSelectionGesture, handleSelectionGesture } from '../utils/TableSelectionUtils';\n\ntype UseKeyboardHandlingProps<K, D, C extends string> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n tableId: string;\n tableData: CollectionData<K, D>[];\n isRtl: boolean;\n isTabbableMode: boolean;\n columnsArray: TableColumn<K, D, C>[];\n sizingInfoRef: MutableRef<SizingInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n activeCell?: ActiveCell<K, C>;\n isDropDownSelection: boolean;\n selectionMode?: TableSelectionMode;\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isExtendableSelection: boolean\n ) => void;\n activeStyleColumnInfo: ColumnHeaderFooterInfo<C> | undefined;\n setActiveStyleColumnInfo: Dispatch<StateUpdater<ColumnHeaderFooterInfo<C> | undefined>>;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K, C>) => void;\n};\n\n/**\n * Hook that manages keyboard interactions on the Preact Table\n */\nexport function useKeyboardHandling<K extends string | number, D, C extends string>({\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n onTableSelectionChange,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n hideTooltip,\n updateDeferredScrollDetail\n}: UseKeyboardHandlingProps<K, D, C>) {\n // state for the key that a space or enter keydown occurrs on for matching keyup handling\n const triggerDownKeyRef = useRef<K | undefined>();\n\n // Keydown handler for the outer Table. This handles all internal\n // keyboard navigation for the Table.\n const _keyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n const keyHandlers: Record<string, () => void> = {\n ' ': function () {\n if (activeCell != null) {\n triggerDownKeyRef.current = activeCell.rowKey;\n if (!isTabbableMode) {\n handleActiveColumnHeaderFooterGesture(\n tableId,\n event,\n setActiveStyleColumnInfo,\n activeStyleColumnInfo,\n activeCell\n );\n // prevent default action on space to avoid scrolling during a selection\n event.preventDefault();\n }\n if (\n onRowAction != null &&\n getRowActionGestureContext(\n tableId,\n tableData,\n event.target as HTMLElement,\n TABLE_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n }\n },\n Enter: function () {\n if (activeCell != null) {\n triggerDownKeyRef.current = activeCell.rowKey;\n if (activeCell.type === 'data') {\n if (isDropDownSelection && !isTabbableMode) {\n event.preventDefault();\n }\n if (\n onRowAction != null &&\n getRowActionGestureContext(\n tableId,\n tableData,\n event.target as HTMLElement,\n TABLE_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n } else if (\n activeCell.type === 'header' &&\n !isTabbableMode &&\n onSortCriterionChange != null &&\n isSortActionGesture(columnsArray, activeCell.columnKey)\n ) {\n event.stopPropagation();\n }\n }\n },\n ArrowUp: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n (selectionMode?.row === 'multiple' || selectionMode?.row === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n rootElement,\n true,\n activeCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode?.row === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n true,\n isExtendSelectionGesture,\n hideTooltip,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n ArrowDown: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n (selectionMode?.row === 'multiple' || selectionMode?.row === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n rootElement,\n false,\n activeCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode?.row === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n false,\n isExtendSelectionGesture,\n hideTooltip,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n ArrowLeft: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n if (\n !isTabbableMode &&\n (activeCell.type === 'header' || activeCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n rootElement,\n true,\n activeCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n !isRtl,\n hideTooltip,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n ArrowRight: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n if (\n !isTabbableMode &&\n (activeCell.type === 'header' || activeCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n rootElement,\n false,\n activeCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n isRtl,\n hideTooltip,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n PageUp: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n sizingInfoRef.current,\n activeCell,\n onActiveCellChanged,\n true,\n hideTooltip,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n PageDown: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n tableId,\n sizingInfoRef.current,\n activeCell,\n onActiveCellChanged,\n false,\n hideTooltip,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n Home: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n handleJumpColumnGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n true,\n isLogicalCtrl(event),\n hideTooltip,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n End: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, tableId, activeCell))\n ) {\n handleJumpColumnGesture(\n rootElement,\n tableId,\n columnsArray,\n activeCell,\n onActiveCellChanged,\n false,\n isLogicalCtrl(event),\n hideTooltip,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n }\n };\n if (Object.keys(keyHandlers).includes(event.key)) {\n keyHandlers[event.key]();\n }\n }\n },\n [\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n onTableSelectionChange,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n onRowAction,\n onSortCriterionChange,\n hideTooltip,\n updateDeferredScrollDetail\n ]\n );\n\n // Keyup handler for the outer Table.\n const _keyUpHandler = useCallback(\n (event: KeyboardEvent) => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null && scrollerElement != null) {\n const keyHandlers: Record<string, () => void> = {\n ' ': function () {\n if (activeCell != null) {\n handleEndInteractionColumnHeaderFooterGesture(\n setActiveStyleColumnInfo,\n activeStyleColumnInfo\n );\n if (triggerDownKeyRef.current === activeCell.rowKey) {\n if (!isTabbableMode) {\n if (onTableSelectionChange != null) {\n handleSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n getElementFromCell(rootElement, tableId, activeCell) as HTMLElement,\n true,\n onTableSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected\n );\n }\n }\n if (\n onRowAction != null &&\n handleRowActionGesture(\n tableId,\n tableData,\n onRowAction,\n event.target as HTMLElement,\n TABLE_ROW_SELECTOR,\n getActionContext,\n activeCell\n )\n ) {\n event.stopPropagation();\n }\n }\n triggerDownKeyRef.current = undefined;\n }\n },\n Enter: function () {\n if (activeCell != null && triggerDownKeyRef.current === activeCell.rowKey) {\n if (activeCell.type === 'data') {\n if (isDropDownSelection && !isTabbableMode) {\n if (onTableSelectionChange != null) {\n handleSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n getElementFromCell(rootElement, tableId, activeCell) as HTMLElement,\n true,\n onTableSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected\n );\n }\n }\n if (\n onRowAction != null &&\n handleRowActionGesture(\n tableId,\n tableData,\n onRowAction,\n event.target as HTMLElement,\n TABLE_ROW_SELECTOR,\n getActionContext,\n activeCell\n )\n ) {\n event.stopPropagation();\n }\n } else if (\n activeCell.type === 'header' &&\n !isTabbableMode &&\n onSortCriterionChange != null &&\n handleSortActionGesture(\n columnsArray,\n activeCell.columnKey,\n onSortCriterionChange,\n sortCriterion\n )\n ) {\n event.stopPropagation();\n }\n }\n triggerDownKeyRef.current = undefined;\n }\n };\n if (Object.keys(keyHandlers).includes(event.key)) {\n keyHandlers[event.key]();\n }\n }\n },\n [\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isTabbableMode,\n columnsArray,\n activeCell,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n isDropDownSelection,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n ]\n );\n\n return { onKeyDown: _keyDownHandler, onKeyUp: _keyUpHandler };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { MutableRef } from 'preact/hooks';\nimport type { ColumnResizeDetail, ColumnResizingDetail } from '#UNSAFE_TableView';\nimport type { AppliedColumnWidths, ColumnResizeInfo, TableColumn } from '../Table';\n\nimport { getElementContainsFunc } from '#utils/PRIVATE_collectionUtils';\nimport { getHeaderRowElement, TABLE_HEADER_SELECTOR } from './TableDomUtils';\n\n/**\n * Helper function to handle a hover over a resizable column region gesture.\n */\nexport function handleOverResizeRegionGesture<K, D, C>(\n rootElement: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n // handle hover feedback around potentially resizable columns\n _updateResizingState(rootElement, tableId, event, columnsArray, resizeInfoRef, isRtl);\n}\n\n/**\n * Helper function to handle a column resize start gesture (pointer down).\n */\nexport function handleColumnResizeStartGesture<K, D, C extends string>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n appliedColumnWidths: AppliedColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n hideTooltip: (isImmediate?: boolean) => void,\n onColumnResizing?: (detail: ColumnResizingDetail<C>) => void\n) {\n if (resizeInfoRef.current.key == null) {\n _updateResizingState(rootElement, tableId, event, columnsArray, resizeInfoRef, isRtl);\n }\n if (resizeInfoRef.current.key != null) {\n const rect = scrollerElement.getBoundingClientRect();\n const pointerX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current = {\n isResizing: true,\n isResizeHover: true,\n key: resizeInfoRef.current.key,\n startX: pointerX,\n delta: 0,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: 0,\n allColumnWidths: appliedColumnWidths.netColumnWidths,\n paddingWidth: appliedColumnWidths.totalBorderOffset\n });\n }\n hideTooltip(true);\n return true;\n }\n return false;\n}\n\n/**\n * Helper function to ensure the resizing state is updated based on the latest pointer event.\n */\nfunction _updateResizingState<K, D, C>(\n rootElement: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n const headerRowElement = getHeaderRowElement(rootElement, tableId);\n if (headerRowElement != null) {\n const headerElements = headerRowElement.querySelectorAll(\n `[${TABLE_HEADER_SELECTOR}='${tableId}']`\n ) as NodeListOf<HTMLElement>;\n if (getElementContainsFunc(headerRowElement)(event.target as HTMLElement)) {\n let isResizeHover = false;\n for (let i = 0; i < headerElements.length; i++) {\n const headerElement = headerElements[i];\n const cellRect = headerElement.getBoundingClientRect();\n const endEdge = isRtl ? cellRect.left : cellRect.right;\n if (Math.abs(endEdge - event.pageX) <= 8) {\n if (columnsArray[i].value.edgeResizable !== 'enabled') {\n break;\n }\n // resize operation on end side of header cell\n resizeInfoRef.current.key = columnsArray[i].key;\n headerRowElement.style.cursor = 'col-resize';\n isResizeHover = true;\n resizeInfoRef.current.isResizeHover = true;\n }\n }\n if (!isResizeHover) {\n headerRowElement.style.cursor = '';\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n } else {\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n }\n}\n\n/**\n * Helper function to handle a pointer move gesture during a column resize.\n */\nexport function handleColumnResizingGesture<C extends string>(\n scrollerElement: HTMLElement,\n event: PointerEvent,\n appliedColumnWidths: AppliedColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResizing?: (detail: ColumnResizingDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing) {\n const rect = scrollerElement.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n // handle resize move operation\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths.netColumnWidths,\n paddingWidth: appliedColumnWidths.totalBorderOffset\n });\n }\n }\n}\n\n/**\n * Helper function to handle a column resize end gesture (pointer up).\n */\nexport function handleColumnResizeEndGesture<C extends string>(\n scrollerElement: HTMLElement,\n event: PointerEvent,\n appliedColumnWidths: AppliedColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing) {\n if (onColumnResize != null) {\n const rect = scrollerElement.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n onColumnResize({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths.netColumnWidths,\n paddingWidth: appliedColumnWidths.totalBorderOffset,\n gesture: 'pointer',\n type: 'delta'\n });\n }\n }\n resizeInfoRef.current = {\n isResizing: false,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n}\n\n/**\n * Helper function to handle the pointer leaving the entire Table when previously hovering\n * over a column resize region.\n */\nexport function handleLeaveResizingGesture<C>(\n rootElement: HTMLDivElement,\n tableId: string,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>\n) {\n if (!resizeInfoRef.current.isResizing) {\n const headerRowElement = getHeaderRowElement(rootElement, tableId);\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.isResizeHover = false;\n }\n}\n\n/**\n * Helper function to handle a pointer entering the Table when it was previously handling\n * a column resize gesture.\n */\nexport function handleEnterResizingGesture<C extends string>(\n scrollerElement: HTMLElement,\n event: PointerEvent,\n appliedColumnWidths: AppliedColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n // handle case where user was resizing, moved pointer out of the Table,\n // released the button, and has now entered the table once again\n if (resizeInfoRef.current.isResizing && event.buttons === 0) {\n handleColumnResizeEndGesture(\n scrollerElement,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport type { Dispatch, MutableRef, StateUpdater } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n Cell,\n RowActionDetail,\n ColumnResizingDetail,\n ColumnResizeDetail,\n TableSelectionDetail,\n TableSelectionMode\n} from '#UNSAFE_TableView';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n AppliedColumnWidths,\n ColumnHeaderFooterInfo,\n ColumnResizeInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { clearElementSelection, getIsSelectionPending } from '#utils/PRIVATE_textSelectionUtils';\nimport { handleRowActionGesture } from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { getActionContext } from '../utils/TableActionUtils';\nimport { logicalCellExtractor, TABLE_ROW_SELECTOR } from '../utils/TableDomUtils';\nimport {\n handleActiveColumnHeaderFooterGesture,\n handleEndInteractionColumnHeaderFooterGesture,\n handleOverColumnHeaderFooterGesture\n} from '../utils/TableInteractionUtils';\nimport {\n handleRangeSelectionGesture,\n handleSelectionGesture,\n isRangeSelectionGesture\n} from '../utils/TableSelectionUtils';\nimport {\n handleColumnResizeEndGesture,\n handleColumnResizeStartGesture,\n handleColumnResizingGesture,\n handleEnterResizingGesture,\n handleLeaveResizingGesture,\n handleOverResizeRegionGesture\n} from '../utils/TableSizingUtils';\nimport {\n handleLeaveTableTooltipGesture,\n handleMoveTooltipGesture\n} from '../utils/TableTooltipUtils';\n\ntype PointerInfo = {\n target: EventTarget | null;\n x: number;\n y: number;\n};\n\ntype UsePointerHandlingOptions<K, D, C extends string> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n tableId: string;\n tableData: CollectionData<K, D>[];\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n appliedColumnWidths?: AppliedColumnWidths<C>;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onColumnResizing?: (detail: ColumnResizingDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n activeCell?: ActiveCell<K, C>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K, C>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n isDropDownSelection: boolean;\n selectionMode?: TableSelectionMode;\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isSelectionExtension: boolean\n ) => void;\n activeStyleColumnInfo: ColumnHeaderFooterInfo<C> | undefined;\n setActiveStyleColumnInfo: Dispatch<StateUpdater<ColumnHeaderFooterInfo<C> | undefined>>;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n showTooltip: (cell: Cell<K, C>) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n tooltipId: string;\n};\n\n/**\n * Hook that manages pointer interactions on the Preact Table\n */\nexport function usePointerHandling<K extends string | number, D, C extends string>({\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n onColumnResizing,\n onColumnResize,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n onTableSelectionChange,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n onRowAction,\n showTooltip,\n hideTooltip,\n tooltipId\n}: UsePointerHandlingOptions<K, D, C>) {\n // tracks whether the most recent 'pointerdown' event was due to a touch gesture\n const selectionTouchRef = useRef<boolean>(false);\n\n // tracks the column key for any header or footer being hovered over\n const [hoverStyleColumnInfo, setHoverStyleColumnInfo] = useState<ColumnHeaderFooterInfo<C>>();\n\n // tracks the current 'pointer over' element for comparison during 'click' event handling to\n // prevent screen readers from triggering undesired selection gestures from simulated events\n const pointerInfoRef = useRef<PointerInfo>();\n\n // Pointer move handler for the outer Table.\n const _pointerMoveHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null) {\n pointerInfoRef.current = { target: event.target, x: event.clientX, y: event.clientY };\n handleMoveTooltipGesture(tableId, columnsArray, event, showTooltip, hideTooltip, tooltipId);\n if (onColumnResizing != null) {\n if (!resizeInfoRef.current.isResizing) {\n handleOverResizeRegionGesture(\n rootElement,\n tableId,\n event,\n columnsArray,\n resizeInfoRef,\n isRtl\n );\n } else if (scrollerElement != null && appliedColumnWidths != null) {\n handleColumnResizingGesture(\n scrollerElement,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResizing\n );\n }\n }\n }\n },\n [\n rootRef,\n viewportInfo,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResizing,\n showTooltip,\n hideTooltip,\n tooltipId\n ]\n );\n\n // Pointer over handler for the outer Table.\n const _pointerOverHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n pointerInfoRef.current = { target: event.target, x: event.clientX, y: event.clientY };\n handleOverColumnHeaderFooterGesture(\n tableId,\n event,\n setHoverStyleColumnInfo,\n hoverStyleColumnInfo\n );\n }\n },\n [rootRef, tableId, hoverStyleColumnInfo]\n );\n\n // Pointer down handler for the outer Table. It ensures the area targeted is 'current'.\n // NOTE - This event handling is triggered prior to 'onFocus' handling and ensures the\n // 'pending current' area is set when an initial pointer interaction focuses the Table.\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n handleActiveColumnHeaderFooterGesture(\n tableId,\n event,\n setActiveStyleColumnInfo,\n activeStyleColumnInfo\n );\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (rootElement != null) {\n selectionTouchRef.current = event.pointerType === 'touch';\n const targetElement = event.target as HTMLElement;\n if (\n onTableSelectionChange != null &&\n activeCell != null &&\n event.shiftKey &&\n isRangeSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n targetElement,\n activeCell,\n selectionMode\n )\n ) {\n // prevent focus change on selection extension gesture\n if (!getIsSelectionPending()) {\n event.preventDefault();\n }\n } else if (\n scrollerElement != null &&\n appliedColumnWidths != null &&\n handleColumnResizeStartGesture(\n rootElement,\n scrollerElement,\n tableId,\n event,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n hideTooltip,\n onColumnResizing\n )\n ) {\n // prevent focus change on column resize gesture\n event.preventDefault();\n resizeInfoRef.current.ignoreClick = true;\n } else if (logicalCellExtractor<K, D, C>(targetElement, tableId, columnsArray) == null) {\n // prevent focus shift when interacting with 'non-focusable' regions (ie - scrollbar)\n event.preventDefault();\n } else {\n // in firefox, ctrl/cmd + click triggers browser selection of <tr> elements, which\n // conflicts with our multiple row selection gesture. to prevent this, schedule a\n // macro-task to remove any node-based selection to ensure there is no 'pending'\n // browser selection found during eventual click event handling\n if (getClientHints().browser === 'firefox' && isLogicalCtrl(event)) {\n setTimeout(() => {\n clearElementSelection();\n }, 0);\n }\n }\n }\n },\n [\n rootRef,\n viewportInfo,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n isRtl,\n hideTooltip,\n activeCell,\n selectionMode,\n onTableSelectionChange,\n onColumnResizing\n ]\n );\n\n // Pointer up handler for the outer Table.\n const _pointerUpHandler = useCallback(\n (event: PointerEvent) => {\n handleEndInteractionColumnHeaderFooterGesture(\n setActiveStyleColumnInfo,\n activeStyleColumnInfo\n );\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (scrollerElement != null && appliedColumnWidths != null) {\n handleColumnResizeEndGesture(\n scrollerElement,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [\n viewportInfo,\n appliedColumnWidths,\n resizeInfoRef,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n isRtl,\n onColumnResize\n ]\n );\n\n // Pointer leave handler for the outer Table.\n const _pointerLeaveHandler = useCallback(\n (event: PointerEvent) => {\n handleEndInteractionColumnHeaderFooterGesture(setHoverStyleColumnInfo, hoverStyleColumnInfo);\n handleEndInteractionColumnHeaderFooterGesture(\n setActiveStyleColumnInfo,\n activeStyleColumnInfo\n );\n const rootElement = rootRef.current;\n if (rootElement != null) {\n handleLeaveResizingGesture(rootElement, tableId, resizeInfoRef);\n handleLeaveTableTooltipGesture(rootElement, event, hideTooltip, tooltipId);\n }\n pointerInfoRef.current = undefined;\n },\n [\n rootRef,\n tableId,\n resizeInfoRef,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n hoverStyleColumnInfo,\n hideTooltip,\n tooltipId\n ]\n );\n\n // Pointer enter handler for the outer Table.\n const _pointerEnterHandler = useCallback(\n (event: PointerEvent) => {\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (scrollerElement != null && appliedColumnWidths != null) {\n handleEnterResizingGesture(\n scrollerElement,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [viewportInfo, appliedColumnWidths, resizeInfoRef, isRtl, onColumnResize]\n );\n\n // Click handler for the outer Table. It ensures the Table's selection state is\n // updated to reflect the area targeted, and any action events are fired correctly.\n const _clickHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n // only handle click events that match the latest mouse over/move info to prevent screen readers\n // from triggering undesired selections due to simulated click events when transferring focus\n if (\n selectionTouchRef.current ||\n (pointerInfoRef.current != null &&\n pointerInfoRef.current.target === event.target &&\n Math.abs(pointerInfoRef.current.x - event.clientX) <= 1 &&\n Math.abs(pointerInfoRef.current.y - event.clientY) <= 1)\n ) {\n let isSelectionExtension = false;\n const target = event.target as HTMLElement;\n if (\n onTableSelectionChange != null &&\n !resizeInfoRef.current.ignoreClick &&\n !getIsSelectionPending()\n ) {\n if (activeCell != null && event.shiftKey) {\n isSelectionExtension = handleRangeSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n target,\n activeCell,\n onActiveCellChanged,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected\n );\n }\n if (!isSelectionExtension) {\n handleSelectionGesture(\n rootElement,\n tableId,\n columnsArray,\n target,\n isLogicalCtrl(event) || selectionTouchRef.current,\n onTableSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected\n );\n }\n }\n if (\n onRowAction != null &&\n !getIsSelectionPending() &&\n handleRowActionGesture(\n tableId,\n tableData,\n onRowAction,\n target,\n TABLE_ROW_SELECTOR,\n getActionContext\n )\n ) {\n event.stopPropagation();\n }\n }\n }\n resizeInfoRef.current.ignoreClick = false;\n },\n [\n rootRef,\n tableId,\n columnsArray,\n tableData,\n resizeInfoRef,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n ]\n );\n\n return {\n pointerHandlingProps: {\n onPointerOver: _pointerOverHandler,\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler,\n onPointerUp: _pointerUpHandler,\n onPointerLeave: _pointerLeaveHandler,\n onPointerEnter: _pointerEnterHandler,\n onClick: _clickHandler\n },\n hoverStyleColumnInfo\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport type { ForwardedRef } from 'preact/compat';\nimport type { MutableRef } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n CellOverride,\n ColumnResizeDetail,\n ColumnResizingDetail,\n CurrentCellDetail,\n RowActionDetail,\n SortCriterionDetail,\n TableContextMenuConfig,\n TableHorizontalScrollPosition,\n TableSelectionDetail,\n TableSelectionMode,\n TableVerticalScrollPosition,\n TableViewHandle\n} from '#UNSAFE_TableView';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n ActiveCell,\n AppliedColumnWidths,\n ColumnHeaderFooterInfo,\n ColumnResizeInfo,\n OverflowInfo,\n SizingInfo,\n StickyColumnInfo,\n TableColumn,\n ViewportInfo\n} from '../Table';\n\nimport { useImperativeHandle, useMemo, useRef, useState } from 'preact/hooks';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\nimport { useContextMenu } from './useContextMenu';\nimport { useTruncationTooltip } from './useTruncationTooltip';\nimport { useFocusHandling } from './useFocusHandling';\nimport { useKeyboardHandling } from './useKeyboardHandling';\nimport { usePointerHandling } from './usePointerHandling';\nimport { useScrollHandling } from './useScrollHandling';\nimport { getElementFromCell } from '../utils/TableDomUtils';\nimport { getHorizontalScrollPosition, getVerticalScrollPosition } from '../utils/TableScrollUtils';\n\ntype UseInteractionManagerOptions<K, D, C extends string> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n ref?: ForwardedRef<TableViewHandle<K, C>>;\n tableId: string;\n tableData: CollectionData<K, D>[];\n hasMore: boolean;\n hasFooters: boolean;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n stickyColumnInfo: StickyColumnInfo;\n appliedColumnWidths?: AppliedColumnWidths<C>;\n isLayoutRequired: boolean;\n sizingInfoRef: MutableRef<SizingInfo>;\n overflowInfoRef: MutableRef<OverflowInfo>;\n stickyEdgesState: { start?: number; end?: number };\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void;\n cellHasRenderer: (cell: ActiveCell<K, C>) => boolean;\n horizontalScrollPositionOverride?: TableHorizontalScrollPosition<C>;\n verticalScrollPositionOverride?: TableVerticalScrollPosition<K>;\n onColumnResizing?: (detail: ColumnResizingDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n currentCellOverride?: CellOverride<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n selectionMode?: TableSelectionMode;\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onSelectionChange?: (detail: TableSelectionDetail<K, C>) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n isPendingLayout: boolean;\n isEmbedded: boolean;\n contextMenuConfig?: TableContextMenuConfig<K, D, C>;\n};\n\nconst _defaultDisabledRowInteractionKeys: ('enter' | 'space')[] = ['enter'];\n\n/**\n * Hook that manages interactions and events on the Preact Table\n */\nexport function useInteractionManager<K extends string | number, D, C extends string>({\n rootRef,\n viewportInfo,\n ref,\n tableId,\n tableData,\n hasMore,\n hasFooters,\n isRtl,\n columnsArray,\n stickyColumnInfo,\n appliedColumnWidths,\n isLayoutRequired,\n sizingInfoRef,\n overflowInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n isPendingLayout,\n isEmbedded,\n contextMenuConfig\n}: UseInteractionManagerOptions<K, D, C>) {\n // tracks the current column resize state\n const resizeInfoRef = useRef<ColumnResizeInfo<C>>({\n isResizing: false,\n isResizeHover: false,\n ignoreClick: false\n });\n\n // tracks the column key for any header or footer being hovered over\n const [activeStyleColumnInfo, setActiveStyleColumnInfo] = useState<ColumnHeaderFooterInfo<C>>();\n\n // handles default tooltip state management\n const { tooltipContent, tooltipId, tooltipAnchorRef, showTooltip, hideTooltip } =\n useTruncationTooltip<K, C>({ rootRef, tableId, resizeInfoRef });\n\n // whether row selection is triggered on 'enter' keypresses in addition to 'spacebar'\n const disabledRowInteractionKeys = isEmbedded ? undefined : _defaultDisabledRowInteractionKeys;\n\n // tracks the current selection extension element (if any)\n const selectionExtensionElementRef = useRef<HTMLElement>();\n\n // intercept onSelectionChange calls to ensure local selectionExtensionElementRef is cleared\n const onTableSelectionChange = useMemo(() => {\n return onSelectionChange != null\n ? (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => {\n if (!isExtendableSelection) {\n selectionExtensionElementRef.current = undefined;\n }\n onSelectionChange(detail);\n }\n : undefined;\n }, [onSelectionChange]);\n\n // setup focus tracking using the useFocusHandling hook\n const {\n focusHandlingProps,\n activeCell,\n onActiveCellChanged,\n currentActiveCell,\n currentCell,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n updateDeferredScrollDetail\n } = useFocusHandling({\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n hasMore,\n hasFooters,\n columnsArray,\n stickyColumnInfo,\n sizingInfoRef,\n overflowInfoRef,\n selectionExtensionElementRef,\n isRtl,\n cellSupportsTabbable: cellHasRenderer,\n appliedColumnWidths,\n currentCellOverride,\n onPersistCurrentCell,\n showTooltip,\n hideTooltip,\n isPendingLayout,\n isEmbedded,\n isDataLoaded: !hasMore || tableData.length > 0\n });\n\n const keyboardHandlingProps = useKeyboardHandling({\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n onTableSelectionChange,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n hideTooltip,\n updateDeferredScrollDetail\n });\n\n const { hoverStyleColumnInfo, pointerHandlingProps } = usePointerHandling({\n rootRef,\n viewportInfo,\n tableId,\n tableData,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n onColumnResizing,\n onColumnResize,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n onTableSelectionChange,\n activeStyleColumnInfo,\n setActiveStyleColumnInfo,\n onRowAction,\n showTooltip,\n hideTooltip,\n tooltipId\n });\n\n const scrollHandlingProps = useScrollHandling({\n rootRef,\n viewportInfo,\n tableId,\n isLayoutRequired,\n sizingInfoRef,\n overflowInfoRef,\n columnsArray,\n stickyColumnInfo,\n stickyEdgesState,\n setStickyEdgesState,\n fullColumnWidths: appliedColumnWidths?.fullColumnWidths,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n tooltipAnchorRef,\n hideTooltip,\n isPendingLayout,\n isRtl\n });\n\n const {\n contextMenuTriggerProps,\n menuProps,\n contextMenuContext,\n isResizeDialogOpen,\n setIsResizeDialogOpen\n } = useContextMenu<K, D, C>(\n rootRef,\n tableId,\n tableData,\n columnsArray,\n contextMenuConfig,\n sortCriterion,\n onSortCriterionChange\n );\n\n const interactionManagerProps = !isPendingLayout\n ? mergeProps(\n focusHandlingProps,\n keyboardHandlingProps,\n pointerHandlingProps,\n contextMenuTriggerProps\n )\n : focusHandlingProps;\n\n // setup imperative handle implementation\n useImperativeHandle(\n ref!,\n () => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n return {\n focus: () => {\n if (rootElement != null) {\n if (currentActiveCell != null) {\n const cellElement = getElementFromCell(rootElement, tableId, currentActiveCell);\n if (cellElement != null) {\n cellElement.focus();\n return;\n }\n }\n // if no current cell element was found, just focus the root element\n rootElement.focus();\n }\n },\n getHorizontalScrollPosition: () => {\n if (\n rootElement == null ||\n scrollerElement == null ||\n isLayoutRequired ||\n appliedColumnWidths == null\n ) {\n return {};\n }\n return getHorizontalScrollPosition<K, D, C>(\n rootElement,\n scrollerElement,\n viewportInfo,\n sizingInfoRef.current,\n overflowInfoRef.current,\n columnsArray,\n appliedColumnWidths.fullColumnWidths,\n isRtl\n );\n },\n getVerticalScrollPosition: () => {\n if (rootElement == null || scrollerElement == null || isLayoutRequired) {\n return {};\n }\n return getVerticalScrollPosition<K>(rootElement, scrollerElement, viewportInfo, tableId);\n }\n };\n },\n [\n rootRef,\n viewportInfo,\n tableId,\n columnsArray,\n currentActiveCell,\n isLayoutRequired,\n appliedColumnWidths,\n sizingInfoRef,\n overflowInfoRef,\n isRtl\n ]\n );\n\n return {\n interactionManagerProps,\n scrollHandlingProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n resizeInfoRef,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n activeStyleColumnInfo,\n hoverStyleColumnInfo,\n tooltipContent,\n contextMenuContext,\n menuProps,\n isResizeDialogOpen,\n setIsResizeDialogOpen,\n disabledRowInteractionKeys\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentChildren, RefObject } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { TableNoDataRendererContext } from '#UNSAFE_TableView';\nimport type { TableNoDataVariantOptions } from './themes/TableNoDataStyles.css';\n\nimport { useLayoutEffect } from 'preact/hooks';\nimport { useComponentTheme } from '#hooks/UNSAFE_useComponentTheme';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { tableRowStyles } from './themes/TableRowStyles.css';\nimport { TableNoDataRedwoodTheme } from './themes/redwood/TableNoDataTheme';\nimport { getNoDataCellElement, getTableBodyElement } from './utils/TableDomUtils';\n\n/**\n * Props for the TableNoData Component\n */\ntype TableNoDataProps = {\n rootRef: RefObject<HTMLDivElement>;\n tableId: string;\n columnsCount: number;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n ariaRowIndex: number;\n renderer?: (context: TableNoDataRendererContext) => ComponentChildren;\n};\n\n/**\n * The internal component used to render an empty table cell in a TableBody.\n */\nexport function TableNoData({\n rootRef,\n tableId,\n columnsCount,\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n ariaRowIndex,\n renderer\n}: TableNoDataProps) {\n const browser = getClientHints().browser;\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const rowClasses = classNames([tableRowStyles.base]);\n\n const { classes: themeClasses } = useComponentTheme<TableNoDataVariantOptions>(\n TableNoDataRedwoodTheme,\n {\n defaultRenderer: renderer == null ? 'isDefaultRenderer' : 'notDefaultRenderer',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n function defaultContentRenderer() {\n return translations.collection_noData();\n }\n\n const contentRenderer = renderer != null ? renderer : defaultContentRenderer;\n\n // in firefox, table element heights are not stretched unless explicitly set in some cases\n useLayoutEffect(() => {\n if (browser === 'firefox') {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n const tableBodyElement = getTableBodyElement(rootElement, tableId);\n const noDataElement = getNoDataCellElement(rootElement, tableId);\n if (tableBodyElement != null && noDataElement != null) {\n noDataElement.style.height = '';\n noDataElement.style.height = `${tableBodyElement.getBoundingClientRect().height}px`;\n }\n }\n }\n });\n\n return (\n <tr aria-rowindex={ariaRowIndex} class={rowClasses} role={'row'}>\n <td\n aria-colindex={1}\n class={cellClasses}\n style={browser !== 'firefox' ? 'height: 100%;' : undefined}\n tabIndex={hasTabIndex ? 0 : -1}\n role={'gridcell'}\n colSpan={columnsCount}\n data-oj-cell-type={'noData'}\n data-oj-table-focusable={tableId}\n data-oj-table-nodata={tableId}>\n {contentRenderer({ isTabbable: isTabbableMode })}\n </td>\n </tr>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { preventBrowserTooltipStyle } from '../themes/Common.css';\n\n// Pointer Enter handler for elements that need to prevent default browser tooltips\nconst _pointerEnterHandler = (event: PointerEvent) => {\n const targetElement = event.target as HTMLElement;\n targetElement.classList.add(preventBrowserTooltipStyle);\n};\n\n// Pointer Leave handler for elements that need to prevent default browser tooltips\nconst _pointerLeaveHandler = (event: PointerEvent) => {\n const targetElement = event.target as HTMLElement;\n targetElement.classList.remove(preventBrowserTooltipStyle);\n};\n\n/*\n * Props that can be spread on elements that need to prevent default browser tooltips\n */\nexport const preventBrowserTooltipProps = {\n onPointerEnter: _pointerEnterHandler,\n onPointerLeave: _pointerLeaveHandler\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentChildren } from 'preact';\nimport type {\n CurrentRowVariant,\n DataCellFocusTarget,\n DataCellPadding,\n DataCellTooltip,\n TableRendererContext,\n TableRowContext\n} from '#UNSAFE_TableView';\n\nimport { FormContext } from '#hooks/UNSAFE_useFormContext';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { preventBrowserTooltipProps } from '#PRIVATE_TableCommon/utils/TooltipUtils';\nimport { getDataCellClassArray, getFormTextAlign } from './utils/TableThemeUtils';\n\n/**\n * Props for the TableCell Component\n */\ntype TableCellProps<K, D, C> = {\n tableId: string;\n rowData: D;\n columnKey: C;\n columnIndex: number;\n rowKey: K;\n rowIndex: number;\n isFinalRowIndex: boolean;\n isFinalColumnIndex: boolean;\n isFirstLogicalColumnIndex: boolean;\n isFinalLogicalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n hasFooters: boolean;\n hasVerticalUnderflow: boolean;\n hasMore: boolean;\n isRowSelected: boolean;\n isPreviousRowSelected: boolean;\n isColumnSelected: boolean;\n isNextColumnSelected: boolean;\n isPreviousColumnSelected: boolean;\n isSticky: boolean;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n hasStartEdge: boolean;\n hasEndEdge: boolean;\n isRtl: boolean;\n isHighContrast: boolean;\n isAccRowHeader: boolean;\n isRowSelectionEnabled: boolean;\n isRowSingleSelection: boolean;\n applyActiveStyle: boolean;\n applyHoverStyle: boolean;\n applyPseudoHoverStyle: boolean;\n field?: keyof D;\n focusTarget?: DataCellFocusTarget<K, D>;\n renderer?: (context: TableRendererContext<K, D, C>) => ComponentChildren;\n selectorRenderer?: () => ComponentChildren;\n variant?: CurrentRowVariant;\n padding?: DataCellPadding<K, D>;\n tooltip?: DataCellTooltip<K, D>;\n horizontalAlignment?: 'start' | 'end' | 'left' | 'right' | 'center';\n verticalAlignment?: 'top' | 'center' | 'bottom';\n};\n\nfunction _defaultCellRenderer<K, D, C>({ rowData, field }: TableRendererContext<K, D, C>) {\n return field != null ? String(rowData[field]) : undefined;\n}\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableCell<K, D, C>({\n tableId,\n rowData,\n field,\n columnKey,\n columnIndex,\n rowKey,\n rowIndex,\n isFinalRowIndex,\n isFinalColumnIndex,\n isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasFooters,\n hasVerticalUnderflow,\n hasMore,\n isRowSelected,\n isPreviousRowSelected,\n isColumnSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n isAccRowHeader,\n focusTarget = 'cell',\n renderer = _defaultCellRenderer,\n selectorRenderer,\n isRowSelectionEnabled,\n isRowSingleSelection,\n variant,\n applyActiveStyle,\n applyHoverStyle,\n applyPseudoHoverStyle,\n isStickyStartEdge,\n isStickyEndEdge,\n hasStartEdge,\n hasEndEdge,\n isRtl,\n isHighContrast,\n padding,\n tooltip,\n horizontalAlignment = 'start',\n verticalAlignment = 'center'\n}: TableCellProps<K, D, C>) {\n const browser = getClientHints().browser;\n\n const rowContext: TableRowContext<K, D> = { key: rowKey, data: rowData };\n const columnPadding = typeof padding === 'function' ? padding(rowContext) : padding;\n const columnTooltip = typeof tooltip === 'function' ? tooltip(rowContext) : tooltip;\n const supportsDefaultTooltip = columnTooltip !== 'disabled';\n const hasLastHorizontalGridline =\n hasHorizontalGridlines && (hasMore || hasVerticalUnderflow || !hasFooters);\n\n const cellClasses = classNames(\n getDataCellClassArray({\n isFirstColumnIndex: columnIndex === 0 || isFirstLogicalColumnIndex,\n isFinalColumnIndex: isFinalColumnIndex || isFinalLogicalColumnIndex,\n isFirstRowIndex: rowIndex === 0,\n isFinalRowIndex,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasLastHorizontalGridline,\n isRowSelected,\n isPreviousRowSelected,\n isColumnSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n hasStartEdge,\n hasEndEdge,\n isShowFocusRing,\n isRowSelectionEnabled,\n isRowSingleSelection,\n isActive: applyActiveStyle,\n isHover: applyHoverStyle,\n isPseudoHover: applyPseudoHoverStyle,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl,\n isHighContrast,\n horizontalAlignment,\n verticalAlignment,\n variant,\n padding: columnPadding\n })\n );\n\n const cellRendererProps = {\n rowData: rowData,\n rowKey: rowKey,\n field: field,\n columnKey: columnKey,\n selector: selectorRenderer,\n isTabbable: isTabbableMode\n };\n\n const supportsAutoFocus =\n typeof focusTarget === 'function'\n ? focusTarget(rowContext) === 'content'\n : focusTarget === 'content';\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n class={cellClasses}\n tabIndex={hasTabIndex ? 0 : -1}\n role={isAccRowHeader ? 'rowheader' : 'gridcell'}\n data-oj-cell-type={'data'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-data={tableId}\n data-oj-table-tooltip={supportsDefaultTooltip ? 'enabled' : undefined}\n data-oj-table-auto-focus={supportsAutoFocus ? 'enabled' : undefined}\n {...(supportsDefaultTooltip && browser === 'safari' ? preventBrowserTooltipProps : {})}\n {...(isColumnSelected ? { 'aria-selected': true } : {})}>\n <FormContext.Provider value={{ textAlign: getFormTextAlign(horizontalAlignment, isRtl) }}>\n {renderer(cellRendererProps)}\n </FormContext.Provider>\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { SelectionDetail } from '#UNSAFE_Collection';\nimport type { CurrentRowVariant, TableSelectionDetail } from '#UNSAFE_TableView';\nimport type { TableColumn } from './Table';\n\nimport { memo } from 'preact/compat';\nimport { useInteractionStyle } from '#hooks/UNSAFE_useInteractionStyle';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { containsKey, isSameKey } from '#utils/UNSAFE_keys';\nimport { Selector } from '#UNSAFE_Selector';\nimport { tableRowStyles, tableRowStylesHC } from './themes/TableRowStyles.css';\nimport { TableCell } from './TableCell';\n\n/**\n * Props for the TableRow Component\n */\ntype TableRowProps<K extends string | number, D, C extends string> = {\n tableId: string;\n rowKey: K;\n rowData: D;\n rowIndex: number;\n isFinalRow: boolean;\n columnsArray: TableColumn<K, D, C>[];\n rowHeaderColumnKeys: Set<C>;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n hasFooters: boolean;\n hasVerticalUnderflow: boolean;\n hasMore: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n isRtl: boolean;\n isHighContrast: boolean;\n selectedRowKeys?: Keys<K>;\n isShowFocusRing: boolean;\n activeColumnKey?: C;\n isTabbableMode: boolean;\n selectedColumnKeys?: Keys<C>;\n variant?: CurrentRowVariant;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n startStickyEdge?: number;\n endStickyEdge?: number;\n firstStickyColumnIndex?: number;\n finalStickyColumnIndex?: number;\n columnBorderEdges: { hasStart: boolean; hasEnd: boolean; width: number }[];\n disabledInteractionKeys?: ('enter' | 'space')[];\n};\n\n/**\n * The internal component used to render a single row in Table.\n */\nfunction TableRow<K extends string | number, D, C extends string>({\n tableId,\n rowKey,\n rowData,\n rowIndex,\n isFinalRow,\n columnsArray,\n rowHeaderColumnKeys,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasFooters,\n hasVerticalUnderflow,\n hasMore,\n isSelected,\n isPreviousSelected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n selectedRowKeys = { all: false, keys: new Set<K>() },\n isShowFocusRing,\n activeColumnKey,\n isTabbableMode,\n selectedColumnKeys = { all: false, keys: new Set<C>() },\n variant,\n disabledInteractionKeys,\n onSelectionChange,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex,\n finalStickyColumnIndex,\n columnBorderEdges,\n isRtl,\n isHighContrast\n}: TableRowProps<K, D, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle({ disabledKeys: disabledInteractionKeys });\n\n const rowStyles = isHighContrast ? tableRowStylesHC : tableRowStyles;\n const classArray = [rowStyles.base, isFinalRow ? rowStyles.lastRowHeight : rowStyles.rowHeight];\n const classes = classNames(classArray);\n\n const accessibleRowName = (rowIndex + 2).toString();\n const handleRowSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n {\n value: {\n row: detail.value,\n column: { all: false, keys: new Set<C>() }\n },\n target: detail.target\n },\n false\n );\n }\n };\n const selectorRenderer =\n isRowSelectionEnabled && !isSingleRowSelectionEnabled\n ? () => {\n // conversion from 0-based index and adding the header row as it is always rendered\n return (\n <Selector\n aria-label={translations.collection_selectRow({ ROW_NAME: accessibleRowName })}\n onChange={handleRowSelectorChange}\n rowKey={rowKey}\n selectedKeys={selectedRowKeys}\n />\n );\n }\n : undefined;\n\n let isPreviousColumnSelected = false;\n let isPreviousStickyColumnSelected = false;\n return (\n <tr\n aria-rowindex={rowIndex + 2}\n class={classes}\n role={'row'}\n key={rowKey}\n data-oj-key={rowKey}\n data-oj-table-row={tableId}\n {...(isRowSelectionEnabled\n ? isSelected\n ? { 'aria-selected': true }\n : { 'aria-selected': false }\n : {})}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(isRowSelectionEnabled && interactionProps)}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isColumnSelected = containsKey(selectedColumnKeys, columnKey);\n const isActive = columnKey === activeColumnKey;\n const hasTabIndex = isActive && !isTabbableMode;\n const isSticky = column.value.sticky === 'enabled';\n let nextVisibleColumn;\n let isNextVisibleColumnSelected = false;\n let isPreviousVisibleColumnSelected = false;\n let isFirstLogicalColumnIndex = false;\n let isFinalLogicalColumnIndex = false;\n if (isSticky) {\n if (startStickyEdge != null && firstStickyColumnIndex === columnIndex) {\n isFirstLogicalColumnIndex = true;\n }\n if (endStickyEdge != null && finalStickyColumnIndex === columnIndex) {\n isFinalLogicalColumnIndex = true;\n }\n if (\n (startStickyEdge != null && startStickyEdge > columnIndex) ||\n (endStickyEdge != null && endStickyEdge <= columnIndex)\n ) {\n for (let i = columnIndex + 1; i < columnsArray.length; i++) {\n if (columnsArray[i].value.sticky === 'enabled') {\n nextVisibleColumn = columnsArray[i];\n break;\n }\n }\n } else {\n nextVisibleColumn =\n columnIndex < columnsArray.length - 1 ? columnsArray[columnIndex + 1] : undefined;\n }\n isNextVisibleColumnSelected =\n startStickyEdge === columnIndex\n ? false\n : nextVisibleColumn != null && containsKey(selectedColumnKeys, nextVisibleColumn.key);\n if (\n (startStickyEdge != null && startStickyEdge >= columnIndex) ||\n (endStickyEdge != null && endStickyEdge < columnIndex)\n ) {\n isPreviousVisibleColumnSelected = isPreviousStickyColumnSelected;\n } else if (endStickyEdge !== columnIndex) {\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n } else {\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n const cellProps = {\n tableId: tableId,\n rowData: rowData,\n field: column.value.field,\n stickyColumn: column.value.sticky,\n columnKey: columnKey,\n columnIndex: columnIndex,\n rowKey: rowKey,\n rowIndex: rowIndex,\n isFinalRowIndex: isFinalRow,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n isFirstLogicalColumnIndex: isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex: isFinalLogicalColumnIndex,\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n hasFooters: hasFooters,\n hasVerticalUnderflow: hasVerticalUnderflow,\n hasMore: hasMore,\n isRowSelected: isSelected,\n isPreviousRowSelected: isPreviousSelected,\n isSticky: isSticky,\n isColumnSelected: isColumnSelected,\n isNextColumnSelected: isNextVisibleColumnSelected,\n isPreviousColumnSelected: isPreviousVisibleColumnSelected,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex: hasTabIndex,\n isTabbableMode: isTabbableMode,\n isAccRowHeader: rowHeaderColumnKeys.has(column.key),\n renderer: column.value.renderer,\n selectorRenderer: selectorRenderer,\n isRowSelectionEnabled: isRowSelectionEnabled,\n variant: variant,\n isRowSingleSelection: isSingleRowSelectionEnabled,\n applyActiveStyle: applyActiveStyle,\n applyHoverStyle: applyHoverStyle,\n applyPseudoHoverStyle: applyPseudoHoverStyle,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n hasStartEdge: columnBorderEdges[columnIndex].hasStart,\n hasEndEdge: columnBorderEdges[columnIndex].hasEnd,\n isRtl: isRtl,\n isHighContrast: isHighContrast,\n padding: column.value.padding,\n tooltip: column.value.tooltip,\n focusTarget: column.value.focusTarget,\n horizontalAlignment:\n column.value.alignment?.horizontal != null\n ? column.value.alignment.horizontal\n : column.value.horizontalAlignment,\n verticalAlignment: column.value.alignment?.vertical\n };\n isPreviousColumnSelected = isColumnSelected;\n if (isSticky) {\n isPreviousStickyColumnSelected = isColumnSelected;\n }\n return <TableCell {...cellProps} />;\n })}\n </tr>\n );\n}\n\nconst _areStringSetsEquivalent = (set1?: Set<string>, set2?: Set<string>) => {\n if (set1 == null) {\n return set2 == null;\n }\n if (set2 == null) {\n return false;\n }\n return set1.size === set2.size && [...set1].every((x) => set2.has(x));\n};\n\nconst _areColumnsArraysEquivalent = (\n columnsArray1: TableColumn<string | number, unknown, string>[],\n columnsArray2: TableColumn<string | number, unknown, string>[]\n) => {\n if (columnsArray1.length === columnsArray2.length) {\n for (let i = 0; i < columnsArray1.length; i++) {\n if (\n columnsArray1[i].key !== columnsArray2[i].key ||\n columnsArray1[i].value !== columnsArray2[i].value\n ) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\nexport const MemoizeTableRow = memo(\n TableRow,\n (\n prev: TableRowProps<string | number, unknown, string>,\n next: TableRowProps<string | number, unknown, string>\n ) => {\n if (prev && next) {\n return (\n prev.tableId === next.tableId &&\n prev.rowKey === next.rowKey &&\n prev.rowData === next.rowData &&\n prev.rowIndex === next.rowIndex &&\n prev.isFinalRow === next.isFinalRow &&\n _areColumnsArraysEquivalent(prev.columnsArray, next.columnsArray) &&\n prev.hasHorizontalGridlines === next.hasHorizontalGridlines &&\n prev.hasVerticalGridlines === next.hasVerticalGridlines &&\n (!next.isFinalRow ||\n (prev.hasFooters === next.hasFooters &&\n prev.hasVerticalUnderflow === next.hasVerticalUnderflow &&\n prev.hasMore === next.hasMore)) &&\n _areStringSetsEquivalent(prev.rowHeaderColumnKeys, next.rowHeaderColumnKeys) &&\n prev.isSelected === next.isSelected &&\n prev.isPreviousSelected === next.isPreviousSelected &&\n prev.isRowSelectionEnabled === next.isRowSelectionEnabled &&\n prev.isSingleRowSelectionEnabled === next.isSingleRowSelectionEnabled &&\n (prev.isRowSelectionEnabled && !prev.isSingleRowSelectionEnabled\n ? isSameKey(prev.selectedRowKeys, next.selectedRowKeys)\n : true) &&\n isSameKey(prev.selectedColumnKeys, next.selectedColumnKeys) &&\n prev.isShowFocusRing === next.isShowFocusRing &&\n prev.activeColumnKey === next.activeColumnKey &&\n prev.isTabbableMode === next.isTabbableMode &&\n prev.variant === next.variant &&\n prev.onSelectionChange === next.onSelectionChange &&\n prev.startStickyEdge === next.startStickyEdge &&\n prev.endStickyEdge === next.endStickyEdge &&\n prev.firstStickyColumnIndex === next.firstStickyColumnIndex &&\n prev.finalStickyColumnIndex === next.finalStickyColumnIndex &&\n prev.columnBorderEdges === next.columnBorderEdges &&\n prev.isRtl === next.isRtl &&\n prev.isHighContrast === next.isHighContrast &&\n prev.disabledInteractionKeys === next.disabledInteractionKeys\n );\n }\n return false;\n }\n);\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentChildren, RefObject } from 'preact';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { ItemContext } from '#UNSAFE_Collection';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n CurrentRowVariant,\n TableNoDataRendererContext,\n TableRowContext,\n TableSelectionDetail\n} from '#UNSAFE_TableView';\nimport type { ActiveCell, TableColumn, ViewportInfo } from './Table';\n\nimport { Fragment } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport { containsKey } from '#utils/UNSAFE_keys';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { LoadMoreCollection } from '#PRIVATE_LoadMoreCollection';\nimport { backgroundStyles } from './themes/Table.css';\nimport { TableNoData } from './TableNoData';\nimport { MemoizeTableRow } from './TableRow';\nimport { TableSkeletonRow } from './TableSkeletonRow';\n\n/**\n * Props for the TableBody Component\n */\ntype TableBodyProps<K extends string | number, D, C extends string> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n tableId: string;\n isValidRender: boolean;\n getAccessibleRowHeaders: (context: TableRowContext<K, D>) => Set<C>;\n tableData: CollectionData<K, D>[];\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n hasFooters: boolean;\n hasVerticalUnderflow: boolean;\n isShowFocusRing: boolean;\n isTabbableMode: boolean;\n hasMore: boolean;\n isRtl: boolean;\n isEmbedded: boolean;\n isHighContrast: boolean;\n onLoadMore: () => void;\n activeCell?: ActiveCell<K, C>;\n currentRowKey?: K;\n currentRowVariant?: CurrentRowVariant;\n selected: { row?: Keys<K>; column?: Keys<C> };\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n noDataRenderer?: (context: TableNoDataRendererContext) => ComponentChildren;\n startStickyEdge?: number;\n endStickyEdge?: number;\n firstStickyColumnIndex?: number;\n finalStickyColumnIndex?: number;\n columnBorderEdges: { hasStart: boolean; hasEnd: boolean; width: number }[];\n disabledInteractionKeys?: ('enter' | 'space')[];\n};\n\n/**\n * The internal component used to render the tbody of a Table.\n */\nexport function TableBody<K extends string | number, D, C extends string>({\n rootRef,\n viewportInfo,\n tableId,\n isValidRender,\n getAccessibleRowHeaders,\n tableData,\n columnsArray,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasFooters,\n hasVerticalUnderflow,\n isShowFocusRing,\n isTabbableMode,\n hasMore,\n onLoadMore,\n activeCell,\n currentRowKey,\n currentRowVariant,\n selected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n disabledInteractionKeys,\n onSelectionChange,\n noDataRenderer,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex,\n finalStickyColumnIndex,\n columnBorderEdges,\n isRtl,\n isEmbedded,\n isHighContrast\n}: TableBodyProps<K, D, C>) {\n const browser = getClientHints().browser;\n\n // returns a TableRowContext based on ItemContext (added key)\n const getRowContext = useCallback((context: ItemContext<CollectionData<K, D>>) => {\n return {\n index: context.index,\n data: context.data.data,\n key: context.data.metadata.key\n };\n }, []);\n\n let isPreviousSelected = false;\n const collectionChildrenFunc = (context: ItemContext<CollectionData<K, D>>) => {\n const tableRowContext = getRowContext(context);\n const rowKey = tableRowContext.key;\n const containsActiveCell = activeCell?.rowKey === rowKey;\n const activeColumnKey = containsActiveCell ? activeCell.columnKey : undefined;\n const isSelected = containsKey(selected.row, rowKey);\n const rowProps = {\n tableId,\n columnsArray,\n rowHeaderColumnKeys: getAccessibleRowHeaders(tableRowContext),\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasFooters,\n hasVerticalUnderflow,\n hasMore,\n isSelected,\n isPreviousSelected,\n disabledInteractionKeys,\n onSelectionChange,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n variant: currentRowKey === rowKey ? currentRowVariant : 'none',\n isShowFocusRing: isShowFocusRing && containsActiveCell,\n activeColumnKey,\n isTabbableMode,\n selectedRowKeys: selected.row,\n selectedColumnKeys: selected.column,\n rowIndex: tableRowContext.index,\n rowKey,\n rowData: tableRowContext.data,\n isFinalRow: tableRowContext.index === tableData.length - 1,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex: firstStickyColumnIndex,\n finalStickyColumnIndex: finalStickyColumnIndex,\n columnBorderEdges,\n isRtl,\n isHighContrast\n };\n isPreviousSelected = isSelected;\n return <MemoizeTableRow {...rowProps} />;\n };\n\n const getNoDataProps = () => {\n const isActive = activeCell?.type === 'noData';\n const hasTabIndex = isActive && !isTabbableMode;\n return {\n rootRef,\n tableId,\n columnsCount: columnsArray.length,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex,\n isTabbableMode,\n ariaRowIndex: isValidRender ? 2 : 1,\n renderer: isValidRender ? noDataRenderer : undefined\n };\n };\n\n const isShowEmptyLoading = tableData.length === 0 && hasMore;\n const isShowNoData = tableData.length === 0 && !hasMore;\n\n return (\n <tbody class={backgroundStyles.inherit} role={'presentation'} data-oj-table-body={tableId}>\n {isShowNoData || !isValidRender ? (\n <TableNoData {...getNoDataProps()} />\n ) : (\n <Fragment>\n <LoadMoreCollection<CollectionData<K, D>>\n data={tableData}\n loadMoreIndicator={\n <TableSkeletonRow\n tableId={tableId}\n hasTabIndex={\n isShowEmptyLoading\n ? activeCell?.type === 'loading'\n : activeCell?.type === 'loadMore'\n }\n colspan={columnsArray.length}\n isLoadMore={!isShowEmptyLoading}\n isShowFocusRing={\n isShowFocusRing &&\n (isShowEmptyLoading\n ? activeCell?.type === 'loading'\n : activeCell?.type === 'loadMore')\n }\n isEmbedded={isEmbedded}\n isHighContrast={isHighContrast}\n />\n }\n hasMore={hasMore}\n onLoadMore={onLoadMore}\n viewportConfig={viewportInfo.viewportConfig}>\n {collectionChildrenFunc}\n </LoadMoreCollection>\n <tr\n style={browser !== 'firefox' ? 'height: 100%;' : undefined}\n role={'presentation'}\n data-oj-table-spacer={tableId}\n />\n </Fragment>\n )}\n </tbody>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { tableDragIndicatorStyles } from './themes/Table.css';\n\n/**\n * Props for the TableDragIndicator Component\n */\ntype TableDragIndicatorProps = {\n isRtl: boolean;\n position?: number;\n height?: number;\n};\n\n/**\n * The internal component used to render a drag indicator line in the Table.\n */\nexport function TableDragIndicator({ position, isRtl, height }: TableDragIndicatorProps) {\n const tableDragIndicatorClasses = classNames([tableDragIndicatorStyles.base]);\n\n const getDragIndicatorStyle = () => {\n const heightString = height != null ? `height:${height}px;` : '';\n if (position != null) {\n return isRtl\n ? `right:${position}px;cursor:col-resize;${heightString}`\n : `left:${position}px;cursor:col-resize;${heightString}`;\n }\n return `display:none;`;\n };\n\n return <div class={tableDragIndicatorClasses} style={getDragIndicatorStyle()} />;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentChildren } from 'preact';\nimport type { CellPadding, TableFooterRendererContext } from '#UNSAFE_TableView';\n\nimport { FormContext } from '#hooks/UNSAFE_useFormContext';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { preventBrowserTooltipProps } from '#PRIVATE_TableCommon/utils/TooltipUtils';\nimport { getFormTextAlign, getHeaderFooterCellClassArray } from './utils/TableThemeUtils';\n\n/**\n * Props for the TableFooterCell Component\n */\ntype TableFooterCellProps<C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n isFirstLogicalColumnIndex: boolean;\n isFinalLogicalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isNextColumnSelected: boolean;\n isPreviousColumnSelected: boolean;\n isSticky: boolean;\n isColumnSelectable: boolean;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n hasStartEdge: boolean;\n hasEndEdge: boolean;\n isActiveStyle: boolean;\n isHoverStyle: boolean;\n isPreviousCellActiveStyle: boolean;\n isPreviousCellHoverStyle: boolean;\n isRtl: boolean;\n isHighContrast: boolean;\n footerText?: string;\n stickyBottomOffset?: number;\n focusTarget?: 'cell' | 'content';\n renderer?: (context: TableFooterRendererContext<C>) => ComponentChildren;\n padding?: CellPadding;\n tooltip?: 'enabled' | 'disabled';\n horizontalAlignment?: 'start' | 'end' | 'left' | 'right' | 'center';\n verticalAlignment?: 'top' | 'center' | 'bottom';\n};\n\nfunction _defaultFooterCellRenderer<C>({ footerText }: TableFooterRendererContext<C>) {\n return footerText != null ? footerText : undefined;\n}\n\n/**\n * The internal component used to render a single cell in a TableFooterRow.\n */\nexport function TableFooterCell<C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n isColumnSelectable,\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n stickyBottomOffset = 0,\n focusTarget = 'cell',\n footerText,\n renderer = _defaultFooterCellRenderer,\n isStickyStartEdge,\n isStickyEndEdge,\n hasStartEdge,\n hasEndEdge,\n isActiveStyle,\n isHoverStyle,\n isPreviousCellActiveStyle,\n isPreviousCellHoverStyle,\n isRtl,\n isHighContrast,\n padding,\n tooltip,\n horizontalAlignment = 'start',\n verticalAlignment = 'center'\n}: TableFooterCellProps<C>) {\n const browser = getClientHints().browser;\n const supportsDefaultTooltip = tooltip !== 'disabled';\n const supportsAutoFocus = focusTarget === 'content';\n\n const cellClasses = classNames(\n getHeaderFooterCellClassArray({\n isHeader: false,\n isActiveStyle,\n isHoverStyle,\n isPreviousCellActiveStyle,\n isPreviousCellHoverStyle,\n isFirstColumnIndex: columnIndex === 0 || isFirstLogicalColumnIndex,\n isFinalColumnIndex: isFinalColumnIndex || isFinalLogicalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n hasStartEdge,\n hasEndEdge,\n isShowFocusRing,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl,\n horizontalAlignment,\n verticalAlignment,\n isHighContrast,\n padding\n })\n );\n\n const footerCellRendererProps = {\n key: columnKey,\n footerText: footerText,\n isTabbable: isTabbableMode\n };\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n {...(isSelected\n ? { 'aria-selected': true }\n : isColumnSelectable\n ? { 'aria-selected': false }\n : {})}\n class={cellClasses}\n style={`bottom:${stickyBottomOffset}px;`}\n tabIndex={hasTabIndex ? 0 : -1}\n role={'gridcell'}\n data-oj-cell-type={'footer'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-footer={tableId}\n data-oj-table-tooltip={supportsDefaultTooltip ? 'enabled' : undefined}\n data-oj-table-auto-focus={supportsAutoFocus ? 'enabled' : undefined}\n {...(supportsDefaultTooltip && browser === 'safari' ? preventBrowserTooltipProps : {})}>\n <FormContext.Provider value={{ textAlign: getFormTextAlign(horizontalAlignment, isRtl) }}>\n {renderer(footerCellRendererProps)}\n </FormContext.Provider>\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { TableColumn } from './Table';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { containsKey } from '#utils/UNSAFE_keys';\nimport { backgroundStyles, tableFooterRowStyles } from './themes/Table.css';\nimport { TableFooterCell } from './TableFooterCell';\n\n/**\n * Props for the TableFooter Component\n */\ntype TableFooterProps<K, D, C> = {\n tableId: string;\n isRendered: boolean;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n activeKey?: C;\n isTabbableMode: boolean;\n isShowFocusRing: boolean;\n isRtl: boolean;\n isHighContrast: boolean;\n selectedColumnKeys?: Keys<C>;\n isColumnSelectionEnabled: boolean;\n activeStyleKey?: C;\n hoverStyleKey?: C;\n stickyBottomOffset?: number;\n startStickyEdge?: number;\n endStickyEdge?: number;\n firstStickyColumnIndex?: number;\n finalStickyColumnIndex?: number;\n columnBorderEdges: { hasStart: boolean; hasEnd: boolean; width: number }[];\n dataRowCount: number;\n};\n\n/**\n * The internal component used to render a footer region in Table.\n */\nexport function TableFooter<K, D, C>({\n tableId,\n isRendered,\n columnsArray,\n hasVerticalGridlines,\n activeKey,\n isTabbableMode,\n isShowFocusRing,\n selectedColumnKeys,\n isColumnSelectionEnabled,\n activeStyleKey,\n hoverStyleKey,\n stickyBottomOffset,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex,\n finalStickyColumnIndex,\n columnBorderEdges,\n dataRowCount,\n isRtl,\n isHighContrast\n}: TableFooterProps<K, D, C>) {\n const rowClasses = classNames([tableFooterRowStyles.base]);\n\n let previousColumnKey: C | undefined;\n let previousStickyColumnKey: C | undefined;\n let isPreviousSelectable = false;\n let isPreviousStickySelectable = false;\n let isPreviousColumnSelected = false;\n let isPreviousStickyColumnSelected = false;\n return isRendered ? (\n <tfoot class={backgroundStyles.inherit} role={'presentation'}>\n <tr\n aria-rowindex={Math.max(dataRowCount, 1) + 2}\n class={rowClasses}\n role={'row'}\n data-oj-table-footer-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isSticky = column.value.sticky === 'enabled';\n const isSelectable = isColumnSelectionEnabled && column.value.selectable !== 'disabled';\n const isSelected = containsKey(selectedColumnKeys, columnKey);\n const isActive = columnKey === activeKey;\n const hasTabIndex = isActive && !isTabbableMode;\n let previousVisibleColumnKey;\n let isPreviousVisibleColumnSelectable = false;\n let isPreviousVisibleColumnSelected = false;\n let nextVisibleColumn;\n let isNextVisibleColumnSelected = false;\n let isFirstLogicalColumnIndex = false;\n let isFinalLogicalColumnIndex = false;\n if (isSticky) {\n if (startStickyEdge != null && firstStickyColumnIndex === columnIndex) {\n isFirstLogicalColumnIndex = true;\n }\n if (endStickyEdge != null && finalStickyColumnIndex === columnIndex) {\n isFinalLogicalColumnIndex = true;\n }\n if (\n (startStickyEdge != null && startStickyEdge > columnIndex) ||\n (endStickyEdge != null && endStickyEdge <= columnIndex)\n ) {\n for (let i = columnIndex + 1; i < columnsArray.length; i++) {\n if (columnsArray[i].value.sticky === 'enabled') {\n nextVisibleColumn = columnsArray[i];\n break;\n }\n }\n } else {\n nextVisibleColumn =\n columnIndex < columnsArray.length - 1 ? columnsArray[columnIndex + 1] : undefined;\n }\n isNextVisibleColumnSelected =\n startStickyEdge === columnIndex\n ? false\n : nextVisibleColumn != null &&\n containsKey(selectedColumnKeys, nextVisibleColumn.key);\n if (\n (startStickyEdge != null && startStickyEdge >= columnIndex) ||\n (endStickyEdge != null && endStickyEdge < columnIndex)\n ) {\n previousVisibleColumnKey = previousStickyColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousStickySelectable;\n isPreviousVisibleColumnSelected = isPreviousStickyColumnSelected;\n } else if (endStickyEdge !== columnIndex) {\n previousVisibleColumnKey = previousColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousSelectable;\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n } else {\n previousVisibleColumnKey = previousColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousSelectable;\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n const footerCellProps = {\n tableId: tableId,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n isFirstLogicalColumnIndex: isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex: isFinalLogicalColumnIndex,\n hasVerticalGridlines: hasVerticalGridlines,\n stickyBottomOffset: stickyBottomOffset,\n isSticky: isSticky,\n isSelected: isSelected,\n isNextColumnSelected: isNextVisibleColumnSelected,\n isPreviousColumnSelected: isPreviousVisibleColumnSelected,\n hasStartEdge: columnBorderEdges[columnIndex].hasStart,\n hasEndEdge: columnBorderEdges[columnIndex].hasEnd,\n isColumnSelectable: isSelectable,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex: hasTabIndex,\n isTabbableMode: isTabbableMode,\n footerText: column.value.footerText,\n renderer: column.value.footerRenderer,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isActiveStyle: isSelectable && activeStyleKey === columnKey,\n isHoverStyle: isSelectable && hoverStyleKey === columnKey,\n isPreviousCellActiveStyle:\n activeStyleKey != null &&\n activeStyleKey === previousVisibleColumnKey &&\n isPreviousVisibleColumnSelectable,\n isPreviousCellHoverStyle:\n hoverStyleKey != null &&\n hoverStyleKey === previousVisibleColumnKey &&\n isPreviousVisibleColumnSelectable,\n isRtl: isRtl,\n isHighContrast: isHighContrast,\n padding: column.value.footerPadding,\n tooltip: column.value.footerTooltip,\n focusTarget: column.value.footerFocusTarget,\n horizontalAlignment:\n column.value.footerAlignment?.horizontal != null\n ? column.value.footerAlignment.horizontal\n : column.value.horizontalAlignment,\n verticalAlignment: column.value.footerAlignment?.vertical\n };\n previousColumnKey = columnKey;\n isPreviousSelectable = isSelectable;\n isPreviousColumnSelected = isSelected;\n if (isSticky) {\n previousStickyColumnKey = columnKey;\n isPreviousStickySelectable = isSelectable;\n isPreviousStickyColumnSelected = isSelected;\n }\n return <TableFooterCell {...footerCellProps} />;\n })}\n </tr>\n </tfoot>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { ComponentChildren } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { SelectionDetail } from '#UNSAFE_Collection';\nimport type {\n CellPadding,\n SortCriterionDetail,\n TableHeaderRendererContext,\n TableSelectionDetail\n} from '#UNSAFE_TableView';\n\nimport { useCallback } from 'preact/hooks';\nimport { FormContext } from '#hooks/UNSAFE_useFormContext';\nimport { SortableContext } from '#hooks/UNSAFE_useSortableContext';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { isSameKey } from '#utils/UNSAFE_keys';\nimport { SelectorAll } from '#UNSAFE_SelectorAll';\nimport { SortControl } from '#UNSAFE_SortControl';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { justifyContentStyles } from '#PRIVATE_TableCommon/themes/Common.css';\nimport { preventBrowserTooltipProps } from '#PRIVATE_TableCommon/utils/TooltipUtils';\nimport { tableHeaderCellTextStyles, tableHeaderSortContainerStyles } from './themes/Table.css';\nimport { tableHeaderCellStyles } from './themes/TableHeaderCellStyles.css';\nimport { getFormTextAlign, getHeaderFooterCellClassArray } from './utils/TableThemeUtils';\n\n/**\n * Props for the TableHeaderCell Component\n */\ntype TableHeaderCellProps<K, C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n isFirstLogicalColumnIndex: boolean;\n isFinalLogicalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isNextColumnSelected: boolean;\n isPreviousColumnSelected: boolean;\n isSticky: boolean;\n isColumnSelectable: boolean;\n isRowSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n isAccColumnHeader: boolean;\n isHighContrast: boolean;\n headerText?: string;\n selectedRowKeys?: Keys<K>;\n stickyTopOffset?: number;\n hasStartEdge: boolean;\n hasEndEdge: boolean;\n isActiveStyle: boolean;\n isHoverStyle: boolean;\n isPreviousCellActiveStyle: boolean;\n isPreviousCellHoverStyle: boolean;\n focusTarget?: 'cell' | 'content';\n renderer?: (context: TableHeaderRendererContext<C>) => ComponentChildren;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n isShowSortIcon: boolean;\n sortable?: 'enabled' | 'disabled';\n sortDirection?: 'ascending' | 'descending' | 'unsorted';\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n padding?: CellPadding;\n tooltip?: 'enabled' | 'disabled';\n horizontalAlignment?: 'start' | 'end' | 'left' | 'right' | 'center';\n verticalAlignment?: 'top' | 'center' | 'bottom';\n};\n\n/**\n * The internal component used to render a single cell in a TableHeaderRow.\n */\nexport function TableHeaderCell<K, C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n isColumnSelectable,\n isRowSelectionEnabled,\n selectedRowKeys = { all: false, keys: new Set<K>() },\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n headerText,\n stickyTopOffset = 0,\n focusTarget = 'cell',\n renderer,\n onSelectionChange,\n isShowSortIcon,\n sortable = 'disabled',\n sortDirection = 'unsorted',\n onSortCriterionChange,\n isStickyStartEdge,\n isStickyEndEdge,\n hasStartEdge,\n hasEndEdge,\n isActiveStyle,\n isHoverStyle,\n isPreviousCellActiveStyle,\n isPreviousCellHoverStyle,\n isRtl,\n isAccColumnHeader,\n isHighContrast,\n padding,\n tooltip,\n horizontalAlignment = 'start',\n verticalAlignment = 'center'\n}: TableHeaderCellProps<K, C>) {\n const browser = getClientHints().browser;\n const supportsDefaultTooltip = tooltip !== 'disabled';\n const supportsAutoFocus = focusTarget === 'content';\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const cellClasses = classNames(\n getHeaderFooterCellClassArray({\n isHeader: true,\n isActiveStyle,\n isHoverStyle,\n isPreviousCellActiveStyle,\n isPreviousCellHoverStyle,\n isFirstColumnIndex: columnIndex === 0 || isFirstLogicalColumnIndex,\n isFinalColumnIndex: isFinalColumnIndex || isFinalLogicalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isNextColumnSelected,\n isPreviousColumnSelected,\n isSticky,\n isShowFocusRing,\n isStickyStartEdge,\n isStickyEndEdge,\n hasStartEdge,\n hasEndEdge,\n isRtl,\n horizontalAlignment,\n verticalAlignment,\n isHighContrast,\n padding\n })\n );\n\n let selectorAllState: 'all' | 'none' | 'partial' | 'partial-all';\n if (isSameKey(selectedRowKeys, { all: true, deletedKeys: new Set<K>() })) {\n selectorAllState = 'all';\n } else if (isSameKey(selectedRowKeys, { all: false, keys: new Set<K>() })) {\n selectorAllState = 'none';\n } else {\n selectorAllState = 'partial';\n }\n\n const handleSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n {\n value: {\n row: detail.value,\n column: { all: false, keys: new Set<C>() }\n },\n target: detail.target\n },\n false\n );\n }\n };\n\n const selectorRenderer = isRowSelectionEnabled\n ? () => (\n <SelectorAll\n aria-label={translations.collection_selectAllRows()}\n onChange={handleSelectorChange}\n selected={selectorAllState}\n />\n )\n : undefined;\n\n const handleSortGesture = useCallback(() => {\n if (onSortCriterionChange != null) {\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n }\n }, [columnKey, sortDirection, onSortCriterionChange]);\n\n const headerCellRendererProps = {\n key: columnKey,\n headerText: headerText,\n sortable: sortable,\n sortDirection: sortDirection,\n selector: selectorRenderer,\n isTabbable: isTabbableMode\n };\n\n const getHeaderCellRenderer = useCallback(() => {\n if (renderer != null) {\n return renderer;\n }\n return ({ headerText, sortable, sortDirection }: TableHeaderRendererContext<C>) => {\n const text =\n headerText != null ? (\n <div class={tableHeaderCellTextStyles.base}>\n <span class={tableHeaderCellStyles.defaultRendererSpan}>{headerText}</span>\n </div>\n ) : undefined;\n if (sortable === 'enabled' || sortDirection !== 'unsorted') {\n const isIconFirst =\n horizontalAlignment === 'end' ||\n (!isRtl && horizontalAlignment === 'right') ||\n (isRtl && horizontalAlignment === 'left');\n\n const containerClasses = classNames([\n tableHeaderSortContainerStyles.base,\n justifyContentStyles[horizontalAlignment]\n ]);\n return (\n <div class={containerClasses}>\n {isIconFirst && <SortControl />}\n {text}\n {!isIconFirst && <SortControl />}\n </div>\n );\n }\n return text;\n };\n }, [renderer, horizontalAlignment, isRtl]);\n\n const getAriaSelected = () => {\n if (isSelected) {\n return { 'aria-selected': true };\n }\n return isColumnSelectable ? { 'aria-selected': false } : undefined;\n };\n\n const getAriaSort = () => {\n if (sortDirection === 'ascending' || sortDirection === 'descending') {\n return { 'aria-sort': sortDirection };\n }\n return undefined;\n };\n\n return (\n <SortableContext.Provider\n value={{ isRendered: isShowSortIcon, sortable, sortDirection, onSort: handleSortGesture }}>\n <th\n aria-colindex={columnIndex + 1}\n {...getAriaSelected()}\n {...getAriaSort()}\n class={cellClasses}\n style={`top:${stickyTopOffset}px;`}\n tabIndex={hasTabIndex ? 0 : -1}\n role={isAccColumnHeader ? 'columnheader' : 'gridcell'}\n data-oj-cell-type={'header'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-header={tableId}\n data-oj-table-tooltip={supportsDefaultTooltip ? 'enabled' : undefined}\n data-oj-table-auto-focus={supportsAutoFocus ? 'enabled' : undefined}\n {...(supportsDefaultTooltip && browser === 'safari' ? preventBrowserTooltipProps : {})}>\n <FormContext.Provider value={{ textAlign: getFormTextAlign(horizontalAlignment, isRtl) }}>\n {getHeaderCellRenderer()(headerCellRendererProps)}\n </FormContext.Provider>\n </th>\n </SortableContext.Provider>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { SortCriterionDetail, TableSelectionDetail } from '#UNSAFE_TableView';\nimport type { TableColumn } from './Table';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { containsKey } from '#utils/UNSAFE_keys';\nimport { backgroundStyles, tableHeaderRowStyles } from './themes/Table.css';\nimport { TableHeaderCell } from './TableHeaderCell';\n\n/**\n * Props for the TableHeader Component\n */\ntype TableHeaderProps<K, D, C> = {\n tableId: string;\n isRendered: boolean;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n activeKey?: C;\n isTabbableMode: boolean;\n isShowFocusRing: boolean;\n selectedColumnKeys?: Keys<C>;\n selectedRowKeys?: Keys<K>;\n isColumnSelectionEnabled: boolean;\n isRowSelectionEnabled: boolean;\n isResizeHover: boolean;\n isRtl: boolean;\n isHighContrast: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n isForceSortIcons: boolean;\n activeStyleKey?: C;\n hoverStyleKey?: C;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n stickyTopOffset?: number;\n startStickyEdge?: number;\n endStickyEdge?: number;\n firstStickyColumnIndex?: number;\n finalStickyColumnIndex?: number;\n columnBorderEdges: { hasStart: boolean; hasEnd: boolean; width: number }[];\n};\n\n/**\n * The internal component used to render a header region in Table.\n */\nexport function TableHeader<K, D, C>({\n tableId,\n isRendered,\n columnsArray,\n hasVerticalGridlines,\n activeKey,\n isTabbableMode,\n isShowFocusRing,\n selectedColumnKeys,\n selectedRowKeys,\n isColumnSelectionEnabled,\n isRowSelectionEnabled,\n onSelectionChange,\n isForceSortIcons,\n activeStyleKey,\n hoverStyleKey,\n sortCriterion,\n onSortCriterionChange,\n stickyTopOffset,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex,\n finalStickyColumnIndex,\n columnBorderEdges,\n isResizeHover,\n isRtl,\n isHighContrast\n}: TableHeaderProps<K, D, C>) {\n const rowClasses = classNames([tableHeaderRowStyles.base]);\n\n const getStyle = () => {\n return isResizeHover ? 'cursor: col-resize;' : '';\n };\n\n let previousColumnKey: C | undefined;\n let previousStickyColumnKey: C | undefined;\n let isPreviousSelectable = false;\n let isPreviousStickySelectable = false;\n let isPreviousColumnSelected = false;\n let isPreviousStickyColumnSelected = false;\n return isRendered ? (\n <thead class={backgroundStyles.inherit} role={'presentation'}>\n <tr\n aria-rowindex={1}\n class={rowClasses}\n role={'row'}\n style={getStyle()}\n data-oj-table-header-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === columnKey) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const sortable = column.value.sortable;\n const hasSortIcon = sortable === 'enabled' || sortDirection != null;\n const isShowSortIcon =\n hasSortIcon &&\n (isForceSortIcons || sortDirection != null || hoverStyleKey === columnKey);\n const isSticky = column.value.sticky === 'enabled';\n const isSelectable = isColumnSelectionEnabled && column.value.selectable !== 'disabled';\n const isSelected = containsKey(selectedColumnKeys, columnKey);\n const isActive = columnKey === activeKey;\n const hasTabIndex = isActive && !isTabbableMode;\n let previousVisibleColumnKey;\n let isPreviousVisibleColumnSelectable = false;\n let isPreviousVisibleColumnSelected = false;\n let nextVisibleColumn;\n let isNextVisibleColumnSelected = false;\n let isFirstLogicalColumnIndex = false;\n let isFinalLogicalColumnIndex = false;\n if (isSticky) {\n if (startStickyEdge != null && firstStickyColumnIndex === columnIndex) {\n isFirstLogicalColumnIndex = true;\n }\n if (endStickyEdge != null && finalStickyColumnIndex === columnIndex) {\n isFinalLogicalColumnIndex = true;\n }\n if (\n (startStickyEdge != null && startStickyEdge > columnIndex) ||\n (endStickyEdge != null && endStickyEdge <= columnIndex)\n ) {\n for (let i = columnIndex + 1; i < columnsArray.length; i++) {\n if (columnsArray[i].value.sticky === 'enabled') {\n nextVisibleColumn = columnsArray[i];\n break;\n }\n }\n } else {\n nextVisibleColumn =\n columnIndex < columnsArray.length - 1 ? columnsArray[columnIndex + 1] : undefined;\n }\n isNextVisibleColumnSelected =\n startStickyEdge === columnIndex\n ? false\n : nextVisibleColumn != null &&\n containsKey(selectedColumnKeys, nextVisibleColumn.key);\n if (\n (startStickyEdge != null && startStickyEdge >= columnIndex) ||\n (endStickyEdge != null && endStickyEdge < columnIndex)\n ) {\n previousVisibleColumnKey = previousStickyColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousStickySelectable;\n isPreviousVisibleColumnSelected = isPreviousStickyColumnSelected;\n } else if (endStickyEdge !== columnIndex) {\n previousVisibleColumnKey = previousColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousSelectable;\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n } else {\n previousVisibleColumnKey = previousColumnKey;\n isPreviousVisibleColumnSelectable = isPreviousSelectable;\n isPreviousVisibleColumnSelected = isPreviousColumnSelected;\n }\n const headerCellProps = {\n tableId: tableId,\n hasVerticalGridlines: hasVerticalGridlines,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n isFirstLogicalColumnIndex: isFirstLogicalColumnIndex,\n isFinalLogicalColumnIndex: isFinalLogicalColumnIndex,\n stickyTopOffset: stickyTopOffset,\n isSticky: isSticky,\n isSelected: isSelected,\n isNextColumnSelected: isNextVisibleColumnSelected,\n isPreviousColumnSelected: isPreviousVisibleColumnSelected,\n hasStartEdge: columnBorderEdges[columnIndex].hasStart,\n hasEndEdge: columnBorderEdges[columnIndex].hasEnd,\n selectedRowKeys: selectedRowKeys,\n isColumnSelectable: isSelectable,\n isRowSelectionEnabled: isRowSelectionEnabled,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex: hasTabIndex,\n isTabbableMode: isTabbableMode,\n headerText: column.value.headerText,\n renderer: column.value.headerRenderer,\n onSelectionChange: onSelectionChange,\n isShowSortIcon: isShowSortIcon,\n sortable: sortable,\n sortDirection: sortDirection,\n onSortCriterionChange: onSortCriterionChange,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isActiveStyle: isSelectable && activeStyleKey === columnKey,\n isHoverStyle: isSelectable && hoverStyleKey === columnKey,\n isPreviousCellActiveStyle:\n activeStyleKey != null &&\n activeStyleKey === previousVisibleColumnKey &&\n isPreviousVisibleColumnSelectable,\n isPreviousCellHoverStyle:\n hoverStyleKey != null &&\n hoverStyleKey === previousVisibleColumnKey &&\n isPreviousVisibleColumnSelectable,\n isRtl: isRtl,\n isAccColumnHeader: column.value.accessibleColumnHeader !== 'disabled',\n isHighContrast: isHighContrast,\n padding: column.value.headerPadding,\n tooltip: column.value.headerTooltip,\n focusTarget: column.value.headerFocusTarget,\n horizontalAlignment:\n column.value.headerAlignment?.horizontal != null\n ? column.value.headerAlignment.horizontal\n : column.value.horizontalAlignment,\n verticalAlignment: column.value.headerAlignment?.vertical\n };\n previousColumnKey = columnKey;\n isPreviousSelectable = isSelectable;\n isPreviousColumnSelected = isSelected;\n if (isSticky) {\n previousStickyColumnKey = columnKey;\n isPreviousStickySelectable = isSelectable;\n isPreviousStickyColumnSelected = isSelected;\n }\n return <TableHeaderCell {...headerCellProps} />;\n })}\n </tr>\n </thead>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { JSX } from 'preact';\nimport type { ForwardedRef } from 'preact/compat';\nimport type { CollectionData } from '#PRIVATE_TableCommon/Common.types';\nimport type {\n Cell,\n CellOverride,\n Column,\n ColumnWidths,\n CurrentRowVariant,\n Props,\n TableViewHandle,\n TableViewportConfig\n} from '#UNSAFE_TableView';\nimport type { TableVariantOptions } from './themes/TableStyles.css';\n\nimport { createRef } from 'preact';\nimport { forwardRef } from 'preact/compat';\nimport { useCallback, useState } from 'preact/hooks';\nimport { useCollectionInteractionContext } from '#hooks/UNSAFE_useCollectionInteractionContext';\nimport { useComponentTheme } from '#hooks/UNSAFE_useComponentTheme';\nimport { useId } from '#hooks/UNSAFE_useId';\nimport { TabbableModeContext } from '#hooks/UNSAFE_useTabbableMode';\nimport { useTestId } from '#hooks/UNSAFE_useTestId';\nimport { useUser } from '#hooks/UNSAFE_useUser';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { FocusTracker } from '#PRIVATE_FocusTracker';\nimport { useDataManager } from '#PRIVATE_TableCommon/hooks/useDataManager';\nimport { useInteractionManager } from './hooks/useInteractionManager';\nimport { useSizingManager } from './hooks/useSizingManager';\nimport { innerTableStyles, scrollerStyles, userSelectStyles } from './themes/Table.css';\nimport { tableSkeletonStyles, tableSkeletonStylesHC } from './themes/TableSkeletonStyles.css';\nimport { TableRedwoodTheme } from './themes/redwood/TableTheme';\nimport { TableBody } from './TableBody';\nimport { TableColGroup } from './TableColGroup';\nimport { TableContextMenu, TableResizeColumnDialog } from './TableContextMenu';\nimport { TableDragIndicator } from './TableDragIndicator';\nimport { TableFooter } from './TableFooter';\nimport { TableHeader } from './TableHeader';\nimport { TableSkeletonRow } from './TableSkeletonRow';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\n\nexport type ActiveCell<K, C> =\n | Cell<K, C>\n | {\n rowKey?: never;\n columnKey: C;\n type: 'loading';\n }\n | {\n rowKey?: never;\n columnKey: C;\n type: 'loadMore';\n }\n | {\n rowKey?: never;\n columnKey?: never;\n type: 'pending';\n };\n\nexport type ActiveCellDetail<K, C> = {\n value?: ActiveCell<K, C>;\n};\n\nexport type TableColumn<K, D, C> = {\n key: C;\n value: Column<K, D, C>;\n};\n\nexport type BorderEdges = {\n hasStart: boolean;\n hasEnd: boolean;\n width: number;\n offset: number;\n}[];\n\nexport type AppliedColumnWidths<C extends string> = {\n netColumnWidths: ColumnWidths<C>;\n fullColumnWidths: number[];\n realColumnWidths: number[];\n borderEdges: BorderEdges;\n borderOffset: number;\n totalBorderOffset: number;\n};\n\nexport type StickyColumnInfo = {\n stickyColumns: number[];\n firstStickyColumnIndex?: number;\n finalStickyColumnIndex?: number;\n};\n\nexport type ColumnHeaderFooterInfo<C> = {\n key: C;\n isHeader: boolean;\n};\n\nexport type CurrencyStatus<K, D, C> = {\n activeCell?: ActiveCell<K, C>;\n currentCell?: Cell<K, C>;\n currentCellOverride?: CellOverride<K, C>;\n hasPendingCurrentCellOverride: boolean;\n hasPendingCurrentCellOverrideScroll: boolean;\n previousEmbeddedSelectCurrentCell?: Cell<K, C>;\n loadMoreInitialData?: CollectionData<K, D>[];\n};\n\nexport type SampledWidths<C extends string> = {\n minWidths: ColumnWidths<C>;\n weightWidths: ColumnWidths<C>;\n};\n\nexport type ViewportInfo = {\n isExternalScroller: boolean;\n viewportConfig: TableViewportConfig;\n};\n\nexport type OverflowInfo = {\n isHorizontal: boolean;\n isVertical: boolean;\n};\n\nexport type SizingInfo =\n | {\n isInitialRender: true;\n boxWidth?: number;\n contentWidth?: number;\n boxHeight?: number;\n contentHeight?: number;\n isScrollbarSizeKnown: false;\n defaultScrollbarWidth?: number;\n defaultScrollbarHeight?: number;\n }\n | {\n isInitialRender: false;\n boxWidth: number;\n contentWidth: number;\n boxHeight: number;\n contentHeight: number;\n isScrollbarSizeKnown: true;\n defaultScrollbarWidth: number;\n defaultScrollbarHeight: number;\n }\n | {\n isInitialRender: false;\n boxWidth: number;\n contentWidth: number;\n boxHeight: number;\n contentHeight: number;\n isScrollbarSizeKnown: false;\n defaultScrollbarWidth?: number;\n defaultScrollbarHeight?: number;\n };\n\nexport type ColumnResizeInfo<C> =\n | {\n isResizing: false;\n isResizeHover: boolean;\n key?: C;\n startX?: never;\n delta?: never;\n ignoreClick: boolean;\n }\n | {\n isResizing: true;\n isResizeHover: boolean;\n key: C;\n startX: number;\n delta: number;\n ignoreClick: boolean;\n };\n\nexport type ScrollDetail<K, C> = {\n cell: ActiveCell<K, C> | Cell<K, C>;\n locationX?: 'inView' | 'start' | 'end';\n locationY?: 'inView' | 'top' | 'bottom';\n};\n\nconst _defaultSelected = {\n row: { all: false, keys: new Set() },\n column: { all: false, keys: new Set() }\n};\n\nconst _disabledHeaderFooterInteractionKeys: ('enter' | 'space')[] = ['enter'];\n\n/**\n * Component that renders data in a flat table.\n */\nexport const Table = forwardRef(function Table<K extends string | number, D, C extends string>(\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n getAccessibleRowHeaders,\n columns,\n columnOrder,\n columnWidths,\n contextMenuConfig,\n viewportConfig,\n layout = 'contents',\n data,\n getRowKey,\n hasMore = false,\n onLoadMore = () => {},\n currentCellOverride,\n onPersistCurrentCell,\n currentRowVariant,\n gridlines,\n selectionMode,\n selected = _defaultSelected as NonNullable<Props<K, D, C>['selected']>,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n columnResizingIndicator,\n onColumnResizing,\n onColumnResize,\n noDataRenderer,\n scrollerRef,\n testId\n }: Props<K, D, C>,\n ref?: ForwardedRef<TableViewHandle<K, C>>\n) {\n const tableId = useId();\n const testIdProps = useTestId(testId);\n\n // rootRef is callback-based to meet useResizeObserver hook's state management requirements\n const [rootRef, setRootRef] = useState(createRef<HTMLDivElement>());\n const rootRefCallback = useCallback((node: HTMLDivElement | null) => {\n setRootRef({ current: node });\n }, []);\n // innerTableRef is callback-based to meet useResizeObserver hook's state management requirements\n const [innerTableRef, setInnerTableRef] = useState(createRef<HTMLTableElement>());\n const innerTableRefCallback = useCallback((node: HTMLTableElement | null) => {\n setInnerTableRef({ current: node });\n }, []);\n\n const { direction, forcedColors } = useUser();\n const isHighContrast = forcedColors === 'active';\n const isRtl = direction === 'rtl';\n\n const isEmbedded = useCollectionInteractionContext() === 'embedded';\n const rowVariant: CurrentRowVariant = currentRowVariant ?? isEmbedded ? 'highlight' : 'none';\n\n const { managedData: tableData, onManagedLoadMore: onTableLoadMore } = useDataManager<K, D>({\n data,\n getRowKey,\n hasMore,\n onLoadMore\n });\n\n const {\n columnBorderEdges,\n isLayoutRequired,\n viewportInfo,\n columnsArray,\n appliedColumnWidths,\n sizingInfoRef,\n overflowInfoRef,\n innerTableHeight,\n hasVerticalUnderflow,\n stickyEdgesState,\n setStickyEdgesState,\n stickyColumnInfo,\n scrollerRefCallback\n } = useSizingManager<K, D, C>({\n rootRef,\n innerTableRef,\n tableId,\n tableData,\n viewportConfig,\n externalScrollerAccessRef: scrollerRef,\n layout,\n columns,\n columnOrder,\n columnWidths,\n isRtl,\n isHighContrast\n });\n\n const cellHasRenderer = useCallback(\n (cell: ActiveCell<K, C>) => {\n let hasRenderer = false;\n if (cell.type === 'noData') {\n hasRenderer = noDataRenderer != null;\n } else if (cell.type !== 'loadMore' && cell.type !== 'loading' && cell.type !== 'pending') {\n for (const column of columnsArray) {\n if (column.key === cell.columnKey) {\n if (cell.type === 'data') {\n hasRenderer = column.value.renderer != null;\n } else if (cell.type === 'header') {\n hasRenderer = column.value.headerRenderer != null;\n } else if (cell.type === 'footer') {\n hasRenderer = column.value.footerRenderer != null;\n }\n break;\n }\n }\n }\n return hasRenderer;\n },\n [columnsArray, noDataRenderer]\n );\n\n const isPendingLayout = layout === 'pending';\n\n // aria-rowcount includes header and footer rows\n const hasFooters = columnsArray.some((column: TableColumn<K, D, C>) => {\n return column.value.footerRenderer != null || column.value.footerText != null;\n });\n const ariaRowCount = hasMore || isPendingLayout ? -1 : tableData.length + (hasFooters ? 2 : 1);\n const ariaColumnCount = Math.max(columnsArray.length, 1);\n\n const {\n interactionManagerProps,\n scrollHandlingProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n resizeInfoRef,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n activeStyleColumnInfo,\n hoverStyleColumnInfo,\n tooltipContent,\n contextMenuContext,\n menuProps,\n isResizeDialogOpen,\n setIsResizeDialogOpen,\n disabledRowInteractionKeys\n } = useInteractionManager<K, D, C>({\n rootRef,\n viewportInfo,\n ref,\n tableId,\n tableData,\n hasMore,\n hasFooters,\n isRtl,\n columnsArray,\n stickyColumnInfo,\n appliedColumnWidths,\n isLayoutRequired,\n sizingInfoRef,\n overflowInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n isPendingLayout,\n isEmbedded,\n contextMenuConfig\n });\n\n // initialize base Table style classes\n const { classes: themeClasses } = useComponentTheme<TableVariantOptions>(TableRedwoodTheme, {\n pendingLayout: isPendingLayout ? 'isPendingLayout' : 'notPendingLayout',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n externalScroller: viewportInfo.isExternalScroller ? 'isExternalScroller' : 'notExternalScroller'\n });\n\n let scrollerStyle;\n let scrollerPadding = '';\n const scrollerClassArray = [scrollerStyles.base];\n if (viewportInfo.isExternalScroller) {\n scrollerClassArray.push(scrollerStyles.externalScroller);\n } else if (!sizingInfoRef.current.isScrollbarSizeKnown) {\n scrollerClassArray.push(scrollerStyles.forceScroll);\n } else {\n if (overflowInfoRef.current.isHorizontal) {\n scrollerClassArray.push(scrollerStyles.horizontalScroll);\n } else {\n scrollerClassArray.push(scrollerStyles.noHorizontalScroll);\n }\n if (overflowInfoRef.current.isVertical) {\n scrollerClassArray.push(scrollerStyles.verticalScroll);\n } else {\n scrollerClassArray.push(scrollerStyles.noVerticalScroll);\n scrollerPadding = `padding-inline-end: ${sizingInfoRef.current.defaultScrollbarWidth}px;`;\n }\n }\n // hide the table contents when layout is required and otherwise valid\n if (isLayoutRequired && columnsArray.length > 0) {\n scrollerStyle = `${scrollerPadding}opacity:0.001;`;\n } else {\n scrollerStyle = scrollerPadding;\n }\n\n const scrollerClasses = classNames(scrollerClassArray);\n const allowBrowserContextMenu = !(\n getClientHints().platform === 'ios' || getClientHints().platform === 'android'\n );\n\n const classArray = [themeClasses];\n if (!allowBrowserContextMenu) {\n classArray.push(userSelectStyles.userSelect);\n }\n\n const classes = classNames(classArray);\n const tableClasses = classNames([innerTableStyles.base]);\n\n const startStickyEdge = stickyEdgesState.start;\n const endStickyEdge = stickyEdgesState.end;\n\n const hasVerticalGridlines = gridlines?.vertical === 'visible';\n const hasHorizontalGridlines = gridlines?.horizontal !== 'hidden';\n\n const isRowSelectionEnabled =\n selectionMode?.row === 'single' ||\n selectionMode?.row === 'multiple' ||\n selectionMode?.row === 'multipleToggle';\n const isColumnSelectionEnabled =\n selectionMode?.column === 'single' || selectionMode?.column === 'multiple';\n const supportsMultipleSelection =\n selectionMode?.column === 'multiple' ||\n selectionMode?.row === 'multiple' ||\n selectionMode?.row === 'multipleToggle';\n\n const getTableBodyProps = () => {\n return {\n rootRef,\n viewportInfo,\n tableId,\n isValidRender: columnsArray.length > 0,\n tableData,\n columnsArray,\n getAccessibleRowHeaders,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n hasFooters,\n hasVerticalUnderflow,\n selected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled: selectionMode?.row === 'single',\n activeCell: currentActiveCell,\n currentRowKey: currentCell?.type === 'data' ? currentCell.rowKey : undefined,\n currentRowVariant: rowVariant,\n isShowFocusRing,\n isTabbableMode,\n hasMore,\n onLoadMore: onTableLoadMore,\n noDataRenderer,\n disabledInteractionKeys: disabledRowInteractionKeys,\n onSelectionChange: onTableSelectionChange,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex: stickyColumnInfo.firstStickyColumnIndex,\n finalStickyColumnIndex: stickyColumnInfo.finalStickyColumnIndex,\n columnBorderEdges,\n isRtl,\n isEmbedded,\n isHighContrast\n };\n };\n\n const getTableColGroupProps = () => {\n let columnWidthsArray;\n if (!isLayoutRequired && appliedColumnWidths?.realColumnWidths != null) {\n columnWidthsArray = appliedColumnWidths.realColumnWidths;\n } else if (layout === 'fixed') {\n // default to 100px for each column when layout is not yet available\n columnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidthsArray[i] = 100;\n }\n } else {\n columnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidthsArray[i] = undefined;\n }\n }\n return {\n tableId,\n isRendered: columnsArray.length > 0,\n columnWidthsArray\n };\n };\n\n const getTableHeaderProps = () => {\n return {\n tableId,\n isRendered: columnsArray.length > 0,\n columnsArray,\n hasVerticalGridlines,\n activeKey: currentActiveCell?.type === 'header' ? currentActiveCell.columnKey : undefined,\n isTabbableMode,\n selectedColumnKeys: selected.column,\n selectedRowKeys: selected.row,\n isColumnSelectionEnabled,\n isRowSelectionEnabled,\n disabledInteractionKeys: _disabledHeaderFooterInteractionKeys,\n onSelectionChange: onTableSelectionChange,\n isForceSortIcons: layout === 'contents' && isLayoutRequired,\n activeStyleKey: activeStyleColumnInfo?.isHeader ? activeStyleColumnInfo?.key : undefined,\n hoverStyleKey: hoverStyleColumnInfo?.isHeader ? hoverStyleColumnInfo?.key : undefined,\n sortCriterion,\n onSortCriterionChange,\n isShowFocusRing,\n stickyTopOffset: viewportInfo.viewportConfig.scrollerOffsetTop,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex: stickyColumnInfo.firstStickyColumnIndex,\n finalStickyColumnIndex: stickyColumnInfo.finalStickyColumnIndex,\n columnBorderEdges,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n isRtl,\n isHighContrast\n };\n };\n\n const getTableFooterProps = () => {\n return {\n tableId,\n isRendered: hasFooters,\n columnsArray,\n hasVerticalGridlines,\n activeKey: currentActiveCell?.type === 'footer' ? currentActiveCell.columnKey : undefined,\n isTabbableMode,\n selectedColumnKeys: selected.column,\n isColumnSelectionEnabled,\n activeStyleKey: !activeStyleColumnInfo?.isHeader ? activeStyleColumnInfo?.key : undefined,\n hoverStyleKey: !hoverStyleColumnInfo?.isHeader ? hoverStyleColumnInfo?.key : undefined,\n isShowFocusRing,\n disabledInteractionKeys: _disabledHeaderFooterInteractionKeys,\n stickyBottomOffset: viewportInfo.viewportConfig.scrollerOffsetBottom,\n startStickyEdge,\n endStickyEdge,\n firstStickyColumnIndex: stickyColumnInfo.firstStickyColumnIndex,\n finalStickyColumnIndex: stickyColumnInfo.finalStickyColumnIndex,\n columnBorderEdges,\n dataRowCount: tableData.length,\n isRtl,\n isHighContrast\n };\n };\n\n const getTableDragIndicator = () => {\n if (\n columnResizingIndicator != null &&\n !isLayoutRequired &&\n appliedColumnWidths?.fullColumnWidths != null\n ) {\n let position = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n position += appliedColumnWidths.fullColumnWidths[i];\n if (columnsArray[i].key === columnResizingIndicator.key) {\n if (columnResizingIndicator.delta != null) {\n position += columnResizingIndicator.delta;\n }\n break;\n }\n }\n return <TableDragIndicator position={position} isRtl={isRtl} height={innerTableHeight} />;\n }\n return undefined;\n };\n\n const getTableStyle = () => {\n if (!isLayoutRequired && appliedColumnWidths?.realColumnWidths != null) {\n let totalWidth = 0;\n for (let i = 0; i < appliedColumnWidths.realColumnWidths.length; i++) {\n totalWidth += appliedColumnWidths.realColumnWidths[i];\n }\n return `width:${totalWidth}px;table-layout:fixed;`;\n } else if (columnsArray.length > 0) {\n if (layout === 'fixed') {\n // default to 100px for each column when layout is not yet available\n return `width:${columnsArray.length * 100}px;table-layout:fixed;`;\n } else {\n // shrink table down as much as possible when a 'contents' layout is required, otherwise\n // the sampled column widths will not reflect the true weight sizes with line-clamping\n return 'width:max-content;will-change:width;';\n }\n }\n // no columns are present\n return 'width:100%;';\n };\n\n const skeletonStyles = isHighContrast ? tableSkeletonStylesHC : tableSkeletonStyles;\n const getPendingLayoutSkeletons = () => {\n return isPendingLayout ? (\n <div class={skeletonStyles.pendingLayout}>\n <table role={'presentation'} style={'width:100%;table-layout:fixed;'}>\n <tbody role={'presentation'}>\n <TableSkeletonRow\n tableId={tableId}\n hasTabIndex={currentActiveCell?.type === 'pending'}\n colspan={ariaColumnCount}\n isPendingLayout={true}\n isShowFocusRing={false}\n isEmbedded={isEmbedded}\n isHighContrast={isHighContrast}\n />\n </tbody>\n </table>\n </div>\n ) : undefined;\n };\n\n const ariaMultiSelectableProps = supportsMultipleSelection\n ? { 'aria-multiselectable': true }\n : isRowSelectionEnabled || isColumnSelectionEnabled\n ? { 'aria-multiselectable': false }\n : {};\n\n return (\n <>\n <div\n {...testIdProps}\n ref={rootRefCallback}\n aria-colcount={ariaColumnCount}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n aria-rowcount={ariaRowCount}\n {...ariaMultiSelectableProps}\n class={classes}\n id={tableId}\n role={'grid'}\n tabIndex={currentActiveCell != null ? -1 : 0}\n {...interactionManagerProps}>\n <div\n ref={scrollerRefCallback}\n class={scrollerClasses}\n role={'rowgroup'}\n style={scrollerStyle}\n tabIndex={-1}\n {...scrollHandlingProps}>\n <FocusTracker\n isDisabled={!isTabbableMode}\n onFocusStartEdge={onFocusStartEdge}\n onFocusEndEdge={onFocusEndEdge}\n onStartTracking={onStartFocusTracking}>\n <TabbableModeContext.Provider value={{ isTabbable: isTabbableMode }}>\n <table\n ref={innerTableRefCallback}\n aria-hidden={isPendingLayout ? true : undefined}\n class={tableClasses}\n role={'presentation'}\n style={getTableStyle()}\n data-oj-table-inner-table={tableId}>\n <TableColGroup {...getTableColGroupProps()} />\n <TableHeader {...getTableHeaderProps()} />\n <TableBody {...getTableBodyProps()} />\n <TableFooter {...getTableFooterProps()} />\n </table>\n </TabbableModeContext.Provider>\n {getTableDragIndicator()}\n </FocusTracker>\n {tooltipContent}\n </div>\n {getPendingLayoutSkeletons()}\n </div>\n {contextMenuConfig != null && contextMenuContext != null && (\n <>\n <TableContextMenu\n {...menuProps}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n {isResizeDialogOpen &&\n currentActiveCell?.columnKey != null &&\n appliedColumnWidths != null ? (\n <TableResizeColumnDialog\n isOpen={isResizeDialogOpen}\n columnKey={currentActiveCell.columnKey}\n appliedColumnWidths={appliedColumnWidths}\n onColumnResize={onColumnResize}\n setIsResizeDialogOpen={setIsResizeDialogOpen}\n />\n ) : undefined}\n </>\n )}\n </>\n );\n}) as <K extends string | number, D, C extends string>(\n p: Props<K, D, C> & { ref?: ForwardedRef<TableViewHandle<K, C>> }\n) => JSX.Element;\n"],"names":["TableContextMenu","contextMenuConfig","contextMenuContext","menuProps","translations","useTranslationBundle","accessibleLabel","accContextMenuLabel","itemsRenderer","_jsx","Menu","children","isOpen","_Fragment","TableContextMenuSort","columnKey","isDisabled","currentSortDirection","onSortCriterionChange","jsx","Submenu","label","collection_sortColumnMenu","_jsxs","SelectSingleMenuGroup","value","onCommit","key","sortDirection","SelectMenuItem","collection_sortAscendingSubMenu","collection_sortDescendingSubMenu","TableContextMenuResize","setIsResizeDialogOpen","MenuItem","collection_resizeColumnMenu","onAction","TableResizeColumnDialog","onColumnResize","appliedColumnWidths","initialWidth","Math","round","netColumnWidths","initialWidthRef","useRef","numberInputRef","widthValue","setWidthValue","useState","String","messages","Number","isNaN","parseInt","trim","severity","detail","collection_resizeMessageDetail","MIN","MAX","apply","useCallback","current","newWidth","allColumnWidths","paddingWidth","totalBorderOffset","gesture","type","handleKeyDown","event","cancel","handleOnInput","footer","Flex","gap","Button","collection_cancel","variant","collection_apply","Dialog","autoFocusRef","modality","header","collection_resizeColumnDialog","onKeyDown","NumberInputText","collection_width","onInput","suffix","collection_pixels","isRequired","isRequiredShown","ref","isTransientCell","activeCell","cellComparator","cell1","cell2","rowKey","_getCellFromCellOverride","tableData","columnsArray","cellOverride","currentCell","cellType","cellRowKey","cellColumnKey","getBoundaryColumnKey","length","metadata","_renderIncludesCell","cell","hasMore","isPendingLayout","hasFooters","i","isColumnValid","menuPropGestureStates","mouse","initialFocus","placement","offsetValue","keyboard","touch","_initialMenuProps","anchorRef","useContextMenu","rootRef","tableId","sortCriterion","setContextMenuContext","setMenuProps","currentCellElementRef","isResizeDialogOpen","triggerProps","useContextMenuGesture","anchor","target","cellElement","closest","TABLE_FOCUSABLE_SELECTOR","targetCell","logicalCellExtractor","cellContextMenuContext","isSortable","isResizable","column","sortable","resizable","criterion","allMenuItems","resizeColumn","sortColumn","hasResizableColumns","some","hasSortableColumns","defaultMenuItems","undefined","rowData","data","getCellContextMenuContextFromCell","anchorBasedOnGesture","onClose","reason","focus","preventScroll","contextMenuTriggerProps","TABLE_HIDE_TOOLTIP_DELAY","max","min","SHOW_TOOLTIP_DELAY","HIDE_TOOLTIP_DELAY","useTruncationTooltip","resizeInfoRef","globalTooltipManager","getGlobalTooltipManager","tooltipId","useId","tooltipCellRef","pendingShowTooltipCellRef","tooltipAnchorRef","tooltipTextRef","tooltipText","setTooltipText","pointerDownRef","pointerDownTimeoutRef","showTooltipTimeoutRef","hideTooltipTimeoutRef","_clearHideTooltipTimeout","clearTimeout","_clearShowTooltipTimeout","_setupShowTooltipTimeout","setTimeout","isResizing","rootElement","getElementFromCell","getAttribute","innerText","walker","document","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","range","Range","textNode","currentNode","selectNodeContents","untruncatedTextLength","getBoundingClientRect","width","untruncatedTextHeight","height","firstParent","parentElement","parentStyles","getComputedStyle","visibility","horizontalPadding","parseFloat","paddingLeft","paddingRight","horizontalBorder","borderLeft","borderRight","renderedTextLength","verticalPadding","paddingTop","paddingBottom","verticalBorder","borderTop","borderBottom","renderedTextHeight","hasTruncatedText","_setupHideTooltipTimeout","showTooltip","anchorCell","hideTooltip","isImmediate","_pointerMoveHandler","_event","_pointerLeaveHandler","targetElement","relatedTarget","_pointerDownHandler","isOpenOverrideRef","tooltipPointerProps","onPointerLeave","onPointerMove","onPointerDown","renderRawContent","TooltipContent","id","isDatatip","scale","useScale","mainAxisOffset","crossAxisOffset","currentColorScheme","useColorScheme","tooltipContent","getWrappedTooltipContent","mainAxis","crossAxis","destroyCallback","useEffect","register","unregister","NAVIGATION_KEYS","SCROLL_KEYS","useFocusHandling","viewportInfo","isRtl","stickyColumnInfo","sizingInfoRef","overflowInfoRef","selectionExtensionElementRef","cellSupportsTabbable","currentCellOverride","onPersistCurrentCell","isEmbedded","isDataLoaded","blurFromWindowRef","isTabDownDetectedRef","isRenderCycle","blurredRenderCycleElementRef","isPendingLayoutFocusRef","hasFocusRef","isTabbableMode","setIsTabbableMode","isShowFocusRing","setIsShowFocusRing","recentPointerRef","pointerTimerRef","isShowFocusRingOverrideRef","setActiveCell","currencyStatusRef","hasPendingCurrentCellOverride","hasPendingCurrentCellOverrideScroll","deferredScrollDetail","setDeferredScrollDetail","deferredScrollDetailRef","updateDeferredScrollDetail","scrollDetail","wasTransient","currentActiveCell","isEmbeddedSelect","firstColumnKey","defaultFirstCell","previousEmbeddedSelectCurrentCell","realizedCell","overrideCellType","_getCellTypeFromCellOverride","initialData","loadMoreInitialData","determineActiveCell","onActiveCellChanged","useMemo","isAutoFocus","isSelectionExtension","skipScrollCellIntoView","newActiveCell","newCurrentCell","locationX","locationY","_setAsInactive","_enableNavigationMode","scrollerElement","viewportConfig","scrollerRef","focusRingState","handleNavigationTooltipGesture","_enableTabbableMode","isKeyboard","_disableTabbableMode","notifyFocusFromPointer","isTouch","pointerType","_pointerUpHandler","_onBlurHandler","activeElement","isUnknownRelatedTarget","getElementContainsFunc","_onKeyDownHandler","isNavigationKey","indexOf","_onKeyUpHandler","onStartFocusTracking","handleEnterActionableMode","hasFocusWithin","getCellType","allTabbableElements","onFocusStartEdge","handleWrapActionableFocus","tabbableElements","onFocusEndEdge","_applyInternalFocus","isCaptureFocus","applyScrollDetail","isAutoFocusCell","sizingInfo","overflowInfo","resetVerticalScrollPosition","applyCurrentCellOverride","blurredRenderCycleElement","getActiveElement","getBodyElement","isTabbableElement","focusHandlingProps","onPointerUp","onFocus","onBlur","onKeyUp","getActionContext","_index","isSortActionGesture","handleActiveColumnHeaderFooterGesture","setActiveStyleColumnInfo","activeStyleColumnInfo","PointerEvent","getColumnKey","isHeader","handleEndInteractionColumnHeaderFooterGesture","setInteractionStyleColumnInfo","interactionStyleColumnInfo","handleAdjacentRowGesture","initialCell","isPrevious","isExtendSelectionGesture","newCell","newColumnKey","hasFooterCells","getLastRenderedRowKey","currentRowKey","currentRowElement","findElementByKey","TABLE_ROW_SELECTOR","rowElements","querySelectorAll","currentRowIndex","adjacentRowElement","getRowKey","hasLoadMoreCell","hasNoDataCell","getFirstRenderedRowKey","handlePageRowGesture","verticalScrollPosition","getVerticalScrollPosition","verticalRowIndex","getRowIndexForRowKey","targetRowIndex","offsetY","scrollerBottom","getScrollerBottom","bottom","newRowKey","getRowKeyForRowIndex","handleAdjacentColumnGesture","newKey","initialKey","currentIndex","columnsCount","_getAdjacentColumnKey","handleJumpColumnGesture","includeRows","handleSelectionGesture","isModifierKey","onSelectionChange","isDropDownSelection","selectionMode","selected","emptyKeys","all","keys","Set","selectedRows","row","selectedColumns","keyExtractor","isToggleSelectionMode","isMultiSelectRowGesture","containsKey","removeKey","addKey","index","getColumnIndexForHeaderFooterElement","selectable","isSameKey","_applyRangeSelection","startIndex","endIndex","isRowGesture","previousEndIndex","handleExtendSelectionGesture","activeCellElement","startElement","isRow","getRowIndexForRowElement","extendedElement","cursorElement","previousElementSibling","nextElementSibling","extensionElement","extensionCell","useKeyboardHandling","onTableSelectionChange","onRowAction","triggerDownKeyRef","_keyDownHandler","keyHandlers","preventDefault","getRowActionGestureContext","stopPropagation","Enter","ArrowUp","shiftKey","ArrowDown","ArrowLeft","ArrowRight","PageUp","PageDown","Home","isLogicalCtrl","End","Object","includes","_keyUpHandler","handleRowActionGesture","handleSortActionGesture","_updateResizingState","headerRowElement","getHeaderRowElement","headerElements","TABLE_HEADER_SELECTOR","isResizeHover","cellRect","endEdge","left","right","abs","pageX","edgeResizable","style","cursor","handleColumnResizeEndGesture","rect","currentX","clientX","delta","startX","ignoreClick","usePointerHandling","onColumnResizing","selectionTouchRef","hoverStyleColumnInfo","setHoverStyleColumnInfo","pointerInfoRef","x","y","clientY","tooltipShown","handleMoveTooltipGesture","handleColumnResizingGesture","handleOverResizeRegionGesture","_pointerOverHandler","handleOverColumnHeaderFooterGesture","targetCellElement","isRangeSelectionGesture","getIsSelectionPending","pointerX","handleColumnResizeStartGesture","getClientHints","browser","clearElementSelection","handleLeaveResizingGesture","boundingRect","top","handleLeaveTableTooltipGesture","_pointerEnterHandler","buttons","handleEnterResizingGesture","_clickHandler","endElement","previousElement","handleRangeSelectionGesture","pointerHandlingProps","onPointerOver","onPointerEnter","onClick","_defaultDisabledRowInteractionKeys","TableNoData","hasTabIndex","ariaRowIndex","renderer","rowClasses","classNames","tableRowStyles","base","classes","themeClasses","useComponentTheme","TableNoDataRedwoodTheme","defaultRenderer","showFocusRing","cellClasses","contentRenderer","collection_noData","useLayoutEffect","tableBodyElement","getTableBodyElement","noDataElement","getNoDataCellElement","class","role","tabIndex","colSpan","isTabbable","preventBrowserTooltipProps","classList","add","preventBrowserTooltipStyle","remove","_defaultCellRenderer","field","TableCell","columnIndex","rowIndex","isFinalRowIndex","isFinalColumnIndex","isFirstLogicalColumnIndex","isFinalLogicalColumnIndex","hasVerticalGridlines","hasHorizontalGridlines","hasVerticalUnderflow","isRowSelected","isPreviousRowSelected","isColumnSelected","isNextColumnSelected","isPreviousColumnSelected","isSticky","isAccRowHeader","focusTarget","selectorRenderer","isRowSelectionEnabled","isRowSingleSelection","applyActiveStyle","applyHoverStyle","applyPseudoHoverStyle","isStickyStartEdge","isStickyEndEdge","hasStartEdge","hasEndEdge","isHighContrast","padding","tooltip","horizontalAlignment","verticalAlignment","rowContext","columnPadding","supportsDefaultTooltip","hasLastHorizontalGridline","getDataCellClassArray","isFirstColumnIndex","isFirstRowIndex","isActive","isHover","isPseudoHover","cellRendererProps","selector","supportsAutoFocus","FormContext","Provider","textAlign","getFormTextAlign","MemoizeTableRow","memo","isFinalRow","rowHeaderColumnKeys","isSelected","isPreviousSelected","isSingleRowSelectionEnabled","selectedRowKeys","activeColumnKey","selectedColumnKeys","disabledInteractionKeys","startStickyEdge","endStickyEdge","firstStickyColumnIndex","finalStickyColumnIndex","columnBorderEdges","interactionProps","useInteractionStyle","disabledKeys","rowStyles","tableRowStylesHC","classArray","lastRowHeight","rowHeight","accessibleRowName","toString","handleRowSelectorChange","Selector","collection_selectRow","ROW_NAME","onChange","selectedKeys","isPreviousStickyColumnSelected","map","sticky","nextVisibleColumn","isNextVisibleColumnSelected","isPreviousVisibleColumnSelected","cellProps","stickyColumn","has","hasStart","hasEnd","alignment","horizontal","vertical","prev","next","columnsArray1","columnsArray2","_areColumnsArraysEquivalent","set1","set2","size","every","TableBody","isValidRender","getAccessibleRowHeaders","onLoadMore","currentRowVariant","noDataRenderer","getRowContext","context","isShowEmptyLoading","isShowNoData","backgroundStyles","inherit","getNoDataProps","jsxs","Fragment","LoadMoreCollection","loadMoreIndicator","TableSkeletonRow","colspan","isLoadMore","tableRowContext","containsActiveCell","rowProps","TableDragIndicator","position","tableDragIndicatorClasses","tableDragIndicatorStyles","heightString","getDragIndicatorStyle","_defaultFooterCellRenderer","footerText","TableFooterCell","isColumnSelectable","stickyBottomOffset","isActiveStyle","isHoverStyle","isPreviousCellActiveStyle","isPreviousCellHoverStyle","getHeaderFooterCellClassArray","footerCellRendererProps","TableFooter","isRendered","activeKey","isColumnSelectionEnabled","activeStyleKey","hoverStyleKey","dataRowCount","tableFooterRowStyles","previousColumnKey","previousStickyColumnKey","isPreviousSelectable","isPreviousStickySelectable","isSelectable","previousVisibleColumnKey","isPreviousVisibleColumnSelectable","footerCellProps","footerRenderer","footerPadding","footerTooltip","footerFocusTarget","footerAlignment","TableHeaderCell","headerText","stickyTopOffset","isShowSortIcon","isAccColumnHeader","selectorAllState","deletedKeys","handleSelectorChange","SelectorAll","collection_selectAllRows","handleSortGesture","headerCellRendererProps","getHeaderCellRenderer","text","tableHeaderCellTextStyles","tableHeaderCellStyles","defaultRendererSpan","isIconFirst","containerClasses","tableHeaderSortContainerStyles","justifyContentStyles","SortControl","SortableContext","onSort","getAriaSort","TableHeader","isForceSortIcons","tableHeaderRowStyles","headerCellProps","headerRenderer","accessibleColumnHeader","headerPadding","headerTooltip","headerFocusTarget","headerAlignment","_defaultSelected","_disabledHeaderFooterInteractionKeys","Table","forwardRef","ariaLabel","ariaLabelledBy","ariaDescribedBy","columns","columnOrder","columnWidths","layout","gridlines","horizontalScrollPositionOverride","verticalScrollPositionOverride","columnResizingIndicator","testId","testIdProps","useTestId","setRootRef","createRef","rootRefCallback","node","innerTableRef","setInnerTableRef","innerTableRefCallback","direction","forcedColors","useUser","useCollectionInteractionContext","rowVariant","managedData","onManagedLoadMore","onTableLoadMore","useDataManager","isLayoutRequired","innerTableHeight","stickyEdgesState","setStickyEdgesState","scrollerRefCallback","useSizingManager","externalScrollerAccessRef","cellHasRenderer","hasRenderer","ariaRowCount","ariaColumnCount","interactionManagerProps","scrollHandlingProps","disabledRowInteractionKeys","isExtendableSelection","keyboardHandlingProps","useScrollHandling","fullColumnWidths","mergeProps","useImperativeHandle","getHorizontalScrollPosition","useInteractionManager","TableRedwoodTheme","pendingLayout","externalScroller","isExternalScroller","scrollerStyle","scrollerPadding","scrollerClassArray","scrollerStyles","push","isScrollbarSizeKnown","isHorizontal","horizontalScroll","noHorizontalScroll","isVertical","verticalScroll","noVerticalScroll","defaultScrollbarWidth","forceScroll","scrollerClasses","platform","userSelectStyles","userSelect","tableClasses","innerTableStyles","start","end","supportsMultipleSelection","skeletonStyles","tableSkeletonStylesHC","tableSkeletonStyles","ariaMultiSelectableProps","FocusTracker","onStartTracking","TabbableModeContext","realColumnWidths","totalWidth","getTableStyle","TableColGroup","columnWidthsArray","getTableColGroupProps","scrollerOffsetTop","scrollerOffsetBottom","getTableDragIndicator"],"mappings":"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"}