@oracle/oraclejet-preact 20.1.3 → 20.1.5

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 (1363) hide show
  1. package/amd/AccordionItemMultiple-ff9bc272.js +1 -1
  2. package/amd/AccordionItemSingle-a6082157.js +1 -1
  3. package/amd/AvatarVariants.styles.css +25 -25
  4. package/amd/AvatarVariants.styles2.css +25 -25
  5. package/amd/BadgeVariants.styles.css +14 -14
  6. package/amd/BadgeVariants.styles2.css +14 -14
  7. package/amd/BarChart-aed6b204.js +1 -1
  8. package/amd/{BaseButton-d0f59de5.js → BaseButton-e92d9a48.js} +2 -2
  9. package/amd/{BaseButton-d0f59de5.js.map → BaseButton-e92d9a48.js.map} +1 -1
  10. package/amd/BaseCardView-b8f9f997.js +2 -0
  11. package/amd/{BaseCardView-131755ff.js.map → BaseCardView-b8f9f997.js.map} +1 -1
  12. package/amd/{BaseCardViewSelectionTest-9afea995.js → BaseCardViewSelectionTest-284cb1a9.js} +2 -2
  13. package/amd/{BaseCardViewSelectionTest-9afea995.js.map → BaseCardViewSelectionTest-284cb1a9.js.map} +1 -1
  14. package/amd/BaseDiagram-3bde785f.js +1 -1
  15. package/amd/BaseRichSelection-2a239000.js +1 -1
  16. package/amd/BaseSelector-6879e9b8.js +1 -1
  17. package/amd/BaseSwatchView-76face8e.js +1 -1
  18. package/amd/BaseTabBarItem-bdd9ea3b.js +1 -1
  19. package/amd/{Button-2f632753.js → Button-ceeb05f2.js} +2 -2
  20. package/amd/{Button-2f632753.js.map → Button-ceeb05f2.js.map} +1 -1
  21. package/amd/ButtonSet-9f26cc51.js +1 -1
  22. package/amd/ButtonSetButton-3aef83e6.js +1 -1
  23. package/amd/ButtonSetIconButton-2e7f9c98.js +1 -1
  24. package/amd/{CardFlexView-68b7bf6f.js → CardFlexView-beb5a7a8.js} +2 -2
  25. package/amd/{CardFlexView-68b7bf6f.js.map → CardFlexView-beb5a7a8.js.map} +1 -1
  26. package/amd/{CardGridView-886ae6b3.js → CardGridView-48a478e0.js} +2 -2
  27. package/amd/{CardGridView-886ae6b3.js.map → CardGridView-48a478e0.js.map} +1 -1
  28. package/amd/{Center-17925696.js → Center-27a71002.js} +2 -2
  29. package/amd/{Center-17925696.js.map → Center-27a71002.js.map} +1 -1
  30. package/amd/Chart-bf9828b6.js +1 -1
  31. package/amd/Checkbox-b38db527.js +1 -1
  32. package/amd/CheckboxControl-38454610.js +1 -1
  33. package/amd/CheckboxRadioField-91def532.js +1 -1
  34. package/amd/CheckboxRadioLabelValueLayout-3a870309.js +1 -1
  35. package/amd/CheckboxSet-bc17a1ee.js +1 -1
  36. package/amd/Chip-8280de2e.js +1 -1
  37. package/amd/ClearIcon-9d632986.js +1 -1
  38. package/amd/CollapseIcon-cff32243.js +1 -1
  39. package/amd/Collapsible-e71affa0.js +1 -1
  40. package/amd/CollapsibleNavigationList-1d252cbd.js +1 -1
  41. package/amd/ColorPalette-a6758c98.js +1 -1
  42. package/amd/{ColorPicker-764b0235.js → ColorPicker-4a18c4b0.js} +2 -2
  43. package/amd/{ColorPicker-764b0235.js.map → ColorPicker-4a18c4b0.js.map} +1 -1
  44. package/amd/ColorPickerVariants.styles.css +1 -1
  45. package/amd/ColorPickerVariants.styles2.css +1 -1
  46. package/amd/ColorSwatch-a705f4b1.js +1 -1
  47. package/amd/ComboChart-0525c350.js +1 -1
  48. package/amd/CompactHelpSource-476fa2f8.js +1 -1
  49. package/amd/CompactLabelAssistance-89684859.js +2 -0
  50. package/amd/{CompactLabelAssistance-002f7b2f.js.map → CompactLabelAssistance-89684859.js.map} +1 -1
  51. package/amd/CompactUserAssistance-b2b73f46.js +1 -1
  52. package/amd/ComponentMessageContainer-04fb3402.js +1 -1
  53. package/amd/ConveyorBelt-1d6d2d8a.js +1 -1
  54. package/amd/{DatePicker-e2fecffc.js → DatePicker-71cb7d07.js} +2 -2
  55. package/amd/{DatePicker-e2fecffc.js.map → DatePicker-71cb7d07.js.map} +1 -1
  56. package/amd/DatePickerHeader-d0dd7b4a.js +1 -1
  57. package/amd/DiagramStyles.styles2.css +16 -10
  58. package/amd/DiagramStyles.styles3.css +10 -16
  59. package/amd/{Dialog-fa8a5012.js → Dialog-0c124587.js} +2 -2
  60. package/amd/{Dialog-fa8a5012.js.map → Dialog-0c124587.js.map} +1 -1
  61. package/amd/DirectionalCollapseArrowIcon-6294b628.js +1 -1
  62. package/amd/DirectionalExpandArrowIcon-c3e50398.js +1 -1
  63. package/amd/DragHandle-75151eea.js +2 -0
  64. package/amd/{DragHandle-ebe5c3ae.js.map → DragHandle-75151eea.js.map} +1 -1
  65. package/amd/{DrawerPopup-1ee2f5e2.js → DrawerPopup-5e03ba8c.js} +2 -2
  66. package/amd/{DrawerPopup-1ee2f5e2.js.map → DrawerPopup-5e03ba8c.js.map} +1 -1
  67. package/amd/DrawerPopupVariants.styles.css +5 -5
  68. package/amd/DrawerPopupVariants.styles2.css +5 -5
  69. package/amd/{Dropdown-a26fb975.js → Dropdown-45cc6812.js} +2 -2
  70. package/amd/{Dropdown-a26fb975.js.map → Dropdown-45cc6812.js.map} +1 -1
  71. package/amd/EmbeddedIconButton-9647e9af.js +2 -0
  72. package/amd/{EmbeddedIconButton-49aab46c.js.map → EmbeddedIconButton-9647e9af.js.map} +1 -1
  73. package/amd/{EnvironmentProvider-403bf554.js → EnvironmentProvider-75ba928e.js} +2 -2
  74. package/amd/{EnvironmentProvider-403bf554.js.map → EnvironmentProvider-75ba928e.js.map} +1 -1
  75. package/amd/ExpandableList-d1320214.js +1 -1
  76. package/amd/Expander-3c749f26.js +1 -1
  77. package/amd/FilePicker-1017e6ed.js +1 -1
  78. package/amd/FilePickerVariants.styles.css +2 -2
  79. package/amd/FilePickerVariants.styles2.css +2 -2
  80. package/amd/FlatTreeView-85c3556a.js +1 -1
  81. package/amd/Flex-71f83c12.js +2 -0
  82. package/amd/{Flex-4b81b412.js.map → Flex-71f83c12.js.map} +1 -1
  83. package/amd/{Floating-eca152d7.js → Floating-e8ec1b0b.js} +2 -2
  84. package/amd/{Floating-eca152d7.js.map → Floating-e8ec1b0b.js.map} +1 -1
  85. package/amd/FormLayout-4cd8a8a5.js +1 -1
  86. package/amd/FormLayoutVariants.styles.css +14 -14
  87. package/amd/FormLayoutVariants.styles2.css +14 -14
  88. package/amd/Gantt-5b813f62.js +1 -1
  89. package/amd/{Grid-caac1c86.js → Grid-5324e17b.js} +2 -2
  90. package/amd/{Grid-caac1c86.js.map → Grid-5324e17b.js.map} +1 -1
  91. package/amd/GroupLoadingIndicator-61328f4c.js +1 -1
  92. package/amd/HighlightText-365ba020.js +2 -0
  93. package/amd/{HighlightText-ee76c447.js.map → HighlightText-365ba020.js.map} +1 -1
  94. package/amd/Icon-1e9e773e.js +1 -1
  95. package/amd/IconButton-be3bd92a.js +1 -1
  96. package/amd/IconMenuButton-9cd87d50.js +1 -1
  97. package/amd/IconProgressButton-a793a7e7.js +1 -1
  98. package/amd/IconSwitchButton-e89dd18a.js +1 -1
  99. package/amd/IconToggleButton-e8488f70.js +1 -1
  100. package/amd/{IconUserAssistance-b5908d4a.js → IconUserAssistance-b856425b.js} +2 -2
  101. package/amd/{IconUserAssistance-b5908d4a.js.map → IconUserAssistance-b856425b.js.map} +1 -1
  102. package/amd/Indexer-cb626ecf.js +1 -1
  103. package/amd/InlineHelpSource-ab765897.js +1 -1
  104. package/amd/InlineSelectSingle-9222b0eb.js +1 -1
  105. package/amd/InlineUserAssistance-18d1d457.js +1 -1
  106. package/amd/InputColor-b4b0e701.js +1 -1
  107. package/amd/InputDateMask-f783e5c6.js +1 -1
  108. package/amd/InputDatePicker-7b8c3f34.js +2 -0
  109. package/amd/{InputDatePicker-e1b3a4ec.js.map → InputDatePicker-7b8c3f34.js.map} +1 -1
  110. package/amd/InputPassword-d0a245dd.js +1 -1
  111. package/amd/InputSensitiveText-382cbdb0.js +1 -1
  112. package/amd/InputText-41e15f52.js +1 -1
  113. package/amd/Label-bb51506c.js +1 -1
  114. package/amd/LabelValueLayout-20843443.js +1 -1
  115. package/amd/LabelledLinkVariants.styles.css +3 -3
  116. package/amd/LabelledLinkVariants.styles2.css +3 -3
  117. package/amd/{Layer-1971eddb.js → Layer-64bf71ad.js} +2 -2
  118. package/amd/{Layer-1971eddb.js.map → Layer-64bf71ad.js.map} +1 -1
  119. package/amd/{LayerHost-0b288129.js → LayerHost-1a734852.js} +2 -2
  120. package/amd/{LayerHost-0b288129.js.map → LayerHost-1a734852.js.map} +1 -1
  121. package/amd/LayerManager-5ba8e6ed.js +2 -0
  122. package/amd/{LayerManager-426c669d.js.map → LayerManager-5ba8e6ed.js.map} +1 -1
  123. package/amd/Legend-a5c5da73.js +1 -1
  124. package/amd/LineAreaChart-0a7c48c0.js +1 -1
  125. package/amd/Link-aef5429d.js +1 -1
  126. package/amd/List-99db89cc.js +1 -1
  127. package/amd/{ListItemLayout-2dbba38a.js → ListItemLayout-23390b90.js} +2 -2
  128. package/amd/{ListItemLayout-2dbba38a.js.map → ListItemLayout-23390b90.js.map} +1 -1
  129. package/amd/ListStyles.styles.css +7 -133
  130. package/amd/ListStyles.styles2.css +133 -7
  131. package/amd/ListView-e2d36a70.js +2 -0
  132. package/amd/{ListView-7af453a0.js.map → ListView-e2d36a70.js.map} +1 -1
  133. package/amd/LiveRegion-1553833d.js +2 -0
  134. package/amd/{LiveRegion-dbefb95b.js.map → LiveRegion-1553833d.js.map} +1 -1
  135. package/amd/{MaxLengthLiveRegion-8f9f7247.js → MaxLengthLiveRegion-5172c87a.js} +2 -2
  136. package/amd/{MaxLengthLiveRegion-8f9f7247.js.map → MaxLengthLiveRegion-5172c87a.js.map} +1 -1
  137. package/amd/Menu-0c230049.js +1 -1
  138. package/amd/MenuButton-10be141e.js +1 -1
  139. package/amd/MenuItem-8456d6e2.js +1 -1
  140. package/amd/Message-215f9d76.js +1 -1
  141. package/amd/MessageBanner-b16bf82a.js +1 -1
  142. package/amd/MessageBannerVariants.styles.css +2 -2
  143. package/amd/MessageBannerVariants.styles2.css +2 -2
  144. package/amd/MessageLayer-3c3156a8.js +2 -0
  145. package/amd/{MessageLayer-29d1f82c.js.map → MessageLayer-3c3156a8.js.map} +1 -1
  146. package/amd/MessageToast-c968b70e.js +1 -1
  147. package/amd/MessagesManager-33f8965e.js +1 -1
  148. package/amd/MeterBar-5bc359f6.js +1 -1
  149. package/amd/MeterCircle-b6971795.js +1 -1
  150. package/amd/Modal-95bf034f.js +1 -1
  151. package/amd/{MonthView-83028b09.js → MonthView-61364398.js} +2 -2
  152. package/amd/{MonthView-83028b09.js.map → MonthView-61364398.js.map} +1 -1
  153. package/amd/NavigationListItem-13378f8f.js +2 -0
  154. package/amd/NavigationListItem-13378f8f.js.map +1 -0
  155. package/amd/NavigationListLinkItem-82fd633c.js +2 -0
  156. package/amd/NavigationListLinkItem-82fd633c.js.map +1 -0
  157. package/amd/NumberInputText-bc20c26b.js +1 -1
  158. package/amd/OverflowTabBar-2799b824.js +2 -0
  159. package/amd/OverflowTabBar-2799b824.js.map +1 -0
  160. package/amd/OverflowTabBarItem-be8cd2ae.js +2 -0
  161. package/amd/{OverflowTabBarItem-51015785.js.map → OverflowTabBarItem-be8cd2ae.js.map} +1 -1
  162. package/amd/PRIVATE_BaseCardView.js +1 -1
  163. package/amd/PRIVATE_BaseDiagram.js +1 -1
  164. package/amd/PRIVATE_BaseSelector.js +1 -1
  165. package/amd/PRIVATE_BaseSwatchView.js +1 -1
  166. package/amd/PRIVATE_Chart.js +1 -1
  167. package/amd/PRIVATE_CheckboxControl.js +1 -1
  168. package/amd/PRIVATE_CheckboxRadioField.js +1 -1
  169. package/amd/PRIVATE_ClearIcon.js +1 -1
  170. package/amd/PRIVATE_CollapsibleNavigationList.js +1 -1
  171. package/amd/PRIVATE_DatePickerHeader.js +1 -1
  172. package/amd/PRIVATE_DatePickerLayout.js +1 -1
  173. package/amd/PRIVATE_EmbeddedIconButton.js +1 -1
  174. package/amd/PRIVATE_Expander.js +1 -1
  175. package/amd/PRIVATE_FormControls.js +1 -1
  176. package/amd/PRIVATE_FormControls.js.map +1 -1
  177. package/amd/PRIVATE_IconSwitchButton.js +1 -1
  178. package/amd/PRIVATE_Icons/CheckboxCrossed.js +1 -1
  179. package/amd/PRIVATE_Icons/CheckboxMixed.js +1 -1
  180. package/amd/PRIVATE_Icons/CheckboxOff.js +1 -1
  181. package/amd/PRIVATE_Icons/CheckboxOn.js +1 -1
  182. package/amd/PRIVATE_Icons/DragV.js +1 -1
  183. package/amd/PRIVATE_Icons/None.js +1 -1
  184. package/amd/PRIVATE_List/themes/ListStyles.css.js +1 -1
  185. package/amd/PRIVATE_List.js +1 -1
  186. package/amd/PRIVATE_Message.js +1 -1
  187. package/amd/PRIVATE_MessageLayer.js +1 -1
  188. package/amd/PRIVATE_MonthView.js +1 -1
  189. package/amd/PRIVATE_MonthYearGridView.js +1 -1
  190. package/amd/PRIVATE_PlotArea.js +1 -1
  191. package/amd/PRIVATE_RevealToggleIcon.js +1 -1
  192. package/amd/PRIVATE_RichSelectionCommon.js +1 -1
  193. package/amd/PRIVATE_SelectCommon/themes/dropdownStyles.css.js +1 -1
  194. package/amd/PRIVATE_SelectCommon.js +1 -1
  195. package/amd/PRIVATE_StyledCard.js +1 -1
  196. package/amd/PRIVATE_StyledCheckbox.js +1 -1
  197. package/amd/PRIVATE_StyledSwitch.js +1 -1
  198. package/amd/PRIVATE_SwatchFlexView.js +1 -1
  199. package/amd/PRIVATE_Table.js +1 -1
  200. package/amd/PRIVATE_TableDisplay.js +1 -1
  201. package/amd/PRIVATE_TableList/themes/ListStyles.css.js +1 -1
  202. package/amd/PRIVATE_TableList/themes/redwood/ListTheme.js +1 -1
  203. package/amd/PRIVATE_TableList/themes/redwood/ListTheme.js.map +1 -1
  204. package/amd/PRIVATE_TableList/themes/redwood/ListVariants.css.js +1 -1
  205. package/amd/PRIVATE_TableList/themes/stable/ListTheme.js +1 -1
  206. package/amd/PRIVATE_TableList/themes/stable/ListTheme.js.map +1 -1
  207. package/amd/PRIVATE_TableList/themes/stable/ListVariants.css.js +1 -1
  208. package/amd/PRIVATE_TableList.js +1 -1
  209. package/amd/PRIVATE_ThemedIcons/CalendarIcon.js +1 -1
  210. package/amd/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +1 -1
  211. package/amd/PRIVATE_ThemedIcons/ChartPanIcon.js +1 -1
  212. package/amd/PRIVATE_ThemedIcons/ChartZoomIcon.js +1 -1
  213. package/amd/PRIVATE_ThemedIcons/CheckIcon.js +1 -1
  214. package/amd/PRIVATE_ThemedIcons/CheckboxCrossedIcon.js +1 -1
  215. package/amd/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +1 -1
  216. package/amd/PRIVATE_ThemedIcons/CheckboxOffIcon.js +1 -1
  217. package/amd/PRIVATE_ThemedIcons/CheckboxOnIcon.js +1 -1
  218. package/amd/PRIVATE_ThemedIcons/CloseIcon.js +1 -1
  219. package/amd/PRIVATE_ThemedIcons/CollapseIcon.js +1 -1
  220. package/amd/PRIVATE_ThemedIcons/CollapseUpIcon.js +1 -1
  221. package/amd/PRIVATE_ThemedIcons/DecrementIcon.js +1 -1
  222. package/amd/PRIVATE_ThemedIcons/DeleteIcon.js +1 -1
  223. package/amd/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +1 -1
  224. package/amd/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +1 -1
  225. package/amd/PRIVATE_ThemedIcons/DragHandleIcon.js +1 -1
  226. package/amd/PRIVATE_ThemedIcons/DropdownArrowIcon.js +1 -1
  227. package/amd/PRIVATE_ThemedIcons/ExpandIcon.js +1 -1
  228. package/amd/PRIVATE_ThemedIcons/HelpIcon.js +1 -1
  229. package/amd/PRIVATE_ThemedIcons/IncrementIcon.js +1 -1
  230. package/amd/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +1 -1
  231. package/amd/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +1 -1
  232. package/amd/PRIVATE_ThemedIcons/MessageErrorIcon.js +1 -1
  233. package/amd/PRIVATE_ThemedIcons/MessageInfoIcon.js +1 -1
  234. package/amd/PRIVATE_ThemedIcons/MessageWarningIcon.js +1 -1
  235. package/amd/PRIVATE_ThemedIcons/MinusIcon.js +1 -1
  236. package/amd/PRIVATE_ThemedIcons/NavDownIcon.js +1 -1
  237. package/amd/PRIVATE_ThemedIcons/None.js +1 -1
  238. package/amd/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +1 -1
  239. package/amd/PRIVATE_ThemedIcons/PlusIcon.js +1 -1
  240. package/amd/PRIVATE_ThemedIcons/RadioOffIcon.js +1 -1
  241. package/amd/PRIVATE_ThemedIcons/RadioOnIcon.js +1 -1
  242. package/amd/PRIVATE_ThemedIcons/SortAscendingIcon.js +1 -1
  243. package/amd/PRIVATE_ThemedIcons/SortDescendingIcon.js +1 -1
  244. package/amd/PRIVATE_ThemedIcons/ViewHideIcon.js +1 -1
  245. package/amd/PRIVATE_ThemedIcons/ViewIcon.js +1 -1
  246. package/amd/PRIVATE_TimeComponent.js +1 -1
  247. package/amd/PRIVATE_TruncatingLink.js +1 -1
  248. package/amd/PRIVATE_VisOverview.js +1 -1
  249. package/amd/PRIVATE_VisStatusMessage.js +1 -1
  250. package/amd/PRIVATE_VisTabularDatatip.js +1 -1
  251. package/amd/PictoChart-0350ad5d.js +1 -1
  252. package/amd/PieChart-3b1632a9.js +1 -1
  253. package/amd/{Popup-195ebcbf.js → Popup-224c908e.js} +2 -2
  254. package/amd/{Popup-195ebcbf.js.map → Popup-224c908e.js.map} +1 -1
  255. package/amd/{ProgressBar-198c9eaa.js → ProgressBar-3ba40e55.js} +2 -2
  256. package/amd/{ProgressBar-198c9eaa.js.map → ProgressBar-3ba40e55.js.map} +1 -1
  257. package/amd/ProgressBarVariants.styles.css +1 -1
  258. package/amd/ProgressBarVariants.styles2.css +1 -1
  259. package/amd/ProgressButton-88cd271b.js +1 -1
  260. package/amd/ProgressButtonLabelLayout-c3a53386.js +1 -1
  261. package/amd/{ProgressCircle-64b285b7.js → ProgressCircle-4687b2dc.js} +2 -2
  262. package/amd/{ProgressCircle-64b285b7.js.map → ProgressCircle-4687b2dc.js.map} +1 -1
  263. package/amd/RadioIconVariants.styles.css +3 -3
  264. package/amd/RadioIconVariants.styles2.css +3 -3
  265. package/amd/RadioItem-4d0bc9d4.js +1 -1
  266. package/amd/RadioSet-11931b48.js +1 -1
  267. package/amd/RatingGauge-cc3bc6f5.js +1 -1
  268. package/amd/ReadonlyTextFieldInput-9706fa0f.js +1 -1
  269. package/amd/{ReferenceLineArea-450530dd.js → ReferenceLineArea-27698a8f.js} +2 -2
  270. package/amd/{ReferenceLineArea-450530dd.js.map → ReferenceLineArea-27698a8f.js.map} +1 -1
  271. package/amd/RemovableNavigationListItem-257c9f29.js +2 -0
  272. package/amd/{RemovableNavigationListItem-69964f9b.js.map → RemovableNavigationListItem-257c9f29.js.map} +1 -1
  273. package/amd/RemovableTabBarItem-41219bd9.js +1 -1
  274. package/amd/ReorderableTabBar-83c85e12.js +2 -0
  275. package/amd/{ReorderableTabBar-88812623.js.map → ReorderableTabBar-83c85e12.js.map} +1 -1
  276. package/amd/RevealToggleIcon-cbac4379.js +1 -1
  277. package/amd/ScatterChart-f9737c22.js +1 -1
  278. package/amd/SectionalLegend-bb8ddea0.js +1 -1
  279. package/amd/SectionedContent-83e573fa.js +2 -0
  280. package/amd/{SectionedContent-b3b8c704.js.map → SectionedContent-83e573fa.js.map} +1 -1
  281. package/amd/SegmentStyles.styles.css +12 -9
  282. package/amd/SegmentStyles.styles2.css +9 -12
  283. package/amd/SelectMobileFieldInput-622df695.js +1 -1
  284. package/amd/SelectMultiple-29802730.js +1 -1
  285. package/amd/SelectSingle-1df8db91.js +1 -1
  286. package/amd/{SelectorAll-af8819d1.js → SelectorAll-57f46502.js} +2 -2
  287. package/amd/{SelectorAll-af8819d1.js.map → SelectorAll-57f46502.js.map} +1 -1
  288. package/amd/Sheet-2f362cd6.js +1 -1
  289. package/amd/SortControl-0bad0e70.js +1 -1
  290. package/amd/SplitMenuButton-e0588843.js +1 -1
  291. package/amd/SplitMenuButtonTheme.styles.css +4 -4
  292. package/amd/SplitMenuButtonTheme.styles2.css +4 -4
  293. package/amd/StyledCard-4baafee3.js +1 -1
  294. package/amd/{StyledLabelValueLayout-907bc2d3.js → StyledLabelValueLayout-16ac9a5e.js} +2 -2
  295. package/amd/{StyledLabelValueLayout-907bc2d3.js.map → StyledLabelValueLayout-16ac9a5e.js.map} +1 -1
  296. package/amd/StyledSwitch-70b52e12.js +1 -1
  297. package/amd/StyledTextField-2b9c440e.js +1 -1
  298. package/amd/Submenu-5c9dd132.js +1 -1
  299. package/amd/TabBar-b1a5b152.js +2 -0
  300. package/amd/TabBar-b1a5b152.js.map +1 -0
  301. package/amd/TabBarContextMenu-6f38f6ab.js +1 -1
  302. package/amd/TabBarItemVariants.styles.css +3 -3
  303. package/amd/TabBarItemVariants.styles2.css +3 -3
  304. package/amd/TabBarLayout-4eb6c732.js +1 -1
  305. package/amd/TabBarMixed-89c3bcbf.js +2 -0
  306. package/amd/{TabBarMixed-ec5c495d.js.map → TabBarMixed-89c3bcbf.js.map} +1 -1
  307. package/amd/{TabBarMixedSeparator-019d266b.js → TabBarMixedSeparator-c77d8e96.js} +2 -2
  308. package/amd/{TabBarMixedSeparator-019d266b.js.map → TabBarMixedSeparator-c77d8e96.js.map} +1 -1
  309. package/amd/Table-1cf29ebb.js +1 -1
  310. package/amd/TableColGroup-53b37601.js +1 -1
  311. package/amd/TableDisplay-a8788021.js +1 -1
  312. package/amd/TagCloud-6ce219f4.js +1 -1
  313. package/amd/TextArea-6ef225b5.js +1 -1
  314. package/amd/TextAreaAutosize-26fd8dd5.js +1 -1
  315. package/amd/TextField-9e466a1b.js +1 -1
  316. package/amd/TextFieldInput-b220bd88.js +1 -1
  317. package/amd/Theme-redwood/theme.css +613 -763
  318. package/amd/Theme-stable/theme.css +708 -558
  319. package/amd/TimeComponentCanvas2D-51923749.js +1 -1
  320. package/amd/ToggleButton-8e83d4e6.js +1 -1
  321. package/amd/Toolbar-ad8e9e18.js +1 -1
  322. package/amd/TruncatingBadge-a1a5ff30.js +1 -1
  323. package/amd/TruncatingLink-3ee7b335.js +1 -1
  324. package/amd/TruncatingText-bccd5fe9.js +1 -1
  325. package/amd/UNSAFE_AccordionItemMultiple.js +1 -1
  326. package/amd/UNSAFE_AccordionItemSingle.js +1 -1
  327. package/amd/UNSAFE_ActionCard.js +1 -1
  328. package/amd/UNSAFE_Avatar/themes/redwood/AvatarTheme.js +1 -1
  329. package/amd/UNSAFE_Avatar/themes/redwood/AvatarTheme.js.map +1 -1
  330. package/amd/UNSAFE_Avatar/themes/redwood/AvatarVariants.css.js +1 -1
  331. package/amd/UNSAFE_Avatar/themes/stable/AvatarTheme.js +1 -1
  332. package/amd/UNSAFE_Avatar/themes/stable/AvatarTheme.js.map +1 -1
  333. package/amd/UNSAFE_Avatar/themes/stable/AvatarVariants.css.js +1 -1
  334. package/amd/UNSAFE_Avatar.js +1 -1
  335. package/amd/UNSAFE_Badge/themes/redwood/BadgeTheme.js +1 -1
  336. package/amd/UNSAFE_Badge/themes/redwood/BadgeTheme.js.map +1 -1
  337. package/amd/UNSAFE_Badge/themes/redwood/BadgeVariants.css.js +1 -1
  338. package/amd/UNSAFE_Badge/themes/stable/BadgeTheme.js +1 -1
  339. package/amd/UNSAFE_Badge/themes/stable/BadgeTheme.js.map +1 -1
  340. package/amd/UNSAFE_Badge/themes/stable/BadgeVariants.css.js +1 -1
  341. package/amd/UNSAFE_Badge.js +1 -1
  342. package/amd/UNSAFE_BarChart/__test__/BarChart.spec.js +1 -1
  343. package/amd/UNSAFE_BarChart.js +1 -1
  344. package/amd/UNSAFE_BareButton.js +1 -1
  345. package/amd/UNSAFE_BaseButton/themes/redwood/BaseButtonTheme.js +1 -1
  346. package/amd/UNSAFE_BaseButton/themes/redwood/BaseButtonTheme.js.map +1 -1
  347. package/amd/UNSAFE_BaseButton.js +1 -1
  348. package/amd/UNSAFE_Button.js +1 -1
  349. package/amd/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +1 -1
  350. package/amd/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js.map +1 -1
  351. package/amd/UNSAFE_ButtonSet.js +1 -1
  352. package/amd/UNSAFE_ButtonSetButton.js +1 -1
  353. package/amd/UNSAFE_ButtonSetIconButton.js +1 -1
  354. package/amd/UNSAFE_ButtonSetItem.js +1 -1
  355. package/amd/UNSAFE_ButtonSetMultiple.js +1 -1
  356. package/amd/UNSAFE_ButtonSetSingle.js +1 -1
  357. package/amd/UNSAFE_Card.js +1 -1
  358. package/amd/UNSAFE_CardFlexView.js +1 -1
  359. package/amd/UNSAFE_CardGridView.js +1 -1
  360. package/amd/UNSAFE_Center.js +1 -1
  361. package/amd/UNSAFE_Checkbox.js +1 -1
  362. package/amd/UNSAFE_CheckboxItem.js +1 -1
  363. package/amd/UNSAFE_CheckboxRadioField.js +1 -1
  364. package/amd/UNSAFE_CheckboxSet.js +1 -1
  365. package/amd/UNSAFE_Chip.js +1 -1
  366. package/amd/UNSAFE_Collapsible.js +1 -1
  367. package/amd/UNSAFE_ColorPalette.js +1 -1
  368. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerTheme.js +1 -1
  369. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerTheme.js.map +1 -1
  370. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerVariants.css.js +1 -1
  371. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerTheme.js +1 -1
  372. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerTheme.js.map +1 -1
  373. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerVariants.css.js +1 -1
  374. package/amd/UNSAFE_ColorPicker.js +1 -1
  375. package/amd/UNSAFE_ColorSwatch.js +1 -1
  376. package/amd/UNSAFE_ComboChart.js +1 -1
  377. package/amd/UNSAFE_ComponentMessage.js +1 -1
  378. package/amd/UNSAFE_ContainerDiagram/themes/DiagramStyles.css.js +1 -1
  379. package/amd/UNSAFE_ContainerDiagram.js +1 -1
  380. package/amd/UNSAFE_ConveyorBelt.js +1 -1
  381. package/amd/UNSAFE_DatePicker.js +1 -1
  382. package/amd/UNSAFE_Diagram/themes/DiagramStyles.css.js +1 -1
  383. package/amd/UNSAFE_Diagram.js +1 -1
  384. package/amd/UNSAFE_Dialog.js +1 -1
  385. package/amd/UNSAFE_Dialog.js.map +1 -1
  386. package/amd/UNSAFE_DragHandle.js +1 -1
  387. package/amd/UNSAFE_DrawerLayout.js +1 -1
  388. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupTheme.js +1 -1
  389. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupTheme.js.map +1 -1
  390. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupVariants.css.js +1 -1
  391. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupTheme.js +1 -1
  392. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupTheme.js.map +1 -1
  393. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupVariants.css.js +1 -1
  394. package/amd/UNSAFE_DrawerPopup.js +1 -1
  395. package/amd/UNSAFE_Dropdown/themes/dropdownStyles.css.js +1 -1
  396. package/amd/UNSAFE_Dropdown.js +1 -1
  397. package/amd/UNSAFE_Environment.js +1 -1
  398. package/amd/UNSAFE_ExpandableList.js +1 -1
  399. package/amd/UNSAFE_FilePicker/themes/redwood/FilePickerTheme.js +1 -1
  400. package/amd/UNSAFE_FilePicker/themes/redwood/FilePickerTheme.js.map +1 -1
  401. package/amd/UNSAFE_FilePicker/themes/redwood/FilePickerVariants.css.js +1 -1
  402. package/amd/UNSAFE_FilePicker/themes/stable/FilePickerTheme.js +1 -1
  403. package/amd/UNSAFE_FilePicker/themes/stable/FilePickerTheme.js.map +1 -1
  404. package/amd/UNSAFE_FilePicker/themes/stable/FilePickerVariants.css.js +1 -1
  405. package/amd/UNSAFE_FilePicker.js +1 -1
  406. package/amd/UNSAFE_FlatTreeView.js +1 -1
  407. package/amd/UNSAFE_Flex.js +1 -1
  408. package/amd/UNSAFE_Floating.js +1 -1
  409. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutTheme.js +1 -1
  410. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutTheme.js.map +1 -1
  411. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutVariants.css.js +1 -1
  412. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutTheme.js +1 -1
  413. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutTheme.js.map +1 -1
  414. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutVariants.css.js +1 -1
  415. package/amd/UNSAFE_FormLayout.js +1 -1
  416. package/amd/UNSAFE_Gantt.js +1 -1
  417. package/amd/UNSAFE_Grid.js +1 -1
  418. package/amd/UNSAFE_HighlightText.js +1 -1
  419. package/amd/UNSAFE_Icon.js +1 -1
  420. package/amd/UNSAFE_IconButton.js +1 -1
  421. package/amd/UNSAFE_IconMenuButton.js +1 -1
  422. package/amd/UNSAFE_IconProgressButton.js +1 -1
  423. package/amd/UNSAFE_IconToggleButton.js +1 -1
  424. package/amd/UNSAFE_Indexer.js +1 -1
  425. package/amd/UNSAFE_InlineSelectSingle.js +1 -1
  426. package/amd/UNSAFE_InputColor.js +1 -1
  427. package/amd/UNSAFE_InputDateMask/themes/SegmentStyles.css.js +1 -1
  428. package/amd/UNSAFE_InputDateMask.js +1 -1
  429. package/amd/UNSAFE_InputDatePicker.js +1 -1
  430. package/amd/UNSAFE_InputPassword.js +1 -1
  431. package/amd/UNSAFE_InputSensitiveText.js +1 -1
  432. package/amd/UNSAFE_InputText.js +1 -1
  433. package/amd/UNSAFE_InputTimeMask/themes/SegmentStyles.css.js +1 -1
  434. package/amd/UNSAFE_InputTimeMask.js +1 -1
  435. package/amd/UNSAFE_InputTimeMask.js.map +1 -1
  436. package/amd/UNSAFE_Label.js +1 -1
  437. package/amd/UNSAFE_LabelValueLayout.js +1 -1
  438. package/amd/UNSAFE_LabelledLink/themes/redwood/LabelledLinkTheme.js +1 -1
  439. package/amd/UNSAFE_LabelledLink/themes/redwood/LabelledLinkTheme.js.map +1 -1
  440. package/amd/UNSAFE_LabelledLink/themes/redwood/LabelledLinkVariants.css.js +1 -1
  441. package/amd/UNSAFE_LabelledLink/themes/stable/LabelledLinkTheme.js +1 -1
  442. package/amd/UNSAFE_LabelledLink/themes/stable/LabelledLinkTheme.js.map +1 -1
  443. package/amd/UNSAFE_LabelledLink/themes/stable/LabelledLinkVariants.css.js +1 -1
  444. package/amd/UNSAFE_LabelledLink.js +1 -1
  445. package/amd/UNSAFE_LabelledLink.js.map +1 -1
  446. package/amd/UNSAFE_Layer.js +1 -1
  447. package/amd/UNSAFE_Legend.js +1 -1
  448. package/amd/UNSAFE_LineAreaChart.js +1 -1
  449. package/amd/UNSAFE_Link.js +1 -1
  450. package/amd/UNSAFE_ListItemLayout.js +1 -1
  451. package/amd/UNSAFE_ListView.js +1 -1
  452. package/amd/UNSAFE_LiveRegion.js +1 -1
  453. package/amd/UNSAFE_Menu.js +1 -1
  454. package/amd/UNSAFE_MenuButton.js +1 -1
  455. package/amd/UNSAFE_MessageBanner/themes/redwood/MessageBannerTheme.js +1 -1
  456. package/amd/UNSAFE_MessageBanner/themes/redwood/MessageBannerTheme.js.map +1 -1
  457. package/amd/UNSAFE_MessageBanner/themes/redwood/MessageBannerVariants.css.js +1 -1
  458. package/amd/UNSAFE_MessageBanner/themes/stable/MessageBannerTheme.js +1 -1
  459. package/amd/UNSAFE_MessageBanner/themes/stable/MessageBannerTheme.js.map +1 -1
  460. package/amd/UNSAFE_MessageBanner/themes/stable/MessageBannerVariants.css.js +1 -1
  461. package/amd/UNSAFE_MessageBanner.js +1 -1
  462. package/amd/UNSAFE_MessageToast.js +1 -1
  463. package/amd/UNSAFE_MeterBar.js +1 -1
  464. package/amd/UNSAFE_MeterCircle.js +1 -1
  465. package/amd/UNSAFE_Modal.js +1 -1
  466. package/amd/UNSAFE_NavigationList.js +1 -1
  467. package/amd/UNSAFE_NavigationListCommon.js +1 -1
  468. package/amd/UNSAFE_NumberInputText.js +1 -1
  469. package/amd/UNSAFE_OverflowTabBar.js +1 -1
  470. package/amd/UNSAFE_PictoChart.js +1 -1
  471. package/amd/UNSAFE_PieChart/__test__/PieChart.spec.js +1 -1
  472. package/amd/UNSAFE_PieChart/__test__/PieChart.spec.js.map +1 -1
  473. package/amd/UNSAFE_PieChart.js +1 -1
  474. package/amd/UNSAFE_Popup.js +1 -1
  475. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarTheme.js +1 -1
  476. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarTheme.js.map +1 -1
  477. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarVariants.css.js +1 -1
  478. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarTheme.js +1 -1
  479. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarTheme.js.map +1 -1
  480. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarVariants.css.js +1 -1
  481. package/amd/UNSAFE_ProgressBar.js +1 -1
  482. package/amd/UNSAFE_ProgressButton.js +1 -1
  483. package/amd/UNSAFE_ProgressButtonLabelLayout.js +1 -1
  484. package/amd/UNSAFE_ProgressCircle.js +1 -1
  485. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconTheme.js +1 -1
  486. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconTheme.js.map +1 -1
  487. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconVariants.css.js +1 -1
  488. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconTheme.js +1 -1
  489. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconTheme.js.map +1 -1
  490. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconVariants.css.js +1 -1
  491. package/amd/UNSAFE_RadioItem.js +1 -1
  492. package/amd/UNSAFE_RadioSet.js +1 -1
  493. package/amd/UNSAFE_RatingGauge.js +1 -1
  494. package/amd/UNSAFE_ReorderableTabBar.js +1 -1
  495. package/amd/UNSAFE_RichCheckboxSet.js +1 -1
  496. package/amd/UNSAFE_RichRadioSet.js +1 -1
  497. package/amd/UNSAFE_RichSelectionItem.js +1 -1
  498. package/amd/UNSAFE_RichSelectionItem.js.map +1 -1
  499. package/amd/UNSAFE_ScatterChart.js +1 -1
  500. package/amd/UNSAFE_SectionalLegend.js +1 -1
  501. package/amd/UNSAFE_SelectMultiple.js +1 -1
  502. package/amd/UNSAFE_SelectSingle.js +1 -1
  503. package/amd/UNSAFE_SelectionCard.js +1 -1
  504. package/amd/UNSAFE_Selector.js +1 -1
  505. package/amd/UNSAFE_SelectorAll.js +1 -1
  506. package/amd/UNSAFE_Sheet/__test__/Sheet.spec.js +1 -1
  507. package/amd/UNSAFE_Sheet/__test__/Sheet.spec.js.map +1 -1
  508. package/amd/UNSAFE_Sheet.js +1 -1
  509. package/amd/UNSAFE_SortControl.js +1 -1
  510. package/amd/UNSAFE_SplitMenuButton/themes/redwood/SplitMenuButtonTheme.css.js +1 -1
  511. package/amd/UNSAFE_SplitMenuButton/themes/stable/SplitMenuButtonTheme.css.js +1 -1
  512. package/amd/UNSAFE_SplitMenuButton.js +1 -1
  513. package/amd/UNSAFE_Switch.js +1 -1
  514. package/amd/UNSAFE_TabBar.js +1 -1
  515. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemTheme.js +1 -1
  516. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemTheme.js.map +1 -1
  517. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemVariants.css.js +1 -1
  518. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemTheme.js +1 -1
  519. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemTheme.js.map +1 -1
  520. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemVariants.css.js +1 -1
  521. package/amd/UNSAFE_TabBarCommon.js +1 -1
  522. package/amd/UNSAFE_TabBarMixed.js +1 -1
  523. package/amd/UNSAFE_TableView.js +1 -1
  524. package/amd/UNSAFE_TagCloud.js +1 -1
  525. package/amd/UNSAFE_TextArea.js +1 -1
  526. package/amd/UNSAFE_TextAreaAutosize.js +1 -1
  527. package/amd/UNSAFE_TextField.js +1 -1
  528. package/amd/UNSAFE_ToggleButton.js +1 -1
  529. package/amd/UNSAFE_Toolbar/tests/Toolbar.spec.js +1 -1
  530. package/amd/UNSAFE_Toolbar/tests/Toolbar.spec.js.map +1 -1
  531. package/amd/UNSAFE_Toolbar.js +1 -1
  532. package/amd/UNSAFE_Train.js +1 -1
  533. package/amd/UNSAFE_TruncatingBadge.js +1 -1
  534. package/amd/UNSAFE_TruncatingText.js +1 -1
  535. package/amd/UNSAFE_UserAssistance.js +1 -1
  536. package/amd/UNSAFE_View.js +1 -1
  537. package/amd/UNSAFE_VirtualizedListView.js +1 -1
  538. package/amd/UNSAFE_VisInvalidDataMessage.js +1 -1
  539. package/amd/UNSAFE_VisNoDataMessage.js +1 -1
  540. package/amd/UNSAFE_VisProgressiveLoader/__test__/VisProgressiveLoader.spec.js +1 -1
  541. package/amd/UNSAFE_VisProgressiveLoader.js +1 -1
  542. package/amd/UNSAFE_WindowOverlay.js +1 -1
  543. package/amd/{View-35699bb2.js → View-215ec211.js} +2 -2
  544. package/amd/{View-35699bb2.js.map → View-215ec211.js.map} +1 -1
  545. package/amd/{VisInvalidDataMessage-8e7534a7.js → VisInvalidDataMessage-139a0bf8.js} +2 -2
  546. package/amd/{VisInvalidDataMessage-8e7534a7.js.map → VisInvalidDataMessage-139a0bf8.js.map} +1 -1
  547. package/amd/VisNoDataMessage-e4eb08f6.js +2 -0
  548. package/amd/{VisNoDataMessage-fc41dae3.js.map → VisNoDataMessage-e4eb08f6.js.map} +1 -1
  549. package/amd/{VisPlaceholder-1bbfb2f0.js → VisPlaceholder-a7cac338.js} +2 -2
  550. package/amd/{VisPlaceholder-1bbfb2f0.js.map → VisPlaceholder-a7cac338.js.map} +1 -1
  551. package/amd/{VisProgressiveLoader-8c036105.js → VisProgressiveLoader-7dbd5478.js} +2 -2
  552. package/amd/{VisProgressiveLoader-8c036105.js.map → VisProgressiveLoader-7dbd5478.js.map} +1 -1
  553. package/amd/{VisStatusMessage-ac3a90aa.js → VisStatusMessage-307f20e9.js} +2 -2
  554. package/amd/{VisStatusMessage-ac3a90aa.js.map → VisStatusMessage-307f20e9.js.map} +1 -1
  555. package/amd/{VisTabularDatatip-93d56ae8.js → VisTabularDatatip-d6b9f28f.js} +2 -2
  556. package/amd/{VisTabularDatatip-93d56ae8.js.map → VisTabularDatatip-d6b9f28f.js.map} +1 -1
  557. package/amd/{WindowOverlay-3293b108.js → WindowOverlay-5b6850df.js} +2 -2
  558. package/amd/{WindowOverlay-3293b108.js.map → WindowOverlay-5b6850df.js.map} +1 -1
  559. package/amd/{YearsGridView-7d59e5a3.js → YearsGridView-c7c36cea.js} +2 -2
  560. package/amd/{YearsGridView-7d59e5a3.js.map → YearsGridView-c7c36cea.js.map} +1 -1
  561. package/amd/dropdownStyles.styles.css +97 -6
  562. package/amd/dropdownStyles.styles2.css +6 -97
  563. package/amd/hoc/PRIVATE_withDirectionIcon.js +1 -1
  564. package/amd/hoc/PRIVATE_withThemeIcon.js +1 -1
  565. package/amd/hoc/UNSAFE_withThemeProps.js +1 -1
  566. package/amd/hooks/PRIVATE_useChartContextMenu.js +1 -1
  567. package/amd/hooks/PRIVATE_useChartDatatip.js +1 -1
  568. package/amd/hooks/PRIVATE_useChartEvents.js +1 -1
  569. package/amd/hooks/PRIVATE_useChartMarquee.js +1 -1
  570. package/amd/hooks/PRIVATE_useCollectionFocusRing.js +1 -1
  571. package/amd/hooks/PRIVATE_useCssVars.js +1 -1
  572. package/amd/hooks/PRIVATE_useCurrentKey.js +1 -1
  573. package/amd/hooks/PRIVATE_useDatatip.js +1 -1
  574. package/amd/hooks/PRIVATE_useDetectHorizontalOverflow.js +1 -1
  575. package/amd/hooks/PRIVATE_useFloating.js +1 -1
  576. package/amd/hooks/PRIVATE_useItemAction.js +1 -1
  577. package/amd/hooks/PRIVATE_useListCommon.js +1 -1
  578. package/amd/hooks/PRIVATE_useOutsideMousedown.js +1 -1
  579. package/amd/hooks/PRIVATE_useRadioFocusManager.js +1 -1
  580. package/amd/hooks/PRIVATE_useReorderable.js +1 -1
  581. package/amd/hooks/PRIVATE_useRovingTabIndexContainer.js +1 -1
  582. package/amd/hooks/PRIVATE_useSelection.js +1 -1
  583. package/amd/hooks/PRIVATE_useTabBar.js +1 -1
  584. package/amd/hooks/PRIVATE_useTabbableModeSet.js +1 -1
  585. package/amd/hooks/PRIVATE_useTooltipOnTruncation.js +1 -1
  586. package/amd/hooks/PRIVATE_useVisContextMenu.js +1 -1
  587. package/amd/hooks/PRIVATE_useVisDragModeControls.js +1 -1
  588. package/amd/hooks/PRIVATE_useVisEvents.js +1 -1
  589. package/amd/hooks/PRIVATE_useVisMeterEvents.js +1 -1
  590. package/amd/hooks/PRIVATE_useVisSelection.js +1 -1
  591. package/amd/hooks/UNSAFE_useBareButton.js +1 -1
  592. package/amd/hooks/UNSAFE_useColorScheme.js +1 -1
  593. package/amd/hooks/UNSAFE_useCurrentBgColor.js +1 -1
  594. package/amd/hooks/UNSAFE_useDensity.js +1 -1
  595. package/amd/hooks/UNSAFE_useHiddenTestMethod.js +1 -1
  596. package/amd/hooks/UNSAFE_useOutsideClick.js +1 -1
  597. package/amd/hooks/UNSAFE_usePrefixSuffix.js +1 -1
  598. package/amd/hooks/UNSAFE_useScale.js +1 -1
  599. package/amd/hooks/UNSAFE_useTestId.js +1 -1
  600. package/amd/hooks/UNSAFE_useTheme.js +1 -1
  601. package/amd/hooks/UNSAFE_useThemeInterpolations.js +1 -1
  602. package/amd/hooks/UNSAFE_useTooltip.js +1 -1
  603. package/amd/hooks/UNSAFE_useTranslationBundle.js +1 -1
  604. package/amd/hooks/UNSAFE_useUser.js +1 -1
  605. package/amd/{index-ec69d863.js → index-b26cafb6.js} +2 -2
  606. package/amd/index-b26cafb6.js.map +1 -0
  607. package/amd/listViewSelectionTests-73aa8024.js +1 -1
  608. package/amd/popupUtils-71ea5dd1.js +2 -0
  609. package/amd/{popupUtils-d42db8bf.js.map → popupUtils-71ea5dd1.js.map} +1 -1
  610. package/amd/render-40923005.js +2 -0
  611. package/amd/{render-0e124b25.js.map → render-40923005.js.map} +1 -1
  612. package/amd/{tabbableUtils-0f5a148a.js → tabbableUtils-7fa099af.js} +2 -2
  613. package/amd/{tabbableUtils-0f5a148a.js.map → tabbableUtils-7fa099af.js.map} +1 -1
  614. package/amd/{testData-c84b4335.js → testData-d92d6bdb.js} +2 -2
  615. package/amd/{testData-c84b4335.js.map → testData-d92d6bdb.js.map} +1 -1
  616. package/amd/{testData-0ee09770.js → testData-db08ddc1.js} +2 -2
  617. package/amd/{testData-0ee09770.js.map → testData-db08ddc1.js.map} +1 -1
  618. package/amd/{tooltipUtils-d855e8f2.js → tooltipUtils-2f3b01e4.js} +2 -2
  619. package/amd/{tooltipUtils-d855e8f2.js.map → tooltipUtils-2f3b01e4.js.map} +1 -1
  620. package/amd/useBareButton-0afa84c2.js +1 -1
  621. package/amd/useCellNavigation-fe5a7be7.js +1 -1
  622. package/amd/useChartContextMenu-a5570943.js +1 -1
  623. package/amd/{useChartDatatip-570d6077.js → useChartDatatip-62ec3c41.js} +2 -2
  624. package/amd/{useChartDatatip-570d6077.js.map → useChartDatatip-62ec3c41.js.map} +1 -1
  625. package/amd/{useColorScheme-097c31ff.js → useColorScheme-6cb3a3b7.js} +2 -2
  626. package/amd/{useColorScheme-097c31ff.js.map → useColorScheme-6cb3a3b7.js.map} +1 -1
  627. package/amd/useContextMenu-025b44ba.js +1 -1
  628. package/amd/{useCssVars-3194b2f6.js → useCssVars-d0c0bfa2.js} +2 -2
  629. package/amd/{useCssVars-3194b2f6.js.map → useCssVars-d0c0bfa2.js.map} +1 -1
  630. package/amd/{useCurrentBgColor-6f440613.js → useCurrentBgColor-3044b50a.js} +2 -2
  631. package/amd/{useCurrentBgColor-6f440613.js.map → useCurrentBgColor-3044b50a.js.map} +1 -1
  632. package/amd/useCurrentKey-05038cac.js +2 -0
  633. package/amd/{useCurrentKey-5749e7fb.js.map → useCurrentKey-05038cac.js.map} +1 -1
  634. package/amd/{useDatatip-a1713300.js → useDatatip-a2c4bd6d.js} +2 -2
  635. package/amd/{useDatatip-a1713300.js.map → useDatatip-a2c4bd6d.js.map} +1 -1
  636. package/amd/{useDensity-8a10fc70.js → useDensity-622a2d34.js} +2 -2
  637. package/amd/{useDensity-8a10fc70.js.map → useDensity-622a2d34.js.map} +1 -1
  638. package/amd/useDetectHorizontalOverflow-e729b857.js +2 -0
  639. package/amd/useDetectHorizontalOverflow-e729b857.js.map +1 -0
  640. package/amd/useDisplayValue-6ad8d409.js +1 -1
  641. package/amd/{useExpandCollapse-41860b2a.js → useExpandCollapse-d8799966.js} +2 -2
  642. package/amd/{useExpandCollapse-41860b2a.js.map → useExpandCollapse-d8799966.js.map} +1 -1
  643. package/amd/{useFloating-5cb85d2b.js → useFloating-0bdf9133.js} +2 -2
  644. package/amd/{useFloating-5cb85d2b.js.map → useFloating-0bdf9133.js.map} +1 -1
  645. package/amd/{useHiddenTestMethod-8321d341.js → useHiddenTestMethod-6bbe8a43.js} +2 -2
  646. package/amd/{useHiddenTestMethod-8321d341.js.map → useHiddenTestMethod-6bbe8a43.js.map} +1 -1
  647. package/amd/useKeyboardEvents-191a444a.js +2 -0
  648. package/amd/{useKeyboardEvents-f0419128.js.map → useKeyboardEvents-191a444a.js.map} +1 -1
  649. package/amd/useLegendContextMenu-5d461b88.js +1 -1
  650. package/amd/useMeterDatatip-c5e61ed7.js +2 -0
  651. package/amd/{useMeterDatatip-126b6bc1.js.map → useMeterDatatip-c5e61ed7.js.map} +1 -1
  652. package/amd/useNavigation-58a94f6a.js +1 -1
  653. package/amd/{useOutsideClick-b9b661a4.js → useOutsideClick-ace4f686.js} +2 -2
  654. package/amd/{useOutsideClick-b9b661a4.js.map → useOutsideClick-ace4f686.js.map} +1 -1
  655. package/amd/{useOutsideMousedown-cb88da60.js → useOutsideMousedown-62fa309c.js} +2 -2
  656. package/amd/{useOutsideMousedown-cb88da60.js.map → useOutsideMousedown-62fa309c.js.map} +1 -1
  657. package/amd/usePopupAnimation-389749fc.js +2 -0
  658. package/amd/{usePopupAnimation-dc282b02.js.map → usePopupAnimation-389749fc.js.map} +1 -1
  659. package/amd/usePrefixSuffix-7371ec52.js +2 -0
  660. package/amd/{usePrefixSuffix-dd2cae55.js.map → usePrefixSuffix-7371ec52.js.map} +1 -1
  661. package/amd/useRadioFocusManager-c613d2fc.js +2 -0
  662. package/amd/{useRadioFocusManager-462e28eb.js.map → useRadioFocusManager-c613d2fc.js.map} +1 -1
  663. package/amd/{useReorderableItem-565edeff.js → useReorderableItem-b526f83c.js} +2 -2
  664. package/amd/{useReorderableItem-565edeff.js.map → useReorderableItem-b526f83c.js.map} +1 -1
  665. package/amd/{useRovingTabIndexContainer-9aa2fbcf.js → useRovingTabIndexContainer-a8b8ab8f.js} +2 -2
  666. package/amd/{useRovingTabIndexContainer-9aa2fbcf.js.map → useRovingTabIndexContainer-a8b8ab8f.js.map} +1 -1
  667. package/amd/{useScale-04a448c3.js → useScale-404175fb.js} +2 -2
  668. package/amd/{useScale-04a448c3.js.map → useScale-404175fb.js.map} +1 -1
  669. package/amd/useSelectCommon-0abad82b.js +1 -1
  670. package/amd/{useSelectDrill-b650174d.js → useSelectDrill-40171e59.js} +2 -2
  671. package/amd/{useSelectDrill-b650174d.js.map → useSelectDrill-40171e59.js.map} +1 -1
  672. package/amd/{useSelection-aecb6b23.js → useSelection-48cb7bdf.js} +2 -2
  673. package/amd/{useSelection-aecb6b23.js.map → useSelection-48cb7bdf.js.map} +1 -1
  674. package/amd/{useSelection-5cb56713.js → useSelection-c25e02bd.js} +2 -2
  675. package/amd/{useSelection-5cb56713.js.map → useSelection-c25e02bd.js.map} +1 -1
  676. package/amd/useTabBar-c84e226e.js +2 -0
  677. package/amd/useTabBar-c84e226e.js.map +1 -0
  678. package/amd/{useTabBarItemTooltip-6c6fb512.js → useTabBarItemTooltip-b9987366.js} +2 -2
  679. package/amd/{useTabBarItemTooltip-6c6fb512.js.map → useTabBarItemTooltip-b9987366.js.map} +1 -1
  680. package/amd/{useTestId-f4240cbd.js → useTestId-6160e7a2.js} +2 -2
  681. package/amd/{useTestId-f4240cbd.js.map → useTestId-6160e7a2.js.map} +1 -1
  682. package/amd/{useTheme-da27e1d1.js → useTheme-59bafcbb.js} +2 -2
  683. package/amd/{useTheme-da27e1d1.js.map → useTheme-59bafcbb.js.map} +1 -1
  684. package/amd/useThemeInterpolations-53e9343f.js +2 -0
  685. package/amd/{useThemeInterpolations-cc05b0f0.js.map → useThemeInterpolations-53e9343f.js.map} +1 -1
  686. package/amd/useTooltip-c03bc796.js +2 -0
  687. package/amd/{useTooltip-31ac71c4.js.map → useTooltip-c03bc796.js.map} +1 -1
  688. package/amd/{useTooltipControlled-e7021312.js → useTooltipControlled-1a6eeb63.js} +2 -2
  689. package/amd/{useTooltipControlled-e7021312.js.map → useTooltipControlled-1a6eeb63.js.map} +1 -1
  690. package/amd/{useTooltipOnTruncation-e8d8f010.js → useTooltipOnTruncation-0a7035c2.js} +2 -2
  691. package/amd/{useTooltipOnTruncation-e8d8f010.js.map → useTooltipOnTruncation-0a7035c2.js.map} +1 -1
  692. package/amd/{useTranslationBundle-e4dd341e.js → useTranslationBundle-db326955.js} +2 -2
  693. package/amd/{useTranslationBundle-e4dd341e.js.map → useTranslationBundle-db326955.js.map} +1 -1
  694. package/amd/{useUser-08901aba.js → useUser-e0677e8d.js} +2 -2
  695. package/amd/{useUser-08901aba.js.map → useUser-e0677e8d.js.map} +1 -1
  696. package/amd/useVisDragModeControls-2295174b.js +1 -1
  697. package/amd/{useVisEvents-5f18ab46.js → useVisEvents-4860cd24.js} +2 -2
  698. package/amd/{useVisEvents-5f18ab46.js.map → useVisEvents-4860cd24.js.map} +1 -1
  699. package/amd/utils/PRIVATE_collectionUtils.js +1 -1
  700. package/amd/utils/PRIVATE_tabBarUtils.js +1 -1
  701. package/amd/utils/PRIVATE_tooltipUtils.js +1 -1
  702. package/amd/utils/PRIVATE_visTestUtils.js +1 -1
  703. package/amd/utils/UNSAFE_popupUtils.js +1 -1
  704. package/amd/{withDirectionIcon-cea07c6e.js → withDirectionIcon-07d1a4ee.js} +2 -2
  705. package/amd/{withDirectionIcon-cea07c6e.js.map → withDirectionIcon-07d1a4ee.js.map} +1 -1
  706. package/amd/withThemeProps-88ad9dea.js +1 -1
  707. package/cjs/BadgeVariants.styles.css +14 -14
  708. package/cjs/BadgeVariants.styles2.css +14 -14
  709. package/cjs/{BaseCardView-da62c29e.js → BaseCardView-7ee4ea60.js} +4 -1
  710. package/cjs/{BaseCardView-da62c29e.js.map → BaseCardView-7ee4ea60.js.map} +1 -1
  711. package/cjs/{Chart-d4034cc2.js → Chart-790a72df.js} +2 -2
  712. package/cjs/{Chart-d4034cc2.js.map → Chart-790a72df.js.map} +1 -1
  713. package/cjs/CollapsibleNavigationListItemVariants.styles.css +4 -4
  714. package/cjs/CollapsibleNavigationListItemVariants.styles2.css +4 -4
  715. package/cjs/{ColorPicker-d3e8f8e0.js → ColorPicker-6e6af845.js} +2 -2
  716. package/cjs/{ColorPicker-d3e8f8e0.js.map → ColorPicker-6e6af845.js.map} +1 -1
  717. package/cjs/ConveyorBeltVariants.styles.css +6 -6
  718. package/cjs/ConveyorBeltVariants.styles2.css +6 -6
  719. package/cjs/DiagramStyles.styles2.css +16 -10
  720. package/cjs/DiagramStyles.styles3.css +10 -16
  721. package/cjs/DrawerPopupVariants.styles.css +5 -5
  722. package/cjs/DrawerPopupVariants.styles2.css +5 -5
  723. package/cjs/FilePickerVariants.styles.css +2 -2
  724. package/cjs/FilePickerVariants.styles2.css +2 -2
  725. package/cjs/FormLayoutVariants.styles.css +14 -14
  726. package/cjs/FormLayoutVariants.styles2.css +14 -14
  727. package/cjs/LabelledLinkVariants.styles.css +3 -3
  728. package/cjs/LabelledLinkVariants.styles2.css +3 -3
  729. package/cjs/LinkVariants.styles.css +17 -17
  730. package/cjs/LinkVariants.styles2.css +17 -17
  731. package/cjs/ListStyles.styles.css +7 -133
  732. package/cjs/ListStyles.styles2.css +133 -7
  733. package/cjs/MeterCircleVariants.styles.css +8 -8
  734. package/cjs/MeterCircleVariants.styles2.css +8 -8
  735. package/cjs/NavigationListItemStyles.styles.css +85 -28
  736. package/cjs/NavigationListItemStyles.styles2.css +28 -85
  737. package/cjs/NavigationListItemVariants.styles.css +4 -4
  738. package/cjs/NavigationListItemVariants.styles2.css +4 -4
  739. package/cjs/PRIVATE_BaseCardView.js +1 -1
  740. package/cjs/PRIVATE_Chart.js +4 -4
  741. package/cjs/PRIVATE_TableList.js +4 -4
  742. package/cjs/ProgressBarVariants.styles.css +1 -1
  743. package/cjs/ProgressBarVariants.styles2.css +1 -1
  744. package/cjs/RatingGaugeVariants.styles.css +15 -15
  745. package/cjs/RatingGaugeVariants.styles2.css +15 -15
  746. package/cjs/ReadonlyTextFieldVariants.styles.css +20 -20
  747. package/cjs/ReadonlyTextFieldVariants.styles2.css +20 -20
  748. package/cjs/SplitMenuButtonTheme.styles.css +4 -4
  749. package/cjs/SplitMenuButtonTheme.styles2.css +4 -4
  750. package/cjs/{TabBar-9bc26ed2.js → TabBar-e3314035.js} +9 -5
  751. package/cjs/TabBar-e3314035.js.map +1 -0
  752. package/cjs/TabBarItemVariants.styles.css +3 -3
  753. package/cjs/TabBarItemVariants.styles2.css +3 -3
  754. package/cjs/TextFieldInputVariants.styles.css +20 -20
  755. package/cjs/TextFieldInputVariants.styles2.css +20 -20
  756. package/cjs/Theme-redwood/theme.css +454 -459
  757. package/cjs/Theme-stable/theme.css +702 -697
  758. package/cjs/TrainVariants.styles.css +6 -6
  759. package/cjs/TrainVariants.styles2.css +6 -6
  760. package/cjs/UNSAFE_BarChart.js +4 -4
  761. package/cjs/UNSAFE_CardFlexView.js +1 -1
  762. package/cjs/UNSAFE_CardGridView.js +1 -1
  763. package/cjs/UNSAFE_ColorPicker.js +25 -25
  764. package/cjs/UNSAFE_ComboChart.js +4 -4
  765. package/cjs/UNSAFE_InputColor.js +2 -2
  766. package/cjs/UNSAFE_InputDatePicker.js +92 -92
  767. package/cjs/UNSAFE_LineAreaChart.js +4 -4
  768. package/cjs/UNSAFE_ListView.js +53 -53
  769. package/cjs/UNSAFE_OverflowTabBar.js +17 -13
  770. package/cjs/UNSAFE_OverflowTabBar.js.map +1 -1
  771. package/cjs/UNSAFE_ReorderableTabBar.js +13 -13
  772. package/cjs/UNSAFE_ScatterChart.js +4 -4
  773. package/cjs/UNSAFE_TabBar.js +11 -11
  774. package/cjs/UNSAFE_TabBarMixed.js +10 -10
  775. package/cjs/UNSAFE_TabBarMixed.js.map +1 -1
  776. package/cjs/hooks/PRIVATE_useDetectHorizontalOverflow.js +1 -1
  777. package/cjs/hooks/PRIVATE_useTabBar.js +1 -1
  778. package/cjs/{useDetectHorizontalOverflow-867b1a33.js → useDetectHorizontalOverflow-5ef28b51.js} +30 -58
  779. package/cjs/useDetectHorizontalOverflow-5ef28b51.js.map +1 -0
  780. package/cjs/{useTabBar-59484847.js → useTabBar-f8dc4f58.js} +2 -5
  781. package/cjs/useTabBar-f8dc4f58.js.map +1 -0
  782. package/es/{BaseButton-e8e5bfe4.js → BaseButton-feeaaf1c.js} +2 -2
  783. package/es/{BaseButton-e8e5bfe4.js.map → BaseButton-feeaaf1c.js.map} +1 -1
  784. package/es/{BaseCardView-f262a5b4.js → BaseCardView-35315f78.js} +10 -7
  785. package/es/{BaseCardView-f262a5b4.js.map → BaseCardView-35315f78.js.map} +1 -1
  786. package/es/BaseDiagram-faa6e0d7.js +7 -7
  787. package/es/BaseRichSelection-23604860.js +9 -9
  788. package/es/BaseSelector-9bbbaba1.js +1 -1
  789. package/es/BaseSwatchView-3c44d9f2.js +2 -2
  790. package/es/{Button-1a5604c2.js → Button-4efeb375.js} +2 -2
  791. package/es/{Button-1a5604c2.js.map → Button-4efeb375.js.map} +1 -1
  792. package/es/ButtonLayoutVariants.styles.css +2 -2
  793. package/es/ButtonLayoutVariants.styles2.css +2 -2
  794. package/es/ButtonSet-b7464e9a.js +2 -2
  795. package/es/ButtonSetButton-61b88d81.js +1 -1
  796. package/es/ButtonSetIconButton-480cff44.js +4 -4
  797. package/es/{Center-71a03e65.js → Center-3860fe60.js} +2 -2
  798. package/es/{Center-71a03e65.js.map → Center-3860fe60.js.map} +1 -1
  799. package/es/{Chart-1c763f58.js → Chart-2dc00418.js} +12 -12
  800. package/es/{Chart-1c763f58.js.map → Chart-2dc00418.js.map} +1 -1
  801. package/es/CheckboxControl-6809b83a.js +6 -6
  802. package/es/CheckboxRadioField-519849af.js +6 -6
  803. package/es/CheckboxRadioLabelValueLayout-e2722e3d.js +1 -1
  804. package/es/Chip-4efea02e.js +1 -1
  805. package/es/ClearIcon-8e4a444e.js +1 -1
  806. package/es/CollapseIcon-d6a9d390.js +1 -1
  807. package/es/Collapsible-9df0dd24.js +2 -2
  808. package/es/ColorPalette-55b90e34.js +2 -2
  809. package/es/{ColorPicker-1da92fa1.js → ColorPicker-e85a8b91.js} +3 -3
  810. package/es/{ColorPicker-1da92fa1.js.map → ColorPicker-e85a8b91.js.map} +1 -1
  811. package/es/ColorSwatch-c7ed4c71.js +4 -4
  812. package/es/{CompactLabelAssistance-5d20a2c9.js → CompactLabelAssistance-58b860e8.js} +6 -6
  813. package/es/{CompactLabelAssistance-5d20a2c9.js.map → CompactLabelAssistance-58b860e8.js.map} +1 -1
  814. package/es/CompactUserAssistance-946c7e35.js +5 -5
  815. package/es/ComponentMessageContainer-b3f70763.js +4 -4
  816. package/es/{DatePicker-4d20c548.js → DatePicker-052acd92.js} +8 -8
  817. package/es/{DatePicker-4d20c548.js.map → DatePicker-052acd92.js.map} +1 -1
  818. package/es/DatePickerHeader-d0704e8e.js +3 -3
  819. package/es/DiagramStyles.styles2.css +16 -10
  820. package/es/DiagramStyles.styles3.css +10 -16
  821. package/es/{Dialog-5f3bd525.js → Dialog-edc4e066.js} +7 -7
  822. package/es/{Dialog-5f3bd525.js.map → Dialog-edc4e066.js.map} +1 -1
  823. package/es/DirectionalCollapseArrowIcon-d30c236f.js +1 -1
  824. package/es/DirectionalExpandArrowIcon-00f45fad.js +1 -1
  825. package/es/{Dropdown-63170b62.js → Dropdown-f3f363dc.js} +6 -6
  826. package/es/{Dropdown-63170b62.js.map → Dropdown-f3f363dc.js.map} +1 -1
  827. package/es/{EmbeddedIconButton-a1aadc89.js → EmbeddedIconButton-8237a4ea.js} +2 -2
  828. package/es/{EmbeddedIconButton-a1aadc89.js.map → EmbeddedIconButton-8237a4ea.js.map} +1 -1
  829. package/es/{EnvironmentProvider-6a0a8212.js → EnvironmentProvider-6cf8ed37.js} +3 -3
  830. package/es/{EnvironmentProvider-6a0a8212.js.map → EnvironmentProvider-6cf8ed37.js.map} +1 -1
  831. package/es/Expander-0c60d26b.js +1 -1
  832. package/es/{Flex-03129963.js → Flex-fc483125.js} +2 -2
  833. package/es/{Flex-03129963.js.map → Flex-fc483125.js.map} +1 -1
  834. package/es/{Floating-8a9436ac.js → Floating-0a11107a.js} +4 -4
  835. package/es/{Floating-8a9436ac.js.map → Floating-0a11107a.js.map} +1 -1
  836. package/es/{Grid-9e4b4f19.js → Grid-6f92d323.js} +2 -2
  837. package/es/{Grid-9e4b4f19.js.map → Grid-6f92d323.js.map} +1 -1
  838. package/es/GroupLoadingIndicator-e2acd49f.js +1 -1
  839. package/es/{HighlightText-0205faef.js → HighlightText-dd484ffd.js} +2 -2
  840. package/es/{HighlightText-0205faef.js.map → HighlightText-dd484ffd.js.map} +1 -1
  841. package/es/Icon-96679294.js +3 -3
  842. package/es/IconButton-bb390936.js +4 -4
  843. package/es/IconSwitchButton-765c38e8.js +4 -4
  844. package/es/IconToggleButton-fe8d0e55.js +4 -4
  845. package/es/{IconUserAssistance-30afcebe.js → IconUserAssistance-2deafca3.js} +3 -3
  846. package/es/{IconUserAssistance-30afcebe.js.map → IconUserAssistance-2deafca3.js.map} +1 -1
  847. package/es/InlineHelp-774fd01d.js +1 -1
  848. package/es/InlineUserAssistance-6aa2141e.js +5 -5
  849. package/es/InputDateMask-80707fa6.js +7 -7
  850. package/es/Label-a6c32235.js +8 -8
  851. package/es/LabelValueLayout-e8167a67.js +1 -1
  852. package/es/{Layer-535577b5.js → Layer-6c27170e.js} +3 -3
  853. package/es/{Layer-535577b5.js.map → Layer-6c27170e.js.map} +1 -1
  854. package/es/{LayerHost-7931b424.js → LayerHost-3cf255a6.js} +2 -2
  855. package/es/{LayerHost-7931b424.js.map → LayerHost-3cf255a6.js.map} +1 -1
  856. package/es/{LayerManager-52a26c55.js → LayerManager-e30fbfd6.js} +2 -2
  857. package/es/{LayerManager-52a26c55.js.map → LayerManager-e30fbfd6.js.map} +1 -1
  858. package/es/Link-49801aeb.js +1 -1
  859. package/es/List-3ed2c0e8.js +5 -5
  860. package/es/ListStyles.styles.css +7 -133
  861. package/es/ListStyles.styles2.css +133 -7
  862. package/es/{LiveRegion-cebac18d.js → LiveRegion-2e8830ae.js} +2 -2
  863. package/es/{LiveRegion-cebac18d.js.map → LiveRegion-2e8830ae.js.map} +1 -1
  864. package/es/{MaxLengthLiveRegion-8099fde5.js → MaxLengthLiveRegion-8f552ae2.js} +3 -3
  865. package/es/{MaxLengthLiveRegion-8099fde5.js.map → MaxLengthLiveRegion-8f552ae2.js.map} +1 -1
  866. package/es/MenuItemVariants.styles.css +8 -8
  867. package/es/MenuItemVariants.styles2.css +8 -8
  868. package/es/Message-aac08650.js +2 -2
  869. package/es/MessageBannerVariants.styles.css +2 -2
  870. package/es/MessageBannerVariants.styles2.css +2 -2
  871. package/es/{MessageLayer-69878fee.js → MessageLayer-776fe02e.js} +6 -6
  872. package/es/{MessageLayer-69878fee.js.map → MessageLayer-776fe02e.js.map} +1 -1
  873. package/es/MessagesManager-98126752.js +3 -3
  874. package/es/Modal-c0f730b8.js +3 -3
  875. package/es/{MonthView-65906260.js → MonthView-6ed9958e.js} +5 -5
  876. package/es/{MonthView-65906260.js.map → MonthView-6ed9958e.js.map} +1 -1
  877. package/es/NavigationListItem-aca16c7a.js +4 -4
  878. package/es/NavigationListLinkItem-99c5b4e5.js +5 -5
  879. package/es/NumberInputText-a3f34683.js +6 -6
  880. package/es/OverflowTabBarItem-817b089a.js +5 -5
  881. package/es/PRIVATE_BaseCardView.js +23 -23
  882. package/es/PRIVATE_BaseDiagram.js +30 -30
  883. package/es/PRIVATE_BaseSelector.js +17 -17
  884. package/es/PRIVATE_BaseSwatchView.js +18 -18
  885. package/es/PRIVATE_Chart.js +39 -39
  886. package/es/PRIVATE_CheckboxControl.js +26 -26
  887. package/es/PRIVATE_CheckboxRadioField.js +28 -28
  888. package/es/PRIVATE_ClearIcon.js +18 -18
  889. package/es/PRIVATE_CollapsibleNavigationList.js +43 -43
  890. package/es/PRIVATE_DatePickerHeader.js +20 -20
  891. package/es/PRIVATE_DatePickerLayout.js +4 -4
  892. package/es/PRIVATE_EmbeddedIconButton.js +6 -6
  893. package/es/PRIVATE_Expander.js +19 -19
  894. package/es/PRIVATE_FormControls.js +21 -21
  895. package/es/PRIVATE_IconSwitchButton.js +17 -17
  896. package/es/PRIVATE_Icons/CheckboxCrossed.js +16 -16
  897. package/es/PRIVATE_Icons/CheckboxMixed.js +16 -16
  898. package/es/PRIVATE_Icons/CheckboxOff.js +16 -16
  899. package/es/PRIVATE_Icons/CheckboxOn.js +16 -16
  900. package/es/PRIVATE_Icons/DragV.js +16 -16
  901. package/es/PRIVATE_Icons/None.js +16 -16
  902. package/es/PRIVATE_List/themes/ListStyles.css.js +1 -1
  903. package/es/PRIVATE_List.js +22 -22
  904. package/es/PRIVATE_Message.js +21 -21
  905. package/es/PRIVATE_MessageLayer.js +12 -12
  906. package/es/PRIVATE_MonthView.js +20 -20
  907. package/es/PRIVATE_MonthYearGridView.js +7 -7
  908. package/es/PRIVATE_PlotArea.js +5 -5
  909. package/es/PRIVATE_RevealToggleIcon.js +18 -18
  910. package/es/PRIVATE_RichSelectionCommon.js +29 -29
  911. package/es/PRIVATE_SelectCommon.js +33 -33
  912. package/es/PRIVATE_StyledCard.js +3 -3
  913. package/es/PRIVATE_StyledCheckbox.js +16 -16
  914. package/es/PRIVATE_StyledSwitch.js +4 -4
  915. package/es/PRIVATE_SwatchFlexView.js +18 -18
  916. package/es/PRIVATE_Table.js +59 -59
  917. package/es/PRIVATE_TableDisplay.js +19 -19
  918. package/es/PRIVATE_TableList/themes/ListStyles.css.js +1 -1
  919. package/es/PRIVATE_TableList/themes/redwood/ListTheme.js +1 -1
  920. package/es/PRIVATE_TableList/themes/redwood/ListVariants.css.js +1 -1
  921. package/es/PRIVATE_TableList/themes/stable/ListTheme.js +1 -1
  922. package/es/PRIVATE_TableList/themes/stable/ListVariants.css.js +1 -1
  923. package/es/PRIVATE_TableList.js +32 -32
  924. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +16 -16
  925. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +16 -16
  926. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +16 -16
  927. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +16 -16
  928. package/es/PRIVATE_ThemedIcons/CheckIcon.js +16 -16
  929. package/es/PRIVATE_ThemedIcons/CheckboxCrossedIcon.js +16 -16
  930. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +16 -16
  931. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +16 -16
  932. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +16 -16
  933. package/es/PRIVATE_ThemedIcons/CloseIcon.js +16 -16
  934. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +17 -17
  935. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +16 -16
  936. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +16 -16
  937. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +16 -16
  938. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +17 -17
  939. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +17 -17
  940. package/es/PRIVATE_ThemedIcons/DragHandleIcon.js +16 -16
  941. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +16 -16
  942. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +16 -16
  943. package/es/PRIVATE_ThemedIcons/HelpIcon.js +16 -16
  944. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +16 -16
  945. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +16 -16
  946. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +16 -16
  947. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +16 -16
  948. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +16 -16
  949. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +16 -16
  950. package/es/PRIVATE_ThemedIcons/MinusIcon.js +16 -16
  951. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +16 -16
  952. package/es/PRIVATE_ThemedIcons/None.js +16 -16
  953. package/es/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +16 -16
  954. package/es/PRIVATE_ThemedIcons/PlusIcon.js +16 -16
  955. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +16 -16
  956. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +16 -16
  957. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +16 -16
  958. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +16 -16
  959. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +16 -16
  960. package/es/PRIVATE_ThemedIcons/ViewIcon.js +16 -16
  961. package/es/PRIVATE_TimeComponent.js +19 -19
  962. package/es/PRIVATE_TruncatingLink.js +16 -16
  963. package/es/PRIVATE_VisOverview.js +16 -16
  964. package/es/PRIVATE_VisStatusMessage.js +5 -5
  965. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  966. package/es/{Popup-d782a727.js → Popup-0f23bad9.js} +10 -10
  967. package/es/{Popup-d782a727.js.map → Popup-0f23bad9.js.map} +1 -1
  968. package/es/ProgressButtonLabelLayout-765b3a67.js +3 -3
  969. package/es/{ProgressCircle-d1f1a500.js → ProgressCircle-bb22d984.js} +2 -2
  970. package/es/{ProgressCircle-d1f1a500.js.map → ProgressCircle-bb22d984.js.map} +1 -1
  971. package/es/ProgressCircleVariants.styles.css +4 -4
  972. package/es/ProgressCircleVariants.styles2.css +4 -4
  973. package/es/RadioIconVariants.styles.css +3 -3
  974. package/es/RadioIconVariants.styles2.css +3 -3
  975. package/es/RadioItem-4538a3b5.js +6 -6
  976. package/es/ReadonlyTextFieldInput-5ff445b5.js +1 -1
  977. package/es/{ReferenceLineArea-53129f72.js → ReferenceLineArea-cc72b070.js} +3 -3
  978. package/es/{ReferenceLineArea-53129f72.js.map → ReferenceLineArea-cc72b070.js.map} +1 -1
  979. package/es/RevealToggleIcon-5f4ab7aa.js +1 -1
  980. package/es/{SectionedContent-a39cd82d.js → SectionedContent-e10e5a04.js} +5 -5
  981. package/es/{SectionedContent-a39cd82d.js.map → SectionedContent-e10e5a04.js.map} +1 -1
  982. package/es/SelectMenuGroupContext-6ee1b1e1.js +6 -6
  983. package/es/SelectMobileFieldInput-b9917148.js +8 -8
  984. package/es/{SelectorAll-de333d4d.js → SelectorAll-59d30e4f.js} +5 -5
  985. package/es/{SelectorAll-de333d4d.js.map → SelectorAll-59d30e4f.js.map} +1 -1
  986. package/es/Sheet-b5910642.js +2 -2
  987. package/es/SortControl-efe2f5bf.js +3 -3
  988. package/es/StyledCard-77623731.js +1 -1
  989. package/es/{StyledLabelValueLayout-bb05f474.js → StyledLabelValueLayout-bddfb884.js} +2 -2
  990. package/es/{StyledLabelValueLayout-bb05f474.js.map → StyledLabelValueLayout-bddfb884.js.map} +1 -1
  991. package/es/StyledSwitch-aa3e03af.js +2 -2
  992. package/es/StyledTextField-64f0929e.js +5 -5
  993. package/es/Submenu-d5927a83.js +1 -1
  994. package/es/{TabBar-49b735e8.js → TabBar-8ea1a60c.js} +15 -11
  995. package/es/TabBar-8ea1a60c.js.map +1 -0
  996. package/es/TabBarContextMenu-d9a31d89.js +2 -2
  997. package/es/TabBarLayout-9b67d1b6.js +1 -1
  998. package/es/{Table-5bc4bdb7.js → Table-1195e284.js} +12 -12
  999. package/es/{Table-5bc4bdb7.js.map → Table-1195e284.js.map} +1 -1
  1000. package/es/TableColGroup-7c7b852c.js +1 -1
  1001. package/es/TextArea-1d78b5d8.js +226 -0
  1002. package/es/TextArea-1d78b5d8.js.map +1 -0
  1003. package/es/TextField-9aba3df3.js +3 -3
  1004. package/es/Theme-redwood/theme.css +531 -531
  1005. package/es/Theme-stable/theme.css +564 -564
  1006. package/es/TimeComponentCanvas2D-d81e0b0d.js +6 -6
  1007. package/es/ToggleButton-4ec8c0ee.js +1 -1
  1008. package/es/TrainVariants.styles.css +6 -6
  1009. package/es/TrainVariants.styles2.css +6 -6
  1010. package/es/TruncatingLink-cfd6e8a3.js +4 -4
  1011. package/es/TruncatingText-02a5241a.js +1 -1
  1012. package/es/UNSAFE_AccordionItemMultiple.js +18 -18
  1013. package/es/UNSAFE_AccordionItemSingle.js +18 -18
  1014. package/es/UNSAFE_ActionCard.js +2 -2
  1015. package/es/UNSAFE_BarChart.js +40 -40
  1016. package/es/UNSAFE_BareButton.js +2 -2
  1017. package/es/UNSAFE_BaseButton.js +5 -5
  1018. package/es/UNSAFE_Button.js +6 -6
  1019. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutTheme.js +1 -1
  1020. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutVariants.css.js +1 -1
  1021. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutTheme.js +1 -1
  1022. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutVariants.css.js +1 -1
  1023. package/es/UNSAFE_ButtonLayout.js +1 -1
  1024. package/es/UNSAFE_ButtonSet.js +4 -4
  1025. package/es/UNSAFE_ButtonSetButton.js +5 -5
  1026. package/es/UNSAFE_ButtonSetIconButton.js +17 -17
  1027. package/es/UNSAFE_ButtonSetItem.js +18 -18
  1028. package/es/UNSAFE_ButtonSetMultiple.js +4 -4
  1029. package/es/UNSAFE_ButtonSetSingle.js +4 -4
  1030. package/es/UNSAFE_Card.js +3 -3
  1031. package/es/UNSAFE_CardFlexView.js +23 -23
  1032. package/es/UNSAFE_CardGridView.js +23 -23
  1033. package/es/UNSAFE_Center.js +5 -5
  1034. package/es/UNSAFE_Checkbox.js +26 -26
  1035. package/es/UNSAFE_CheckboxItem.js +26 -26
  1036. package/es/UNSAFE_CheckboxRadioField.js +4 -4
  1037. package/es/UNSAFE_CheckboxSet.js +27 -27
  1038. package/es/UNSAFE_Chip.js +2 -2
  1039. package/es/UNSAFE_Collapsible.js +18 -18
  1040. package/es/UNSAFE_ColorPalette.js +19 -19
  1041. package/es/UNSAFE_ColorPicker.js +21 -21
  1042. package/es/UNSAFE_ColorSwatch.js +17 -17
  1043. package/es/UNSAFE_ComboChart.js +40 -40
  1044. package/es/UNSAFE_ComponentMessage.js +21 -21
  1045. package/es/UNSAFE_ContainerDiagram/themes/DiagramStyles.css.js +1 -1
  1046. package/es/UNSAFE_ContainerDiagram.js +30 -30
  1047. package/es/UNSAFE_ConveyorBelt.js +18 -18
  1048. package/es/UNSAFE_DatePicker.js +27 -27
  1049. package/es/UNSAFE_Diagram/themes/DiagramStyles.css.js +1 -1
  1050. package/es/UNSAFE_Diagram.js +30 -30
  1051. package/es/UNSAFE_Dialog.js +22 -22
  1052. package/es/UNSAFE_DragHandle.js +17 -17
  1053. package/es/UNSAFE_DrawerLayout.js +12 -12
  1054. package/es/UNSAFE_DrawerPopup.js +11 -11
  1055. package/es/UNSAFE_Dropdown.js +15 -15
  1056. package/es/UNSAFE_Environment.js +4 -4
  1057. package/es/UNSAFE_ExpandableList.js +67 -67
  1058. package/es/UNSAFE_FilePicker.js +4 -4
  1059. package/es/UNSAFE_FlatTreeView.js +39 -39
  1060. package/es/UNSAFE_Flex.js +4 -4
  1061. package/es/UNSAFE_Floating.js +11 -11
  1062. package/es/UNSAFE_FormLayout.js +2 -2
  1063. package/es/UNSAFE_Gantt.js +23 -23
  1064. package/es/UNSAFE_Grid.js +4 -4
  1065. package/es/UNSAFE_HighlightText.js +4 -4
  1066. package/es/UNSAFE_Icon.js +16 -16
  1067. package/es/UNSAFE_IconButton.js +17 -17
  1068. package/es/UNSAFE_IconMenuButton.js +26 -26
  1069. package/es/UNSAFE_IconProgressButton.js +22 -22
  1070. package/es/UNSAFE_IconToggleButton.js +17 -17
  1071. package/es/UNSAFE_Indexer.js +19 -19
  1072. package/es/UNSAFE_InlineSelectSingle.js +34 -34
  1073. package/es/UNSAFE_InputColor.js +33 -33
  1074. package/es/UNSAFE_InputDateMask.js +27 -27
  1075. package/es/UNSAFE_InputDatePicker.js +37 -37
  1076. package/es/UNSAFE_InputPassword.js +27 -27
  1077. package/es/UNSAFE_InputSensitiveText.js +28 -28
  1078. package/es/UNSAFE_InputText.js +29 -29
  1079. package/es/UNSAFE_InputTimeMask.js +27 -27
  1080. package/es/UNSAFE_Label.js +26 -26
  1081. package/es/UNSAFE_LabelValueLayout.js +4 -4
  1082. package/es/UNSAFE_LabelledLink.js +28 -28
  1083. package/es/UNSAFE_Layer.js +8 -8
  1084. package/es/UNSAFE_Legend.js +28 -28
  1085. package/es/UNSAFE_LineAreaChart.js +40 -40
  1086. package/es/UNSAFE_Link.js +2 -2
  1087. package/es/UNSAFE_ListItemLayout.js +4 -4
  1088. package/es/UNSAFE_ListView.js +76 -76
  1089. package/es/UNSAFE_LiveRegion.js +4 -4
  1090. package/es/UNSAFE_Menu/themes/redwood/MenuItemTheme.js +1 -1
  1091. package/es/UNSAFE_Menu/themes/redwood/MenuItemVariants.css.js +1 -1
  1092. package/es/UNSAFE_Menu/themes/stable/MenuItemTheme.js +1 -1
  1093. package/es/UNSAFE_Menu/themes/stable/MenuItemVariants.css.js +1 -1
  1094. package/es/UNSAFE_Menu.js +27 -27
  1095. package/es/UNSAFE_MenuButton.js +26 -26
  1096. package/es/UNSAFE_MessageBanner/themes/redwood/MessageBannerTheme.js +1 -1
  1097. package/es/UNSAFE_MessageBanner/themes/redwood/MessageBannerVariants.css.js +1 -1
  1098. package/es/UNSAFE_MessageBanner/themes/stable/MessageBannerTheme.js +1 -1
  1099. package/es/UNSAFE_MessageBanner/themes/stable/MessageBannerVariants.css.js +1 -1
  1100. package/es/UNSAFE_MessageBanner.js +21 -21
  1101. package/es/UNSAFE_MessageToast.js +23 -23
  1102. package/es/UNSAFE_MeterBar.js +16 -16
  1103. package/es/UNSAFE_MeterCircle.js +17 -17
  1104. package/es/UNSAFE_Modal.js +8 -8
  1105. package/es/UNSAFE_NavigationList.js +29 -29
  1106. package/es/UNSAFE_NavigationListCommon.js +20 -20
  1107. package/es/UNSAFE_NumberInputText.js +29 -29
  1108. package/es/UNSAFE_OverflowTabBar.js +45 -41
  1109. package/es/UNSAFE_OverflowTabBar.js.map +1 -1
  1110. package/es/UNSAFE_PictoChart.js +26 -26
  1111. package/es/UNSAFE_PieChart.js +27 -27
  1112. package/es/UNSAFE_Popup.js +18 -18
  1113. package/es/UNSAFE_ProgressBar.js +4 -4
  1114. package/es/UNSAFE_ProgressButton.js +22 -22
  1115. package/es/UNSAFE_ProgressButtonLabelLayout.js +11 -11
  1116. package/es/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleTheme.js +1 -1
  1117. package/es/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleVariants.css.js +1 -1
  1118. package/es/UNSAFE_ProgressCircle/themes/stable/ProgressCircleTheme.js +1 -1
  1119. package/es/UNSAFE_ProgressCircle/themes/stable/ProgressCircleVariants.css.js +1 -1
  1120. package/es/UNSAFE_ProgressCircle.js +5 -5
  1121. package/es/UNSAFE_RadioItem/themes/redwood/RadioIconTheme.js +1 -1
  1122. package/es/UNSAFE_RadioItem/themes/redwood/RadioIconVariants.css.js +1 -1
  1123. package/es/UNSAFE_RadioItem/themes/stable/RadioIconTheme.js +1 -1
  1124. package/es/UNSAFE_RadioItem/themes/stable/RadioIconVariants.css.js +1 -1
  1125. package/es/UNSAFE_RadioItem.js +27 -27
  1126. package/es/UNSAFE_RadioSet.js +28 -28
  1127. package/es/UNSAFE_RatingGauge.js +18 -18
  1128. package/es/UNSAFE_ReorderableTabBar.js +41 -41
  1129. package/es/UNSAFE_RichCheckboxSet.js +29 -29
  1130. package/es/UNSAFE_RichRadioSet.js +30 -30
  1131. package/es/UNSAFE_RichSelectionItem.js +30 -30
  1132. package/es/UNSAFE_ScatterChart.js +40 -40
  1133. package/es/UNSAFE_SectionalLegend.js +28 -28
  1134. package/es/UNSAFE_SelectMultiple.js +39 -39
  1135. package/es/UNSAFE_SelectSingle.js +36 -36
  1136. package/es/UNSAFE_SelectionCard.js +3 -3
  1137. package/es/UNSAFE_Selector.js +17 -17
  1138. package/es/UNSAFE_SelectorAll.js +19 -19
  1139. package/es/UNSAFE_Sheet.js +11 -11
  1140. package/es/UNSAFE_SortControl.js +20 -20
  1141. package/es/UNSAFE_SplitMenuButton.js +26 -26
  1142. package/es/UNSAFE_Switch.js +27 -27
  1143. package/es/UNSAFE_TabBar.js +40 -40
  1144. package/es/UNSAFE_TabBarCommon.js +29 -29
  1145. package/es/UNSAFE_TabBarMixed.js +39 -39
  1146. package/es/UNSAFE_TabBarMixed.js.map +1 -1
  1147. package/es/UNSAFE_TableView.js +59 -59
  1148. package/es/UNSAFE_TagCloud.js +27 -27
  1149. package/es/UNSAFE_TextArea.js +119 -239
  1150. package/es/UNSAFE_TextArea.js.map +1 -1
  1151. package/es/UNSAFE_TextAreaAutosize.js +29 -29
  1152. package/es/UNSAFE_TextField.js +20 -20
  1153. package/es/UNSAFE_ToggleButton.js +5 -5
  1154. package/es/UNSAFE_Toolbar.js +5 -5
  1155. package/es/UNSAFE_Train/themes/redwood/TrainTheme.js +1 -1
  1156. package/es/UNSAFE_Train/themes/redwood/TrainVariants.css.js +1 -1
  1157. package/es/UNSAFE_Train/themes/stable/TrainTheme.js +1 -1
  1158. package/es/UNSAFE_Train/themes/stable/TrainVariants.css.js +1 -1
  1159. package/es/UNSAFE_Train.js +18 -18
  1160. package/es/UNSAFE_TruncatingBadge.js +17 -17
  1161. package/es/UNSAFE_TruncatingText.js +17 -17
  1162. package/es/UNSAFE_UserAssistance.js +27 -27
  1163. package/es/UNSAFE_View.js +7 -7
  1164. package/es/UNSAFE_VirtualizedListView.js +22 -22
  1165. package/es/UNSAFE_VisInvalidDataMessage.js +6 -6
  1166. package/es/UNSAFE_VisNoDataMessage.js +6 -6
  1167. package/es/UNSAFE_VisProgressiveLoader.js +5 -5
  1168. package/es/UNSAFE_WindowOverlay.js +4 -4
  1169. package/es/{View-5bdd9b3c.js → View-818f2f31.js} +5 -5
  1170. package/es/{View-5bdd9b3c.js.map → View-818f2f31.js.map} +1 -1
  1171. package/es/{VisStatusMessage-e2d629bb.js → VisStatusMessage-09c532e3.js} +2 -2
  1172. package/es/{VisStatusMessage-e2d629bb.js.map → VisStatusMessage-09c532e3.js.map} +1 -1
  1173. package/es/{VisTabularDatatip-85b00c1b.js → VisTabularDatatip-f45069f1.js} +2 -2
  1174. package/es/{VisTabularDatatip-85b00c1b.js.map → VisTabularDatatip-f45069f1.js.map} +1 -1
  1175. package/es/{WindowOverlay-ee64634e.js → WindowOverlay-cd90d18c.js} +2 -2
  1176. package/es/{WindowOverlay-ee64634e.js.map → WindowOverlay-cd90d18c.js.map} +1 -1
  1177. package/es/{YearsGridView-5379d7af.js → YearsGridView-61ecebfe.js} +4 -4
  1178. package/es/{YearsGridView-5379d7af.js.map → YearsGridView-61ecebfe.js.map} +1 -1
  1179. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  1180. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  1181. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  1182. package/es/hooks/PRIVATE_useChartContextMenu.js +24 -24
  1183. package/es/hooks/PRIVATE_useChartDatatip.js +14 -14
  1184. package/es/hooks/PRIVATE_useChartEvents.js +19 -19
  1185. package/es/hooks/PRIVATE_useChartMarquee.js +19 -19
  1186. package/es/hooks/PRIVATE_useCollectionFocusRing.js +17 -17
  1187. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  1188. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  1189. package/es/hooks/PRIVATE_useDatatip.js +12 -12
  1190. package/es/hooks/PRIVATE_useDetectHorizontalOverflow.js +17 -17
  1191. package/es/hooks/PRIVATE_useFloating.js +4 -4
  1192. package/es/hooks/PRIVATE_useItemAction.js +17 -17
  1193. package/es/hooks/PRIVATE_useListCommon.js +19 -19
  1194. package/es/hooks/PRIVATE_useOutsideMousedown.js +9 -9
  1195. package/es/hooks/PRIVATE_useRadioFocusManager.js +4 -4
  1196. package/es/hooks/PRIVATE_useReorderable.js +19 -19
  1197. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  1198. package/es/hooks/PRIVATE_useSelection.js +4 -4
  1199. package/es/hooks/PRIVATE_useTabBar.js +28 -28
  1200. package/es/hooks/PRIVATE_useTabbableModeSet.js +17 -17
  1201. package/es/hooks/PRIVATE_useTooltipOnTruncation.js +17 -17
  1202. package/es/hooks/PRIVATE_useVisContextMenu.js +24 -24
  1203. package/es/hooks/PRIVATE_useVisDragModeControls.js +19 -19
  1204. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  1205. package/es/hooks/PRIVATE_useVisMeterEvents.js +14 -14
  1206. package/es/hooks/PRIVATE_useVisSelection.js +15 -15
  1207. package/es/hooks/UNSAFE_useBareButton.js +2 -2
  1208. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  1209. package/es/hooks/UNSAFE_useCurrentBgColor.js +2 -2
  1210. package/es/hooks/UNSAFE_useDensity.js +3 -3
  1211. package/es/hooks/UNSAFE_useHiddenTestMethod.js +3 -3
  1212. package/es/hooks/UNSAFE_useOutsideClick.js +8 -8
  1213. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  1214. package/es/hooks/UNSAFE_useScale.js +3 -3
  1215. package/es/hooks/UNSAFE_useTestId.js +3 -3
  1216. package/es/hooks/UNSAFE_useTheme.js +3 -3
  1217. package/es/hooks/UNSAFE_useThemeInterpolations.js +6 -6
  1218. package/es/hooks/UNSAFE_useTooltip.js +17 -17
  1219. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  1220. package/es/hooks/UNSAFE_useUser.js +3 -3
  1221. package/es/{popupUtils-51366a29.js → popupUtils-7774330e.js} +2 -2
  1222. package/es/{popupUtils-51366a29.js.map → popupUtils-7774330e.js.map} +1 -1
  1223. package/es/{tooltipUtils-7825620d.js → tooltipUtils-1e5f592e.js} +5 -5
  1224. package/es/{tooltipUtils-7825620d.js.map → tooltipUtils-1e5f592e.js.map} +1 -1
  1225. package/es/useBareButton-ff4bd21e.js +1 -1
  1226. package/es/useCellNavigation-0565b6dd.js +1 -1
  1227. package/es/useChartContextMenu-41b18037.js +2 -2
  1228. package/es/{useChartDatatip-e4009610.js → useChartDatatip-69788dbb.js} +4 -4
  1229. package/es/{useChartDatatip-e4009610.js.map → useChartDatatip-69788dbb.js.map} +1 -1
  1230. package/es/{useColorScheme-c4f6caab.js → useColorScheme-67245285.js} +2 -2
  1231. package/es/{useColorScheme-c4f6caab.js.map → useColorScheme-67245285.js.map} +1 -1
  1232. package/es/useContextMenu-2c5034a4.js +2 -2
  1233. package/es/{useCssVars-bc2527ac.js → useCssVars-048a52d8.js} +5 -5
  1234. package/es/{useCssVars-bc2527ac.js.map → useCssVars-048a52d8.js.map} +1 -1
  1235. package/es/{useCurrentKey-5f865bbd.js → useCurrentKey-38e5f097.js} +2 -2
  1236. package/es/{useCurrentKey-5f865bbd.js.map → useCurrentKey-38e5f097.js.map} +1 -1
  1237. package/es/{useDatatip-710f97c7.js → useDatatip-e65b4013.js} +4 -4
  1238. package/es/{useDatatip-710f97c7.js.map → useDatatip-e65b4013.js.map} +1 -1
  1239. package/es/{useDensity-1acb0153.js → useDensity-969273f3.js} +2 -2
  1240. package/es/{useDensity-1acb0153.js.map → useDensity-969273f3.js.map} +1 -1
  1241. package/es/{useDetectHorizontalOverflow-154005bb.js → useDetectHorizontalOverflow-5895bc5a.js} +30 -58
  1242. package/es/useDetectHorizontalOverflow-5895bc5a.js.map +1 -0
  1243. package/es/useDisplayValue-614a904f.js +5 -5
  1244. package/es/{useExpandCollapse-5739cfd2.js → useExpandCollapse-51f9bb4b.js} +2 -2
  1245. package/es/{useExpandCollapse-5739cfd2.js.map → useExpandCollapse-51f9bb4b.js.map} +1 -1
  1246. package/es/{useFloating-b9d680f7.js → useFloating-c74a7f54.js} +2 -2
  1247. package/es/{useFloating-b9d680f7.js.map → useFloating-c74a7f54.js.map} +1 -1
  1248. package/es/{useHiddenTestMethod-f3f25093.js → useHiddenTestMethod-ec7b3989.js} +2 -2
  1249. package/es/{useHiddenTestMethod-f3f25093.js.map → useHiddenTestMethod-ec7b3989.js.map} +1 -1
  1250. package/es/{useKeyboardEvents-9aae7ea3.js → useKeyboardEvents-a1495728.js} +2 -2
  1251. package/es/{useKeyboardEvents-9aae7ea3.js.map → useKeyboardEvents-a1495728.js.map} +1 -1
  1252. package/es/useLegendContextMenu-cda4f327.js +4 -4
  1253. package/es/{useMeterDatatip-b8148b11.js → useMeterDatatip-c301cd9a.js} +3 -3
  1254. package/es/{useMeterDatatip-b8148b11.js.map → useMeterDatatip-c301cd9a.js.map} +1 -1
  1255. package/es/useNavigation-ef11265f.js +1 -1
  1256. package/es/{useOutsideClick-f00c65fc.js → useOutsideClick-3ac4fc59.js} +2 -2
  1257. package/es/{useOutsideClick-f00c65fc.js.map → useOutsideClick-3ac4fc59.js.map} +1 -1
  1258. package/es/{useOutsideMousedown-c45c22c0.js → useOutsideMousedown-e0866d58.js} +2 -2
  1259. package/es/{useOutsideMousedown-c45c22c0.js.map → useOutsideMousedown-e0866d58.js.map} +1 -1
  1260. package/es/{usePopupAnimation-96d2bc83.js → usePopupAnimation-7c5db425.js} +2 -2
  1261. package/es/{usePopupAnimation-96d2bc83.js.map → usePopupAnimation-7c5db425.js.map} +1 -1
  1262. package/es/{usePrefixSuffix-f981b65f.js → usePrefixSuffix-95fc00fd.js} +2 -2
  1263. package/es/{usePrefixSuffix-f981b65f.js.map → usePrefixSuffix-95fc00fd.js.map} +1 -1
  1264. package/es/{useRadioFocusManager-36eb283e.js → useRadioFocusManager-d9eecfb4.js} +2 -2
  1265. package/es/{useRadioFocusManager-36eb283e.js.map → useRadioFocusManager-d9eecfb4.js.map} +1 -1
  1266. package/es/{useReorderableItem-017bc1fc.js → useReorderableItem-9e15401c.js} +3 -3
  1267. package/es/{useReorderableItem-017bc1fc.js.map → useReorderableItem-9e15401c.js.map} +1 -1
  1268. package/es/{useRovingTabIndexContainer-5992e107.js → useRovingTabIndexContainer-c0356f5d.js} +2 -2
  1269. package/es/{useRovingTabIndexContainer-5992e107.js.map → useRovingTabIndexContainer-c0356f5d.js.map} +1 -1
  1270. package/es/{useScale-434ad939.js → useScale-93490e54.js} +2 -2
  1271. package/es/{useScale-434ad939.js.map → useScale-93490e54.js.map} +1 -1
  1272. package/es/useSelectCommon-34b231da.js +5 -5
  1273. package/es/{useSelectDrill-4abc5148.js → useSelectDrill-6b515558.js} +3 -3
  1274. package/es/{useSelectDrill-4abc5148.js.map → useSelectDrill-6b515558.js.map} +1 -1
  1275. package/es/{useSelection-d79057c6.js → useSelection-1113eb0b.js} +6 -6
  1276. package/es/{useSelection-d79057c6.js.map → useSelection-1113eb0b.js.map} +1 -1
  1277. package/es/{useSelection-65134722.js → useSelection-d6fefa3d.js} +2 -2
  1278. package/es/{useSelection-65134722.js.map → useSelection-d6fefa3d.js.map} +1 -1
  1279. package/es/{useTabBar-c50957fa.js → useTabBar-6dca14a7.js} +6 -9
  1280. package/es/useTabBar-6dca14a7.js.map +1 -0
  1281. package/es/{useTestId-f24ac480.js → useTestId-ab1bede6.js} +2 -2
  1282. package/es/{useTestId-f24ac480.js.map → useTestId-ab1bede6.js.map} +1 -1
  1283. package/es/{useTheme-0e7497db.js → useTheme-c2cfbc29.js} +2 -2
  1284. package/es/{useTheme-0e7497db.js.map → useTheme-c2cfbc29.js.map} +1 -1
  1285. package/es/{useThemeInterpolations-e144e8ec.js → useThemeInterpolations-5f358139.js} +5 -5
  1286. package/es/{useThemeInterpolations-e144e8ec.js.map → useThemeInterpolations-5f358139.js.map} +1 -1
  1287. package/es/{useTooltip-33d2e421.js → useTooltip-22ae63dd.js} +2 -2
  1288. package/es/{useTooltip-33d2e421.js.map → useTooltip-22ae63dd.js.map} +1 -1
  1289. package/es/{useTooltipControlled-af42d1d6.js → useTooltipControlled-207b0297.js} +5 -5
  1290. package/es/{useTooltipControlled-af42d1d6.js.map → useTooltipControlled-207b0297.js.map} +1 -1
  1291. package/es/{useTooltipOnTruncation-f7a0a7a9.js → useTooltipOnTruncation-e64dded6.js} +4 -4
  1292. package/es/{useTooltipOnTruncation-f7a0a7a9.js.map → useTooltipOnTruncation-e64dded6.js.map} +1 -1
  1293. package/es/{useTranslationBundle-4822502f.js → useTranslationBundle-bc6e0896.js} +2 -2
  1294. package/es/{useTranslationBundle-4822502f.js.map → useTranslationBundle-bc6e0896.js.map} +1 -1
  1295. package/es/{useUser-06d34d19.js → useUser-e543b73c.js} +2 -2
  1296. package/es/{useUser-06d34d19.js.map → useUser-e543b73c.js.map} +1 -1
  1297. package/es/useVisDragModeControls-8791a1b4.js +1 -1
  1298. package/es/{useVisEvents-256dee29.js → useVisEvents-0edc925f.js} +2 -2
  1299. package/es/{useVisEvents-256dee29.js.map → useVisEvents-0edc925f.js.map} +1 -1
  1300. package/es/utils/PRIVATE_collectionUtils.js +17 -17
  1301. package/es/utils/PRIVATE_tabBarUtils.js +17 -17
  1302. package/es/utils/PRIVATE_tooltipUtils.js +14 -14
  1303. package/es/utils/PRIVATE_visTestUtils.js +4 -4
  1304. package/es/utils/UNSAFE_popupUtils.js +8 -8
  1305. package/es/{withDirectionIcon-a8d84a3d.js → withDirectionIcon-b725a6d7.js} +2 -2
  1306. package/es/{withDirectionIcon-a8d84a3d.js.map → withDirectionIcon-b725a6d7.js.map} +1 -1
  1307. package/es/withThemeProps-dbd4fedf.js +2 -2
  1308. package/package.json +2 -2
  1309. package/types/UNSAFE_TabBarMixed/useTabBarMixed.d.ts +1 -1
  1310. package/amd/BaseCardView-131755ff.js +0 -2
  1311. package/amd/CompactLabelAssistance-002f7b2f.js +0 -2
  1312. package/amd/DragHandle-ebe5c3ae.js +0 -2
  1313. package/amd/EmbeddedIconButton-49aab46c.js +0 -2
  1314. package/amd/Flex-4b81b412.js +0 -2
  1315. package/amd/HighlightText-ee76c447.js +0 -2
  1316. package/amd/InputDatePicker-e1b3a4ec.js +0 -2
  1317. package/amd/LayerManager-426c669d.js +0 -2
  1318. package/amd/ListView-7af453a0.js +0 -2
  1319. package/amd/LiveRegion-dbefb95b.js +0 -2
  1320. package/amd/MessageLayer-29d1f82c.js +0 -2
  1321. package/amd/NavigationList-8cd4ad71.js +0 -2
  1322. package/amd/NavigationList-8cd4ad71.js.map +0 -1
  1323. package/amd/NavigationListItem-dbb3ad30.js +0 -2
  1324. package/amd/NavigationListItem-dbb3ad30.js.map +0 -1
  1325. package/amd/NavigationListLinkItem-5f82f3c2.js +0 -2
  1326. package/amd/NavigationListLinkItem-5f82f3c2.js.map +0 -1
  1327. package/amd/OverflowTabBar-dbe09e7b.js +0 -2
  1328. package/amd/OverflowTabBar-dbe09e7b.js.map +0 -1
  1329. package/amd/OverflowTabBarItem-51015785.js +0 -2
  1330. package/amd/RemovableNavigationListItem-69964f9b.js +0 -2
  1331. package/amd/ReorderableTabBar-88812623.js +0 -2
  1332. package/amd/SectionedContent-b3b8c704.js +0 -2
  1333. package/amd/TabBar-71251f08.js +0 -2
  1334. package/amd/TabBar-71251f08.js.map +0 -1
  1335. package/amd/TabBarMixed-ec5c495d.js +0 -2
  1336. package/amd/VisNoDataMessage-fc41dae3.js +0 -2
  1337. package/amd/index-ec69d863.js.map +0 -1
  1338. package/amd/popupUtils-d42db8bf.js +0 -2
  1339. package/amd/render-0e124b25.js +0 -2
  1340. package/amd/useCurrentKey-5749e7fb.js +0 -2
  1341. package/amd/useDetectHorizontalOverflow-b00641ee.js +0 -2
  1342. package/amd/useDetectHorizontalOverflow-b00641ee.js.map +0 -1
  1343. package/amd/useKeyboardEvents-f0419128.js +0 -2
  1344. package/amd/useMeterDatatip-126b6bc1.js +0 -2
  1345. package/amd/useNavigationListItem-29bd087a.js +0 -2
  1346. package/amd/useNavigationListItem-29bd087a.js.map +0 -1
  1347. package/amd/usePopupAnimation-dc282b02.js +0 -2
  1348. package/amd/usePrefixSuffix-dd2cae55.js +0 -2
  1349. package/amd/useRadioFocusManager-462e28eb.js +0 -2
  1350. package/amd/useTabBar-0161bf67.js +0 -2
  1351. package/amd/useTabBar-0161bf67.js.map +0 -1
  1352. package/amd/useThemeInterpolations-cc05b0f0.js +0 -2
  1353. package/amd/useTooltip-31ac71c4.js +0 -2
  1354. package/cjs/TabBar-9bc26ed2.js.map +0 -1
  1355. package/cjs/useDetectHorizontalOverflow-867b1a33.js.map +0 -1
  1356. package/cjs/useTabBar-59484847.js.map +0 -1
  1357. package/es/TabBar-49b735e8.js.map +0 -1
  1358. package/es/useDetectHorizontalOverflow-154005bb.js.map +0 -1
  1359. package/es/useTabBar-c50957fa.js.map +0 -1
  1360. package/es/useTextAreaAltEnter-ac460f4c.js +0 -61
  1361. package/es/useTextAreaAltEnter-ac460f4c.js.map +0 -1
  1362. /package/amd/UNSAFE_BaseButton/themes/{redwood → stable}/BaseButtonBaseTheme.styles.css +0 -0
  1363. /package/cjs/UNSAFE_Switch/themes/{redwood → stable}/SwitchBaseTheme.styles.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Table-5bc4bdb7.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":["_jsx","_Fragment","_jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Table-1195e284.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":["_jsx","_Fragment","_jsxs","Fragment"],"mappings":"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"}