@oracle/oraclejet-preact 21.0.0 → 21.0.1

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 (898) hide show
  1. package/amd/{BaseDiagram-295ed9cc.js → BaseDiagram-7845a7ae.js} +2 -2
  2. package/amd/{BaseDiagram-295ed9cc.js.map → BaseDiagram-7845a7ae.js.map} +1 -1
  3. package/amd/{BaseNavigationListItem-299cbfab.js → BaseNavigationListItem-0efcad58.js} +2 -2
  4. package/amd/{BaseNavigationListItem-299cbfab.js.map → BaseNavigationListItem-0efcad58.js.map} +1 -1
  5. package/amd/{CollapsibleNavigationListExternalLinkItem-fcf1805d.js → CollapsibleNavigationListExternalLinkItem-06a92293.js} +2 -2
  6. package/amd/{CollapsibleNavigationListExternalLinkItem-fcf1805d.js.map → CollapsibleNavigationListExternalLinkItem-06a92293.js.map} +1 -1
  7. package/amd/{ColorInputText-55b31f03.js → ColorInputText-3ac0f956.js} +2 -2
  8. package/amd/{ColorInputText-55b31f03.js.map → ColorInputText-3ac0f956.js.map} +1 -1
  9. package/amd/ColorPickerVariants.styles.css +1 -1
  10. package/amd/ColorPickerVariants.styles2.css +1 -1
  11. package/amd/ColorSwatchVariants.styles.css +1 -1
  12. package/amd/ColorSwatchVariants.styles2.css +1 -1
  13. package/amd/ContainerDiagram-5e392270.js +2 -0
  14. package/amd/{ContainerDiagram-521f402a.js.map → ContainerDiagram-5e392270.js.map} +1 -1
  15. package/amd/ConveyorBeltVariants.styles.css +6 -6
  16. package/amd/ConveyorBeltVariants.styles2.css +6 -6
  17. package/amd/{Diagram-b73d20a3.js → Diagram-3ef5b038.js} +2 -2
  18. package/amd/{Diagram-b73d20a3.js.map → Diagram-3ef5b038.js.map} +1 -1
  19. package/amd/DiagramStyles.styles2.css +16 -10
  20. package/amd/DiagramStyles.styles3.css +10 -16
  21. package/amd/DrawerPopupVariants.styles.css +5 -5
  22. package/amd/DrawerPopupVariants.styles2.css +5 -5
  23. package/amd/Expander-4b1f2445.js +2 -0
  24. package/amd/{Expander-150fa95e.js.map → Expander-4b1f2445.js.map} +1 -1
  25. package/amd/FormLayoutVariants.styles.css +14 -14
  26. package/amd/FormLayoutVariants.styles2.css +14 -14
  27. package/amd/IndentedCellLayout-dc0896ab.js +1 -1
  28. package/amd/IndentedCellLayout-dc0896ab.js.map +1 -1
  29. package/amd/{InputColor-019b9397.js → InputColor-96a82077.js} +2 -2
  30. package/amd/{InputColor-019b9397.js.map → InputColor-96a82077.js.map} +1 -1
  31. package/amd/InputDatePicker-37824ba4.js +2 -0
  32. package/amd/{InputDatePicker-613800d1.js.map → InputDatePicker-37824ba4.js.map} +1 -1
  33. package/amd/ListStyles.styles.css +105 -7
  34. package/amd/ListStyles.styles2.css +7 -105
  35. package/amd/MeterCircleVariants.styles.css +8 -8
  36. package/amd/MeterCircleVariants.styles2.css +8 -8
  37. package/amd/NavigationListExternalLinkItem-382cd5a2.js +2 -0
  38. package/amd/{NavigationListExternalLinkItem-3d98a9e8.js.map → NavigationListExternalLinkItem-382cd5a2.js.map} +1 -1
  39. package/amd/NavigationListLinkItem-8ed2c18d.js +2 -0
  40. package/amd/{NavigationListLinkItem-c4b2b73c.js.map → NavigationListLinkItem-8ed2c18d.js.map} +1 -1
  41. package/amd/OverflowTabBar-9e7277f4.js +2 -0
  42. package/amd/OverflowTabBar-9e7277f4.js.map +1 -0
  43. package/amd/OverflowTabBarItem-7d80beed.js +2 -0
  44. package/amd/{OverflowTabBarItem-11f199ee.js.map → OverflowTabBarItem-7d80beed.js.map} +1 -1
  45. package/amd/PRIVATE_BaseDiagram.js +1 -1
  46. package/amd/PRIVATE_List/themes/ListStyles.css.js +1 -1
  47. package/amd/PRIVATE_List.js +1 -1
  48. package/amd/PRIVATE_SelectCommon.js +1 -1
  49. package/amd/PRIVATE_Table.js +1 -1
  50. package/amd/PRIVATE_TableList/themes/ListStyles.css.js +1 -1
  51. package/amd/PRIVATE_TableList/themes/redwood/ListTheme.js +1 -1
  52. package/amd/PRIVATE_TableList/themes/redwood/ListTheme.js.map +1 -1
  53. package/amd/PRIVATE_TableList/themes/redwood/ListVariants.css.js +1 -1
  54. package/amd/PRIVATE_TableList/themes/stable/ListTheme.js +1 -1
  55. package/amd/PRIVATE_TableList/themes/stable/ListTheme.js.map +1 -1
  56. package/amd/PRIVATE_TableList/themes/stable/ListVariants.css.js +1 -1
  57. package/amd/PRIVATE_TableList.js +1 -1
  58. package/amd/ProgressBarVariants.styles.css +1 -1
  59. package/amd/ProgressBarVariants.styles2.css +1 -1
  60. package/amd/ProgressCircleVariants.styles.css +4 -4
  61. package/amd/ProgressCircleVariants.styles2.css +4 -4
  62. package/amd/RadioIconVariants.styles.css +3 -3
  63. package/amd/RadioIconVariants.styles2.css +3 -3
  64. package/amd/{ReorderableTabBar-35cce8ac.js → ReorderableTabBar-7fb56c0b.js} +2 -2
  65. package/amd/{ReorderableTabBar-35cce8ac.js.map → ReorderableTabBar-7fb56c0b.js.map} +1 -1
  66. package/amd/SortControl-eb114fee.js +2 -0
  67. package/amd/{SortControl-115bc431.js.map → SortControl-eb114fee.js.map} +1 -1
  68. package/amd/TabBar-34e0073f.js +2 -0
  69. package/amd/TabBar-34e0073f.js.map +1 -0
  70. package/amd/{TabBarItem-191d0223.js → TabBarItem-60866864.js} +2 -2
  71. package/amd/{TabBarItem-191d0223.js.map → TabBarItem-60866864.js.map} +1 -1
  72. package/amd/TabBarItemVariants.styles.css +3 -3
  73. package/amd/TabBarItemVariants.styles2.css +3 -3
  74. package/amd/{TabBarLinkItem-5f376f4e.js → TabBarLinkItem-7b5b5b73.js} +2 -2
  75. package/amd/{TabBarLinkItem-5f376f4e.js.map → TabBarLinkItem-7b5b5b73.js.map} +1 -1
  76. package/amd/TabBarMixed-b61a657d.js +2 -0
  77. package/amd/{TabBarMixed-e16ca418.js.map → TabBarMixed-b61a657d.js.map} +1 -1
  78. package/amd/{Table-76c8555b.js → Table-caf0eeb9.js} +2 -2
  79. package/amd/{Table-76c8555b.js.map → Table-caf0eeb9.js.map} +1 -1
  80. package/amd/{TableDisplay-938d743b.js → TableDisplay-d2efde54.js} +2 -2
  81. package/amd/{TableDisplay-938d743b.js.map → TableDisplay-d2efde54.js.map} +1 -1
  82. package/amd/{TableView-490cc209.js → TableView-94381f75.js} +2 -2
  83. package/amd/{TableView-490cc209.js.map → TableView-94381f75.js.map} +1 -1
  84. package/amd/Theme-redwood/theme.css +301 -306
  85. package/amd/Theme-stable/theme.css +542 -537
  86. package/amd/TrainVariants.styles.css +6 -6
  87. package/amd/TrainVariants.styles2.css +6 -6
  88. package/amd/{TreeTableView-1b66b880.js → TreeTableView-ef0d26bd.js} +2 -2
  89. package/amd/{TreeTableView-1b66b880.js.map → TreeTableView-ef0d26bd.js.map} +1 -1
  90. package/amd/UNSAFE_CollapsibleNavigationList.js +1 -1
  91. package/amd/UNSAFE_ColorInputText.js +1 -1
  92. package/amd/UNSAFE_ColorPalette.js +1 -1
  93. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerTheme.js +1 -1
  94. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerTheme.js.map +1 -1
  95. package/amd/UNSAFE_ColorPicker/themes/redwood/ColorPickerVariants.css.js +1 -1
  96. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerTheme.js +1 -1
  97. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerTheme.js.map +1 -1
  98. package/amd/UNSAFE_ColorPicker/themes/stable/ColorPickerVariants.css.js +1 -1
  99. package/amd/UNSAFE_ColorPicker.js +1 -1
  100. package/amd/UNSAFE_ColorSwatch/themes/redwood/ColorSwatchTheme.js +1 -1
  101. package/amd/UNSAFE_ColorSwatch/themes/redwood/ColorSwatchTheme.js.map +1 -1
  102. package/amd/UNSAFE_ColorSwatch/themes/redwood/ColorSwatchVariants.css.js +1 -1
  103. package/amd/UNSAFE_ColorSwatch/themes/stable/ColorSwatchTheme.js +1 -1
  104. package/amd/UNSAFE_ColorSwatch/themes/stable/ColorSwatchTheme.js.map +1 -1
  105. package/amd/UNSAFE_ColorSwatch/themes/stable/ColorSwatchVariants.css.js +1 -1
  106. package/amd/UNSAFE_ColorSwatch.js +1 -1
  107. package/amd/UNSAFE_ContainerDiagram/themes/DiagramStyles.css.js +1 -1
  108. package/amd/UNSAFE_ContainerDiagram.js +1 -1
  109. package/amd/UNSAFE_ConveyorBelt/themes/redwood/ConveyorBeltTheme.js +1 -1
  110. package/amd/UNSAFE_ConveyorBelt/themes/redwood/ConveyorBeltTheme.js.map +1 -1
  111. package/amd/UNSAFE_ConveyorBelt/themes/redwood/ConveyorBeltVariants.css.js +1 -1
  112. package/amd/UNSAFE_ConveyorBelt/themes/stable/ConveyorBeltTheme.js +1 -1
  113. package/amd/UNSAFE_ConveyorBelt/themes/stable/ConveyorBeltTheme.js.map +1 -1
  114. package/amd/UNSAFE_ConveyorBelt/themes/stable/ConveyorBeltVariants.css.js +1 -1
  115. package/amd/UNSAFE_ConveyorBelt.js +1 -1
  116. package/amd/UNSAFE_Diagram/themes/DiagramStyles.css.js +1 -1
  117. package/amd/UNSAFE_Diagram.js +1 -1
  118. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupTheme.js +1 -1
  119. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupTheme.js.map +1 -1
  120. package/amd/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupVariants.css.js +1 -1
  121. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupTheme.js +1 -1
  122. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupTheme.js.map +1 -1
  123. package/amd/UNSAFE_DrawerPopup/themes/stable/DrawerPopupVariants.css.js +1 -1
  124. package/amd/UNSAFE_DrawerPopup.js +1 -1
  125. package/amd/UNSAFE_Expander.js +1 -1
  126. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutTheme.js +1 -1
  127. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutTheme.js.map +1 -1
  128. package/amd/UNSAFE_FormLayout/themes/redwood/FormLayoutVariants.css.js +1 -1
  129. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutTheme.js +1 -1
  130. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutTheme.js.map +1 -1
  131. package/amd/UNSAFE_FormLayout/themes/stable/FormLayoutVariants.css.js +1 -1
  132. package/amd/UNSAFE_FormLayout.js +1 -1
  133. package/amd/UNSAFE_HierarchicalList.js +1 -1
  134. package/amd/UNSAFE_IconProgressButton.js +1 -1
  135. package/amd/UNSAFE_IndentedCellLayout.js +1 -1
  136. package/amd/UNSAFE_InlineSelectSingle.js +1 -1
  137. package/amd/UNSAFE_InputColor.js +1 -1
  138. package/amd/UNSAFE_InputDatePicker.js +1 -1
  139. package/amd/UNSAFE_InputSearch.js +1 -1
  140. package/amd/UNSAFE_InputSearch.js.map +1 -1
  141. package/amd/UNSAFE_InputTimePicker.js +1 -1
  142. package/amd/UNSAFE_InputTimePicker.js.map +1 -1
  143. package/amd/UNSAFE_ListView.js +1 -1
  144. package/amd/UNSAFE_MeterCircle/themes/redwood/MeterCircleTheme.js +1 -1
  145. package/amd/UNSAFE_MeterCircle/themes/redwood/MeterCircleTheme.js.map +1 -1
  146. package/amd/UNSAFE_MeterCircle/themes/redwood/MeterCircleVariants.css.js +1 -1
  147. package/amd/UNSAFE_MeterCircle/themes/stable/MeterCircleTheme.js +1 -1
  148. package/amd/UNSAFE_MeterCircle/themes/stable/MeterCircleTheme.js.map +1 -1
  149. package/amd/UNSAFE_MeterCircle/themes/stable/MeterCircleVariants.css.js +1 -1
  150. package/amd/UNSAFE_MeterCircle.js +1 -1
  151. package/amd/UNSAFE_NavigationList.js +1 -1
  152. package/amd/UNSAFE_OverflowTabBar.js +1 -1
  153. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarTheme.js +1 -1
  154. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarTheme.js.map +1 -1
  155. package/amd/UNSAFE_ProgressBar/themes/redwood/ProgressBarVariants.css.js +1 -1
  156. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarTheme.js +1 -1
  157. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarTheme.js.map +1 -1
  158. package/amd/UNSAFE_ProgressBar/themes/stable/ProgressBarVariants.css.js +1 -1
  159. package/amd/UNSAFE_ProgressBar.js +1 -1
  160. package/amd/UNSAFE_ProgressButton.js +1 -1
  161. package/amd/UNSAFE_ProgressButtonLabelLayout.js +1 -1
  162. package/amd/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleTheme.js +1 -1
  163. package/amd/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleTheme.js.map +1 -1
  164. package/amd/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleVariants.css.js +1 -1
  165. package/amd/UNSAFE_ProgressCircle/themes/stable/ProgressCircleTheme.js +1 -1
  166. package/amd/UNSAFE_ProgressCircle/themes/stable/ProgressCircleTheme.js.map +1 -1
  167. package/amd/UNSAFE_ProgressCircle/themes/stable/ProgressCircleVariants.css.js +1 -1
  168. package/amd/UNSAFE_ProgressCircle.js +1 -1
  169. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconTheme.js +1 -1
  170. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconTheme.js.map +1 -1
  171. package/amd/UNSAFE_RadioItem/themes/redwood/RadioIconVariants.css.js +1 -1
  172. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconTheme.js +1 -1
  173. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconTheme.js.map +1 -1
  174. package/amd/UNSAFE_RadioItem/themes/stable/RadioIconVariants.css.js +1 -1
  175. package/amd/UNSAFE_RadioItem.js +1 -1
  176. package/amd/UNSAFE_Refresher.js +1 -1
  177. package/amd/UNSAFE_ReorderableTabBar.js +1 -1
  178. package/amd/UNSAFE_RichSelectionItem.js +1 -1
  179. package/amd/UNSAFE_RichSelectionItem.js.map +1 -1
  180. package/amd/UNSAFE_SelectMultiple.js +1 -1
  181. package/amd/UNSAFE_SelectSingle.js +1 -1
  182. package/amd/UNSAFE_SortControl.js +1 -1
  183. package/amd/UNSAFE_TabBar.js +1 -1
  184. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemTheme.js +1 -1
  185. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemTheme.js.map +1 -1
  186. package/amd/UNSAFE_TabBarCommon/themes/redwood/TabBarItemVariants.css.js +1 -1
  187. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemTheme.js +1 -1
  188. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemTheme.js.map +1 -1
  189. package/amd/UNSAFE_TabBarCommon/themes/stable/TabBarItemVariants.css.js +1 -1
  190. package/amd/UNSAFE_TabBarCommon.js +1 -1
  191. package/amd/UNSAFE_TabBarMixed.js +1 -1
  192. package/amd/UNSAFE_TableDisplay.js +1 -1
  193. package/amd/UNSAFE_TableView.js +1 -1
  194. package/amd/UNSAFE_TimePicker.js +1 -1
  195. package/amd/UNSAFE_Train/themes/redwood/TrainTheme.js +1 -1
  196. package/amd/UNSAFE_Train/themes/redwood/TrainTheme.js.map +1 -1
  197. package/amd/UNSAFE_Train/themes/redwood/TrainVariants.css.js +1 -1
  198. package/amd/UNSAFE_Train/themes/stable/TrainTheme.js +1 -1
  199. package/amd/UNSAFE_Train/themes/stable/TrainTheme.js.map +1 -1
  200. package/amd/UNSAFE_Train/themes/stable/TrainVariants.css.js +1 -1
  201. package/amd/UNSAFE_Train.js +1 -1
  202. package/amd/UNSAFE_TreeTableView.js +1 -1
  203. package/amd/UNSAFE_TreeView.js +1 -1
  204. package/amd/UNSAFE_VirtualizedListView.js +1 -1
  205. package/amd/hooks/PRIVATE_useDetectHorizontalOverflow.js +1 -1
  206. package/amd/hooks/PRIVATE_useTabBar.js +1 -1
  207. package/amd/useDetectHorizontalOverflow-88d9b328.js +2 -0
  208. package/amd/useDetectHorizontalOverflow-88d9b328.js.map +1 -0
  209. package/amd/useTabBar-edf8f8a1.js +2 -0
  210. package/amd/useTabBar-edf8f8a1.js.map +1 -0
  211. package/cjs/AvatarVariants.styles.css +25 -25
  212. package/cjs/AvatarVariants.styles2.css +25 -25
  213. package/cjs/{BaseCardView-e38589c6.js → BaseCardView-f3b3402b.js} +4 -1
  214. package/cjs/{BaseCardView-e38589c6.js.map → BaseCardView-f3b3402b.js.map} +1 -1
  215. package/cjs/ButtonLabelLayoutVariants.styles.css +8 -8
  216. package/cjs/ButtonLabelLayoutVariants.styles2.css +8 -8
  217. package/cjs/CheckboxIconVariants.styles.css +7 -7
  218. package/cjs/CheckboxIconVariants.styles2.css +7 -7
  219. package/cjs/ColorPickerVariants.styles.css +1 -1
  220. package/cjs/ColorPickerVariants.styles2.css +1 -1
  221. package/cjs/ConveyorBeltVariants.styles.css +6 -6
  222. package/cjs/ConveyorBeltVariants.styles2.css +6 -6
  223. package/cjs/DiagramStyles.styles.css +12 -81
  224. package/cjs/DiagramStyles.styles2.css +81 -12
  225. package/cjs/InputSearchVariants.styles.css +3 -3
  226. package/cjs/InputSearchVariants.styles2.css +3 -3
  227. package/cjs/{List-eea800fd.js → List-436100e1.js} +3 -1
  228. package/cjs/{List-eea800fd.js.map → List-436100e1.js.map} +1 -1
  229. package/cjs/MeterBarVariants.styles.css +4 -4
  230. package/cjs/MeterBarVariants.styles2.css +4 -4
  231. package/cjs/NavigationListItemVariants.styles.css +5 -5
  232. package/cjs/NavigationListItemVariants.styles2.css +5 -5
  233. package/cjs/PRIVATE_BaseCardView.js +1 -1
  234. package/cjs/PRIVATE_SelectCommon.js +2 -2
  235. package/cjs/PRIVATE_TableList.js +1 -1
  236. package/cjs/ProgressBarVariants.styles.css +1 -1
  237. package/cjs/ProgressBarVariants.styles2.css +1 -1
  238. package/cjs/ProgressCircleVariants.styles.css +4 -4
  239. package/cjs/ProgressCircleVariants.styles2.css +4 -4
  240. package/cjs/RadioIconVariants.styles.css +3 -3
  241. package/cjs/RadioIconVariants.styles2.css +3 -3
  242. package/cjs/{TabBar-1cd4ac17.js → TabBar-ba4bcd32.js} +9 -5
  243. package/cjs/TabBar-ba4bcd32.js.map +1 -0
  244. package/cjs/TabBarItemVariants.styles.css +3 -3
  245. package/cjs/TabBarItemVariants.styles2.css +3 -3
  246. package/cjs/Theme-redwood/theme.css +413 -413
  247. package/cjs/Theme-stable/theme.css +559 -559
  248. package/cjs/{TimePicker-25997417.js → TimePicker-fe817eb1.js} +2 -2
  249. package/cjs/{TimePicker-25997417.js.map → TimePicker-fe817eb1.js.map} +1 -1
  250. package/cjs/UNSAFE_CardFlexView.js +1 -1
  251. package/cjs/UNSAFE_CardGridView.js +1 -1
  252. package/cjs/UNSAFE_ColorInputText.js +82 -82
  253. package/cjs/UNSAFE_HierarchicalList.js +1 -1
  254. package/cjs/UNSAFE_InlineSelectSingle.js +3 -3
  255. package/cjs/UNSAFE_InputColor.js +82 -82
  256. package/cjs/UNSAFE_InputSearch.js +1 -1
  257. package/cjs/UNSAFE_InputTimePicker.js +2 -2
  258. package/cjs/UNSAFE_ListView.js +1 -1
  259. package/cjs/UNSAFE_OverflowTabBar.js +9 -5
  260. package/cjs/UNSAFE_OverflowTabBar.js.map +1 -1
  261. package/cjs/UNSAFE_ReorderableTabBar.js +13 -13
  262. package/cjs/UNSAFE_RichSelectionItem.js +1 -1
  263. package/cjs/UNSAFE_SelectMultiple.js +2 -2
  264. package/cjs/UNSAFE_SelectSingle.js +3 -3
  265. package/cjs/UNSAFE_TabBar.js +3 -3
  266. package/cjs/UNSAFE_TabBarMixed.js +26 -26
  267. package/cjs/UNSAFE_TabBarMixed.js.map +1 -1
  268. package/cjs/UNSAFE_TextArea.js +174 -72
  269. package/cjs/UNSAFE_TextArea.js.map +1 -1
  270. package/cjs/UNSAFE_TextAreaAutosize.js +3 -3
  271. package/cjs/UNSAFE_TextAreaAutosize.js.map +1 -1
  272. package/cjs/UNSAFE_TimePicker.js +2 -2
  273. package/cjs/UNSAFE_TreeView.js +1 -1
  274. package/cjs/dropdownStyles.styles.css +104 -6
  275. package/cjs/dropdownStyles.styles2.css +6 -104
  276. package/cjs/hooks/PRIVATE_useDetectHorizontalOverflow.js +1 -1
  277. package/cjs/hooks/PRIVATE_useTabBar.js +1 -1
  278. package/cjs/{useDetectHorizontalOverflow-622817d4.js → useDetectHorizontalOverflow-15084cbf.js} +30 -58
  279. package/cjs/useDetectHorizontalOverflow-15084cbf.js.map +1 -0
  280. package/cjs/{useDisplayValue-ce2d071e.js → useDisplayValue-777c9be5.js} +2 -2
  281. package/cjs/{useDisplayValue-ce2d071e.js.map → useDisplayValue-777c9be5.js.map} +1 -1
  282. package/cjs/{useSelectCommon-544c22ee.js → useSelectCommon-bb44fdb6.js} +2 -2
  283. package/cjs/{useSelectCommon-544c22ee.js.map → useSelectCommon-bb44fdb6.js.map} +1 -1
  284. package/cjs/{useTabBar-ec20851a.js → useTabBar-1cfaf3e6.js} +2 -5
  285. package/cjs/useTabBar-1cfaf3e6.js.map +1 -0
  286. package/cjs/useTextAreaAltEnter-27263abe.js +68 -0
  287. package/cjs/useTextAreaAltEnter-27263abe.js.map +1 -0
  288. package/es/BaseBarChart-26b0e87c.js +3 -3
  289. package/es/BaseBarGroup-ff0495d8.js +1 -1
  290. package/es/{BaseButton-77bb9d91.js → BaseButton-f3a607e1.js} +2 -2
  291. package/es/{BaseButton-77bb9d91.js.map → BaseButton-f3a607e1.js.map} +1 -1
  292. package/es/BaseCardView-21ee7272.js +6 -6
  293. package/es/BaseDiagram-c48f2fc4.js +7 -7
  294. package/es/BaseNavigationListItem-973e1502.js +5 -5
  295. package/es/BaseRichSelection-b0ee75b8.js +9 -9
  296. package/es/BaseSelector-33194eea.js +1 -1
  297. package/es/BaseSwatchView-028f6717.js +2 -2
  298. package/es/{Button-64b2d5c7.js → Button-166a6aa3.js} +2 -2
  299. package/es/{Button-64b2d5c7.js.map → Button-166a6aa3.js.map} +1 -1
  300. package/es/ButtonSet-6cba414c.js +2 -2
  301. package/es/ButtonSetButton-125e316b.js +1 -1
  302. package/es/ButtonSetIconButton-8b969ad2.js +4 -4
  303. package/es/{Center-e2a7c4c7.js → Center-0388bd0c.js} +2 -2
  304. package/es/{Center-e2a7c4c7.js.map → Center-0388bd0c.js.map} +1 -1
  305. package/es/Chart-5d837bee.js +11 -11
  306. package/es/CheckboxControl-777f547a.js +6 -6
  307. package/es/CheckboxRadioField-b332f3ef.js +6 -6
  308. package/es/CheckboxRadioLabelValueLayout-05524fdf.js +1 -1
  309. package/es/CheckboxSetContext-1be56556.js +9 -0
  310. package/es/CheckboxSetContext-1be56556.js.map +1 -0
  311. package/es/Chip-a0b982b3.js +1 -1
  312. package/es/ClearIcon-f9ae8ca2.js +1 -1
  313. package/es/CollapseIcon-134ba4b8.js +1 -1
  314. package/es/Collapsible-6a2da8e9.js +2 -2
  315. package/es/ColorPalette-660c0665.js +4 -4
  316. package/es/{ColorPicker-d399a2dc.js → ColorPicker-98ba93ac.js} +3 -3
  317. package/es/{ColorPicker-d399a2dc.js.map → ColorPicker-98ba93ac.js.map} +1 -1
  318. package/es/ColorSwatch-ac777ee8.js +5 -5
  319. package/es/{CompactLabelAssistance-db24bf83.js → CompactLabelAssistance-44907e8b.js} +6 -6
  320. package/es/{CompactLabelAssistance-db24bf83.js.map → CompactLabelAssistance-44907e8b.js.map} +1 -1
  321. package/es/CompactUserAssistance-80d7ed0f.js +6 -6
  322. package/es/ComponentMessageContainer-f95c0576.js +4 -4
  323. package/es/{DatePicker-56fb4fcf.js → DatePicker-659b8c72.js} +8 -8
  324. package/es/{DatePicker-56fb4fcf.js.map → DatePicker-659b8c72.js.map} +1 -1
  325. package/es/DatePickerHeader-2fa4dff3.js +3 -3
  326. package/es/{Dialog-6fc62c1d.js → Dialog-c1502d03.js} +7 -7
  327. package/es/{Dialog-6fc62c1d.js.map → Dialog-c1502d03.js.map} +1 -1
  328. package/es/DirectionalCollapseArrowIcon-1f47a4a6.js +1 -1
  329. package/es/DirectionalExpandArrowIcon-ddaa04dc.js +1 -1
  330. package/es/{Dropdown-a3e401ae.js → Dropdown-e3f6f436.js} +6 -6
  331. package/es/{Dropdown-a3e401ae.js.map → Dropdown-e3f6f436.js.map} +1 -1
  332. package/es/{EmbeddedIconButton-3824dbe1.js → EmbeddedIconButton-8dca2a64.js} +2 -2
  333. package/es/{EmbeddedIconButton-3824dbe1.js.map → EmbeddedIconButton-8dca2a64.js.map} +1 -1
  334. package/es/{EmbeddedTextField-12d0e0a7.js → EmbeddedTextField-e4b319a0.js} +2 -2
  335. package/es/{EmbeddedTextField-12d0e0a7.js.map → EmbeddedTextField-e4b319a0.js.map} +1 -1
  336. package/es/{EnvironmentProvider-12bbb301.js → EnvironmentProvider-60423f29.js} +3 -3
  337. package/es/{EnvironmentProvider-12bbb301.js.map → EnvironmentProvider-60423f29.js.map} +1 -1
  338. package/es/Expander-19633442.js +2 -2
  339. package/es/FilmStrip-c0155ba5.js +1 -1
  340. package/es/{Flex-f0f1bb0d.js → Flex-f5fe143f.js} +2 -2
  341. package/es/{Flex-f0f1bb0d.js.map → Flex-f5fe143f.js.map} +1 -1
  342. package/es/{Floating-87cd2bbf.js → Floating-91e0f4c1.js} +4 -4
  343. package/es/{Floating-87cd2bbf.js.map → Floating-91e0f4c1.js.map} +1 -1
  344. package/es/FormLayoutVariants.styles.css +14 -14
  345. package/es/FormLayoutVariants.styles2.css +14 -14
  346. package/es/{Grid-45385814.js → Grid-67dc57cb.js} +2 -2
  347. package/es/{Grid-45385814.js.map → Grid-67dc57cb.js.map} +1 -1
  348. package/es/{HighlightText-39c46ea1.js → HighlightText-790fa99f.js} +2 -2
  349. package/es/{HighlightText-39c46ea1.js.map → HighlightText-790fa99f.js.map} +1 -1
  350. package/es/Icon-c0fda273.js +3 -3
  351. package/es/IconButton-94077753.js +4 -4
  352. package/es/IconSwitchButton-ced93277.js +4 -4
  353. package/es/IconToggleButton-8605dd2d.js +4 -4
  354. package/es/{IconUserAssistance-b03771f5.js → IconUserAssistance-16f55b57.js} +3 -3
  355. package/es/{IconUserAssistance-b03771f5.js.map → IconUserAssistance-16f55b57.js.map} +1 -1
  356. package/es/InlineHelp-6a8bd475.js +1 -1
  357. package/es/InlineUserAssistance-5d329af5.js +5 -5
  358. package/es/InputDateMask-9255cb45.js +6 -6
  359. package/es/InputSearchVariants.styles.css +3 -3
  360. package/es/InputSearchVariants.styles2.css +3 -3
  361. package/es/InputTimeMask-8f552768.js +6 -6
  362. package/es/Label-293073f5.js +8 -8
  363. package/es/LabelValueLayout-cb1f7711.js +1 -1
  364. package/es/{Layer-937ca8d8.js → Layer-542de448.js} +3 -3
  365. package/es/{Layer-937ca8d8.js.map → Layer-542de448.js.map} +1 -1
  366. package/es/{LayerHost-20500ac8.js → LayerHost-c4481db3.js} +2 -2
  367. package/es/{LayerHost-20500ac8.js.map → LayerHost-c4481db3.js.map} +1 -1
  368. package/es/{LayerManager-55001240.js → LayerManager-4b79a6a2.js} +2 -2
  369. package/es/{LayerManager-55001240.js.map → LayerManager-4b79a6a2.js.map} +1 -1
  370. package/es/Link-530a365a.js +1 -1
  371. package/es/List-5419d582.js +4 -4
  372. package/es/List-eab74f6d.js +8 -8
  373. package/es/{ListItemLayout-bcebf158.js → ListItemLayout-bc6fb853.js} +2 -2
  374. package/es/{ListItemLayout-bcebf158.js.map → ListItemLayout-bc6fb853.js.map} +1 -1
  375. package/es/ListStyles.styles.css +7 -105
  376. package/es/ListStyles.styles2.css +105 -7
  377. package/es/{LiveRegion-bd98c133.js → LiveRegion-74d90422.js} +2 -2
  378. package/es/{LiveRegion-bd98c133.js.map → LiveRegion-74d90422.js.map} +1 -1
  379. package/es/{MaxLengthLiveRegion-8551ea6a.js → MaxLengthLiveRegion-96ac8f1c.js} +3 -3
  380. package/es/{MaxLengthLiveRegion-8551ea6a.js.map → MaxLengthLiveRegion-96ac8f1c.js.map} +1 -1
  381. package/es/MenuItemVariants.styles.css +8 -8
  382. package/es/MenuItemVariants.styles2.css +8 -8
  383. package/es/Message-f941b6ee.js +2 -2
  384. package/es/{MessageLayer-0523ebac.js → MessageLayer-7aad786a.js} +6 -6
  385. package/es/{MessageLayer-0523ebac.js.map → MessageLayer-7aad786a.js.map} +1 -1
  386. package/es/MessagesManager-a42ca15e.js +3 -3
  387. package/es/MeterCircleVariants.styles.css +8 -8
  388. package/es/MeterCircleVariants.styles2.css +8 -8
  389. package/es/Modal-863676e2.js +3 -3
  390. package/es/{MonthView-31ced05b.js → MonthView-5ba0a449.js} +5 -5
  391. package/es/{MonthView-31ced05b.js.map → MonthView-5ba0a449.js.map} +1 -1
  392. package/es/NavigationList-0281b772.js +4 -4
  393. package/es/{NumberInputText-8c8fffa0.js → NumberInputText-e001d629.js} +7 -7
  394. package/es/{NumberInputText-8c8fffa0.js.map → NumberInputText-e001d629.js.map} +1 -1
  395. package/es/OverflowTabBarItem-75b943ec.js +8 -8
  396. package/es/PRIVATE_BaseBarChart.js +37 -37
  397. package/es/PRIVATE_BaseCardView.js +22 -22
  398. package/es/PRIVATE_BaseDiagram.js +30 -30
  399. package/es/PRIVATE_BaseSelector.js +17 -17
  400. package/es/PRIVATE_BaseSwatchView.js +18 -18
  401. package/es/PRIVATE_Chart.js +36 -36
  402. package/es/PRIVATE_CheckboxControl.js +25 -25
  403. package/es/PRIVATE_CheckboxRadioField.js +27 -27
  404. package/es/PRIVATE_ClearIcon.js +18 -18
  405. package/es/PRIVATE_DatePickerHeader.js +20 -20
  406. package/es/PRIVATE_DatePickerLayout.js +4 -4
  407. package/es/PRIVATE_EmbeddedIconButton.js +6 -6
  408. package/es/PRIVATE_EmbeddedTextField.js +18 -18
  409. package/es/PRIVATE_FilmStrip.js +17 -17
  410. package/es/PRIVATE_FormControls.js +21 -21
  411. package/es/PRIVATE_IconSwitchButton.js +17 -17
  412. package/es/PRIVATE_Icons/CheckboxCrossed.js +16 -16
  413. package/es/PRIVATE_Icons/CheckboxMixed.js +16 -16
  414. package/es/PRIVATE_Icons/CheckboxOff.js +16 -16
  415. package/es/PRIVATE_Icons/CheckboxOn.js +16 -16
  416. package/es/PRIVATE_Icons/None.js +16 -16
  417. package/es/PRIVATE_InputBase.js +28 -28
  418. package/es/PRIVATE_List/themes/ListStyles.css.js +1 -1
  419. package/es/PRIVATE_List.js +22 -22
  420. package/es/PRIVATE_Message.js +20 -20
  421. package/es/PRIVATE_MessageLayer.js +12 -12
  422. package/es/PRIVATE_MonthView.js +20 -20
  423. package/es/PRIVATE_MonthYearGridView.js +7 -7
  424. package/es/PRIVATE_PlotArea.js +5 -5
  425. package/es/PRIVATE_RevealToggleIcon.js +18 -18
  426. package/es/PRIVATE_RichSelectionCommon.js +28 -28
  427. package/es/PRIVATE_SelectCommon.js +33 -33
  428. package/es/PRIVATE_StyledCard.js +17 -17
  429. package/es/PRIVATE_StyledCheckbox.js +16 -16
  430. package/es/PRIVATE_StyledSwitch.js +4 -4
  431. package/es/PRIVATE_SwatchFlexView.js +18 -18
  432. package/es/PRIVATE_Table.js +39 -39
  433. package/es/PRIVATE_TableList/themes/ListStyles.css.js +1 -1
  434. package/es/PRIVATE_TableList/themes/redwood/ListTheme.js +1 -1
  435. package/es/PRIVATE_TableList/themes/redwood/ListVariants.css.js +1 -1
  436. package/es/PRIVATE_TableList/themes/stable/ListTheme.js +1 -1
  437. package/es/PRIVATE_TableList/themes/stable/ListVariants.css.js +1 -1
  438. package/es/PRIVATE_TableList.js +29 -29
  439. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +16 -16
  440. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +16 -16
  441. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +16 -16
  442. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +16 -16
  443. package/es/PRIVATE_ThemedIcons/CheckIcon.js +16 -16
  444. package/es/PRIVATE_ThemedIcons/CheckboxCrossedIcon.js +16 -16
  445. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +16 -16
  446. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +16 -16
  447. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +16 -16
  448. package/es/PRIVATE_ThemedIcons/CloseIcon.js +16 -16
  449. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +17 -17
  450. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +16 -16
  451. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +16 -16
  452. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +16 -16
  453. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +17 -17
  454. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +17 -17
  455. package/es/PRIVATE_ThemedIcons/DragHandleIcon.js +16 -16
  456. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +16 -16
  457. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +16 -16
  458. package/es/PRIVATE_ThemedIcons/HelpIcon.js +16 -16
  459. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +16 -16
  460. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +16 -16
  461. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +16 -16
  462. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +16 -16
  463. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +16 -16
  464. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +16 -16
  465. package/es/PRIVATE_ThemedIcons/MinusIcon.js +16 -16
  466. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +16 -16
  467. package/es/PRIVATE_ThemedIcons/None.js +16 -16
  468. package/es/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +16 -16
  469. package/es/PRIVATE_ThemedIcons/PlusIcon.js +16 -16
  470. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +16 -16
  471. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +16 -16
  472. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +16 -16
  473. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +16 -16
  474. package/es/PRIVATE_ThemedIcons/UnsortedIcon.js +16 -16
  475. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +16 -16
  476. package/es/PRIVATE_ThemedIcons/ViewIcon.js +16 -16
  477. package/es/PRIVATE_TimeComponent.js +19 -19
  478. package/es/PRIVATE_TruncatingLink.js +16 -16
  479. package/es/PRIVATE_VisOverview.js +16 -16
  480. package/es/PRIVATE_VisStatusMessage.js +5 -5
  481. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  482. package/es/PolarChartWithDimensions-76ff5180.js +7 -7
  483. package/es/{Popup-83eb0d14.js → Popup-5e092ea2.js} +10 -10
  484. package/es/{Popup-83eb0d14.js.map → Popup-5e092ea2.js.map} +1 -1
  485. package/es/ProgressBarVariants.styles.css +1 -1
  486. package/es/ProgressBarVariants.styles2.css +1 -1
  487. package/es/ProgressButtonLabelLayout-66b9ffed.js +3 -3
  488. package/es/{ProgressCircle-840273b1.js → ProgressCircle-5f423576.js} +2 -2
  489. package/es/{ProgressCircle-840273b1.js.map → ProgressCircle-5f423576.js.map} +1 -1
  490. package/es/ProgressCircleVariants.styles.css +4 -4
  491. package/es/ProgressCircleVariants.styles2.css +4 -4
  492. package/es/RadioItem-1a4b2f6c.js +6 -6
  493. package/es/ReadonlyTextField-bddb2cdf.js +2 -2
  494. package/es/ReadonlyTextFieldInput-bc7ef76e.js +1 -1
  495. package/es/{ReferenceLineArea-6408ffab.js → ReferenceLineArea-ee334176.js} +3 -3
  496. package/es/{ReferenceLineArea-6408ffab.js.map → ReferenceLineArea-ee334176.js.map} +1 -1
  497. package/es/RevealToggleIcon-f599e415.js +1 -1
  498. package/es/{SectionedContent-55b8f8c6.js → SectionedContent-ce3d19ab.js} +5 -5
  499. package/es/{SectionedContent-55b8f8c6.js.map → SectionedContent-ce3d19ab.js.map} +1 -1
  500. package/es/SegmentStyles.styles.css +12 -9
  501. package/es/SegmentStyles.styles2.css +9 -12
  502. package/es/SelectMenuGroupContext-ea5310eb.js +6 -6
  503. package/es/{SelectMobileDropdown-cec84a47.js → SelectMobileDropdown-502af91c.js} +7 -7
  504. package/es/{SelectMobileDropdown-cec84a47.js.map → SelectMobileDropdown-502af91c.js.map} +1 -1
  505. package/es/SelectMobileFieldInput-bd65672b.js +4 -4
  506. package/es/{SelectorAll-855a2050.js → SelectorAll-4b170e2f.js} +5 -5
  507. package/es/{SelectorAll-855a2050.js.map → SelectorAll-4b170e2f.js.map} +1 -1
  508. package/es/Sheet-9a10abc4.js +2 -2
  509. package/es/SortControl-73376bf0.js +3 -3
  510. package/es/SplitMenuButtonTheme.styles.css +4 -4
  511. package/es/SplitMenuButtonTheme.styles2.css +4 -4
  512. package/es/StyledCard-0e89c7fd.js +1 -1
  513. package/es/{StyledLabelValueLayout-69ac5e9a.js → StyledLabelValueLayout-1ebe21b2.js} +2 -2
  514. package/es/{StyledLabelValueLayout-69ac5e9a.js.map → StyledLabelValueLayout-1ebe21b2.js.map} +1 -1
  515. package/es/StyledSwitch-dc6a94af.js +2 -2
  516. package/es/StyledTextField-56e1a6e7.js +3 -3
  517. package/es/Submenu-481b3c39.js +1 -1
  518. package/es/{TabBar-36932ca2.js → TabBar-de0cb67b.js} +14 -12
  519. package/es/TabBar-de0cb67b.js.map +1 -0
  520. package/es/TabBarContextMenu-41639eb7.js +2 -2
  521. package/es/TabBarItemVariants.styles.css +3 -3
  522. package/es/TabBarItemVariants.styles2.css +3 -3
  523. package/es/TabBarLayout-5876474d.js +1 -1
  524. package/es/Table-fd39c1b5.js +9 -9
  525. package/es/TableColGroup-2f67372c.js +1 -1
  526. package/es/{TextField-0a9a5a57.js → TextField-a556da78.js} +2 -2
  527. package/es/{TextField-0a9a5a57.js.map → TextField-a556da78.js.map} +1 -1
  528. package/es/TextFieldContent-5e5ed450.js +2 -2
  529. package/es/{TextureDefs-295dccbd.js → TextureDefs-7373dec8.js} +2 -2
  530. package/es/{TextureDefs-295dccbd.js.map → TextureDefs-7373dec8.js.map} +1 -1
  531. package/es/Theme-redwood/theme.css +361 -371
  532. package/es/Theme-stable/theme.css +459 -449
  533. package/es/TimeComponentCanvas2D-e22cb491.js +6 -6
  534. package/es/TimePicker-aba30924.js +2 -2
  535. package/es/ToggleButton-d2b3a635.js +1 -1
  536. package/es/TreeItemLayout-7783b7bf.js +2 -2
  537. package/es/TruncatingLink-e0338cb2.js +4 -4
  538. package/es/TruncatingText-868308d3.js +1 -1
  539. package/es/UNSAFE_AccordionItemMultiple.js +18 -18
  540. package/es/UNSAFE_AccordionItemSingle.js +18 -18
  541. package/es/UNSAFE_ActionCard.js +17 -17
  542. package/es/UNSAFE_BarChart.js +37 -37
  543. package/es/UNSAFE_BareButton.js +2 -2
  544. package/es/UNSAFE_BaseButton.js +5 -5
  545. package/es/UNSAFE_Button.js +6 -6
  546. package/es/UNSAFE_ButtonSet.js +17 -17
  547. package/es/UNSAFE_ButtonSetButton.js +5 -5
  548. package/es/UNSAFE_ButtonSetIconButton.js +17 -17
  549. package/es/UNSAFE_ButtonSetItem.js +18 -18
  550. package/es/UNSAFE_ButtonSetMultiple.js +17 -17
  551. package/es/UNSAFE_ButtonSetSingle.js +17 -17
  552. package/es/UNSAFE_Card.js +17 -17
  553. package/es/UNSAFE_CardFlexView.js +22 -22
  554. package/es/UNSAFE_CardGridView.js +22 -22
  555. package/es/UNSAFE_Center.js +5 -5
  556. package/es/UNSAFE_Checkbox.js +25 -25
  557. package/es/UNSAFE_CheckboxItem.js +77 -139
  558. package/es/UNSAFE_CheckboxItem.js.map +1 -1
  559. package/es/UNSAFE_CheckboxRadioField.js +4 -4
  560. package/es/UNSAFE_CheckboxSet.js +75 -41
  561. package/es/UNSAFE_CheckboxSet.js.map +1 -1
  562. package/es/UNSAFE_Chip.js +2 -2
  563. package/es/UNSAFE_Collapsible.js +18 -18
  564. package/es/UNSAFE_CollapsibleNavigationList.js +28 -28
  565. package/es/UNSAFE_ColorInputText.js +109 -109
  566. package/es/UNSAFE_ColorPalette.js +21 -21
  567. package/es/UNSAFE_ColorPicker.js +23 -23
  568. package/es/UNSAFE_ColorSwatch.js +18 -18
  569. package/es/UNSAFE_ComboChart.js +38 -38
  570. package/es/UNSAFE_ComponentMessage.js +20 -20
  571. package/es/UNSAFE_ContainerDiagram.js +30 -30
  572. package/es/UNSAFE_ConveyorBelt.js +18 -18
  573. package/es/UNSAFE_DatePicker.js +27 -27
  574. package/es/UNSAFE_Diagram.js +30 -30
  575. package/es/UNSAFE_Dialog.js +22 -22
  576. package/es/UNSAFE_DragHandle.js +17 -17
  577. package/es/UNSAFE_DrawerLayout.js +12 -12
  578. package/es/UNSAFE_DrawerPopup.js +11 -11
  579. package/es/UNSAFE_Dropdown.js +15 -15
  580. package/es/UNSAFE_Environment.js +4 -4
  581. package/es/UNSAFE_Expander.js +20 -20
  582. package/es/UNSAFE_FilePicker.js +4 -4
  583. package/es/UNSAFE_FilmStrip.js +19 -19
  584. package/es/UNSAFE_Flex.js +4 -4
  585. package/es/UNSAFE_Floating.js +11 -11
  586. package/es/UNSAFE_FormLayout/themes/redwood/FormLayoutTheme.js +1 -1
  587. package/es/UNSAFE_FormLayout/themes/redwood/FormLayoutVariants.css.js +1 -1
  588. package/es/UNSAFE_FormLayout/themes/stable/FormLayoutTheme.js +1 -1
  589. package/es/UNSAFE_FormLayout/themes/stable/FormLayoutVariants.css.js +1 -1
  590. package/es/UNSAFE_FormLayout.js +3 -3
  591. package/es/UNSAFE_Gantt.js +23 -23
  592. package/es/UNSAFE_Grid.js +4 -4
  593. package/es/UNSAFE_HierarchicalList.js +30 -30
  594. package/es/UNSAFE_HighlightText.js +4 -4
  595. package/es/UNSAFE_Icon.js +16 -16
  596. package/es/UNSAFE_IconButton.js +17 -17
  597. package/es/UNSAFE_IconMenuButton.js +26 -26
  598. package/es/UNSAFE_IconProgressButton.js +22 -22
  599. package/es/UNSAFE_IconToggleButton.js +17 -17
  600. package/es/UNSAFE_IndentedCellLayout/themes/redwood/IndentedCellLayoutBaseTheme.css.js +1 -1
  601. package/es/UNSAFE_IndentedCellLayout/themes/stable/IndentedCellLayoutBaseTheme.css.js +1 -1
  602. package/es/UNSAFE_IndentedCellLayout.js +1 -1
  603. package/es/UNSAFE_Indexer.js +19 -19
  604. package/es/UNSAFE_InlineSelectSingle.js +36 -36
  605. package/es/UNSAFE_InputColor.js +108 -108
  606. package/es/UNSAFE_InputDateMask/themes/SegmentStyles.css.js +1 -1
  607. package/es/UNSAFE_InputDateMask.js +30 -30
  608. package/es/UNSAFE_InputDatePicker.js +39 -39
  609. package/es/UNSAFE_InputPassword.js +28 -28
  610. package/es/UNSAFE_InputSearch/themes/redwood/InputSearchTheme.js +1 -1
  611. package/es/UNSAFE_InputSearch/themes/redwood/InputSearchVariants.css.js +1 -1
  612. package/es/UNSAFE_InputSearch/themes/stable/InputSearchTheme.js +1 -1
  613. package/es/UNSAFE_InputSearch/themes/stable/InputSearchVariants.css.js +1 -1
  614. package/es/UNSAFE_InputSearch.js +35 -35
  615. package/es/UNSAFE_InputSensitiveText.js +29 -29
  616. package/es/UNSAFE_InputText.js +30 -30
  617. package/es/UNSAFE_InputTimeMask/themes/SegmentStyles.css.js +1 -1
  618. package/es/UNSAFE_InputTimeMask.js +29 -29
  619. package/es/UNSAFE_InputTimePicker.js +39 -39
  620. package/es/UNSAFE_Label.js +25 -25
  621. package/es/UNSAFE_LabelValueLayout.js +4 -4
  622. package/es/UNSAFE_LabelledLink.js +27 -27
  623. package/es/UNSAFE_Layer.js +8 -8
  624. package/es/UNSAFE_Legend.js +29 -29
  625. package/es/UNSAFE_LineAreaChart.js +38 -38
  626. package/es/UNSAFE_Link.js +2 -2
  627. package/es/UNSAFE_ListGroupHeaderLayout.js +5 -5
  628. package/es/UNSAFE_ListItemLayout.js +5 -5
  629. package/es/UNSAFE_ListView.js +29 -29
  630. package/es/UNSAFE_LiveRegion.js +4 -4
  631. package/es/UNSAFE_Menu/themes/redwood/MenuItemTheme.js +1 -1
  632. package/es/UNSAFE_Menu/themes/redwood/MenuItemVariants.css.js +1 -1
  633. package/es/UNSAFE_Menu/themes/stable/MenuItemTheme.js +1 -1
  634. package/es/UNSAFE_Menu/themes/stable/MenuItemVariants.css.js +1 -1
  635. package/es/UNSAFE_Menu.js +27 -27
  636. package/es/UNSAFE_MenuButton.js +26 -26
  637. package/es/UNSAFE_MessageBanner.js +20 -20
  638. package/es/UNSAFE_MessageToast.js +22 -22
  639. package/es/UNSAFE_MeterBar.js +16 -16
  640. package/es/UNSAFE_MeterCircle/themes/redwood/MeterCircleTheme.js +1 -1
  641. package/es/UNSAFE_MeterCircle/themes/redwood/MeterCircleVariants.css.js +1 -1
  642. package/es/UNSAFE_MeterCircle/themes/stable/MeterCircleTheme.js +1 -1
  643. package/es/UNSAFE_MeterCircle/themes/stable/MeterCircleVariants.css.js +1 -1
  644. package/es/UNSAFE_MeterCircle.js +18 -18
  645. package/es/UNSAFE_Modal.js +8 -8
  646. package/es/UNSAFE_NavigationList.js +28 -28
  647. package/es/UNSAFE_NumberInputText.js +32 -32
  648. package/es/UNSAFE_OverflowTabBar.js +39 -35
  649. package/es/UNSAFE_OverflowTabBar.js.map +1 -1
  650. package/es/UNSAFE_PictoChart.js +26 -26
  651. package/es/UNSAFE_PieChart.js +30 -30
  652. package/es/UNSAFE_PolarBarChart.js +31 -31
  653. package/es/UNSAFE_PolarLineAreaChart.js +31 -31
  654. package/es/UNSAFE_Popup.js +18 -18
  655. package/es/UNSAFE_ProgressBar/themes/redwood/ProgressBarTheme.js +1 -1
  656. package/es/UNSAFE_ProgressBar/themes/redwood/ProgressBarVariants.css.js +1 -1
  657. package/es/UNSAFE_ProgressBar/themes/stable/ProgressBarTheme.js +1 -1
  658. package/es/UNSAFE_ProgressBar/themes/stable/ProgressBarVariants.css.js +1 -1
  659. package/es/UNSAFE_ProgressBar.js +5 -5
  660. package/es/UNSAFE_ProgressButton.js +22 -22
  661. package/es/UNSAFE_ProgressButtonLabelLayout.js +11 -11
  662. package/es/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleTheme.js +1 -1
  663. package/es/UNSAFE_ProgressCircle/themes/redwood/ProgressCircleVariants.css.js +1 -1
  664. package/es/UNSAFE_ProgressCircle/themes/stable/ProgressCircleTheme.js +1 -1
  665. package/es/UNSAFE_ProgressCircle/themes/stable/ProgressCircleVariants.css.js +1 -1
  666. package/es/UNSAFE_ProgressCircle.js +5 -5
  667. package/es/UNSAFE_RadioItem.js +25 -25
  668. package/es/UNSAFE_RadioSet.js +27 -27
  669. package/es/UNSAFE_RangeBarChart.js +37 -37
  670. package/es/UNSAFE_RatingGauge.js +18 -18
  671. package/es/UNSAFE_Refresher.js +5 -5
  672. package/es/UNSAFE_ReorderableTabBar.js +33 -33
  673. package/es/UNSAFE_RichCheckboxSet.js +65 -69
  674. package/es/UNSAFE_RichCheckboxSet.js.map +1 -1
  675. package/es/UNSAFE_RichRadioSet.js +29 -29
  676. package/es/UNSAFE_RichSelectionItem.js +122 -177
  677. package/es/UNSAFE_RichSelectionItem.js.map +1 -1
  678. package/es/UNSAFE_ScatterChart.js +37 -37
  679. package/es/UNSAFE_SectionalLegend.js +29 -29
  680. package/es/UNSAFE_SelectMultiple.js +40 -40
  681. package/es/UNSAFE_SelectSingle.js +39 -39
  682. package/es/UNSAFE_SelectionCard.js +17 -17
  683. package/es/UNSAFE_Selector.js +17 -17
  684. package/es/UNSAFE_SelectorAll.js +19 -19
  685. package/es/UNSAFE_Sheet.js +11 -11
  686. package/es/UNSAFE_Slider.js +28 -28
  687. package/es/UNSAFE_SortControl.js +19 -19
  688. package/es/UNSAFE_SplitMenuButton/themes/redwood/SplitMenuButtonTheme.css.js +1 -1
  689. package/es/UNSAFE_SplitMenuButton/themes/stable/SplitMenuButtonTheme.css.js +1 -1
  690. package/es/UNSAFE_SplitMenuButton.js +27 -27
  691. package/es/UNSAFE_SwipeActions.js +26 -26
  692. package/es/UNSAFE_Switch/themes/redwood/SwitchBaseTheme.css.js +1 -1
  693. package/es/UNSAFE_Switch/themes/redwood/SwitchTheme.js +1 -1
  694. package/es/UNSAFE_Switch/themes/stable/SwitchBaseTheme.css.js +1 -1
  695. package/es/UNSAFE_Switch/themes/stable/SwitchTheme.js +1 -1
  696. package/es/UNSAFE_Switch.js +27 -27
  697. package/es/UNSAFE_TabBar.js +34 -34
  698. package/es/UNSAFE_TabBarCommon/themes/redwood/TabBarItemTheme.js +1 -1
  699. package/es/UNSAFE_TabBarCommon/themes/redwood/TabBarItemVariants.css.js +1 -1
  700. package/es/UNSAFE_TabBarCommon/themes/stable/TabBarItemTheme.js +1 -1
  701. package/es/UNSAFE_TabBarCommon/themes/stable/TabBarItemVariants.css.js +1 -1
  702. package/es/UNSAFE_TabBarCommon.js +30 -30
  703. package/es/UNSAFE_TabBarMixed.js +32 -32
  704. package/es/UNSAFE_TabBarMixed.js.map +1 -1
  705. package/es/UNSAFE_TableDisplay.js +19 -19
  706. package/es/UNSAFE_TableView.js +39 -39
  707. package/es/UNSAFE_TagCloud.js +27 -27
  708. package/es/UNSAFE_TextArea.js +29 -29
  709. package/es/UNSAFE_TextAreaAutosize.js +29 -29
  710. package/es/UNSAFE_TextField.js +21 -21
  711. package/es/UNSAFE_TimePicker.js +30 -30
  712. package/es/UNSAFE_ToggleButton.js +5 -5
  713. package/es/UNSAFE_Toolbar.js +4 -4
  714. package/es/UNSAFE_Train.js +17 -17
  715. package/es/UNSAFE_TreeItemLayout.js +5 -5
  716. package/es/UNSAFE_TreeTableView.js +39 -39
  717. package/es/UNSAFE_TreeView.js +30 -30
  718. package/es/UNSAFE_TruncatingBadge.js +17 -17
  719. package/es/UNSAFE_TruncatingText.js +17 -17
  720. package/es/UNSAFE_UserAssistance.js +26 -26
  721. package/es/UNSAFE_View.js +7 -7
  722. package/es/UNSAFE_VirtualizedListView.js +22 -22
  723. package/es/UNSAFE_VisInvalidDataMessage.js +6 -6
  724. package/es/UNSAFE_VisNoDataMessage.js +6 -6
  725. package/es/UNSAFE_VisProgressiveLoader.js +5 -5
  726. package/es/UNSAFE_WindowOverlay.js +4 -4
  727. package/es/{View-5e006875.js → View-0ee9645e.js} +5 -5
  728. package/es/{View-5e006875.js.map → View-0ee9645e.js.map} +1 -1
  729. package/es/{VisStatusMessage-091fb10e.js → VisStatusMessage-56f961f5.js} +2 -2
  730. package/es/{VisStatusMessage-091fb10e.js.map → VisStatusMessage-56f961f5.js.map} +1 -1
  731. package/es/{VisTabularDatatip-e3acfb61.js → VisTabularDatatip-e71cef20.js} +2 -2
  732. package/es/{VisTabularDatatip-e3acfb61.js.map → VisTabularDatatip-e71cef20.js.map} +1 -1
  733. package/es/{WindowOverlay-05bff667.js → WindowOverlay-9f2cbaa0.js} +2 -2
  734. package/es/{WindowOverlay-05bff667.js.map → WindowOverlay-9f2cbaa0.js.map} +1 -1
  735. package/es/{YearsGridView-db24fc9f.js → YearsGridView-6a5c2c74.js} +4 -4
  736. package/es/{YearsGridView-db24fc9f.js.map → YearsGridView-6a5c2c74.js.map} +1 -1
  737. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  738. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  739. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  740. package/es/hooks/PRIVATE_useChartContextMenu.js +24 -24
  741. package/es/hooks/PRIVATE_useChartDatatip.js +14 -14
  742. package/es/hooks/PRIVATE_useChartEvents.js +20 -20
  743. package/es/hooks/PRIVATE_useChartMarquee.js +19 -19
  744. package/es/hooks/PRIVATE_useCollectionFocusRing.js +17 -17
  745. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  746. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  747. package/es/hooks/PRIVATE_useDatatip.js +12 -12
  748. package/es/hooks/PRIVATE_useDetectHorizontalOverflow.js +17 -17
  749. package/es/hooks/PRIVATE_useFloating.js +4 -4
  750. package/es/hooks/PRIVATE_useItemAction.js +17 -17
  751. package/es/hooks/PRIVATE_useListCommon.js +18 -18
  752. package/es/hooks/PRIVATE_useOutsideMousedown.js +9 -9
  753. package/es/hooks/PRIVATE_useRadioFocusManager.js +4 -4
  754. package/es/hooks/PRIVATE_useReorderable.js +19 -19
  755. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  756. package/es/hooks/PRIVATE_useSelection.js +4 -4
  757. package/es/hooks/PRIVATE_useTabBar.js +28 -28
  758. package/es/hooks/PRIVATE_useTabbableModeSet.js +17 -17
  759. package/es/hooks/PRIVATE_useTooltipOnTruncation.js +17 -17
  760. package/es/hooks/PRIVATE_useVisContextMenu.js +24 -24
  761. package/es/hooks/PRIVATE_useVisDragModeControls.js +19 -19
  762. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  763. package/es/hooks/PRIVATE_useVisMeterEvents.js +14 -14
  764. package/es/hooks/PRIVATE_useVisSelection.js +15 -15
  765. package/es/hooks/UNSAFE_useBareButton.js +2 -2
  766. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  767. package/es/hooks/UNSAFE_useCurrentBgColor.js +2 -2
  768. package/es/hooks/UNSAFE_useDensity.js +3 -3
  769. package/es/hooks/UNSAFE_useHiddenTestMethod.js +3 -3
  770. package/es/hooks/UNSAFE_useOutsideClick.js +8 -8
  771. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  772. package/es/hooks/UNSAFE_useScale.js +3 -3
  773. package/es/hooks/UNSAFE_useTestId.js +3 -3
  774. package/es/hooks/UNSAFE_useTheme.js +3 -3
  775. package/es/hooks/UNSAFE_useThemeInterpolations.js +6 -6
  776. package/es/hooks/UNSAFE_useTooltip.js +17 -17
  777. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  778. package/es/hooks/UNSAFE_useUser.js +3 -3
  779. package/es/{popupUtils-c052da19.js → popupUtils-87073802.js} +2 -2
  780. package/es/{popupUtils-c052da19.js.map → popupUtils-87073802.js.map} +1 -1
  781. package/es/{tooltipUtils-8f52a37e.js → tooltipUtils-f2f90085.js} +5 -5
  782. package/es/{tooltipUtils-8f52a37e.js.map → tooltipUtils-f2f90085.js.map} +1 -1
  783. package/es/useBareButton-3d8d3267.js +1 -1
  784. package/es/useCellNavigation-74703ae5.js +1 -1
  785. package/es/useChartContextMenu-f63e0e70.js +2 -2
  786. package/es/{useChartDatatip-7a0287e7.js → useChartDatatip-c8797dc7.js} +4 -4
  787. package/es/{useChartDatatip-7a0287e7.js.map → useChartDatatip-c8797dc7.js.map} +1 -1
  788. package/es/{useColorScheme-febcabc0.js → useColorScheme-0d2625c5.js} +2 -2
  789. package/es/{useColorScheme-febcabc0.js.map → useColorScheme-0d2625c5.js.map} +1 -1
  790. package/es/useContextMenu-5730737d.js +2 -2
  791. package/es/{useCssVars-663740c4.js → useCssVars-697799fa.js} +5 -5
  792. package/es/{useCssVars-663740c4.js.map → useCssVars-697799fa.js.map} +1 -1
  793. package/es/{useCurrentKey-89b60d32.js → useCurrentKey-2cdeda49.js} +2 -2
  794. package/es/{useCurrentKey-89b60d32.js.map → useCurrentKey-2cdeda49.js.map} +1 -1
  795. package/es/{useDatatip-e234ee0a.js → useDatatip-73d51f39.js} +4 -4
  796. package/es/{useDatatip-e234ee0a.js.map → useDatatip-73d51f39.js.map} +1 -1
  797. package/es/{useDatatipAndCursor-0b8febe5.js → useDatatipAndCursor-142787d4.js} +2 -2
  798. package/es/{useDatatipAndCursor-0b8febe5.js.map → useDatatipAndCursor-142787d4.js.map} +1 -1
  799. package/es/{useDensity-482708e7.js → useDensity-9c3ef227.js} +2 -2
  800. package/es/{useDensity-482708e7.js.map → useDensity-9c3ef227.js.map} +1 -1
  801. package/es/{useDetectHorizontalOverflow-9b684feb.js → useDetectHorizontalOverflow-5b505e78.js} +30 -58
  802. package/es/useDetectHorizontalOverflow-5b505e78.js.map +1 -0
  803. package/es/useDisplayValue-f7c80ffe.js +6 -6
  804. package/es/{useFloating-38c13cfa.js → useFloating-98ad16ec.js} +2 -2
  805. package/es/{useFloating-38c13cfa.js.map → useFloating-98ad16ec.js.map} +1 -1
  806. package/es/{useHiddenTestMethod-dc102488.js → useHiddenTestMethod-4bb568f0.js} +2 -2
  807. package/es/{useHiddenTestMethod-dc102488.js.map → useHiddenTestMethod-4bb568f0.js.map} +1 -1
  808. package/es/useInputBase-6dc2e103.js +6 -6
  809. package/es/{useKeyboardEvents-ce2d5783.js → useKeyboardEvents-18678615.js} +2 -2
  810. package/es/{useKeyboardEvents-ce2d5783.js.map → useKeyboardEvents-18678615.js.map} +1 -1
  811. package/es/useLegendContextMenu-a6e566c4.js +6 -6
  812. package/es/{useMeterDatatip-e21c0d4b.js → useMeterDatatip-27882514.js} +3 -3
  813. package/es/{useMeterDatatip-e21c0d4b.js.map → useMeterDatatip-27882514.js.map} +1 -1
  814. package/es/useNavigation-a4715511.js +1 -1
  815. package/es/{useOutsideClick-552699e3.js → useOutsideClick-cad76f8b.js} +2 -2
  816. package/es/{useOutsideClick-552699e3.js.map → useOutsideClick-cad76f8b.js.map} +1 -1
  817. package/es/{useOutsideMousedown-36235b3d.js → useOutsideMousedown-9da55345.js} +2 -2
  818. package/es/{useOutsideMousedown-36235b3d.js.map → useOutsideMousedown-9da55345.js.map} +1 -1
  819. package/es/{usePopupAnimation-83d1dde8.js → usePopupAnimation-c12f24ba.js} +2 -2
  820. package/es/{usePopupAnimation-83d1dde8.js.map → usePopupAnimation-c12f24ba.js.map} +1 -1
  821. package/es/{usePrefixSuffix-7a0fb41b.js → usePrefixSuffix-56167b97.js} +2 -2
  822. package/es/{usePrefixSuffix-7a0fb41b.js.map → usePrefixSuffix-56167b97.js.map} +1 -1
  823. package/es/{useRadioFocusManager-d14e0331.js → useRadioFocusManager-afcb8a84.js} +2 -2
  824. package/es/{useRadioFocusManager-d14e0331.js.map → useRadioFocusManager-afcb8a84.js.map} +1 -1
  825. package/es/{useReorderableItem-936082ee.js → useReorderableItem-c47eebbe.js} +3 -3
  826. package/es/{useReorderableItem-936082ee.js.map → useReorderableItem-c47eebbe.js.map} +1 -1
  827. package/es/{useRovingTabIndexContainer-50d6566f.js → useRovingTabIndexContainer-51de19b5.js} +2 -2
  828. package/es/{useRovingTabIndexContainer-50d6566f.js.map → useRovingTabIndexContainer-51de19b5.js.map} +1 -1
  829. package/es/{useScale-9936da9d.js → useScale-4a98c348.js} +2 -2
  830. package/es/{useScale-9936da9d.js.map → useScale-4a98c348.js.map} +1 -1
  831. package/es/useSelectCommon-480b6641.js +5 -5
  832. package/es/{useSelectDrill-93387909.js → useSelectDrill-81f36802.js} +2 -2
  833. package/es/{useSelectDrill-93387909.js.map → useSelectDrill-81f36802.js.map} +1 -1
  834. package/es/{useSelection-429274e4.js → useSelection-584c64a6.js} +2 -2
  835. package/es/{useSelection-429274e4.js.map → useSelection-584c64a6.js.map} +1 -1
  836. package/es/{useSelection-58503244.js → useSelection-9f099db0.js} +6 -6
  837. package/es/{useSelection-58503244.js.map → useSelection-9f099db0.js.map} +1 -1
  838. package/es/{useTabBar-04a0093f.js → useTabBar-f068eee4.js} +6 -9
  839. package/es/useTabBar-f068eee4.js.map +1 -0
  840. package/es/{useTestId-20c68501.js → useTestId-2c0e08d3.js} +2 -2
  841. package/es/{useTestId-20c68501.js.map → useTestId-2c0e08d3.js.map} +1 -1
  842. package/es/{useTheme-eef5d217.js → useTheme-2c44fa3e.js} +2 -2
  843. package/es/{useTheme-eef5d217.js.map → useTheme-2c44fa3e.js.map} +1 -1
  844. package/es/{useThemeInterpolations-2d6f0d78.js → useThemeInterpolations-9df8ad1a.js} +5 -5
  845. package/es/{useThemeInterpolations-2d6f0d78.js.map → useThemeInterpolations-9df8ad1a.js.map} +1 -1
  846. package/es/{useTooltip-8decbde6.js → useTooltip-7779b267.js} +2 -2
  847. package/es/{useTooltip-8decbde6.js.map → useTooltip-7779b267.js.map} +1 -1
  848. package/es/{useTooltipControlled-ccfa2705.js → useTooltipControlled-729b3aac.js} +5 -5
  849. package/es/{useTooltipControlled-ccfa2705.js.map → useTooltipControlled-729b3aac.js.map} +1 -1
  850. package/es/{useTooltipOnTruncation-2df1e74f.js → useTooltipOnTruncation-5e2c2a50.js} +4 -4
  851. package/es/{useTooltipOnTruncation-2df1e74f.js.map → useTooltipOnTruncation-5e2c2a50.js.map} +1 -1
  852. package/es/{useTranslationBundle-ded09d52.js → useTranslationBundle-752de59a.js} +2 -2
  853. package/es/{useTranslationBundle-ded09d52.js.map → useTranslationBundle-752de59a.js.map} +1 -1
  854. package/es/useTruncationTooltip-fd1dac2a.js +3 -3
  855. package/es/{useUser-e1199cab.js → useUser-2c24ff59.js} +2 -2
  856. package/es/{useUser-e1199cab.js.map → useUser-2c24ff59.js.map} +1 -1
  857. package/es/useVisDragModeControls-092e8ac4.js +1 -1
  858. package/es/{useVisEvents-012f2a18.js → useVisEvents-454b5545.js} +2 -2
  859. package/es/{useVisEvents-012f2a18.js.map → useVisEvents-454b5545.js.map} +1 -1
  860. package/es/utils/PRIVATE_collectionUtils.js +17 -17
  861. package/es/utils/PRIVATE_tabBarUtils.js +17 -17
  862. package/es/utils/PRIVATE_tooltipUtils.js +14 -14
  863. package/es/utils/PRIVATE_visTestUtils.js +4 -4
  864. package/es/utils/UNSAFE_popupUtils.js +8 -8
  865. package/es/{withDirectionIcon-abc3124a.js → withDirectionIcon-dec377dd.js} +2 -2
  866. package/es/{withDirectionIcon-abc3124a.js.map → withDirectionIcon-dec377dd.js.map} +1 -1
  867. package/es/withThemeProps-3565a045.js +2 -2
  868. package/package.json +2 -2
  869. package/types/UNSAFE_TabBarMixed/useTabBarMixed.d.ts +1 -1
  870. package/amd/ContainerDiagram-521f402a.js +0 -2
  871. package/amd/Expander-150fa95e.js +0 -2
  872. package/amd/InputDatePicker-613800d1.js +0 -2
  873. package/amd/NavigationListExternalLinkItem-3d98a9e8.js +0 -2
  874. package/amd/NavigationListLinkItem-c4b2b73c.js +0 -2
  875. package/amd/OverflowTabBar-37f590ba.js +0 -2
  876. package/amd/OverflowTabBar-37f590ba.js.map +0 -1
  877. package/amd/OverflowTabBarItem-11f199ee.js +0 -2
  878. package/amd/SortControl-115bc431.js +0 -2
  879. package/amd/TabBar-dc8cadc2.js +0 -2
  880. package/amd/TabBar-dc8cadc2.js.map +0 -1
  881. package/amd/TabBarMixed-e16ca418.js +0 -2
  882. package/amd/useDetectHorizontalOverflow-7f5bba36.js +0 -2
  883. package/amd/useDetectHorizontalOverflow-7f5bba36.js.map +0 -1
  884. package/amd/useTabBar-2d8fc9aa.js +0 -2
  885. package/amd/useTabBar-2d8fc9aa.js.map +0 -1
  886. package/cjs/TabBar-1cd4ac17.js.map +0 -1
  887. package/cjs/TextArea-d65e3f5b.js +0 -207
  888. package/cjs/TextArea-d65e3f5b.js.map +0 -1
  889. package/cjs/useDetectHorizontalOverflow-622817d4.js.map +0 -1
  890. package/cjs/useTabBar-ec20851a.js.map +0 -1
  891. package/es/CheckboxSet-3e0ce80c.js +0 -52
  892. package/es/CheckboxSet-3e0ce80c.js.map +0 -1
  893. package/es/TabBar-36932ca2.js.map +0 -1
  894. package/es/useDetectHorizontalOverflow-9b684feb.js.map +0 -1
  895. package/es/useTabBar-04a0093f.js.map +0 -1
  896. /package/amd/UNSAFE_IndentedCellLayout/themes/{redwood → stable}/IndentedCellLayoutBaseTheme.styles.css +0 -0
  897. /package/es/UNSAFE_IndentedCellLayout/themes/{redwood → stable}/IndentedCellLayoutBaseTheme.styles.css +0 -0
  898. /package/es/UNSAFE_Switch/themes/{redwood → stable}/SwitchBaseTheme.styles.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"List-eea800fd.js","sources":["../../src/PRIVATE_TableList/utils/ListDomUtils.ts","../../src/PRIVATE_TableList/utils/ListScrollUtils.ts","../../src/PRIVATE_TableList/utils/ListFocusUtils.tsx","../../src/PRIVATE_TableList/hooks/useContextMenu.ts","../../src/PRIVATE_TableList/utils/ListDndUtils.ts","../../src/PRIVATE_TableList/hooks/useDnd.ts","../../src/PRIVATE_TableList/utils/ListActionUtils.ts","../../src/PRIVATE_TableList/utils/ListTooltipUtils.ts","../../src/PRIVATE_TableList/hooks/useFocusHandling.ts","../../src/PRIVATE_TableList/hooks/useItemReorder.ts","../../src/PRIVATE_TableList/utils/ListSelectionUtils.ts","../../src/PRIVATE_TableList/utils/ListNavigationUtils.ts","../../src/PRIVATE_TableList/hooks/useKeyboardHandling.ts","../../src/PRIVATE_TableList/hooks/usePointerHandling.ts","../../src/PRIVATE_TableList/hooks/useScrollHandling.ts","../../src/PRIVATE_TableList/hooks/useTruncationTooltip.tsx","../../src/PRIVATE_TableList/hooks/useInteractionManager.ts","../../src/PRIVATE_TableList/hooks/useSizingManager.ts","../../src/PRIVATE_TableList/Sparkle.tsx","../../src/PRIVATE_TableList/ListNoData.tsx","../../src/PRIVATE_TableList/utils/ListThemeUtils.ts","../../src/PRIVATE_TableList/ListCell.tsx","../../src/PRIVATE_TableList/ListRow.tsx","../../src/PRIVATE_TableList/ListReorderableRow.tsx","../../src/PRIVATE_TableList/ListSkeleton.tsx","../../src/PRIVATE_TableList/ListSkeletonRow.tsx","../../src/PRIVATE_TableList/ListBody.tsx","../../src/PRIVATE_TableList/ListContextMenu.tsx","../../src/PRIVATE_TableList/List.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 { ActiveCell } from '../List.types';\n\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport * as DomUtils from '#PRIVATE_TableCommon/utils/DomUtils';\n\nexport const LIST_ROW_SELECTOR = 'data-oj-list-row';\nexport const LIST_NODATA_SELECTOR = 'data-oj-list-nodata';\nexport const LIST_LOADING_SELECTOR = 'data-oj-list-loading';\nexport const LIST_LOADMORE_SELECTOR = 'data-oj-list-loadmore';\nexport const LIST_LOADMORE_ANCHOR_SELECTOR = 'data-oj-list-loadmore-anchor';\nexport const LIST_FOCUSABLE_SELECTOR = 'data-oj-list-focusable';\n\n/**\n * Returns whether or not auto focus is enabled on the specified cell\n */\nexport const isAutoFocusCell = <K>(\n rootElement: HTMLElement,\n listId: string,\n activeCell: ActiveCell<K>\n) => {\n const cellElement = getElementFromCell(rootElement, listId, activeCell);\n return cellElement != null && cellElement.dataset['ojListAutoFocus'] === 'enabled';\n};\n\n/**\n * Returns the key for the row at the given index\n */\nexport const getRowKeyForRowIndex = <K>(\n rootElement: HTMLElement,\n listId: string,\n index: number\n) => {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowElements.length > index) {\n return DomUtils.getRowKey<K>(rowElements[index] as HTMLElement);\n }\n return undefined;\n};\n\n/**\n * Returns the index of the given row element\n */\nexport const getRowIndexForRowElement = (\n rootElement: HTMLElement,\n listId: string,\n rowElement: HTMLElement\n) => {\n return DomUtils.getRowIndexForRowElement(rootElement, listId, rowElement, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the index of the row for the given key.\n */\nexport function getRowIndexForRowKey<K>(rootElement: HTMLElement, listId: string, rowKey: K) {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === DomUtils.getRowKey(rowElements[i] as HTMLElement)) {\n return i;\n }\n }\n return undefined;\n}\n\n/**\n * Returns the row element for the given row key.\n */\nexport function getRowElementByRowKey<K>(\n rootElement: HTMLElement,\n listId: string,\n rowKey: K\n): HTMLElement | undefined {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n const rowElement = rowElements[i] as HTMLElement;\n if (rowKey === DomUtils.getRowKey(rowElement)) {\n return rowElement;\n }\n }\n return undefined;\n}\n\n/**\n * Helper method to get the cell key definition from an element\n */\nexport function logicalCellExtractor<K extends string | number>(\n element: HTMLElement,\n listId: string,\n cellSelector?: string,\n onlyAncestors?: boolean\n): ActiveCell<K> | undefined {\n const selectorString =\n cellSelector != null ? cellSelector : `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`;\n const startingElement = onlyAncestors ? element.parentElement : element;\n if (startingElement != null) {\n const cellElement = startingElement.closest(selectorString) as HTMLElement;\n if (cellElement != null) {\n const cellType = DomUtils.getCellType(cellElement);\n if (cellType === 'data') {\n return {\n rowKey: keyExtractor<K>(cellElement, `[${LIST_ROW_SELECTOR}='${listId}']`)!,\n type: cellType\n };\n } else if (cellType === 'noData') {\n return { type: cellType };\n } else if (cellType === 'loading' || cellType === 'loadMore') {\n return { type: cellType };\n } else if (cellType === 'loadMoreAnchor') {\n return {\n rowKey: keyExtractor<K>(cellElement, `[${LIST_LOADMORE_ANCHOR_SELECTOR}='${listId}']`)!,\n type: cellType\n };\n }\n }\n }\n return undefined;\n}\n\nexport function rowExtractor(element: HTMLElement | null, listId: string): HTMLElement | undefined {\n const selectorString = `[${LIST_ROW_SELECTOR}='${listId}']`;\n return element?.closest(selectorString) as HTMLElement;\n}\n\nexport function compareClickTargets(element1: EventTarget, element2: EventTarget, listId: string) {\n return (\n rowExtractor(element1 as HTMLElement, listId) === rowExtractor(element2 as HTMLElement, listId)\n );\n}\n\n/**\n * Helper method to get an element from a cell descriptor\n */\nexport function getElementFromCell<K>(\n rootElement: HTMLElement,\n listId: string,\n cell: ActiveCell<K>\n): HTMLElement | undefined {\n if (cell.type === 'data') {\n // data body case\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (const rowElement of rowElements) {\n if (cell.rowKey === DomUtils.getRowKey(rowElement as HTMLElement)) {\n const cellElement = rowElement.querySelector(`[${LIST_FOCUSABLE_SELECTOR}='${listId}']`);\n if (cellElement != null) {\n return cellElement as HTMLElement;\n }\n }\n }\n } else if (cell.type === 'noData') {\n // no data case\n return getNoDataCellElement(rootElement, listId);\n } else if (cell.type === 'loading') {\n // loading skeletons case\n return getLoadingCellElement(rootElement, listId);\n } else if (cell.type === 'loadMore') {\n // loadMore skeletons case\n return getLoadMoreCellElement(rootElement, listId);\n } else if (cell.type === 'loadMoreAnchor') {\n // loadMoreAnchor skeletons case\n const loadMoreElements = rootElement.querySelectorAll(\n `[${LIST_LOADMORE_ANCHOR_SELECTOR}='${listId}']`\n );\n for (const loadMoreElement of loadMoreElements) {\n if (cell.rowKey === DomUtils.getRowKey(loadMoreElement as HTMLElement)) {\n return loadMoreElement as HTMLElement;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Returns the key of the first focusable row in the List\n */\nexport const getFirstRenderedRowKey = <K>(rootElement: HTMLElement, listId: string) => {\n return DomUtils.getFirstRenderedRowKey<K>(rootElement, listId, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the key of the last focusable row in the List\n */\nexport const getLastRenderedRowKey = <K>(rootElement: HTMLElement, listId: string) => {\n return DomUtils.getLastRenderedRowKey<K>(rootElement, listId, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the cell definition of the first rendered cell in the List\n */\nexport const getFirstFocusableCell = <K extends string | number>(\n rootElement: HTMLElement,\n listId: string\n): ActiveCell<K> | undefined => {\n const firstCellElement = rootElement.querySelector(\n `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (firstCellElement != null) {\n const firstCellType = DomUtils.getCellType(firstCellElement);\n if (firstCellType === 'noData') {\n return { type: 'noData' };\n }\n return {\n rowKey: keyExtractor<K>(firstCellElement, `[${LIST_ROW_SELECTOR}='${listId}']`)!,\n type: 'data'\n };\n }\n return undefined;\n};\n\n/**\n * Helper method to get the 'loading' cell\n */\nexport const getLoadingCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_LOADING_SELECTOR);\n};\n\n/**\n * Helper method to get the 'loadMore' cell\n */\nexport const getLoadMoreCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_LOADMORE_SELECTOR);\n};\n\n/**\n * Helper method to get the 'noData' cell\n */\nexport const getNoDataCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_NODATA_SELECTOR);\n};\n\n/**\n * Helper method to determine if the 'loading' cell is present in the List\n */\nexport const hasLoadingCell = (rootElement: HTMLElement, listId: string) => {\n return getLoadingCellElement(rootElement, listId) != null;\n};\n\n/**\n * Helper method to determine if the 'loadMore' cell is present in the List\n */\nexport const hasLoadMoreCell = (rootElement: HTMLElement, listId: string) => {\n return getLoadMoreCellElement(rootElement, listId) != null;\n};\n\n/**\n * Helper method to determine if the no data cell is present in the List\n */\nexport const hasNoDataCell = (rootElement: HTMLElement, listId: string) => {\n return getNoDataCellElement(rootElement, listId) != 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 { RefObject } from 'preact';\nimport type { ListScrollPosition, ViewportConfig } from '#UNSAFE_Collection/List.types';\n\nimport type { ScrollDetail, ViewportInfo } from '../List.types';\n\nimport { findElementByKey } from '#utils/PRIVATE_collectionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getScrollbarHeight,\n getVerticalOverflowDiff,\n isHTMLScroller\n} from '#PRIVATE_TableCommon/utils/ScrollUtils';\nimport { getElementFromCell, getRowKeyForRowIndex, LIST_ROW_SELECTOR } from './ListDomUtils';\n\n/**\n * Helper method to get the top scroller offset of the List\n */\nconst _getScrollerTopOffset = (viewportConfig: ViewportConfig) => {\n return viewportConfig.scrollerOffsetTop ?? 0;\n};\n\n/**\n * Helper method to get the bottom scroller offset of the List\n */\nconst _getScrollerBottomOffset = (viewportConfig: ViewportConfig) => {\n return viewportConfig.scrollerOffsetBottom ?? 0;\n};\n\n/**\n * Helper method to return the top position of the scroller element.\n */\nexport const getScrollerTop = (scrollerElement: HTMLElement, viewportConfig: ViewportConfig) => {\n return isHTMLScroller(scrollerElement)\n ? _getScrollerTopOffset(viewportConfig)\n : _getScrollerTopOffset(viewportConfig) + scrollerElement.getBoundingClientRect().top;\n};\n\n/**\n * Helper method to return the bottom position of the scroller element.\n */\nexport const getScrollerBottom = (scrollerElement: HTMLElement, viewportConfig: ViewportConfig) => {\n const bottomOffset = _getScrollerBottomOffset(viewportConfig);\n if (isHTMLScroller(scrollerElement)) {\n return scrollerElement.clientHeight - bottomOffset;\n }\n const scrollbarHeight = getScrollbarHeight(scrollerElement);\n return scrollerElement.getBoundingClientRect().bottom - (bottomOffset + scrollbarHeight);\n};\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nconst _scrollElementIntoView = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTop: number,\n location?: 'inView' | 'top' | 'bottom'\n) => {\n const verticalOverflowDiff = getVerticalOverflowDiff(\n element,\n getScrollerTop(scrollerElement, viewportInfo.viewportConfig) + stickyTop,\n getScrollerBottom(scrollerElement, viewportInfo.viewportConfig)\n );\n const topOverflowDiff = verticalOverflowDiff.top;\n const hasTopOverflow = topOverflowDiff > 0;\n const bottomOverflowDiff = verticalOverflowDiff.bottom;\n const hasBottomOverflow = bottomOverflowDiff > 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasTopOverflow && hasBottomOverflow) {\n return;\n }\n if (location == null || location === 'inView') {\n // if row fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with row\n if (hasBottomOverflow) {\n if (Math.abs(topOverflowDiff) > Math.abs(bottomOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n }\n } else if (hasTopOverflow) {\n if (Math.abs(bottomOverflowDiff) > Math.abs(topOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n }\n } else if (location === 'top') {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n};\n\n/**\n * Helper method to round a desired scrollTop or scrollLeft value to the nearest valid value\n * depending on the client browser.\n */\nconst _roundScrollValue = (value: number, isOver: boolean) => {\n // use Math.floor() and Math.ceil() to ensure we round to nearest containing valid\n // pixel value in either direction as valid scrollTop values are only integers\n return isOver ? Math.ceil(value) : Math.floor(value);\n};\n\n/**\n * Helper to set the vertical scroll position on the List.\n */\nexport function setScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n scrollPosition?: ListScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n scrollPosition\n );\n scrollerElement.scrollTop = y ?? 0;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n scrollPosition?: ListScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let rowKey;\n let useRow = false;\n if (scrollPosition.key != null) {\n // rowKey takes precedence over everything else\n useRow = true;\n rowKey = scrollPosition.key;\n } else if (scrollPosition.offsetY != null && scrollPosition.y == null) {\n // offsetY can be used on its own if it is the only vertical aspect provided\n useRow = true;\n rowKey = getScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n ).key;\n }\n if (useRow) {\n if (rowKey != null) {\n let scrollerTop = getScrollerTop(scrollerElement, viewportInfo.viewportConfig);\n const offsetY = scrollPosition.offsetY ?? 0;\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n // offset the 'scrollerTop' by the closest sticky row height if not sticky itself\n if (!stickyTopRows.includes(i)) {\n const stickyRowCount = stickyTopRows.length;\n if (stickyRowCount > 0) {\n for (let j = stickyRowCount - 1; j >= 0; j--) {\n const stickyIndex = stickyTopRows[j];\n if (stickyIndex < i) {\n scrollerTop += (rowElements[stickyIndex] as HTMLElement).getBoundingClientRect()\n .height;\n break;\n }\n }\n }\n }\n const rowTop = rowElements[i].getBoundingClientRect().top;\n return scrollerElement.scrollTop + rowTop - scrollerTop + offsetY;\n }\n }\n }\n } else if (scrollPosition.y != null) {\n return scrollPosition.y;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollTop value. If no scrollTop value is given,\n * it will use the current scrollTop value of the List.\n */\nexport function getScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string\n) {\n // ensure scroll position y value is initialized\n const scrollPosition: ListScrollPosition<K> = {\n y: Math.abs(scrollerElement.scrollTop),\n key: undefined,\n offsetY: undefined\n };\n\n let startIndex = 0;\n let scrollerTop = getScrollerTop(scrollerElement, viewportInfo.viewportConfig);\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n const stickyEdgeCount = stickyEdgesState.length;\n let stuckHeight = 0;\n if (stickyEdgeCount > 0) {\n startIndex = stickyEdgesState[stickyEdgeCount - 1];\n stuckHeight = (rowElements[startIndex] as HTMLElement).getBoundingClientRect().height;\n scrollerTop += stuckHeight;\n }\n for (let i = startIndex; i < rowElements.length; i++) {\n const rowRect = rowElements[i].getBoundingClientRect();\n if (rowRect.bottom > scrollerTop || i === rowElements.length - 1) {\n scrollPosition.key = getRowKeyForRowIndex<K>(rootElement, listId, i)!;\n if (stickyTopRows.includes(i)) {\n scrollPosition.offsetY = scrollerTop - stuckHeight - rowRect.top;\n } else {\n scrollPosition.offsetY = scrollerTop - rowRect.top;\n }\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper function to update the sticky row edges based on the given scrollTop value.\n */\nexport function updateStickyEdges(\n rootElement: HTMLDivElement,\n viewportInfo: ViewportInfo,\n listId: string,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n setStickyEdgesState: (stickyEdgesState: number[]) => void,\n transientEdgeState: number | undefined,\n setTransientEdgeState: (transientEdgeState: number | undefined) => void\n) {\n let isUpdated = false;\n let newTransientEdge: number | undefined = undefined;\n const newStickyEdges = [];\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (scrollerElement != null && scrollerElement.scrollTop > 0 && stickyTopRows.length > 0) {\n const scrollerTop = isHTMLScroller(scrollerElement)\n ? 0\n : scrollerElement.getBoundingClientRect().top;\n const relativeTop = viewportInfo.isExternalScroller\n ? scrollerTop + (viewportInfo.viewportConfig.scrollerOffsetTop ?? 0)\n : scrollerTop;\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < stickyTopRows.length; i++) {\n const rowIndex = stickyTopRows[i];\n const row = rowElements[rowIndex];\n if (row.getBoundingClientRect().top <= relativeTop) {\n newStickyEdges.push(rowIndex);\n if (!stickyEdgesState.includes(rowIndex)) {\n isUpdated = true;\n }\n } else {\n // check if this sticky row has started to push the previous sticky row out of view\n if (i > 0 && rowElements[stickyTopRows[i - 1]].getBoundingClientRect().top < relativeTop) {\n newTransientEdge = rowIndex;\n }\n break;\n }\n }\n }\n if (isUpdated || newStickyEdges.length !== stickyEdgesState.length) {\n setStickyEdgesState(newStickyEdges);\n }\n if (newTransientEdge !== transientEdgeState) {\n setTransientEdgeState(newTransientEdge);\n }\n}\n\nexport function applyScrollDetail<K extends string | number>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n listId: string,\n scrollDetail: ScrollDetail<K>\n) {\n if (scrollDetail.locationY != null) {\n let stickyTop = 0;\n // calculate stickyTop for 'data' and 'loadMoreAnchor' cell types\n if (scrollDetail.cell.rowKey != null) {\n const rowElement = findElementByKey(\n rootElement,\n scrollDetail.cell.rowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (rowElement != null) {\n stickyTop = _getRowElementStickyTop(\n rootElement,\n rowElement,\n stickyTopRows,\n listId,\n scrollDetail.cell.rowKey,\n scrollDetail.cell.type === 'loadMoreAnchor'\n );\n if (scrollDetail.cell.type === 'data') {\n _scrollElementIntoView(\n rowElement,\n scrollerElement,\n viewportInfo,\n stickyTop,\n scrollDetail.locationY\n );\n return;\n }\n }\n }\n if (scrollDetail.isTransient) {\n const cellElement = getElementFromCell(rootElement, listId, scrollDetail.cell);\n if (cellElement != null) {\n _scrollElementIntoView(\n cellElement,\n scrollerElement,\n viewportInfo,\n stickyTop,\n scrollDetail.cell.type === 'loading' && scrollDetail.locationY === 'inView'\n ? 'top'\n : scrollDetail.locationY\n );\n }\n }\n }\n}\n\nfunction _getRowElementStickyTop<K extends string | number>(\n rootElement: HTMLDivElement,\n rowElement: HTMLElement,\n stickyTopRows: number[],\n listId: string,\n rowKey: K,\n isLoadMoreAnchor: boolean\n) {\n let stickyTop = 0;\n if (stickyTopRows.length > 0 && rowKey != null) {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowElements[i] === rowElement) {\n if (!stickyTopRows.includes(i) || isLoadMoreAnchor) {\n for (let j = stickyTopRows.length - 1; j >= 0; j--) {\n const stickyIndex = stickyTopRows[j];\n if (stickyIndex < i || (stickyIndex === i && isLoadMoreAnchor)) {\n stickyTop = (rowElements[stickyIndex] as HTMLElement).getBoundingClientRect().height;\n break;\n }\n }\n }\n break;\n }\n }\n }\n return stickyTop;\n}\n\n/**\n * Helper function to reset the scroll position of the scroller element\n */\nexport const resetScrollPosition = (scrollerElement: HTMLElement) => {\n scrollerElement.scrollTop = 0;\n};\n\n/**\n * Helper function to get the viewport config.\n */\nexport const getViewportConfig = (scrollerRef: RefObject<HTMLElement>, config?: ViewportConfig) => {\n return config ?? { scrollerRef };\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 {\n CollectionData,\n Item,\n ListItemContext as ListItemMenuContext\n} from '#UNSAFE_Collection';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n Cell,\n CurrencyStatus,\n ViewportInfo\n} from '../List.types';\n\nimport { getElementFromCell, getRowIndexForRowKey, isAutoFocusCell } from './ListDomUtils';\nimport { applyScrollDetail, resetScrollPosition } from './ListScrollUtils';\n\n/**\n * Helper function to determine if a given active cell represents a 'transient' state.\n */\nexport function isTransientCell<K>(activeCell?: ActiveCell<K>) {\n return (\n activeCell != null &&\n (activeCell.type === 'loadMore' ||\n activeCell.type === 'loading' ||\n activeCell.type === 'loadMoreAnchor')\n );\n}\n\n/**\n * Helper function to compare two given cell descriptors.\n */\nexport function cellComparator<K>(\n cell1?: ActiveCell<K> | Cell<K>,\n cell2?: ActiveCell<K> | Cell<K>\n) {\n if (cell1 == null) {\n return cell2 == null;\n }\n if (cell2 == null) {\n return false;\n }\n return cell1.type === cell2.type && cell1.rowKey === cell2.rowKey;\n}\n\nexport function getCellContextMenuContextFromCell<K extends string | number, D>(\n rootElement: HTMLElement,\n listId: string,\n listData: CollectionData<K, D>[],\n cell?: ActiveCell<K>\n) {\n if (cell?.type === 'data') {\n const allMenuItems = {};\n const defaultMenuItems = undefined;\n for (const rowData of listData) {\n if (rowData.metadata.key === cell.rowKey) {\n return {\n allMenuItems,\n defaultMenuItems,\n data: rowData.data,\n metadata: { key: cell.rowKey },\n index: getRowIndexForRowKey(rootElement, listId, cell.rowKey)\n } as ListItemMenuContext<K, D>;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Helper function to determine the resulting cell from a cell override.\n */\nfunction _getCellFromCellOverride<K>(cellOverride: Item<K>): Cell<K> | undefined {\n let cellType;\n let cellRowKey;\n if (cellOverride?.rowKey != null) {\n cellType = 'data';\n cellRowKey = cellOverride.rowKey;\n } else {\n return undefined;\n }\n return { type: cellType, rowKey: cellRowKey } as Cell<K>;\n}\n\n/**\n * Helper function to determine the resulting cell type from a cell override.\n */\nfunction _getCellTypeFromCellOverride<K>(cellOverride: Item<K>) {\n if (cellOverride?.rowKey != null) {\n return 'data';\n }\n return 'data';\n}\n\n/**\n * Helper function to apply a current cell override if necessary.\n */\nexport function applyCurrentCellOverride<K extends string | number, D>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n listId: string,\n currencyStatusRef: MutableRef<CurrencyStatus<K, D>>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isEmbeddedSelect: boolean,\n isDataLoaded: boolean,\n currentItemOverride?: Item<K>\n) {\n // ensure any new currentItemOverride settings are applied if necessary\n if (\n currencyStatusRef.current.hasPendingCurrentCellOverride ||\n currencyStatusRef.current.currentItemOverride !== currentItemOverride\n ) {\n if (currentItemOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K>(currentItemOverride);\n if (realizedCell != null) {\n // override cell was determined - apply the override immediately\n onActiveCellChanged(\n { value: realizedCell },\n isAutoFocusCell(rootElement, listId, realizedCell),\n false,\n true\n );\n currencyStatusRef.current.currentItemOverride = currentItemOverride;\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 (getElementFromCell(rootElement, listId, realizedCell) != null) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: realizedCell,\n isTransient: isTransientCell(realizedCell),\n locationY: 'inView'\n });\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (!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.currentItemOverride = currentItemOverride;\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: currentItemOverride });\n currencyStatusRef.current.currentItemOverride = currentItemOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n if (isEmbeddedSelect) {\n // scroll back to the top for embedded select\n resetScrollPosition(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 (getElementFromCell(rootElement, listId, currencyStatusRef.current.currentCell) != null) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: currencyStatusRef.current.currentCell,\n isTransient: isTransientCell(currencyStatusRef.current.currentCell),\n locationY: 'inView'\n });\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (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>(\n cell: ActiveCell<K>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n loadMoreAnchorKeys?: Set<K>\n) {\n if (listData.length > 0) {\n if (cell.type === 'loadMore') {\n return hasMore;\n }\n if (cell.type === 'data') {\n for (let i = 0; i < listData.length; i++) {\n if (listData[i].metadata.key === cell.rowKey) {\n return true;\n }\n }\n }\n if (cell.type === 'loadMoreAnchor') {\n if (loadMoreAnchorKeys?.has(cell.rowKey)) {\n for (let i = 0; i < listData.length; i++) {\n if (listData[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 first cell of a given render.\n */\nfunction _getFirstCell<K, D>(listData: CollectionData<K, D>[]): ActiveCell<K> | undefined {\n if (listData.length > 0) {\n return { rowKey: listData[0].metadata.key, type: 'data' };\n }\n return { type: 'loading' };\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>(\n currencyStatusRef: MutableRef<CurrencyStatus<K, D>>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n isEmbeddedSelect: boolean,\n loadMoreAnchorKeys?: Set<K>,\n currentItemOverride?: Item<K>\n): ActiveCell<K> | undefined {\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.currentItemOverride !== currentItemOverride\n ) {\n if (currentItemOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K>(currentItemOverride);\n if (\n realizedCell != null &&\n _renderIncludesCell(realizedCell, listData, hasMore, loadMoreAnchorKeys)\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(currentItemOverride);\n if (overrideCellType === 'data') {\n if (listData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n } else if (overrideCellType === 'noData' && listData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n }\n return _getFirstCell(listData);\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 (listData.length > 0 && listData !== initialData) {\n const rowKey =\n initialData != null && listData.length > initialData.length\n ? listData[initialData.length].metadata.key\n : listData[listData.length - 1].metadata.key;\n const cell: ActiveCell<K> = { type: 'data', rowKey: rowKey };\n if (_renderIncludesCell(cell, listData, hasMore, loadMoreAnchorKeys)) {\n return cell;\n }\n } else if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n }\n if (_renderIncludesCell(activeCell, listData, hasMore, loadMoreAnchorKeys)) {\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 (_renderIncludesCell(currentCell, listData, hasMore, loadMoreAnchorKeys)) {\n return currentCell;\n }\n }\n // otherwise, find the first row if available\n if (listData.length > 0) {\n const rowKey = listData[0].metadata.key;\n const cell: ActiveCell<K> = { type: 'data', rowKey: rowKey };\n if (_renderIncludesCell(cell, listData, hasMore, loadMoreAnchorKeys)) {\n return cell;\n }\n } else {\n return { type: 'noData' };\n }\n } else if (activeCell.type === 'loadMoreAnchor') {\n if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n // if loadMoreAnchor skeleton is no longer shown, shift to the next row in\n // the data set if possible - otherwise just the closest row / anchor row\n for (let i = 0; i < listData.length; i++) {\n if (listData[i].metadata.key === activeCell.rowKey) {\n if (i === listData.length - 1) {\n return { type: 'data', rowKey: activeCell.rowKey };\n }\n return { type: 'data', rowKey: listData[i + 1].metadata.key };\n }\n }\n return { type: 'data', rowKey: listData[0].metadata.key };\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 (_renderIncludesCell(currentCell, listData, hasMore, loadMoreAnchorKeys)) {\n return currentCell;\n }\n if (currentCell.type === 'data') {\n if (listData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n } else if (currentCell.type === 'noData' && listData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n }\n if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n return _getFirstCell(listData);\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 { CollectionData, ListItemContext as ListItemMenuContext } from '#UNSAFE_Collection';\nimport type { ActiveCellDetail, TableListProps } from '../List.types';\n\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { useContextMenuGesture } from '#hooks/UNSAFE_useContextMenuGesture';\nimport { Menu } from '#UNSAFE_Menu';\nimport { LIST_FOCUSABLE_SELECTOR, logicalCellExtractor } from '../utils/ListDomUtils';\nimport { getCellContextMenuContextFromCell } from '../utils/ListFocusUtils';\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\ntype UseContextMenuProps<K, D> = {\n contextMenuConfig: TableListProps<K, D>['contextMenuConfig'];\n listData: CollectionData<K, D>[];\n listId: string;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n rootRef: RefObject<HTMLDivElement>;\n};\n\nexport const useContextMenu = <K extends string | number, D>({\n contextMenuConfig,\n listData,\n listId,\n onActiveCellChanged,\n rootRef\n}: UseContextMenuProps<K, D>) => {\n const [contextMenuContext, setContextMenuContext] = useState<ListItemMenuContext<K, D>>();\n const [menuProps, setMenuProps] = useState<MenuProps>(_initialMenuProps);\n const currentCellElementRef = useRef<HTMLElement>();\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 `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const targetCell = logicalCellExtractor<K>(cellElement, listId);\n if (targetCell != null) {\n onActiveCellChanged({ value: targetCell }, false, false, true);\n const cellContextMenuContext = getCellContextMenuContextFromCell<K, D>(\n rootRef.current,\n listId,\n listData,\n targetCell\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 };\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 { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData } from '#UNSAFE_Collection';\nimport type {\n DndDropPosition,\n DragStartDetail,\n DropDetail,\n ListSelectionMode\n} from '#UNSAFE_Collection/List.types';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { ActiveCell } from '../List.types';\n\nimport { containsKey, hasAnyKeys } from '#utils/UNSAFE_keys';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { LIST_ROW_SELECTOR, rowExtractor } from './ListDomUtils';\n\ntype DragStartPreflightOk = {\n ok: true;\n dragRoot: HTMLElement;\n target: HTMLElement;\n dragHandle: HTMLElement;\n itemContainer: HTMLElement;\n};\n\ntype DragStartPreflightFail = {\n ok: false;\n stopPropagation: boolean;\n};\n\nexport type DragStartPreflightResult = DragStartPreflightOk | DragStartPreflightFail;\n\nexport const isValidRowKey = <K extends string | number>(key: K | undefined): key is K =>\n key !== undefined && !(typeof key === 'number' && Number.isNaN(key));\n\nexport const getClipboardItemKeys = <K extends string | number>({\n activeCell,\n selected,\n selectionMode\n}: {\n activeCell?: ActiveCell<K>;\n selected?: Keys<K>;\n selectionMode?: ListSelectionMode | null;\n}) => {\n if (activeCell?.type !== 'data') {\n return undefined;\n }\n\n if (\n selectionMode != null &&\n selectionMode !== 'none' &&\n hasAnyKeys(selected) &&\n containsKey(selected, activeCell.rowKey)\n ) {\n return selected;\n }\n\n return { all: false as const, keys: new Set([activeCell.rowKey]) };\n};\n\nexport const canPasteToActiveCell = <K extends string | number>(activeCell?: ActiveCell<K>) =>\n activeCell?.type === 'data' || activeCell?.type === 'noData';\n\n// Returns the drag handle element if the gesture originated from a valid handle within this list.\nconst findValidDragHandle = (dragRoot: HTMLElement, target: HTMLElement) => {\n const dragHandle = target.closest('[data-oj-draggable]') as HTMLElement | null;\n return dragHandle && dragRoot.contains(dragHandle) ? dragHandle : null;\n};\n\nexport const resolveDragStartElements = (\n event: DragEvent,\n listId: string,\n dragCandidate: HTMLElement | null\n): DragStartPreflightResult => {\n const dragRoot = event.currentTarget as HTMLElement;\n const target = event.target as HTMLElement | null;\n if (!target || !dragRoot) {\n return { ok: false, stopPropagation: false };\n }\n\n const dragHandle = findValidDragHandle(dragRoot, target);\n if (!dragHandle) {\n return { ok: false, stopPropagation: true };\n }\n\n const pointerTarget = dragCandidate ?? target;\n let itemContainer = rowExtractor(pointerTarget, listId) ?? null;\n if (!itemContainer || !dragRoot.contains(itemContainer)) {\n itemContainer = rowExtractor(target, listId) ?? null;\n }\n if (!itemContainer || !dragRoot.contains(itemContainer)) {\n return { ok: false, stopPropagation: false };\n }\n\n return { ok: true, dragRoot, target, dragHandle, itemContainer };\n};\n\nexport const getDragContext = <K extends string | number, D>(\n target: HTMLElement,\n event: DragEvent,\n listId: string,\n keyDataMap: KeyDataMap<K, D>,\n listData: CollectionData<K, D>[],\n selectedKeys?: Keys<K>\n): DragStartDetail<K> | undefined => {\n const rowNode = rowExtractor(target, listId);\n if (!rowNode) {\n return undefined;\n }\n\n const key = getRowKey<K | undefined>(rowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n\n const listItem = keyDataMap.get(key)?.item;\n if (!listItem) {\n return undefined;\n }\n\n let itemKeys: Keys<K> = { all: false, keys: new Set([key]) };\n if (selectedKeys && containsKey(selectedKeys, key)) {\n if (selectedKeys.all) {\n // Mirror previous behavior: expand \"all\" selections to the currently loaded list keys.\n const keys = new Set<K>();\n for (let i = 0; i < listData.length; i++) {\n const selectedKey = listData[i].metadata.key;\n if (!selectedKeys.deletedKeys.has(selectedKey)) {\n keys.add(selectedKey);\n }\n }\n if (keys.size) {\n itemKeys = { all: false, keys };\n }\n } else if (selectedKeys.keys.size) {\n itemKeys = selectedKeys;\n }\n }\n\n return {\n itemKeys,\n event\n };\n};\n\nexport const getDropContext = <K extends string | number, D>(\n event: DragEvent,\n listId: string,\n rootRef: RefObject<HTMLDivElement>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n hasOnDrop: boolean,\n // Avoid repeated `indexOf`/`findIndex` in dragover hot paths by providing an O(1) lookup.\n keyDataMap: KeyDataMap<K, D>\n): DropDetail<K, D> | undefined => {\n let rowNode = rowExtractor(event.target as HTMLElement | null, listId) ?? null;\n let position: DndDropPosition = 'after';\n let key: K | undefined;\n let index = -1;\n let listItem: CollectionData<K, D> | undefined;\n\n if (rowNode) {\n key = getRowKey<K | undefined>(rowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n\n const listItemEntry = keyDataMap.get(key);\n listItem = listItemEntry?.item;\n index = listItemEntry?.index ?? -1;\n if (!listItem || index < 0) {\n return undefined;\n }\n\n const rect = rowNode.getBoundingClientRect();\n position = event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n } else {\n const rootNode = rootRef.current;\n const rowNodes = rootNode?.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n const firstRowNode = (rowNodes?.[0] ?? null) as HTMLElement | null;\n const lastRowNode = (rowNodes?.[rowNodes.length - 1] ?? null) as HTMLElement | null;\n if (!firstRowNode || !lastRowNode) {\n if (listData.length > 0 || !hasOnDrop) {\n return undefined;\n }\n // Empty list loading context (e.g. initial skeleton): avoid enabling drop until the list is ready.\n if (hasMore) {\n return undefined;\n }\n // Empty list drop context: allow consumers to accept drop into an empty target list.\n // Note: for an empty list, before/after is not meaningful (and ListView does not show a drop indicator),\n // but DropDetail requires a position, so we set it to 'before' by convention.\n return {\n position: 'before',\n event\n };\n }\n const firstRowRect = firstRowNode.getBoundingClientRect();\n const lastRowRect = lastRowNode.getBoundingClientRect();\n\n if (event.clientY <= firstRowRect.top) {\n // Special top drop zone behavior: announce and treat as \"before first item\".\n rowNode = firstRowNode;\n key = getRowKey<K | undefined>(firstRowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n position = 'before';\n } else if (event.clientY >= lastRowRect.bottom) {\n // Special bottom drop zone behavior: treat dead space as \"after last item\".\n rowNode = lastRowNode;\n key = getRowKey<K | undefined>(lastRowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n position = 'after';\n } else {\n return undefined;\n }\n\n const listItemEntry = keyDataMap.get(key);\n listItem = listItemEntry?.item;\n index = listItemEntry?.index ?? -1;\n if (!listItem || index < 0) {\n return undefined;\n }\n }\n\n const itemContext = {\n data: listItem.data,\n index,\n metadata: listItem.metadata\n };\n\n return {\n item: itemContext,\n position,\n event\n };\n};\n\nexport const isDropAllowedForContext = <K extends string | number, D>(\n context: DropDetail<K, D>,\n listDataLength: number,\n allowedDropPositions?: Set<DndDropPosition>\n) => {\n // Empty list drop context: ignore before/after restrictions (position is not meaningful without an item).\n if (!context.item && listDataLength === 0) {\n return true;\n }\n if (!allowedDropPositions) {\n return true;\n }\n return allowedDropPositions.has(context.position);\n};\n\nexport const clearDragSource = (\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string\n) => {\n if (dragSourcesRef.current.length) {\n for (let i = 0; i < dragSourcesRef.current.length; i++) {\n dragSourcesRef.current[i].classList.remove(draggedClassName);\n }\n }\n dragSourcesRef.current = [];\n};\n\nexport const removeDragImage = (\n dragImgRef: MutableRef<HTMLElement | null>,\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string\n) => {\n clearDragSource(dragSourcesRef, draggedClassName);\n if (dragImgRef.current && dragImgRef.current.parentElement === document.body) {\n document.body.removeChild(dragImgRef.current);\n }\n dragImgRef.current = null;\n};\n\nexport const clearDndState = (\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (\n value: number | undefined | ((prev: number | undefined) => number | undefined)\n ) => void\n) => {\n dndDropIndicatorTopRef.current = undefined;\n if (dndDropIndicatorRafIdRef.current != null) {\n // Cancel any queued indicator update when a drag gesture ends/leaves/drops.\n cancelAnimationFrame(dndDropIndicatorRafIdRef.current);\n dndDropIndicatorRafIdRef.current = undefined;\n }\n setDndDropIndicatorTop(undefined);\n};\n\nexport const cleanupCanceledDragStart = (\n event: DragEvent,\n dragCandidateRef: MutableRef<HTMLElement | null>,\n dragImgRef: MutableRef<HTMLElement | null>,\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (\n value: number | undefined | ((prev: number | undefined) => number | undefined)\n ) => void\n) => {\n event.dataTransfer?.clearData?.();\n dragCandidateRef.current = null;\n removeDragImage(dragImgRef, dragSourcesRef, draggedClassName);\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n};\n\nexport const flushDndIndicator = (\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (updater: (prev: number | undefined) => number | undefined) => void\n) => {\n dndDropIndicatorRafIdRef.current = undefined;\n setDndDropIndicatorTop((prev) => {\n const next = dndDropIndicatorTopRef.current;\n return prev !== next ? next : prev;\n });\n};\n\nexport const scheduleDndIndicatorUpdate = (\n nextTop: number | undefined,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (updater: (prev: number | undefined) => number | undefined) => void\n) => {\n dndDropIndicatorTopRef.current = nextTop;\n if (dndDropIndicatorRafIdRef.current != null) {\n return;\n }\n if (typeof requestAnimationFrame === 'function') {\n dndDropIndicatorRafIdRef.current = requestAnimationFrame(() =>\n flushDndIndicator(dndDropIndicatorRafIdRef, dndDropIndicatorTopRef, setDndDropIndicatorTop)\n );\n } else {\n flushDndIndicator(dndDropIndicatorRafIdRef, dndDropIndicatorTopRef, setDndDropIndicatorTop);\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 { CollectionData } from '#UNSAFE_Collection';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { TableListProps, ViewportInfo } from '../List.types';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\nimport { styles as reorderableItemStyles } from '#hooks/PRIVATE_useReorderable/themes/ReorderableItemStyles.css';\nimport { createDragImage, createMultiItemDragImageWithHotspot } from '#utils/PRIVATE_dndUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { reorderableStyles } from '../themes/List.css';\nimport {\n cleanupCanceledDragStart,\n clearDndState,\n getDragContext,\n getDropContext,\n isDropAllowedForContext,\n isValidRowKey,\n removeDragImage,\n resolveDragStartElements,\n scheduleDndIndicatorUpdate\n} from '../utils/ListDndUtils';\nimport { getRowElementByRowKey } from '../utils/ListDomUtils';\n\ntype UseDndOptions<K extends string | number, D> = {\n allowedDropPositions: TableListProps<K, D>['allowedDropPositions'];\n hasMore: boolean;\n keyDataMap: KeyDataMap<K, D>;\n listData: CollectionData<K, D>[];\n listId: string;\n onDragStart: TableListProps<K, D>['onDragStart'];\n onDrag: TableListProps<K, D>['onDrag'];\n onDragEnd: TableListProps<K, D>['onDragEnd'];\n onDragEnter: TableListProps<K, D>['onDragEnter'];\n onDragLeave: TableListProps<K, D>['onDragLeave'];\n onDragOver: TableListProps<K, D>['onDragOver'];\n onDrop: TableListProps<K, D>['onDrop'];\n rootRef: RefObject<HTMLDivElement>;\n selected: TableListProps<K, D>['selected'];\n viewportInfo: ViewportInfo;\n};\n\nexport function useDnd<K extends string | number, D>({\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n rootRef,\n selected,\n viewportInfo\n}: UseDndOptions<K, D>) {\n const [dndDropIndicatorTop, setDndDropIndicatorTop] = useState<number | undefined>(undefined);\n // Dragover can fire at very high frequency. Batch indicator updates to once-per-frame to avoid\n // forcing a rerender on every dragover event.\n const dndDropIndicatorTopRef = useRef<number | undefined>(undefined);\n const dndDropIndicatorRafIdRef = useRef<number | undefined>(undefined);\n\n const dragCandidate = useRef<HTMLElement | null>(null);\n const dragImgRef = useRef<HTMLElement | null>(null);\n const dragSourcesRef = useRef<HTMLElement[]>([]);\n\n const isDragSourceEnabled = onDragStart != null;\n const isDropTargetEnabled = onDrop != null;\n\n useEffect(() => {\n return () => {\n if (dndDropIndicatorRafIdRef.current != null) {\n // Prevent a queued animation frame from updating state after unmount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n cancelAnimationFrame(dndDropIndicatorRafIdRef.current);\n }\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n };\n }, []);\n\n const onPointerDown = useCallback((event: PointerEvent) => {\n dragCandidate.current = event.target as HTMLElement;\n }, []);\n\n const handleDragStart = useCallback(\n (event: DragEvent) => {\n // Drag lifecycle is only meaningful for lists that opted into drag-start API.\n const onDragStartCb = onDragStart;\n if (!onDragStartCb) {\n return;\n }\n\n const preflight = resolveDragStartElements(event, listId, dragCandidate.current);\n if (!preflight.ok) {\n event.preventDefault();\n if (preflight.stopPropagation) {\n event.stopPropagation();\n }\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n const { dragRoot, dragHandle, itemContainer } = preflight;\n\n const context = getDragContext(itemContainer, event, listId, keyDataMap, listData, selected);\n if (!context) {\n event.preventDefault();\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n const dragImageClasses = classNames([\n reorderableItemStyles.itemDragger,\n reorderableStyles.reorderableItemDragger\n ]);\n\n const dragKeys = context.itemKeys.all ? [] : Array.from(context.itemKeys.keys.values());\n\n if (dragKeys.length > 1) {\n // Avoid repeated DOM scans when resolving multiple selected rows.\n const rowElements = dragRoot.querySelectorAll(`[data-oj-list-row='${listId}']`);\n const rowByKey = new Map<K, HTMLElement>();\n for (let i = 0; i < rowElements.length; i++) {\n const rowEl = rowElements[i] as HTMLElement;\n const key = getRowKey<K | undefined>(rowEl);\n if (isValidRowKey(key)) {\n rowByKey.set(key, rowEl);\n }\n }\n\n const dragTargets = dragKeys\n .map((key) => rowByKey.get(key) ?? getRowElementByRowKey(dragRoot, listId, key))\n .filter((el): el is HTMLElement => el != null);\n\n // Apply dragged styling to all dragged rows that are currently in the DOM.\n // (Virtualized/offscreen rows may not be present and cannot be styled.)\n const draggedRowSet = new Set<HTMLElement>();\n draggedRowSet.add(itemContainer);\n for (let i = 0; i < dragTargets.length; i++) {\n draggedRowSet.add(dragTargets[i]);\n }\n dragSourcesRef.current = Array.from(draggedRowSet);\n for (let i = 0; i < dragSourcesRef.current.length; i++) {\n dragSourcesRef.current[i].classList.add(reorderableItemStyles.itemDragged);\n }\n\n if (dragTargets.length > 1) {\n const { dragImage, x, y } = createMultiItemDragImageWithHotspot(\n dragTargets,\n dragImageClasses,\n itemContainer,\n dragHandle\n );\n dragImgRef.current = dragImage;\n event.dataTransfer?.setDragImage(dragImage, x, y);\n try {\n onDragStartCb(context);\n } catch (e) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n throw e;\n }\n if (event.defaultPrevented) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n return;\n }\n dragImgRef.current = createDragImage(itemContainer, dragImageClasses);\n } else {\n dragImgRef.current = createDragImage(itemContainer, dragImageClasses);\n dragSourcesRef.current = [itemContainer];\n itemContainer.classList.add(reorderableItemStyles.itemDragged);\n }\n\n if (itemContainer !== dragHandle) {\n event.dataTransfer?.setDragImage(\n dragImgRef.current,\n dragHandle.offsetLeft + dragHandle.offsetWidth / 2,\n dragHandle.offsetTop + dragHandle.offsetHeight / 2\n );\n } else {\n event.dataTransfer?.setDragImage(\n dragImgRef.current,\n dragHandle.offsetWidth / 2,\n dragHandle.offsetHeight / 2\n );\n }\n try {\n onDragStartCb(context);\n } catch (e) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n throw e;\n }\n if (event.defaultPrevented) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n },\n [keyDataMap, listData, listId, onDragStart, setDndDropIndicatorTop, selected]\n );\n\n const handleDrag = useCallback(\n (event: DragEvent) => {\n onDrag?.({ event });\n },\n [onDrag]\n );\n\n const handleDragEnd = useCallback(\n (event: DragEvent) => {\n dragCandidate.current = null;\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n onDragEnd?.({\n event\n } as Parameters<NonNullable<TableListProps<K, D>['onDragEnd']>>[0]);\n },\n [onDragEnd]\n );\n\n const handleDragEnter = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (context && isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n onDragEnter?.(context);\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragEnter,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const handleDragLeave = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (context && isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n onDragLeave?.(context);\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragLeave,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const handleDragOver = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (!context) {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n if (!isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n const rootNode = rootRef.current;\n const scrollerNode = viewportInfo.viewportConfig.scrollerRef.current;\n const scrollOffset = viewportInfo.isExternalScroller ? 0 : scrollerNode?.scrollTop ?? 0;\n const rootRect = rootNode?.getBoundingClientRect();\n const item = context.item;\n if (!item) {\n // UX: do not show the drop indicator when dropping into an empty list.\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n onDragOver?.(context);\n // Only advertise drop support when a drop handler exists.\n // `preventDefault()` here enables dropping; apps accept/reject by handling (or no-oping) in `onDrop`.\n if (onDrop && !context.event.defaultPrevented) {\n context.event.preventDefault();\n }\n return;\n }\n\n if (rootNode && rootRect) {\n const currentRowNode = getRowElementByRowKey(rootNode, listId, item.metadata.key);\n if (currentRowNode) {\n const currentRect = currentRowNode.getBoundingClientRect();\n let boundaryClientY =\n context.position === 'before' ? currentRect.top : currentRect.bottom;\n\n if (context.position === 'after') {\n const nextItem = listData[item.index + 1];\n if (nextItem) {\n const nextRowNode = getRowElementByRowKey(rootNode, listId, nextItem.metadata.key);\n if (nextRowNode) {\n boundaryClientY = nextRowNode.getBoundingClientRect().top;\n }\n }\n }\n\n const nextTop = boundaryClientY - rootRect.top + scrollOffset;\n scheduleDndIndicatorUpdate(\n nextTop,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n } else {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n } else {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n\n onDragOver?.(context);\n // Only call preventDefault when this ListView is acting as a drop target.\n // Drag-only sources should not advertise themselves as valid drop targets.\n if (onDrop && !context.event.defaultPrevented) {\n context.event.preventDefault();\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n isDropTargetEnabled,\n listData,\n listId,\n onDragOver,\n onDrop,\n rootRef,\n viewportInfo\n ]\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (!context || !isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n return;\n }\n onDrop?.(context);\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDrop,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const dndProps = useMemo(() => {\n return mergeProps(\n isDragSourceEnabled\n ? {\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n onPointerDown\n }\n : {},\n isDropTargetEnabled\n ? {\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop\n }\n : {}\n );\n }, [\n handleDrag,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragOver,\n handleDragStart,\n handleDrop,\n isDragSourceEnabled,\n isDropTargetEnabled,\n onPointerDown\n ]);\n\n return { dndProps, dndDropIndicatorTop };\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 { Metadata } from '#UNSAFE_Collection';\nimport type { ActiveCell, TableListProps } from '../List.types';\n\nimport { addKey, containsKey, removeKey } from '#utils/UNSAFE_keys';\nimport { getElementFromCell } from './ListDomUtils';\n\n/**\n * Helper function to get the item action context from row information\n */\nexport const getActionContext = <K extends string | number, D>(\n index: number,\n metadata: Metadata<K>,\n data: D\n) => {\n return { metadata, data, index };\n};\n\nexport const isCellExpandable = <K>(\n rootElement: HTMLElement,\n listId: string,\n cell: ActiveCell<K>\n) => {\n if (cell.type === 'data') {\n const cellElement = getElementFromCell(rootElement, listId, cell);\n return cellElement != null && cellElement.hasAttribute('aria-expanded');\n }\n return false;\n};\n\nexport const handleToggleExpandedGesture = <K, D>(\n rowKey: K,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: NonNullable<TableListProps<K, D>['onExpandedChange']>,\n target: EventTarget | null\n) => {\n let newExpandedKeys;\n if (!containsKey(expanded, rowKey)) {\n newExpandedKeys = addKey(expanded, rowKey);\n } else {\n newExpandedKeys = removeKey(expanded, rowKey, false);\n }\n onExpandedChange({ value: newExpandedKeys, target });\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 { ActiveCell } from '../List.types';\n\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n handleLeaveTooltipGesture,\n handleMoveTooltipGesture as handleCommonMoveTooltipGesture,\n handleNavigationTooltipGesture as handleCommonNavigationTooltipGesture\n} from '#PRIVATE_TableCommon/utils/TooltipGestureUtils';\nimport {\n getTruncatedTextInfos,\n type TruncatedTextInfo\n} from '#PRIVATE_TableCommon/utils/TruncationTooltipUtils';\nimport { getElementFromCell, LIST_FOCUSABLE_SELECTOR, logicalCellExtractor } from './ListDomUtils';\n\nexport const LIST_TOOLTIP_SELECTOR = 'data-oj-private-list-tooltip';\nconst LIST_TOOLTIP_ENABLED_SELECTOR = `[${LIST_TOOLTIP_SELECTOR}='enabled']`;\nconst TRUNCATED_TEXT_SEPARATOR = ' - ';\n\nconst getTooltipCandidates = (\n cellElement: HTMLElement,\n targetElement?: HTMLElement\n): HTMLElement[] => {\n const candidateElement = targetElement?.closest(LIST_TOOLTIP_ENABLED_SELECTOR);\n if (candidateElement != null && cellElement.contains(candidateElement)) {\n return [candidateElement as HTMLElement];\n }\n\n if (cellElement.getAttribute(LIST_TOOLTIP_SELECTOR) === 'enabled') {\n return [cellElement];\n }\n\n const candidateElements = Array.from(\n cellElement.querySelectorAll(LIST_TOOLTIP_ENABLED_SELECTOR)\n ) as HTMLElement[];\n\n return candidateElements;\n};\n\n/**\n * Helper method to find truncated marked text inside a List cell.\n */\nexport const getListTruncatedTextInfo = (\n cellElement: HTMLElement,\n targetElement?: HTMLElement\n): TruncatedTextInfo | undefined => {\n const candidateElements = getTooltipCandidates(cellElement, targetElement);\n const truncatedTextInfos = getTruncatedTextInfos(candidateElements);\n if (truncatedTextInfos.length > 0) {\n return {\n element: truncatedTextInfos[0].element,\n text: truncatedTextInfos.map(({ text }) => text).join(TRUNCATED_TEXT_SEPARATOR)\n };\n }\n return undefined;\n};\n\n/**\n * Helper function to handle updating the List's tooltip due to a focus navigation gesture.\n */\nexport function handleNavigationTooltipGesture<K>(\n rootElement: HTMLDivElement,\n listId: string,\n cell: ActiveCell<K>,\n showTooltip: (cell: ActiveCell<K>) => void,\n hideTooltip: (isImmediate?: boolean) => void\n) {\n handleCommonNavigationTooltipGesture(\n rootElement,\n listId,\n cell,\n getElementFromCell,\n (cell): cell is ActiveCell<K> => cell.type === 'data',\n showTooltip,\n hideTooltip\n );\n}\n\n/**\n * Helper function to handle updating the List's tooltip due to a pointer move gesture.\n */\nexport function handleMoveTooltipGesture<K extends string | number>(\n listId: string,\n event: PointerEvent,\n showTooltip: (cell: ActiveCell<K>, targetElement?: HTMLElement) => void,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) {\n handleCommonMoveTooltipGesture<ActiveCell<K>>({\n collectionId: listId,\n event,\n focusableSelector: LIST_FOCUSABLE_SELECTOR,\n tooltipId,\n showTooltip,\n hideTooltip,\n getCellFromElement: (cellElement) => logicalCellExtractor<K>(cellElement, listId),\n isTooltipCellElement: (cellElement) => getCellType(cellElement) === 'data',\n getShowTooltipTargetElement: (event) => event.target as HTMLElement\n });\n}\n\n/**\n * Helper function to handle updating the List's tooltip due to a pointer leave gesture.\n */\nexport const handleLeaveListTooltipGesture = (\n rootElement: HTMLDivElement,\n event: PointerEvent,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) => {\n handleLeaveTooltipGesture(rootElement, event, hideTooltip, tooltipId);\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 { FocusableElement } from '#utils/PRIVATE_tabbableUtils';\nimport type { CollectionData, CurrentKeyDetail, Item } from '#UNSAFE_Collection';\nimport type { FocusGuardCallbackDetail } from '#PRIVATE_FocusTracker';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n CurrencyStatus,\n ScrollDetail,\n ViewportInfo\n} from '../List.types';\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} from '#utils/PRIVATE_tabbableUtils';\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isCellExpandable } from '../utils/ListActionUtils';\nimport { getElementFromCell, isAutoFocusCell, logicalCellExtractor } from '../utils/ListDomUtils';\nimport {\n applyCurrentCellOverride,\n cellComparator,\n determineActiveCell,\n isTransientCell\n} from '../utils/ListFocusUtils';\nimport { applyScrollDetail } from '../utils/ListScrollUtils';\nimport { handleNavigationTooltipGesture } from '../utils/ListTooltipUtils';\n\ntype UseFocusHandlingProps<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n stickyTopRows: number[];\n listId: string;\n listData: CollectionData<K, D>[];\n hasMore: boolean;\n loadMoreAnchorKeys?: Set<K>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n currentItemOverride?: Item<K>;\n onPersistCurrentItem?: (detail: CurrentKeyDetail<K>) => void;\n isEmbedded: boolean;\n allowTabbableMode: boolean;\n itemEnterKeyFocusBehavior: 'none' | 'focusWithin';\n isDataLoaded: boolean;\n reorderContext?: { currentItemKey: MutableRef<K | undefined> };\n deferredScrollDetail?: ScrollDetail<K>;\n deferredScrollDetailRef: RefObject<ScrollDetail<K> | undefined>;\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void;\n showTooltip: (cell: ActiveCell<K>) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n isTruncationTooltipEnabled: 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 List\n */\nexport function useFocusHandling<K extends string | number, D>({\n rootRef,\n viewportInfo,\n stickyTopRows,\n listId,\n listData,\n hasMore,\n loadMoreAnchorKeys,\n selectionExtensionElementRef,\n currentItemOverride,\n onPersistCurrentItem,\n isEmbedded,\n allowTabbableMode,\n itemEnterKeyFocusBehavior,\n isDataLoaded,\n reorderContext,\n deferredScrollDetail,\n deferredScrollDetailRef,\n updateDeferredScrollDetail,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n}: UseFocusHandlingProps<K, D>) {\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\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> | undefined>(undefined);\n const currencyStatusRef = useRef<CurrencyStatus<K, D>>({\n hasPendingCurrentCellOverride: false,\n hasPendingCurrentCellOverrideScroll: false\n });\n\n const wasTransient = isTransientCell(currencyStatusRef.current.activeCell);\n const currentActiveCell = determineActiveCell<K, D>(\n currencyStatusRef,\n listData,\n hasMore,\n isEmbedded,\n loadMoreAnchorKeys,\n currentItemOverride\n );\n\n // intercept onPersistCurrentItem calls to ensure internal state is updated appropriately\n const onActiveCellChanged = useMemo(() => {\n return (\n detail: ActiveCellDetail<K>,\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 // make sure the reorder currentItemKey is always up to date\n if (reorderContext != null) {\n reorderContext.currentItemKey.current = newActiveCell?.rowKey;\n }\n\n currencyStatusRef.current.activeCell = newActiveCell;\n if (!isTransientCell(newActiveCell)) {\n const newCurrentCell = newActiveCell;\n // only update current cell when 'active' is not one of the transient 'skeleton' regions\n // TODO: we should be persisting even when undefined here, but API needs to update\n if (onPersistCurrentItem != null && newCurrentCell?.rowKey != null) {\n onPersistCurrentItem({ value: newCurrentCell.rowKey });\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.currentItemOverride = currentItemOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (newActiveCell?.type === 'loadMore') {\n currencyStatusRef.current.loadMoreInitialData = listData;\n }\n if (!isSelectionExtension) {\n selectionExtensionElementRef.current = undefined;\n if (isAutoFocus && newActiveCell != null) {\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 isTransient: isTransientCell(newActiveCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n };\n }, [\n currentItemOverride,\n isTabbableMode,\n listData,\n onPersistCurrentItem,\n selectionExtensionElementRef,\n updateDeferredScrollDetail,\n reorderContext\n ]);\n\n // Helper function to set the List's focus tracking state to reflect that it is inactive.\n const _setAsInactive = useCallback(() => {\n hasFocusRef.current = false;\n isTabDownDetectedRef.current = false;\n\n setIsTabbableMode(false);\n setIsShowFocusRing(false);\n hideTooltip();\n }, [hideTooltip]);\n\n // Helper function to set the List's focus tracking state to reflect that one of its cells has focus.\n const _enableNavigationMode = useCallback(\n (cell: ActiveCell<K>, 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 && isTruncationTooltipEnabled) {\n handleNavigationTooltipGesture(rootElement, listId, cell, showTooltip, hideTooltip);\n }\n onActiveCellChanged({ value: cell }, false, false, skipScrollCellIntoView);\n }\n },\n [\n rootRef,\n viewportInfo,\n listId,\n onActiveCellChanged,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n ]\n );\n\n // Helper function to set the List's focus tracking state to reflect that it is tabbable.\n const _enableTabbableMode = useCallback(\n (cell: ActiveCell<K>, 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 List'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>) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n const cellElement = getElementFromCell(rootElement, listId, cell);\n if (cellElement != null) {\n cellElement.focus({ preventScroll: true });\n } else {\n rootElement.focus({ preventScroll: true });\n }\n }\n },\n [rootRef, listId]\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 List. 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 List. 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 List. 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;\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>(targetElement, listId);\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 List. 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) {\n _setAsInactive();\n if (isRenderCycle.current) {\n // store element that loses focus during a render cycle for focus recapture logic\n blurredRenderCycleElementRef.current = event.target as FocusableElement;\n }\n } else if (!getElementContainsFunc(rootElement, true)(relatedTarget)) {\n // if focus is moving to a valid element, do not prime focus recapture logic\n _setAsInactive();\n }\n }\n },\n [rootRef, isShowFocusRing, _setAsInactive]\n );\n\n // KeyDown handler for the outer List. 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 (activeCell != null) {\n if (event.key === 'F2') {\n if (isTabbableMode) {\n _disableTabbableMode(activeCell);\n } else if (allowTabbableMode) {\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 if (isTabbableMode) {\n _disableTabbableMode(activeCell);\n event.stopPropagation();\n }\n } else if (\n event.key === 'Enter' &&\n !isTabbableMode &&\n !isEmbedded &&\n allowTabbableMode &&\n itemEnterKeyFocusBehavior === 'focusWithin' &&\n !isCellExpandable(rootElement, listId, activeCell)\n ) {\n _enableTabbableMode(activeCell, true);\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 isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n },\n [\n rootRef,\n listId,\n viewportInfo,\n isTabbableMode,\n isEmbedded,\n allowTabbableMode,\n activeCell,\n _enableTabbableMode,\n _disableTabbableMode,\n updateDeferredScrollDetail,\n itemEnterKeyFocusBehavior\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 isTransient: isTransientCell(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 List'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, listId, activeCell) as FocusableElement\n ),\n (value?: ActiveCell<K>) => {\n setIsTabbableMode(value != undefined);\n }\n );\n }\n },\n [rootRef, activeCell, listId]\n );\n\n // Callback for the outer List's FocusTracker usage.\n const onFocusStartEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(true, detail.tabbableElements, (value?: ActiveCell<K>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Callback for the outer List's FocusTracker usage.\n const onFocusEndEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(false, detail.tabbableElements, (value?: ActiveCell<K>) => {\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, listId, currentActiveCell);\n if (cellElement != null) {\n if (isCaptureFocus) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: currentActiveCell,\n isTransient: isTransientCell(currentActiveCell),\n locationX: 'inView',\n locationY: 'inView'\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, listId, 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) {\n _disableTabbableMode(currentActiveCell);\n } else {\n handleEnterActionableMode(\n false,\n allTabbableElements(cellElement),\n (value?: ActiveCell<K>) => {\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 stickyTopRows,\n listId,\n deferredScrollDetail\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 stickyTopRows,\n listId,\n currencyStatusRef,\n onActiveCellChanged,\n isEmbedded,\n isDataLoaded,\n currentItemOverride\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 (blurredRenderCycleElement != null && activeElement === getBodyElement(rootElement)) {\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 { RefObject } from 'preact';\nimport type { Dispatch, StateUpdater } from 'preact/hooks';\nimport type { ReorderDetail } from '#UNSAFE_Collection';\n\nimport { useMemo, useState } from 'preact/hooks';\nimport { useReorderable } from '#hooks/PRIVATE_useReorderable';\nimport { dragToScroll } from '#utils/PRIVATE_collectionUtils';\n\ntype useListReorderProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n scrollerRef: RefObject<HTMLElement>;\n itemSelector: string;\n onReorder?: (detail: ReorderDetail<K>) => void;\n};\n\nexport type ReorderItemProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n dragKey?: K;\n setDragKey: Dispatch<StateUpdater<K | undefined>>;\n onReorder?: (detail: ReorderDetail<K>) => void;\n};\n\nexport const useItemReorder = <K extends string | number>({\n rootRef,\n scrollerRef,\n onReorder,\n itemSelector\n}: useListReorderProps<K>) => {\n const isReorderEnabled = onReorder != undefined;\n\n const [dragKey, setDragKey] = useState<K | undefined>(undefined);\n const { reorderProps, reorderContext, reorderInstructionsId, reorderInstructions } =\n useReorderable({\n onReorder,\n rootRef,\n itemSelector,\n isDisabled: !isReorderEnabled,\n columns: 1\n });\n\n const reorderItemProps: ReorderItemProps<K> = useMemo(() => {\n return { dragKey, setDragKey, onReorder, rootRef };\n }, [dragKey, onReorder, rootRef]);\n\n if (!isReorderEnabled) {\n return {\n reorderProps: {},\n reorderKeyboardProps: reorderProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n }\n\n const handleDragOver = (event: DragEvent) => {\n if (dragKey !== undefined) {\n dragToScroll(event, dragKey !== undefined, scrollerRef.current);\n }\n };\n\n return {\n reorderProps: { onDragOver: handleDragOver },\n reorderKeyboardProps: reorderProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\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 { SelectionDetail } from '#UNSAFE_Collection';\nimport type { ListSelectionMode } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, ActiveCellDetail, ScrollDetail } from '../List.types';\n\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { addKey, containsKey, isSameKey, removeKey } from '#utils/UNSAFE_keys';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getElementFromCell,\n getFirstFocusableCell,\n getRowKeyForRowIndex,\n getRowIndexForRowElement,\n LIST_ROW_SELECTOR,\n logicalCellExtractor,\n rowExtractor\n} from './ListDomUtils';\nimport { isTransientCell } from './ListFocusUtils';\n\n/**\n * Helper function to handle a selection gesture (click, spacebar, etc...)\n */\nexport function handleSelectionGesture<K extends string | number>(\n listId: string,\n targetElement: HTMLElement,\n isModifierKey: boolean,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected != null ? selected : (emptyKeys as Keys<K>);\n\n const newRowKey = keyExtractor<K>(targetElement, `[${LIST_ROW_SELECTOR}='${listId}']`);\n if (newRowKey != null && !nonSelectableRowKeys?.has(newRowKey)) {\n if (\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle'\n ) {\n const isToggleSelectionMode = isDropDownSelection || selectionMode === '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 !== '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 }\n }\n if (!isSameKey(selectedRows, selected)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, false);\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n startIndex: number,\n endIndex: number,\n isRowGesture: boolean,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>,\n previousEndIndex?: number\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected != null ? selected : (emptyKeys as Keys<K>);\n\n if (isRowGesture) {\n if (selectionMode === 'multiple' || selectionMode === 'multipleToggle') {\n const isToggleSelectionMode = isDropDownSelection || selectionMode === '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, listId, i);\n if (key != null && !nonSelectableRowKeys?.has(key)) {\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\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, listId, 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, listId, 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, listId, i);\n if (key != null && !nonSelectableRowKeys?.has(key)) {\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\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, listId, 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, listId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, true);\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n activeCell: ActiveCell<K>,\n selectionMode?: ListSelectionMode\n) {\n const targetRowElement = rowExtractor(targetElement, listId);\n if (\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle') &&\n activeCell.type === 'data' &&\n targetRowElement != null\n ) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null && targetRowElement != null) {\n return (\n getRowIndexForRowElement(\n rootElement,\n listId,\n activeCellElement.parentElement as HTMLElement\n ) != null && getRowIndexForRowElement(rootElement, listId, targetRowElement) != null\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n activeCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const targetRowElement = rowExtractor(targetElement, listId);\n if (targetRowElement != null) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null) {\n if (\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle') &&\n activeCell.type === 'data'\n ) {\n let previousEndIndex;\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n const endElement = targetRowElement;\n const startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n const startIndex = getRowIndexForRowElement(rootElement, listId, startElement);\n const endIndex = getRowIndexForRowElement(rootElement, listId, endElement);\n const previousElement = isToggleSelectionMode\n ? (activeCellElement.parentElement as HTMLElement)\n : selectionExtensionElementRef.current;\n if (previousElement != null) {\n previousEndIndex = getRowIndexForRowElement(rootElement, listId, previousElement);\n }\n if (startIndex != null && endIndex != null) {\n if (!isToggleSelectionMode) {\n selectionExtensionElementRef.current = endElement;\n } else {\n if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current = activeCellElement.parentElement as HTMLElement;\n }\n let targetCell = logicalCellExtractor<K>(targetElement, listId);\n if (targetCell == null) {\n targetCell = getFirstFocusableCell<K>(targetRowElement, listId) as ActiveCell<K>;\n }\n if (targetCell != null) {\n onActiveCellChanged({ value: targetCell }, false, true);\n const targetCellElement = getElementFromCell(rootElement, listId, targetCell);\n targetCellElement?.focus({ preventScroll: true });\n }\n }\n _applyRangeSelection(\n rootElement,\n listId,\n targetElement,\n startIndex,\n endIndex,\n true,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n previousEndIndex\n );\n return true;\n }\n }\n }\n }\n return false;\n}\n\nexport const getAdjacentSelectableRowElement = <K extends string | number>(\n rowElements: ArrayLike<Element>,\n rowIndex: number,\n isPrevious: boolean,\n nonSelectableRowKeys?: Set<K>\n) => {\n const step = isPrevious ? -1 : 1;\n for (let i = rowIndex + step; i >= 0 && i < rowElements.length; i += step) {\n const rowElement = rowElements[i] as HTMLElement;\n const rowKey = getRowKey<K>(rowElement);\n if (rowKey != null && !nonSelectableRowKeys?.has(rowKey)) {\n return rowElement;\n }\n }\n return undefined;\n};\n\n/**\n * Helper function to handle a selection extension gesture (shift+arrow key)\n */\nexport function handleExtendSelectionGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n isPrevious: boolean,\n activeCell: ActiveCell<K>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null) {\n let startIndex;\n let startElement;\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n const isRow = activeCell.type === 'data';\n if (isRow) {\n startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n startIndex = getRowIndexForRowElement(rootElement, listId, startElement);\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 = getRowIndexForRowElement(rootElement, listId, cursorElement);\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (cursorElement != null) {\n const rowIndex = getRowIndexForRowElement(rootElement, listId, cursorElement);\n if (rowIndex != null) {\n extendedElement = getAdjacentSelectableRowElement(\n rowElements,\n rowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n if (\n extendedElement != null &&\n (!isRow || (isRow && getRowKey(extendedElement) != null))\n ) {\n if (!isToggleSelectionMode || !isRow) {\n selectionExtensionElementRef.current = extendedElement;\n } else if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current =\n activeCellElement.parentElement as HTMLElement;\n }\n endIndex = getRowIndexForRowElement(rootElement, listId, extendedElement);\n } else {\n endIndex = getRowIndexForRowElement(rootElement, listId, cursorElement);\n }\n }\n }\n } else {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (startElement != null) {\n const rowIndex = getRowIndexForRowElement(rootElement, listId, startElement);\n if (rowIndex != null) {\n extendedElement = getAdjacentSelectableRowElement(\n rowElements,\n rowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n if (\n extendedElement != null &&\n (!isRow || (isRow && getRowKey(extendedElement) != null))\n ) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = getRowIndexForRowElement(rootElement, listId, extendedElement);\n } else {\n endIndex = startIndex;\n }\n }\n }\n }\n if (endIndex != null) {\n _applyRangeSelection(\n rootElement,\n listId,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\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, `[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowKey != null) {\n extensionCell = {\n type: activeCell.type,\n rowKey: rowKey\n };\n }\n } else {\n extensionCell = logicalCellExtractor<K>(extensionElement, listId);\n }\n if (extensionCell != null) {\n updateDeferredScrollDetail({\n cell: extensionCell,\n isTransient: isTransientCell(extensionCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n}\n\n/**\n * Helper function to handle a select-all gesture.\n */\nexport function handleSelectAllGesture<K extends string | number>(\n targetElement: HTMLElement,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n selectionMode?: ListSelectionMode,\n selectedKeys?: Keys<K>\n) {\n if (selectionMode === 'multiple' || selectionMode === 'multipleToggle') {\n const selectedRows: Keys<K> = {\n all: true,\n deletedKeys: new Set([])\n };\n if (!isSameKey(selectedRows, selectedKeys)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, false);\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 { CollectionData } from '#UNSAFE_Collection';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ScrollDetail,\n TableListProps,\n ViewportInfo\n} from '../List.types';\n\nimport { findElementByKey } from '#utils/PRIVATE_collectionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { containsKey } from '#utils/UNSAFE_keys';\nimport {\n getElementFromCell,\n getFirstRenderedRowKey,\n getLastRenderedRowKey,\n getRowIndexForRowKey,\n getRowKeyForRowIndex,\n hasLoadMoreCell,\n isAutoFocusCell,\n LIST_ROW_SELECTOR\n} from './ListDomUtils';\nimport { handleToggleExpandedGesture, isCellExpandable } from './ListActionUtils';\nimport { cellComparator, isTransientCell } from './ListFocusUtils';\nimport { getScrollerBottom, getScrollPosition } from './ListScrollUtils';\nimport { getAdjacentSelectableRowElement } from './ListSelectionUtils';\n\nconst getAdjacentRowElement = <K extends string | number>(\n rowElements: HTMLElement[],\n currentRowIndex: number,\n isPrevious: boolean,\n isExtendSelectionGesture: boolean,\n nonSelectableRowKeys?: Set<K>\n) => {\n const step = isPrevious ? -1 : 1;\n const adjacentIndex = currentRowIndex + step;\n if (!isExtendSelectionGesture) {\n return adjacentIndex >= 0 && adjacentIndex < rowElements.length\n ? rowElements[adjacentIndex]\n : undefined;\n }\n\n return getAdjacentSelectableRowElement(\n rowElements,\n currentRowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n};\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>(\n rootElement: HTMLDivElement,\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n isExtendSelectionGesture: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n loadMoreAnchorKeys?: Set<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'loadMore') {\n if (isPrevious) {\n const rowKey = getLastRenderedRowKey<K>(rootElement, listId);\n if (rowKey != null) {\n if (loadMoreAnchorKeys?.has(rowKey)) {\n newCell = { rowKey: rowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n newCell = { rowKey: rowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n } else if (cellType === 'data') {\n const currentRowKey = initialCell.rowKey;\n if (!isPrevious && loadMoreAnchorKeys?.has(currentRowKey)) {\n newCell = { rowKey: currentRowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n const currentRowElement = findElementByKey(\n rootElement,\n currentRowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n );\n if (currentRowElement != null) {\n const rowElements = [...rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`)];\n const currentRowIndex = rowElements.indexOf(currentRowElement);\n const adjacentRowElement = getAdjacentRowElement(\n rowElements as HTMLElement[],\n currentRowIndex,\n isPrevious,\n isExtendSelectionGesture,\n nonSelectableRowKeys\n );\n if (adjacentRowElement != null) {\n const rowKey = getRowKey<K>(adjacentRowElement);\n if (rowKey != null) {\n if (isPrevious && loadMoreAnchorKeys?.has(rowKey)) {\n newCell = { rowKey: rowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n newCell = { rowKey: rowKey, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n isExtendSelectionGesture\n );\n }\n }\n } else if (\n !isExtendSelectionGesture &&\n !isPrevious &&\n hasLoadMoreCell(rootElement, listId)\n ) {\n newCell = { type: 'loadMore' };\n if (getElementFromCell(rootElement, listId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n }\n } else if (cellType === 'loadMoreAnchor') {\n const currentRowKey = initialCell.rowKey;\n if (isPrevious) {\n newCell = { rowKey: currentRowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n } else {\n const currentRowElement = findElementByKey(\n rootElement,\n currentRowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n );\n if (currentRowElement != null) {\n const rowElements = [...rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`)];\n const currentRowIndex = rowElements.indexOf(currentRowElement);\n let adjacentRowElement;\n if (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, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n isExtendSelectionGesture\n );\n }\n } else if (\n !isExtendSelectionGesture &&\n !isPrevious &&\n hasLoadMoreCell(rootElement, listId)\n ) {\n newCell = { type: 'loadMore' };\n if (getElementFromCell(rootElement, listId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n }\n }\n if (cellComparator(initialCell, newCell)) {\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: 'inView'\n });\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 List 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 List so it becomes the first visible row in the viewport when able.\n */\nexport function handlePageRowGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void\n) {\n if (initialCell.type !== 'noData') {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowElements.length > 0) {\n const scrollPosition = getScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n );\n const verticalRowIndex = getRowIndexForRowKey(rootElement, listId, scrollPosition.key!);\n let targetRowIndex;\n if (isPrevious) {\n if (scrollPosition.offsetY === 0) {\n targetRowIndex = Math.max(verticalRowIndex! - 1, 0);\n } else {\n targetRowIndex = verticalRowIndex!;\n }\n } else {\n const scrollerBottom = getScrollerBottom(scrollerElement, viewportInfo.viewportConfig);\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, listId, targetRowIndex);\n if (newRowKey != null) {\n const newCell: ActiveCell<K> = {\n rowKey: newRowKey,\n type: 'data'\n };\n if (newRowKey !== initialCell.rowKey) {\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n false,\n true\n );\n }\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: isPrevious ? 'bottom' : 'top'\n });\n }\n }\n }\n}\n\n/**\n * Helper function to handle a 'Ctrl/Cmd + Home' or 'Ctrl/Cmd + End' key press.\n * Ctrl/Cmd + Home - Jumps to the first row in the list. No op if already on that row.\n * Ctrl/Cmd + End - Jumps to the last row in the list. No op if already on that row.\n */\nexport function handleJumpRowGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void\n) {\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'data') {\n const newRowKey = isPrevious\n ? getFirstRenderedRowKey<K>(rootElement, listId)\n : getLastRenderedRowKey<K>(rootElement, listId);\n if (newRowKey != null) {\n newCell = { rowKey: newRowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n if (cellComparator(initialCell, newCell)) {\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n}\n\nexport function handleTreeCollapseGesture<K extends string | number, D>(\n rootElement: HTMLDivElement,\n listId: string,\n listData: CollectionData<K, D>[],\n activeCell: ActiveCell<K> | undefined,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: TableListProps<K, D>['onExpandedChange'],\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n target: EventTarget | null\n) {\n if (activeCell?.type === 'loadMoreAnchor') {\n const parentCell: ActiveCell<K> = { rowKey: activeCell.rowKey, type: 'data' };\n onActiveCellChanged({ value: parentCell }, isAutoFocusCell(rootElement, listId, parentCell));\n updateDeferredScrollDetail({\n cell: parentCell,\n isTransient: isTransientCell(parentCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n\n if (activeCell?.type === 'data') {\n const isExpanded = containsKey(expanded, activeCell.rowKey);\n if (\n isExpanded &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(activeCell.rowKey, expanded, onExpandedChange, target);\n return true;\n }\n\n if (!isExpanded) {\n const parentCell = getParentCell(listData, activeCell.rowKey);\n if (parentCell != null) {\n onActiveCellChanged(\n { value: parentCell },\n isAutoFocusCell(rootElement, listId, parentCell)\n );\n updateDeferredScrollDetail({\n cell: parentCell,\n isTransient: isTransientCell(parentCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function handleTreeExpandGesture<K extends string | number, D>(\n rootElement: HTMLDivElement,\n listId: string,\n listData: CollectionData<K, D>[],\n activeCell: ActiveCell<K> | undefined,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: TableListProps<K, D>['onExpandedChange'],\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n target: EventTarget | null,\n loadMoreAnchorKeys?: Set<K>\n) {\n if (activeCell?.type !== 'data') {\n return false;\n }\n\n const isExpanded = containsKey(expanded, activeCell.rowKey);\n if (\n !isExpanded &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(activeCell.rowKey, expanded, onExpandedChange, target);\n return true;\n }\n\n if (isExpanded) {\n const childCell =\n getFirstChildCell(listData, activeCell.rowKey) ??\n (loadMoreAnchorKeys?.has(activeCell.rowKey)\n ? ({ rowKey: activeCell.rowKey, type: 'loadMoreAnchor' } as ActiveCell<K>)\n : undefined);\n if (childCell != null) {\n onActiveCellChanged({ value: childCell }, isAutoFocusCell(rootElement, listId, childCell));\n updateDeferredScrollDetail({\n cell: childCell,\n isTransient: isTransientCell(childCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n }\n\n return false;\n}\n\nexport function isReorderGesture(event: KeyboardEvent) {\n return event.shiftKey && isLogicalCtrl(event);\n}\n\nexport function getParentCell<K extends string | number, D>(\n listData: CollectionData<K, D>[],\n rowKey: K\n): ActiveCell<K> | undefined {\n const currentItem = listData.find((item) => item.metadata.key === rowKey);\n const parentKey = currentItem?.metadata.parentKey;\n if (parentKey != null && listData.some((item) => item.metadata.key === parentKey)) {\n return { rowKey: parentKey, type: 'data' };\n }\n return undefined;\n}\n\nexport function getFirstChildCell<K extends string | number, D>(\n listData: CollectionData<K, D>[],\n rowKey: K\n): ActiveCell<K> | undefined {\n const currentIndex = listData.findIndex((item) => item.metadata.key === rowKey);\n if (currentIndex > -1) {\n const nextItem = listData[currentIndex + 1];\n const parentKey = nextItem?.metadata.parentKey;\n if (parentKey === rowKey) {\n return { rowKey: nextItem.metadata.key, type: 'data' };\n }\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 { RefObject } from 'preact';\nimport type { MutableRef } from 'preact/hooks';\nimport type { CollectionData, ItemActionDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ScrollDetail,\n TableListProps,\n ViewportInfo\n} from '../List.types';\n\nimport { useCallback, useRef } from 'preact/hooks';\nimport { getIsSelectionPending } from '#utils/PRIVATE_textSelectionUtils';\nimport { hasAnyKeys } from '#utils/UNSAFE_keys';\nimport {\n getRowActionGestureContext,\n handleRowActionGesture\n} from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { useUser } from '#hooks/UNSAFE_useUser';\nimport {\n getActionContext,\n handleToggleExpandedGesture,\n isCellExpandable\n} from '../utils/ListActionUtils';\nimport { canPasteToActiveCell, getClipboardItemKeys } from '../utils/ListDndUtils';\nimport { getElementFromCell, isAutoFocusCell, LIST_ROW_SELECTOR } from '../utils/ListDomUtils';\nimport { isTransientCell } from '#PRIVATE_TableList/utils/ListFocusUtils';\nimport {\n handleAdjacentRowGesture,\n handleJumpRowGesture,\n handlePageRowGesture,\n handleTreeCollapseGesture,\n handleTreeExpandGesture,\n isReorderGesture\n} from '../utils/ListNavigationUtils';\nimport {\n handleExtendSelectionGesture,\n handleSelectAllGesture,\n handleSelectionGesture\n} from '../utils/ListSelectionUtils';\n\ntype UseKeyboardHandlingProps<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n listId: string;\n listData: CollectionData<K, D>[];\n isTabbableMode: boolean;\n isTree: boolean;\n isTreeGrid: boolean;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n activeCell?: ActiveCell<K>;\n isDropDownSelection: boolean;\n selectionMode: TableListProps<K, D>['selectionMode'];\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n loadMoreAnchorKeys?: Set<K>;\n onListSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n expanded: NonNullable<TableListProps<K, D>['expanded']>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onItemAction?: (detail: ItemActionDetail<K, D>) => void;\n onCutRequest?: TableListProps<K, D>['onCutRequest'];\n onCutCancelRequest?: TableListProps<K, D>['onCutCancelRequest'];\n onCopyRequest?: TableListProps<K, D>['onCopyRequest'];\n onPasteRequest?: TableListProps<K, D>['onPasteRequest'];\n cutItemKeys?: TableListProps<K, D>['cutItemKeys'];\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void;\n reorderKeyboardProps: { onKeyDown?: (e: KeyboardEvent) => void };\n isReorderEnabled: boolean;\n};\n\n/**\n * Hook that manages keyboard interactions on the Preact TableList\n */\nexport function useKeyboardHandling<K extends string | number, D>({\n rootRef,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled\n}: UseKeyboardHandlingProps<K, D>) {\n // state for the key that a space or enter keydown occurs on for matching keyup handling\n const triggerDownKeyRef = useRef<K | undefined>();\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n\n // Keydown handler for the outer List. This handles all internal\n // keyboard navigation for the List.\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 handleTreeCollapseKey = () => {\n if (\n !event.repeat &&\n isTree &&\n handleTreeCollapseGesture(\n rootElement,\n listId,\n listData,\n activeCell,\n expanded,\n onExpandedChange,\n onActiveCellChanged,\n updateDeferredScrollDetail,\n event.target\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleTreeExpandKey = () => {\n if (\n !event.repeat &&\n isTree &&\n handleTreeExpandGesture(\n rootElement,\n listId,\n listData,\n activeCell,\n expanded,\n onExpandedChange,\n onActiveCellChanged,\n updateDeferredScrollDetail,\n event.target,\n loadMoreAnchorKeys\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n const key = event.key.toLowerCase();\n if (\n (key === 'escape' || key === 'esc') &&\n !isTabbableMode &&\n onCutCancelRequest != null &&\n hasAnyKeys(cutItemKeys)\n ) {\n onCutCancelRequest();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (\n isLogicalCtrl(event) &&\n !event.altKey &&\n (key === 'c' || key === 'x' || key === 'v') &&\n // Only intercept clipboard shortcuts in navigation mode; preserve native behavior in actionable mode.\n !isTabbableMode &&\n // Preserve default copy/cut/paste behavior when there is a text selection.\n !getIsSelectionPending()\n ) {\n if (key === 'v') {\n if (onPasteRequest != null && canPasteToActiveCell(activeCell)) {\n event.preventDefault();\n event.stopPropagation();\n onPasteRequest();\n }\n return;\n }\n\n const clipboardHandler = key === 'c' ? onCopyRequest : onCutRequest;\n if (clipboardHandler == null) {\n return;\n }\n\n const itemKeys = getClipboardItemKeys<K>({ activeCell, selected, selectionMode });\n if (itemKeys == null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n clipboardHandler({ itemKeys });\n return;\n }\n\n const keyHandlers: Record<string, () => void> = {\n ' ': function () {\n if (activeCell != null) {\n triggerDownKeyRef.current = activeCell.rowKey;\n if (!isTabbableMode) {\n // prevent default action on space to avoid scrolling during a selection\n event.preventDefault();\n }\n if (\n onItemAction != null &&\n getRowActionGestureContext(\n listId,\n listData,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n }\n },\n a: function () {\n if (\n isTree &&\n !isTabbableMode &&\n isLogicalCtrl(event) &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleSelectAllGesture(\n event.target as HTMLElement,\n onListSelectionChange,\n selectionMode,\n selected\n );\n event.preventDefault();\n event.stopPropagation();\n }\n },\n A: function () {\n keyHandlers['a']();\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 !event.repeat &&\n isTreeGrid &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(\n activeCell.rowKey,\n expanded,\n onExpandedChange,\n event.target\n );\n event.stopPropagation();\n } else if (\n onItemAction != null &&\n getRowActionGestureContext(\n listId,\n listData,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n ArrowLeft: function () {\n if (isRtl) {\n handleTreeExpandKey();\n } else {\n handleTreeCollapseKey();\n }\n },\n ArrowRight: function () {\n if (isRtl) {\n handleTreeCollapseKey();\n } else {\n handleTreeExpandKey();\n }\n },\n ArrowUp: function () {\n if (isReorderEnabled && !isTabbableMode && isReorderGesture(event)) {\n selectionExtensionElementRef.current = undefined;\n if (activeCell?.type === 'data') {\n reorderKeyboardProps.onKeyDown?.(event);\n updateDeferredScrollDetail({\n cell: activeCell,\n isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n return;\n }\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n listId,\n rootElement,\n true,\n activeCell,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n isExtendSelectionGesture,\n updateDeferredScrollDetail,\n loadMoreAnchorKeys,\n nonSelectableRowKeys\n );\n }\n event.preventDefault();\n }\n },\n ArrowDown: function () {\n if (isReorderEnabled && !isTabbableMode && isReorderGesture(event)) {\n selectionExtensionElementRef.current = undefined;\n if (activeCell?.type === 'data') {\n reorderKeyboardProps.onKeyDown?.(event);\n updateDeferredScrollDetail({\n cell: activeCell,\n isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n return;\n }\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n listId,\n rootElement,\n false,\n activeCell,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n isExtendSelectionGesture,\n updateDeferredScrollDetail,\n loadMoreAnchorKeys,\n nonSelectableRowKeys\n );\n }\n event.preventDefault();\n }\n },\n PageUp: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n PageDown: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n Home: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n if (isLogicalCtrl(event)) {\n handleJumpRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n End: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n if (isLogicalCtrl(event)) {\n handleJumpRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n updateDeferredScrollDetail\n );\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 stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isRtl,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled\n ]\n );\n\n // Keyup handler for the outer List.\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 if (triggerDownKeyRef.current === activeCell.rowKey) {\n if (!isTabbableMode) {\n if (onListSelectionChange != null) {\n handleSelectionGesture(\n listId,\n getElementFromCell(rootElement, listId, activeCell) as HTMLElement,\n true,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n }\n if (\n onItemAction != null &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n event.target as HTMLElement,\n LIST_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 let isStopPropagation = false;\n if (activeCell.type === 'data') {\n if (isDropDownSelection && !isTabbableMode) {\n if (onListSelectionChange != null) {\n handleSelectionGesture(\n listId,\n getElementFromCell(rootElement, listId, activeCell) as HTMLElement,\n true,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isStopPropagation = true;\n }\n }\n if (\n onItemAction != null &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n )\n ) {\n isStopPropagation = true;\n }\n if (\n isTreeGrid &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n isStopPropagation = true;\n }\n }\n if (isStopPropagation) {\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 listId,\n listData,\n isTabbableMode,\n isTreeGrid,\n activeCell,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onExpandedChange,\n onItemAction\n ]\n );\n\n return {\n onKeyDown: _keyDownHandler,\n onKeyUp: _keyUpHandler\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 { MutableRef } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData, ItemActionDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { ListSelectionMode } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, ActiveCellDetail } from '../List.types';\n\nimport { useCallback, useRef } from 'preact/hooks';\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { getIsSelectionPending } from '#utils/PRIVATE_textSelectionUtils';\nimport { handleRowActionGesture } from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { getActionContext } from '../utils/ListActionUtils';\nimport {\n compareClickTargets,\n getElementFromCell,\n getFirstFocusableCell,\n LIST_ROW_SELECTOR,\n logicalCellExtractor\n} from '../utils/ListDomUtils';\nimport { handleLeaveListTooltipGesture, handleMoveTooltipGesture } from '../utils/ListTooltipUtils';\nimport {\n handleRangeSelectionGesture,\n handleSelectionGesture,\n isRangeSelectionGesture\n} from '../utils/ListSelectionUtils';\n\ntype PointerInfo = {\n target: EventTarget | null;\n x: number;\n y: number;\n};\n\ntype UsePointerHandlingOptions<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n listId: string;\n listData: CollectionData<K, D>[];\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n activeCell?: ActiveCell<K>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n isDropDownSelection: boolean;\n selectionMode?: ListSelectionMode;\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n onListSelectionChange?: (detail: SelectionDetail<K>, isSelectionExtension: boolean) => void;\n onItemAction?: (detail: ItemActionDetail<K, D>) => void;\n showTooltip: (cell: ActiveCell<K>, targetElement?: HTMLElement) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n tooltipId: string;\n isTruncationTooltipEnabled: boolean;\n};\n\n/**\n * Hook that manages pointer interactions on the Preact TableList\n */\nexport function usePointerHandling<K extends string | number, D>({\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction,\n showTooltip,\n hideTooltip,\n tooltipId,\n isTruncationTooltipEnabled\n}: UsePointerHandlingOptions<K, D>) {\n // tracks whether the most recent 'pointerdown' event was due to a touch gesture\n const selectionTouchRef = useRef<boolean>(false);\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 List.\n const _pointerMoveHandler = 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 if (isTruncationTooltipEnabled) {\n handleMoveTooltipGesture(listId, event, showTooltip, hideTooltip, tooltipId);\n }\n }\n },\n [rootRef, isTruncationTooltipEnabled, listId, showTooltip, hideTooltip, tooltipId]\n );\n\n // Pointer over handler for the outer List.\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 }\n },\n [rootRef]\n );\n\n // Pointer down handler for the outer List. 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 List.\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n selectionTouchRef.current = event.pointerType === 'touch';\n const targetElement = event.target as HTMLElement;\n if (\n onListSelectionChange != null &&\n activeCell != null &&\n event.shiftKey &&\n isRangeSelectionGesture(rootElement, listId, targetElement, activeCell, selectionMode)\n ) {\n // prevent focus change on selection extension gesture\n if (!getIsSelectionPending()) {\n event.preventDefault();\n }\n } else {\n const cell = logicalCellExtractor<K>(targetElement, listId);\n if (\n cell == null ||\n (cell.type === 'data' &&\n keyExtractor<K>(targetElement, `[${LIST_ROW_SELECTOR}='${listId}']`) == null)\n ) {\n // prevent focus shift when interacting with 'non-focusable' regions (ie - scrollbar)\n event.preventDefault();\n }\n }\n }\n },\n [rootRef, listId, activeCell, selectionMode, onListSelectionChange]\n );\n\n // Pointer leave handler for the outer List.\n const _pointerLeaveHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null && isTruncationTooltipEnabled) {\n handleLeaveListTooltipGesture(rootElement, event, hideTooltip, tooltipId);\n }\n pointerInfoRef.current = undefined;\n },\n [rootRef, isTruncationTooltipEnabled, hideTooltip, tooltipId]\n );\n\n // Click handler for the outer List. It ensures the List'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 if (\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle'\n ) {\n event.stopPropagation();\n }\n const rootElement = rootRef.current;\n if (rootElement != null) {\n const target = event.target as HTMLElement;\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 (target != null &&\n pointerInfoRef.current?.target != null &&\n compareClickTargets(pointerInfoRef.current.target, target, listId) &&\n Math.abs(pointerInfoRef.current.x - event.clientX) <= 1 &&\n Math.abs(pointerInfoRef.current.y - event.clientY) <= 1)\n ) {\n let isSelectionExtension = false;\n if (onListSelectionChange != null && !getIsSelectionPending()) {\n if (activeCell != null && event.shiftKey) {\n isSelectionExtension = handleRangeSelectionGesture(\n rootElement,\n listId,\n target,\n activeCell,\n onActiveCellChanged,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n if (!isSelectionExtension) {\n handleSelectionGesture(\n listId,\n target,\n isLogicalCtrl(event) || selectionTouchRef.current,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n }\n if (\n onItemAction != null &&\n !getIsSelectionPending() &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n target,\n LIST_ROW_SELECTOR,\n getActionContext\n )\n ) {\n event.stopPropagation();\n }\n // if click event occurs on the row element itself, focus the first child grid cell\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n if ((!isSelectionExtension || isToggleSelectionMode) && getRowKey(target) != null) {\n const logicalCell = getFirstFocusableCell<K>(target, listId);\n if (logicalCell != null) {\n onActiveCellChanged({ value: logicalCell }, false, true);\n getElementFromCell(rootElement, listId, logicalCell)?.focus({ preventScroll: true });\n }\n }\n }\n }\n },\n [\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction\n ]\n );\n\n return {\n pointerHandlingProps: {\n onPointerOver: _pointerOverHandler,\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler,\n onPointerLeave: _pointerLeaveHandler,\n onClick: _clickHandler\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 { ListScrollPosition } from '#UNSAFE_Collection/List.types';\nimport type { ViewportInfo } from '../List.types';\n\nimport { useCallback, useLayoutEffect, useRef } from 'preact/hooks';\nimport { isHTMLScroller } from '#PRIVATE_TableCommon/utils/ScrollUtils';\nimport { setScrollPosition, updateStickyEdges } from '../utils/ListScrollUtils';\n\ntype UseScrollHandlingProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n listId: string;\n isLayoutRequired: boolean;\n scrollPositionOverride?: ListScrollPosition<K>;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n setStickyEdgesState: (stickyEdgesState: number[]) => void;\n transientEdgeState?: number;\n setTransientEdgeState: (transientEdgeState: number | undefined) => void;\n hideTooltip?: (isImmediate?: boolean) => void;\n};\n\n/**\n * Hook that manages handling scroll events on the Preact TableList\n */\nexport function useScrollHandling<K extends string | number>({\n rootRef,\n viewportInfo,\n listId,\n isLayoutRequired,\n scrollPositionOverride,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n}: UseScrollHandlingProps<K>) {\n const scrollPositionOverrideRef = useRef<ListScrollPosition<K>>();\n\n // update horizontal and/or vertical scroll position if a new value is provided\n // NO DEPENDENCY ARRAY AS THIS SHOULD RUN ON EVERY RENDER\n useLayoutEffect(() => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (\n scrollPositionOverrideRef.current !== scrollPositionOverride &&\n rootElement != null &&\n scrollerElement != null &&\n !isLayoutRequired\n ) {\n setScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n scrollPositionOverride\n );\n scrollPositionOverrideRef.current = scrollPositionOverride;\n }\n });\n\n // Scroll hander for the outer TableList. It ensures the List's sticky rows are updated\n const _scrollHandler = useCallback(() => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n updateStickyEdges(\n rootElement,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\n );\n hideTooltip?.(true);\n }\n }, [\n rootRef,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n ]);\n\n useLayoutEffect(() => {\n const isExternalScroller = viewportInfo.isExternalScroller;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n let scrollerEventElement: Element | typeof globalThis;\n if (isExternalScroller && scrollerElement != null) {\n if (isHTMLScroller(scrollerElement)) {\n scrollerEventElement = window;\n } else {\n scrollerEventElement = scrollerElement;\n }\n scrollerEventElement.addEventListener('scroll', _scrollHandler);\n }\n return () => {\n if (isExternalScroller && scrollerEventElement != null) {\n scrollerEventElement.removeEventListener('scroll', _scrollHandler);\n }\n };\n }, [viewportInfo, _scrollHandler]);\n\n return viewportInfo.isExternalScroller ? {} : { onScroll: _scrollHandler };\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 { ActiveCell } from '../List.types';\n\nimport { useCallback, useEffect, useRef } from 'preact/hooks';\nimport { useTruncationTooltip as useCommonTruncationTooltip } from '#PRIVATE_TableCommon/hooks/useTruncationTooltip';\nimport { cellComparator } from '../utils/ListFocusUtils';\nimport { getElementFromCell } from '../utils/ListDomUtils';\nimport { getListTruncatedTextInfo } from '../utils/ListTooltipUtils';\n\ntype UseTruncationTooltipOptions = {\n rootRef: RefObject<HTMLDivElement>;\n listId: string;\n isEnabled?: boolean;\n};\n\n/**\n * Hook that manages marked text tooltip interactions on the List when truncation is present.\n */\nexport function useTruncationTooltip<K extends string | number>({\n rootRef,\n listId,\n isEnabled = true\n}: UseTruncationTooltipOptions) {\n const getListCellElement = useCallback(\n (rootElement: HTMLDivElement, cell: ActiveCell<K>) =>\n getElementFromCell(rootElement, listId, cell),\n [listId]\n );\n\n const showTooltipNoop = useCallback(\n (_cell: ActiveCell<K>, _targetElement?: HTMLElement) => undefined,\n []\n );\n const hideTooltipNoop = useCallback((_isImmediate?: boolean) => undefined, []);\n\n const { tooltipContent, tooltipId, showTooltip, hideTooltip } = useCommonTruncationTooltip<\n ActiveCell<K>\n >({\n rootRef,\n containerId: listId,\n getElementFromCell: getListCellElement,\n getTruncatedTextInfo: getListTruncatedTextInfo,\n cellComparator,\n placement: 'top'\n });\n\n const wasEnabledRef = useRef(isEnabled);\n useEffect(() => {\n if (wasEnabledRef.current && !isEnabled) {\n hideTooltip(true);\n }\n wasEnabledRef.current = isEnabled;\n }, [hideTooltip, isEnabled]);\n\n if (isEnabled) {\n return { tooltipContent, tooltipId, showTooltip, hideTooltip };\n }\n\n return {\n tooltipContent: undefined,\n tooltipId,\n showTooltip: showTooltipNoop,\n hideTooltip: hideTooltipNoop\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 { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData, ReorderDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { Handle } from '#UNSAFE_Collection/List.types';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { ScrollDetail, TableListProps, ViewportInfo } from '../List.types';\n\nimport { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'preact/hooks';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\nimport { useContextMenu } from './useContextMenu';\nimport { useDnd } from './useDnd';\nimport { useFocusHandling } from './useFocusHandling';\nimport { useItemReorder } from './useItemReorder';\nimport { useKeyboardHandling } from './useKeyboardHandling';\nimport { usePointerHandling } from './usePointerHandling';\nimport { useScrollHandling } from './useScrollHandling';\nimport { useTruncationTooltip } from './useTruncationTooltip';\nimport { getElementFromCell, LIST_ROW_SELECTOR } from '../utils/ListDomUtils';\nimport { getScrollPosition } from '../utils/ListScrollUtils';\n\ntype UseInteractionManagerOptions<K extends string | number, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n ref?: ForwardedRef<Handle<K>>;\n listId: string;\n listData: CollectionData<K, D>[];\n keyDataMap: KeyDataMap<K, D>;\n hasMore: boolean;\n isEmbedded: boolean;\n isLayoutRequired: boolean;\n isTree: boolean;\n isTreeGrid: boolean;\n itemTooltip?: TableListProps<K, D>['itemTooltip'];\n scrollPositionOverride?: TableListProps<K, D>['scrollPositionOverride'];\n currentItemOverride?: TableListProps<K, D>['currentItemOverride'];\n onPersistCurrentItem?: TableListProps<K, D>['onPersistCurrentItem'];\n selectionMode?: TableListProps<K, D>['selectionMode'];\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n loadMoreAnchorKeys?: Set<K>;\n onSelectedChange?: (detail: SelectionDetail<K>) => void;\n expanded: NonNullable<TableListProps<K, D>['expanded']>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onItemAction?: TableListProps<K, D>['onItemAction'];\n onCutRequest?: TableListProps<K, D>['onCutRequest'];\n onCutCancelRequest?: TableListProps<K, D>['onCutCancelRequest'];\n onCopyRequest?: TableListProps<K, D>['onCopyRequest'];\n onPasteRequest?: TableListProps<K, D>['onPasteRequest'];\n itemEnterKeyFocusBehavior: NonNullable<TableListProps<K, D>['itemEnterKeyFocusBehavior']>;\n contextMenuConfig?: TableListProps<K, D>['contextMenuConfig'];\n onReorder?: (detail: ReorderDetail<K>) => void;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n setStickyEdgesState: (stickyEdgesState: number[]) => void;\n transientEdgeState?: number;\n setTransientEdgeState: (transientEdgeState: number | undefined) => void;\n allowedDropPositions: TableListProps<K, D>['allowedDropPositions'];\n onDragStart: TableListProps<K, D>['onDragStart'];\n onDrag: TableListProps<K, D>['onDrag'];\n onDragEnd: TableListProps<K, D>['onDragEnd'];\n onDragEnter: TableListProps<K, D>['onDragEnter'];\n onDragLeave: TableListProps<K, D>['onDragLeave'];\n onDragOver: TableListProps<K, D>['onDragOver'];\n onDrop: TableListProps<K, D>['onDrop'];\n cutItemKeys?: TableListProps<K, D>['cutItemKeys'];\n};\n\nconst _defaultDisabledRowInteractionKeys: ('enter' | 'space')[] = ['enter'];\n\n/**\n * Hook that manages interactions and events on the Preact TableList\n */\nexport function useInteractionManager<K extends string | number, D>({\n rootRef,\n viewportInfo,\n ref,\n listId,\n listData,\n keyDataMap,\n hasMore,\n isEmbedded,\n isLayoutRequired,\n isTree,\n isTreeGrid,\n itemTooltip,\n scrollPositionOverride,\n currentItemOverride,\n onPersistCurrentItem,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onSelectedChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n itemEnterKeyFocusBehavior,\n contextMenuConfig,\n onReorder,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n cutItemKeys\n}: UseInteractionManagerOptions<K, D>) {\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 const isTruncationTooltipEnabled = isTree && itemTooltip !== 'disabled';\n\n // handles default tooltip state management\n const { tooltipContent, tooltipId, showTooltip, hideTooltip } = useTruncationTooltip<K>({\n rootRef,\n listId,\n isEnabled: isTruncationTooltipEnabled\n });\n\n // intercept onSelectedChange calls to ensure local selectionExtensionElementRef is cleared\n const onListSelectionChange = useMemo(() => {\n return onSelectedChange != null\n ? (detail: SelectionDetail<K>, isExtendableSelection: boolean) => {\n if (!isExtendableSelection) {\n selectionExtensionElementRef.current = undefined;\n }\n onSelectedChange(detail);\n }\n : undefined;\n }, [onSelectedChange]);\n\n // track pending scrolls to minimize 'flash' of focus rings when scrolling\n const [deferredScrollDetail, setDeferredScrollDetail] = useState<ScrollDetail<K> | undefined>(\n undefined\n );\n const deferredScrollDetailRef = useRef<ScrollDetail<K>>();\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>) => {\n setDeferredScrollDetail(scrollDetail);\n deferredScrollDetailRef.current = scrollDetail;\n }, []);\n\n const {\n reorderProps,\n reorderKeyboardProps,\n reorderItemProps,\n reorderContext,\n reorderInstructions,\n reorderInstructionsId\n } = useItemReorder({\n rootRef,\n scrollerRef: viewportInfo.viewportConfig.scrollerRef,\n itemSelector: `[${LIST_ROW_SELECTOR}='${listId}']`,\n onReorder\n });\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 } = useFocusHandling({\n rootRef,\n viewportInfo,\n stickyTopRows,\n listId,\n listData,\n hasMore,\n loadMoreAnchorKeys,\n selectionExtensionElementRef,\n currentItemOverride,\n onPersistCurrentItem,\n isEmbedded,\n allowTabbableMode: !isTree,\n itemEnterKeyFocusBehavior,\n isDataLoaded: !hasMore || listData.length > 0,\n reorderContext,\n deferredScrollDetail,\n deferredScrollDetailRef,\n updateDeferredScrollDetail,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n });\n\n const keyboardHandlingProps = useKeyboardHandling({\n rootRef,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled: onReorder != null\n });\n\n const { pointerHandlingProps } = usePointerHandling({\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction,\n showTooltip,\n hideTooltip,\n tooltipId,\n isTruncationTooltipEnabled\n });\n\n const scrollHandlingProps = useScrollHandling({\n rootRef,\n viewportInfo,\n listId,\n isLayoutRequired,\n scrollPositionOverride,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n });\n\n const { dndProps, dndDropIndicatorTop } = useDnd<K, D>({\n rootRef,\n viewportInfo,\n listId,\n listData,\n keyDataMap,\n hasMore,\n selected,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop\n });\n\n const { contextMenuTriggerProps, menuProps, contextMenuContext } = useContextMenu<K, D>({\n rootRef,\n listId,\n listData,\n contextMenuConfig,\n onActiveCellChanged\n });\n\n const interactionManagerProps = mergeProps(\n focusHandlingProps,\n keyboardHandlingProps,\n pointerHandlingProps,\n reorderProps,\n contextMenuTriggerProps,\n scrollHandlingProps,\n dndProps\n );\n // We want to use this focus method inside imperative handle and other places hence extracted into named method.\n const focusCurrentCellOrRoot = useCallback(() => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n hideTooltip(true);\n if (currentActiveCell != null) {\n const cellElement = getElementFromCell(rootElement, listId, 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 }, [currentActiveCell, listId, rootRef, hideTooltip]);\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: focusCurrentCellOrRoot,\n getScrollPosition: () => {\n if (rootElement == null || scrollerElement == null || isLayoutRequired) {\n return {};\n }\n return getScrollPosition<K>(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n );\n }\n };\n },\n [\n focusCurrentCellOrRoot,\n rootRef,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n isLayoutRequired\n ]\n );\n\n return {\n interactionManagerProps,\n onListSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n focusCurrentCellOrRoot,\n contextMenuContext,\n menuProps,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n disabledRowInteractionKeys,\n reorderItemProps,\n reorderInstructions,\n reorderInstructionsId,\n dndDropIndicatorTop,\n tooltipContent\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 { Ref, RefObject } from 'preact';\nimport type { UnsafeDomHandle } from '#utils/UNSAFE_unsafeDomAccess';\nimport type { CollectionData } from '#UNSAFE_Collection';\nimport type { BorderEdges, TableListProps } from '../List.types';\n\nimport { useImperativeHandle, useMemo, useState } from 'preact/hooks';\nimport { UNSAFE_DOM_ACCESS } from '#utils/UNSAFE_unsafeDomAccess';\nimport { getViewportConfig } from '../utils/ListScrollUtils';\n\ntype UseSizingManagerProps<K extends string | number, D> = {\n listData: CollectionData<K, D>[];\n scrollerRef: RefObject<HTMLDivElement>;\n viewportConfig: TableListProps<K, D>['viewportConfig'];\n externalScrollerAccessRef?: Ref<UnsafeDomHandle>;\n stickyTopRows: number[];\n};\n\n/**\n * Hook that manages sizing on the Preact TableList\n */\nexport function useSizingManager<K extends string | number, D>({\n listData,\n scrollerRef,\n viewportConfig,\n externalScrollerAccessRef,\n stickyTopRows\n}: UseSizingManagerProps<K, D>) {\n // sticky edge state management\n const [stickyEdgesState, setStickyEdgesState] = useState<number[]>([]);\n const [transientEdgeState, setTransientEdgeState] = useState<number>();\n\n const rowBorderEdges: BorderEdges = useMemo(() => {\n let isNextRowTopSticky = false;\n let stickyTopRowsIndex = stickyTopRows.length > 0 ? stickyTopRows.length - 1 : undefined;\n const newRowBorderEdges: BorderEdges = new Array(listData.length);\n for (let i = listData.length - 1; i >= 0; i--) {\n let hasTop = true;\n let isStickyTopRow = false;\n if (stickyTopRowsIndex != null) {\n isStickyTopRow = stickyTopRows[stickyTopRowsIndex] === i;\n if (isStickyTopRow) {\n hasTop = true;\n stickyTopRowsIndex--;\n if (stickyTopRowsIndex < 0) {\n stickyTopRowsIndex = undefined;\n }\n } else {\n hasTop = stickyTopRows[stickyTopRowsIndex] !== i - 1;\n }\n }\n const isLastRow = i === listData.length - 1;\n const hasBottom = isLastRow || (isStickyTopRow && !isNextRowTopSticky);\n newRowBorderEdges[i] = { hasTop, hasBottom };\n isNextRowTopSticky = isStickyTopRow;\n }\n return newRowBorderEdges;\n }, [listData, stickyTopRows]);\n\n useImperativeHandle(\n externalScrollerAccessRef!,\n () => {\n if (viewportConfig != null) {\n return { [UNSAFE_DOM_ACCESS]: viewportConfig.scrollerRef.current! };\n }\n return { [UNSAFE_DOM_ACCESS]: scrollerRef.current! };\n },\n [scrollerRef, viewportConfig]\n );\n\n // current viewport information\n const viewportInfo = useMemo(() => {\n const listViewportConfig = getViewportConfig(scrollerRef, viewportConfig);\n return {\n isExternalScroller: viewportConfig != null,\n viewportConfig: listViewportConfig\n };\n }, [scrollerRef, viewportConfig]);\n\n return {\n viewportInfo,\n rowBorderEdges,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\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 { sparkleStyles } from './themes/List.css';\n\n/**\n * A sparkle component for smart suggestion indicator in TableList\n * @param sparkleHeight the height of sparkle\n */\nexport function Sparkle() {\n const sparkleClasses = classNames([sparkleStyles.base]);\n\n return <div class={sparkleClasses} />;\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 { ListNoDataVariantOptions } from './themes/ListNoDataStyles.css';\n\nimport { useComponentTheme } from '#hooks/UNSAFE_useComponentTheme';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport {\n ACC_GRID_CELL,\n ACC_OPTION,\n ACC_ROW,\n ACC_TREE_ITEM\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { listRowStyles } from './themes/ListRowStyles.css';\nimport { ListNoDataRedwoodTheme } from './themes/redwood/ListNoDataTheme';\nimport type { NoDataRendererContext } from '#UNSAFE_ListView';\n\n/**\n * Props for the ListNoData Component\n */\ntype ListNoDataProps = {\n listId: string;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n ariaRowIndex: number;\n renderer?: (context: NoDataRendererContext) => ComponentChildren;\n};\n\n/**\n * The internal component used to render an empty list cell in a ListBody.\n */\nexport function ListNoData({\n listId,\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n isAccGrid,\n isAccTree,\n ariaRowIndex,\n renderer\n}: ListNoDataProps) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const rowClasses = classNames([listRowStyles.base]);\n\n const { classes: themeClasses } = useComponentTheme<ListNoDataVariantOptions>(\n ListNoDataRedwoodTheme,\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.noData_message();\n }\n\n const contentRenderer = renderer != null ? renderer : defaultContentRenderer;\n\n return (\n <div\n aria-rowindex={isAccGrid ? ariaRowIndex : undefined}\n class={rowClasses}\n style={'height:100%;width:100%;'}\n role={isAccGrid ? ACC_ROW : undefined}>\n <div\n aria-colindex={isAccGrid ? 1 : undefined}\n class={cellClasses}\n tabIndex={hasTabIndex ? 0 : -1}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n data-oj-cell-type={'noData'}\n data-oj-list-focusable={listId}\n data-oj-list-nodata={listId}>\n {contentRenderer({ isTabbable: isTabbableMode })}\n </div>\n </div>\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 { ItemPadding } from '#UNSAFE_Collection/List.types';\nimport type { RowStyles } from '../themes/ListRowStyles.css';\n\nimport { textAlignStyles, verticalAlignStyles } from '#PRIVATE_TableCommon/themes/Common.css';\nimport { listCellStyles, listCellStylesHC } from '../themes/ListCellStyles.css';\nimport { listRowStyles, listRowStylesHC } from '../themes/ListRowStyles.css';\n\ntype ListRowThemingProps = {\n hasTopGridline: boolean;\n hasBottomGridline: boolean;\n hasTopEdge: boolean;\n hasBottomEdge: boolean;\n hasStickyEdge: boolean;\n isTopSticky: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isNextSelected: boolean;\n isShowFocusRing: boolean;\n isSelectionEnabled: boolean;\n isSingleSelection: boolean;\n isActive: boolean;\n isHover: boolean;\n isPseudoHover: boolean;\n isHighContrast: boolean;\n variants?: string[];\n padding?: ItemPadding;\n};\n\n/**\n * Helper function to generate the class array for a list row.\n */\nexport const getListRowClassArray = ({\n hasTopGridline,\n hasBottomGridline,\n hasTopEdge,\n hasBottomEdge,\n hasStickyEdge,\n isTopSticky,\n isSelected,\n isPreviousSelected,\n isNextSelected,\n isShowFocusRing,\n isSelectionEnabled,\n isSingleSelection,\n isActive,\n isHover,\n isPseudoHover,\n isHighContrast,\n variants,\n padding\n}: ListRowThemingProps) => {\n const rowStyles = isHighContrast ? listRowStylesHC : listRowStyles;\n const classArray = [rowStyles.base];\n\n // Padding styling logic\n const { isTopPadding, isBottomPadding, isStartPadding, isEndPadding } = _getPaddingInfo(padding);\n classArray.push(isStartPadding ? rowStyles.startPadding : rowStyles.startNoPadding);\n classArray.push(isEndPadding ? rowStyles.endPadding : rowStyles.endNoPadding);\n\n _applyFocusStyling(classArray, rowStyles, isShowFocusRing);\n\n // Horizontal and vertical alignment styling logic\n classArray.push(textAlignStyles['start']);\n classArray.push(verticalAlignStyles['center']);\n\n // Interaction styling logic\n let hasHoverFeedback = false;\n if (isSelectionEnabled) {\n if (isActive) {\n classArray.push(rowStyles.active);\n hasHoverFeedback = true;\n } else if (isHover) {\n classArray.push(rowStyles.hover);\n hasHoverFeedback = true;\n } else if (isPseudoHover) {\n classArray.push(rowStyles.pseudoHover);\n hasHoverFeedback = true;\n }\n }\n if (variants?.includes('currentHighlight')) {\n classArray.push(rowStyles.rowHighlight);\n hasHoverFeedback = true;\n }\n if (variants?.includes('stuckHighlight')) {\n classArray.push(rowStyles.stuckHighlight);\n }\n if (variants?.includes('clipboardCut')) {\n classArray.push(rowStyles.clipboardCut);\n }\n if (isTopSticky) {\n classArray.push(rowStyles.topSticky);\n if (hasStickyEdge) {\n classArray.push(rowStyles.stuck);\n }\n }\n\n // Selected Rows and Horizontal Gridline styling logic\n let hasBackground = false;\n if (isSelected) {\n hasBackground = true;\n classArray.push(rowStyles.selectedBackground);\n classArray.push(rowStyles.selectedBorder);\n if (variants?.includes('selectedBorderTop')) {\n classArray.push(rowStyles.selectedBorderTop);\n }\n if (variants?.includes('selectedBorderBottom')) {\n classArray.push(rowStyles.selectedBorderBottom);\n }\n } else if (hasHoverFeedback) {\n classArray.push(rowStyles.hoverBorderRadius);\n }\n\n let edgeCount = 0;\n if (hasTopEdge) {\n edgeCount++;\n if (isSingleSelection && (isSelected || isPreviousSelected)) {\n classArray.push(rowStyles.horizontalSelectedGridTop);\n classArray.push(\n isTopPadding ? rowStyles.selectedBorderTopPadding : rowStyles.selectedBorderTopNoPadding\n );\n } else if (hasTopGridline) {\n classArray.push(rowStyles.horizontalGridTop);\n classArray.push(isTopPadding ? rowStyles.borderTopPadding : rowStyles.borderTopNoPadding);\n } else {\n classArray.push(isTopPadding ? rowStyles.topSpacerPadding : rowStyles.topSpacerNoPadding);\n }\n } else {\n classArray.push(isTopPadding ? rowStyles.topPadding : rowStyles.topNoPadding);\n }\n if (hasBottomEdge) {\n edgeCount++;\n if (isSingleSelection && (isSelected || isNextSelected)) {\n classArray.push(rowStyles.horizontalSelectedGridBottom);\n classArray.push(\n isBottomPadding\n ? rowStyles.selectedBorderBottomPadding\n : rowStyles.selectedBorderBottomNoPadding\n );\n } else if (hasBottomGridline) {\n classArray.push(rowStyles.horizontalGridBottom);\n classArray.push(\n isBottomPadding ? rowStyles.borderBottomPadding : rowStyles.borderBottomNoPadding\n );\n } else {\n classArray.push(\n isBottomPadding ? rowStyles.bottomSpacerPadding : rowStyles.bottomSpacerNoPadding\n );\n }\n } else {\n classArray.push(isBottomPadding ? rowStyles.bottomPadding : rowStyles.bottomNoPadding);\n }\n if (edgeCount === 0) {\n classArray.push(rowStyles.noGridlineRow);\n } else if (edgeCount === 1) {\n classArray.push(rowStyles.singleGridlineRow);\n } else {\n classArray.push(rowStyles.doubleGridlineRow);\n }\n\n if (!hasBackground) {\n classArray.push(rowStyles.background);\n }\n return classArray;\n};\n\ntype ListCellThemingProps = {\n isHighContrast: boolean;\n};\n\n/**\n * Helper function to generate the class array for a list cell.\n */\nexport const getListCellClassArray = ({ isHighContrast }: ListCellThemingProps) => {\n const cellStyles = isHighContrast ? listCellStylesHC : listCellStyles;\n const classArray = [cellStyles.base];\n return classArray;\n};\n\nconst _getPaddingInfo = (padding?: ItemPadding) => {\n const isPaddingEnabled = padding === 'enabled';\n const isComplexPadding = padding instanceof Object;\n\n const isBottomPadding = isPaddingEnabled || (isComplexPadding && padding?.bottom === 'enabled');\n const isEndPadding = isPaddingEnabled || (isComplexPadding && padding?.end === 'enabled');\n const isStartPadding = isPaddingEnabled || (isComplexPadding && padding?.start === 'enabled');\n const isTopPadding = isPaddingEnabled || (isComplexPadding && padding?.top === 'enabled');\n\n return { isTopPadding, isBottomPadding, isStartPadding, isEndPadding };\n};\n\nconst _applyFocusStyling = (\n classArray: string[],\n elementStyles: RowStyles,\n isShowFocusRing?: boolean\n) => {\n if (isShowFocusRing) {\n classArray.push(elementStyles.focused);\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 } from 'preact';\nimport type { ListItemRendererContext, Metadata } from '#UNSAFE_Collection';\nimport type { ItemTooltip } from './List.types';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { ACC_GRID_CELL, ACC_OPTION, ACC_TREE_ITEM } from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { getListCellClassArray } from './utils/ListThemeUtils';\n\n/**\n * Props for the ListCell Component\n */\ntype ListCellProps<K, D> = {\n hasTabIndex: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n isExpanded?: boolean;\n isHighContrast: boolean;\n isSelected?: boolean;\n isTabbableMode: boolean;\n itemTooltip?: ItemTooltip<K, D>;\n listId: string;\n renderer?: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n rowData: D;\n rowIndex: number;\n rowMetadata: Metadata<K>;\n selectorRenderer?: () => ComponentChildren;\n};\n\n/**\n * The internal component used to render a single cell in a ListRow.\n */\nexport function ListCell<K, D>({\n hasTabIndex,\n isAccGrid,\n isAccTree,\n isExpanded,\n isHighContrast,\n isSelected,\n isTabbableMode,\n itemTooltip,\n listId,\n renderer,\n rowData,\n rowIndex,\n rowMetadata,\n selectorRenderer\n}: ListCellProps<K, D>) {\n const itemContext: ListItemRendererContext<K, D> = {\n data: rowData,\n metadata: rowMetadata,\n selector: selectorRenderer,\n isSelected,\n index: rowIndex,\n isTabbable: isTabbableMode\n };\n const itemTooltipValue =\n typeof itemTooltip === 'function' ? itemTooltip(itemContext) : itemTooltip;\n\n return (\n <div\n aria-colindex={isAccGrid ? 1 : undefined}\n aria-expanded={isExpanded}\n aria-level={\n isAccTree\n ? rowMetadata.treeDepth != null\n ? rowMetadata.treeDepth + 1\n : undefined\n : undefined\n }\n aria-selected={isSelected}\n class={classNames(getListCellClassArray({ isHighContrast }))}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n tabIndex={hasTabIndex ? 0 : -1}\n data-oj-cell-type={'data'}\n data-oj-list-data={listId}\n data-oj-private-list-tooltip={\n isAccTree && itemTooltipValue === 'enabled' ? 'enabled' : undefined\n }\n data-oj-list-focusable={listId}>\n {renderer?.(itemContext)}\n </div>\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 } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { ListItemRendererContext, Metadata, SelectionDetail } from '#UNSAFE_Collection';\nimport type { ItemTooltip } from './List.types';\nimport type { ItemPadding } from '#UNSAFE_Collection/List.types';\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 { isSameKey } from '#utils/UNSAFE_keys';\nimport { Selector } from '#UNSAFE_Selector';\nimport { ACC_ROW } from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { getListRowClassArray } from './utils/ListThemeUtils';\nimport { ListCell } from './ListCell';\n\n/**\n * Props for the ListRow Component\n */\nexport type ListRowProps<K extends string | number, D> = {\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n disabledInteractionKeys?: ('enter' | 'space')[];\n hasBottomEdge: boolean;\n hasBottomGridline: boolean;\n hasStickyEdge: boolean;\n hasTopEdge: boolean;\n hasTopGridline: boolean;\n isAccGrid: boolean;\n isAccListBox: boolean;\n isAccTree: boolean;\n isActive: boolean;\n isApplyCellTabIndex: boolean;\n isExpanded?: boolean;\n isHighContrast: boolean;\n isNextSelected: boolean;\n isNonSelectable: boolean;\n isPreviousSelected: boolean;\n isRtl: boolean;\n isSelected: boolean;\n isSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isSingleSelectionEnabled: boolean;\n isTabbableMode: boolean;\n itemTooltip?: ItemTooltip<K, D>;\n listId: string;\n onSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n padding: ItemPadding;\n rowData: D;\n rowIndex: number;\n rowMetadata: Metadata<K>;\n selectedRowKeys: Keys<K>;\n stickyTop?: number;\n variants?: string[];\n};\n\n/**\n * The internal component used to render a single row in List.\n */\nexport function ListRow<K extends string | number, D>({\n children,\n disabledInteractionKeys,\n hasBottomEdge,\n hasBottomGridline,\n hasStickyEdge,\n hasTopEdge,\n hasTopGridline,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isActive,\n isApplyCellTabIndex,\n isExpanded,\n isHighContrast,\n isNextSelected,\n isNonSelectable,\n isPreviousSelected,\n isRtl,\n isSelected,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n listId,\n onSelectionChange,\n padding,\n rowData,\n rowIndex,\n rowMetadata,\n selectedRowKeys,\n stickyTop,\n variants\n}: ListRowProps<K, D>) {\n const rowKey = rowMetadata.key;\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle({ disabledKeys: disabledInteractionKeys });\n\n const isSelectable = isSelectionEnabled && !isNonSelectable;\n const rowClasses = classNames(\n getListRowClassArray({\n hasBottomEdge,\n hasBottomGridline,\n hasStickyEdge,\n hasTopEdge,\n hasTopGridline,\n isActive: applyActiveStyle,\n isHighContrast,\n isHover: applyHoverStyle,\n isNextSelected,\n isPreviousSelected,\n isPseudoHover: applyPseudoHoverStyle,\n isSelected,\n isSelectionEnabled: isSelectable,\n isShowFocusRing,\n isSingleSelection: isSingleSelectionEnabled,\n isTopSticky: stickyTop != null,\n padding,\n variants\n })\n );\n\n const accessibleRowName = (rowIndex + 1).toString();\n const handleRowSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n {\n value: detail.value,\n target: detail.target\n },\n false\n );\n }\n };\n const selectorRenderer =\n isSelectable && !isSingleSelectionEnabled\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 // WAI-ARIA permits user agents to infer aria-selected for option and treeitem\n // roles under certain conditions, so keep the unselected state explicit.\n const ariaSelected = isSelected\n ? true\n : isSelectable || isAccTree || isAccListBox\n ? false\n : undefined;\n const cellProps = {\n listId,\n rowData,\n rowMetadata,\n rowIndex,\n isExpanded,\n isSelected: ariaSelected,\n isAccGrid,\n isAccTree,\n isHighContrast,\n hasTabIndex: isActive && !isTabbableMode && isApplyCellTabIndex,\n isTabbableMode,\n itemTooltip,\n renderer: children,\n selectorRenderer,\n isRtl\n };\n return (\n <div\n aria-rowindex={isAccGrid ? rowIndex + 1 : undefined}\n aria-level={\n isAccGrid\n ? rowMetadata.treeDepth != null\n ? rowMetadata.treeDepth + 1\n : undefined\n : undefined\n }\n class={rowClasses}\n role={isAccGrid ? ACC_ROW : undefined}\n style={stickyTop != null ? `top: ${stickyTop}px` : undefined}\n data-oj-key={rowKey}\n data-oj-list-row={listId}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(isSelectable && interactionProps)}>\n <ListCell {...cellProps} />\n </div>\n );\n}\n\nexport const compareListRows = (\n prev: ListRowProps<string | number, unknown>,\n next: ListRowProps<string | number, unknown>\n) => {\n if (prev && next) {\n return (\n prev.children === next.children &&\n prev.disabledInteractionKeys === next.disabledInteractionKeys &&\n prev.hasBottomEdge === next.hasBottomEdge &&\n prev.hasBottomGridline === next.hasBottomGridline &&\n prev.hasStickyEdge === next.hasStickyEdge &&\n prev.hasTopEdge === next.hasTopEdge &&\n prev.hasTopGridline === next.hasTopGridline &&\n prev.isAccGrid === next.isAccGrid &&\n prev.isAccListBox === next.isAccListBox &&\n prev.isAccTree === next.isAccTree &&\n prev.isActive === next.isActive &&\n prev.isApplyCellTabIndex === next.isApplyCellTabIndex &&\n prev.isExpanded === next.isExpanded &&\n prev.isHighContrast === next.isHighContrast &&\n prev.isNextSelected === next.isNextSelected &&\n prev.isNonSelectable === next.isNonSelectable &&\n prev.isPreviousSelected === next.isPreviousSelected &&\n prev.isRtl === next.isRtl &&\n prev.isSelected === next.isSelected &&\n (prev.isSelectionEnabled && !prev.isSingleSelectionEnabled\n ? isSameKey(prev.selectedRowKeys, next.selectedRowKeys)\n : true) &&\n prev.isSelectionEnabled === next.isSelectionEnabled &&\n prev.isShowFocusRing === next.isShowFocusRing &&\n prev.isSingleSelectionEnabled === next.isSingleSelectionEnabled &&\n prev.isTabbableMode === next.isTabbableMode &&\n prev.itemTooltip === next.itemTooltip &&\n prev.listId === next.listId &&\n prev.onSelectionChange === next.onSelectionChange &&\n prev.padding === next.padding &&\n prev.rowData === next.rowData &&\n prev.rowIndex === next.rowIndex &&\n prev.rowMetadata.isLeaf === next.rowMetadata.isLeaf &&\n prev.rowMetadata.key === next.rowMetadata.key &&\n prev.rowMetadata.parentKey === next.rowMetadata.parentKey &&\n prev.rowMetadata.suggestion === next.rowMetadata.suggestion &&\n prev.rowMetadata.treeDepth === next.rowMetadata.treeDepth &&\n prev.stickyTop === next.stickyTop &&\n prev.variants === next.variants\n );\n }\n return false;\n};\nexport const MemoizeListRow = memo(ListRow, compareListRows);\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 { ListItemRendererContext } from '#UNSAFE_Collection';\nimport type { ReorderableItemProps } from '#UNSAFE_Collection/Reorderable.types';\n\nimport { memo } from 'preact/compat';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { isKeyDefined } from '#utils/UNSAFE_keys';\nimport { useReorderableItem } from '#hooks/PRIVATE_useReorderable';\nimport { LIST_ROW_SELECTOR } from './utils/ListDomUtils';\nimport { reorderableStyles } from './themes/List.css';\nimport { compareListRows, ListRow, ListRowProps } from './ListRow';\n\n/**\n * Props for the ListRow Component\n */\ntype ListReorderableRowProps<K extends string | number, D> = ListRowProps<K, D> &\n ReorderableItemProps<K>;\n\n/**\n * The internal component used to render a single reorderable row in List.\n */\nfunction ListReorderableRow<K extends string | number, D>({\n children,\n dragKey,\n onReorder,\n rootRef,\n setDragKey,\n ...rowProps\n}: ListReorderableRowProps<K, D>) {\n const itemRef = useRef<HTMLDivElement | null>(null);\n const itemStyles = {\n itemOverlayFront: reorderableStyles.reorderableItemOverlayFront,\n itemOverlayRear: reorderableStyles.reorderableItemOverlayRear,\n itemDragger: reorderableStyles.reorderableItemDragger\n };\n const itemSelector = `[${LIST_ROW_SELECTOR}='${rowProps.listId}']`;\n const getItem = () => itemRef?.current?.closest(itemSelector);\n const setTransferData = useCallback(\n (event: DragEvent) => {\n event.dataTransfer?.setData(\n 'text/listview-items-key',\n JSON.stringify(rowProps.rowMetadata.key)\n );\n },\n [rowProps.rowMetadata.key]\n );\n\n const { rootProps, isDragged, overlayZoneBeforeProps, overlayZoneAfterProps } =\n useReorderableItem({\n isDisabled: onReorder ? false : true,\n dragKey,\n setDragKey,\n onReorder,\n rootRef,\n ref: itemRef,\n getItem,\n setTransferData,\n itemStyles,\n itemSelector,\n isVertical: true\n });\n\n const reorderClassArray = [];\n if (rootProps?.class != null) {\n reorderClassArray.push(rootProps.class);\n }\n reorderClassArray.push(reorderableStyles.reorderableItemDnd);\n const reorderClasses = classNames(reorderClassArray);\n\n const reorderableRenderer = (context: ListItemRendererContext<K, D>) => {\n return (\n <div {...rootProps} class={reorderClasses}>\n {children(context)}\n {!isDragged && isKeyDefined(dragKey) && (\n <>\n <div {...overlayZoneBeforeProps}></div>\n <div {...overlayZoneAfterProps}></div>\n </>\n )}\n </div>\n );\n };\n\n return <ListRow {...rowProps}>{reorderableRenderer}</ListRow>;\n}\n\nexport const MemoizeListReorderableRow = memo(\n ListReorderableRow,\n (\n prev: ListReorderableRowProps<string | number, unknown>,\n next: ListReorderableRowProps<string | number, unknown>\n ) => {\n if (prev && next) {\n return (\n compareListRows(prev, next) &&\n prev.dragKey === next.dragKey &&\n prev.onReorder === next.onReorder &&\n prev.rootRef === next.rootRef &&\n prev.setDragKey === next.setDragKey\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 { Size } from '#utils/UNSAFE_size';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { dimensionInterpolations } from '#utils/UNSAFE_interpolations/dimensions';\nimport { mergeInterpolations } from '#utils/UNSAFE_mergeInterpolations';\nimport { listSkeletonStyles, listSkeletonStylesHC } from './themes/ListSkeletonStyles.css';\n\nconst dimensions = ['height', 'width'] as const;\n//This type has StyleInterpolationProps with the height prop made required.\ntype ListSkeletonProps = {\n isHighContrast: boolean;\n height?: Size;\n width?: Size;\n};\n\n// Create an array [dimensionInterpolations['height'], dimensionInterpolations['width']]\nconst skeletonDimensionInterpolation = Array.from(dimensions, (x) => dimensionInterpolations[x]);\nconst interpolations = [...Object.values(skeletonDimensionInterpolation)];\nconst SkeletonInterpolations = mergeInterpolations<ListSkeletonProps>(interpolations);\n\n/**\n * ListSkeleton component allows the appropriate skeleton to be rendered based on the\n * property values\n **/\nexport function ListSkeleton({ ...props }: ListSkeletonProps) {\n const skeletonStyles = props.isHighContrast ? listSkeletonStylesHC : listSkeletonStyles;\n const classes = classNames([skeletonStyles.bar]);\n\n const skeletonDimensions = SkeletonInterpolations({ width: '100%', ...props });\n return <div style={skeletonDimensions} class={classes} />;\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 { HierarchicalListItemContext } from '#UNSAFE_Collection';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { TableListProps } from './List.types';\n\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { LOADMORE_STYLE_CLASS } from '#PRIVATE_LoadMoreCollection';\nimport {\n ACC_GRID_CELL,\n ACC_OPTION,\n ACC_ROW,\n ACC_TREE_ITEM\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { listSkeletonStyles, listSkeletonStylesHC } from './themes/ListSkeletonStyles.css';\nimport { ListSkeleton } from './ListSkeleton';\n\ntype SkeletonRowProps<K extends string | number, D> = {\n listId: string;\n hasTabIndex: boolean;\n isEmbedded: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n isShowFocusRing: boolean;\n type: 'initial' | 'loadMore' | 'loadMoreAnchor';\n isHighContrast: boolean;\n rowKey?: K;\n anchorItemContext?: HierarchicalListItemContext<K, D>;\n loadingIndicator: TableListProps<K, D>['loadingIndicator'];\n};\n\n/**\n * ListSkeletonRow renders a set of 'loading' skeletons.\n **/\nexport function ListSkeletonRow<K extends string | number, D>({\n listId,\n hasTabIndex,\n isEmbedded,\n isAccGrid,\n isAccTree,\n isShowFocusRing,\n type,\n isHighContrast,\n rowKey,\n anchorItemContext,\n loadingIndicator\n}: SkeletonRowProps<K, D>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const skeletonStyles = isHighContrast ? listSkeletonStylesHC : listSkeletonStyles;\n const cellClassArray = [skeletonStyles.cell];\n if (isShowFocusRing) {\n cellClassArray.push(skeletonStyles.focus);\n }\n const cellClasses = classNames(cellClassArray);\n const innerCellClasses = classNames([skeletonStyles.innerCell]);\n const rowClasses = classNames([skeletonStyles.row, skeletonStyles.rowHeight]);\n const firstRowClasses = rowClasses;\n\n const accCellContent = (\n <div style={'width:1px;height:0px;overflow:hidden;'}>{translations.collection_loading()}</div>\n );\n\n // The number of skeleton rows will be determined as follows:\n // 1. if we are rendering load more rows -> 3 skeletons\n // 2. if we are rendering initial loading in embedded mode -> 3 skeletons\n // 3. if we are rendering initial loading in non-embedded mode -> 25 skeletons\n const skeletonsCount = type !== 'initial' || isEmbedded ? 3 : 25;\n\n const treeDepth = anchorItemContext?.metadata?.treeDepth;\n const ariaLevel = treeDepth != null ? treeDepth + 2 : undefined;\n\n return (\n <div\n aria-level={isAccGrid ? ariaLevel : undefined}\n class={type !== 'loadMoreAnchor' ? LOADMORE_STYLE_CLASS : undefined}\n role={isAccGrid ? ACC_ROW : undefined}>\n <div\n aria-level={isAccTree ? ariaLevel : undefined}\n class={cellClasses}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n tabIndex={hasTabIndex ? 0 : -1}\n data-oj-cell-type={type === 'initial' ? 'loading' : type}\n data-oj-key={rowKey != null ? rowKey : undefined}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(type === 'initial'\n ? { 'data-oj-list-loading': listId }\n : type === 'loadMore'\n ? { 'data-oj-list-loadmore': listId }\n : { 'data-oj-list-loadmore-anchor': listId })}\n data-oj-list-focusable={listId}>\n <div class={loadingIndicator != null ? undefined : innerCellClasses}>\n {accCellContent}\n {[...Array(skeletonsCount)].map((_element, index) => {\n const loadingIndicatorContext =\n type === 'loadMoreAnchor'\n ? {\n index,\n loadingStatus: type,\n anchorItemContext\n }\n : {\n index,\n loadingStatus: type\n };\n return loadingIndicator != null ? (\n loadingIndicator(loadingIndicatorContext)\n ) : (\n <div class={index === 0 ? firstRowClasses : rowClasses}>\n <ListSkeleton height=\"4x\" isHighContrast={isHighContrast} />\n </div>\n );\n })}\n </div>\n </div>\n </div>\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 } from 'preact';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n CollectionData,\n CurrentItemVariant,\n HierarchicalListItemContext,\n ItemContext,\n ListItemContext,\n ListItemRendererContext,\n SelectionDetail\n} from '#UNSAFE_Collection';\nimport type { ItemPadding, PromotedSection } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, BorderEdges, TableListProps, ViewportInfo } from './List.types';\n\nimport { Fragment } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { globalImages } from '#ImageVars.css';\nimport { ExpandableContext, ToggleDetail } from '#hooks/UNSAFE_useExpandableContext';\nimport { useTheme } from '#hooks/UNSAFE_useTheme';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { addKey, containsKey, removeKey } from '#utils/UNSAFE_keys';\nimport { LoadMoreCollection } from '#PRIVATE_LoadMoreCollection';\nimport { ReorderItemProps } from './hooks/useItemReorder';\nimport { sparkleStyles } from './themes/List.css';\nimport { Sparkle } from './Sparkle';\nimport { ListNoData } from './ListNoData';\nimport { MemoizeListRow } from './ListRow';\nimport { MemoizeListReorderableRow } from './ListReorderableRow';\nimport { ListSkeletonRow } from './ListSkeletonRow';\n\n/**\n * Props for the ListBody Component\n */\ntype ListBodyProps<K extends string | number, D> = {\n activeCell?: ActiveCell<K>;\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n currentItemKey?: K;\n currentItemVariant?: CurrentItemVariant;\n disabledInteractionKeys?: ('enter' | 'space')[];\n expanded?: Keys<K>;\n getIsExpandableRow?: (context: ListItemContext<K, D>) => boolean;\n getRowTopGridline: TableListProps<K, D>['getRowTopGridline'];\n hasBottomGridline: boolean;\n hasItemGridlines: boolean;\n hasMore: boolean;\n hasTopGridline: boolean;\n hasTopGridlineSetting: boolean;\n isAccGrid: boolean;\n isAccListBox: boolean;\n isAccTree: boolean;\n isApplyCellTabIndex: boolean;\n isEmbedded: boolean;\n isHighContrast: boolean;\n isRtl: boolean;\n isSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isSingleSelectionEnabled: boolean;\n isTabbableMode: boolean;\n itemTooltip?: TableListProps<K, D>['itemTooltip'];\n itemPadding: ItemPadding;\n listData: CollectionData<K, D>[];\n listId: string;\n loadMoreAnchorKeys?: Set<K>;\n noDataRenderer: TableListProps<K, D>['noDataRenderer'];\n nonSelectableRowKeys?: Set<K>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onLoadMore: () => void;\n onSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n promotedSection?: PromotedSection;\n reorderItemProps?: ReorderItemProps<K>;\n rowBorderEdges: BorderEdges;\n selected: Keys<K>;\n loadingIndicator: TableListProps<K, D>['loadingIndicator'];\n stickyEdgesState: number[];\n stickyTopRows: number[];\n stuckItemVariant?: CurrentItemVariant;\n transientEdgeState?: number;\n viewportInfo: ViewportInfo;\n cutItemKeys?: Keys<K>;\n};\n\n/**\n * The internal component used to render the body of a List.\n */\nexport function ListBody<K extends string | number, D>({\n activeCell,\n children,\n currentItemKey,\n currentItemVariant,\n disabledInteractionKeys,\n expanded,\n getIsExpandableRow,\n getRowTopGridline,\n hasBottomGridline,\n hasItemGridlines,\n hasMore,\n hasTopGridline,\n hasTopGridlineSetting,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isApplyCellTabIndex,\n isEmbedded,\n isHighContrast,\n isRtl,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n itemPadding,\n listData,\n listId,\n loadMoreAnchorKeys,\n noDataRenderer,\n nonSelectableRowKeys,\n onExpandedChange,\n onLoadMore,\n onSelectionChange,\n promotedSection,\n reorderItemProps,\n rowBorderEdges,\n selected,\n loadingIndicator,\n cutItemKeys,\n stickyEdgesState,\n stickyTopRows,\n stuckItemVariant,\n transientEdgeState,\n viewportInfo\n}: ListBodyProps<K, D>) {\n // returns a ListRowContext based on ItemContext (added key)\n const getRowContext = useCallback((context: ItemContext<CollectionData<K, D>>) => {\n return {\n data: context.data.data,\n index: context.index,\n key: context.data.metadata.key,\n metadata: context.data.metadata\n };\n }, []);\n\n const { name } = useTheme();\n\n const sectionInfo = useMemo(() => {\n const sections = [];\n const sectionsContainerClasses = [];\n const containerClasses = classNames([sparkleStyles.container]);\n if (promotedSection != null && promotedSection.count > 0) {\n const sparkleContainerClasses = classNames([\n sparkleStyles.container,\n // TODO: this component should create separate theme definitions to only show the image in redwood\n name === 'redwood' && globalImages\n ]);\n sections.push({ count: promotedSection.count, key: listData[0].metadata.key });\n sectionsContainerClasses.push(sparkleContainerClasses);\n if (promotedSection.count < listData.length) {\n sections.push({\n count: listData.length - promotedSection.count,\n key: listData[promotedSection.count].metadata.key\n });\n sectionsContainerClasses.push(containerClasses);\n }\n } else {\n let index = 0;\n for (let i = 0; i < stickyTopRows.length; i++) {\n if (stickyTopRows[i] === index) {\n continue;\n }\n sections.push({ count: stickyTopRows[i] - index, key: listData[index].metadata.key });\n sectionsContainerClasses.push(containerClasses);\n index = stickyTopRows[i];\n }\n if (listData.length > index) {\n sections.push({ count: listData.length - index, key: listData[index].metadata.key });\n sectionsContainerClasses.push(containerClasses);\n }\n }\n return { sections, sectionsContainerClasses };\n }, [promotedSection, stickyTopRows, listData, name]);\n\n let isPreviousSelected = false;\n let hasPreviousSelectedLoadMoreAnchor = false;\n let previousSectionIndex: number | undefined;\n const collectionChildrenFunc = (context: ItemContext<CollectionData<K, D>>) => {\n const listRowContext = getRowContext(context);\n const rowIndex = listRowContext.index;\n const isFinalRow = rowIndex === listData.length - 1;\n let sectionIndex: number | undefined;\n let nextSectionIndex: number | undefined;\n const sections = sectionInfo.sections;\n if (sections != null) {\n let count = 0;\n for (let i = 0; i < sections.length; i++) {\n if (rowIndex + 1 <= count + sections[i].count) {\n sectionIndex = i;\n nextSectionIndex = !isFinalRow && rowIndex + 2 <= count + sections[i].count ? i : i + 1;\n break;\n }\n count += sections[i].count;\n }\n }\n const rowKey = listRowContext.key;\n const isExpandable = getIsExpandableRow?.(listRowContext) ?? false;\n const isExpanded = isExpandable ? containsKey(expanded, rowKey) : undefined;\n const containsActiveCell = activeCell?.type === 'data' && activeCell.rowKey === rowKey;\n const isStuck = stickyEdgesState.includes(rowIndex);\n const isSelected = containsKey(selected, rowKey);\n const isNonSelectable = nonSelectableRowKeys != null && nonSelectableRowKeys.has(rowKey);\n const hasLoadMoreAnchor = loadMoreAnchorKeys?.has(rowKey) ?? false;\n const hasNextLoadingIndicator = hasLoadMoreAnchor || (isFinalRow && hasMore);\n const isNextSelected =\n !isFinalRow &&\n containsKey(selected, listData[rowIndex + 1].metadata.key) &&\n !hasLoadMoreAnchor;\n const rowTopGridline = getRowTopGridline?.(listRowContext);\n const isSpecificTopGridline = rowIndex === 0 || isStuck;\n const isTopGridlineVisible =\n isSpecificTopGridline && hasTopGridlineSetting\n ? hasTopGridline\n : rowTopGridline != null\n ? rowTopGridline === 'visible'\n : isSpecificTopGridline\n ? hasTopGridline\n : hasItemGridlines || sectionIndex !== previousSectionIndex;\n const isBottomGridlineVisible = isFinalRow\n ? hasBottomGridline || (hasMore && hasItemGridlines)\n : hasItemGridlines || sectionIndex !== nextSectionIndex;\n const stickyTop =\n stickyTopRows.indexOf(rowIndex) > -1\n ? viewportInfo.viewportConfig.scrollerOffsetTop ?? 0\n : undefined;\n const variants: string[] = [];\n if (isStuck && stuckItemVariant === 'highlight') {\n variants.push('stuckHighlight');\n }\n if (currentItemKey === rowKey && currentItemVariant === 'highlight') {\n variants.push('currentHighlight');\n }\n if (containsKey(cutItemKeys, rowKey)) {\n variants.push('clipboardCut');\n }\n if (isSelected) {\n if (!isPreviousSelected && !hasPreviousSelectedLoadMoreAnchor) {\n variants.push('selectedBorderTop');\n }\n if (!isNextSelected && !hasNextLoadingIndicator) {\n variants.push('selectedBorderBottom');\n }\n }\n const rowProps = {\n children,\n disabledInteractionKeys,\n hasBottomEdge: rowBorderEdges[rowIndex].hasBottom,\n hasBottomGridline: isBottomGridlineVisible,\n hasStickyEdge: isStuck,\n hasTopEdge: rowBorderEdges[rowIndex].hasTop,\n hasTopGridline: isTopGridlineVisible,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isActive: containsActiveCell,\n isApplyCellTabIndex,\n isExpanded,\n isHighContrast,\n isNextSelected: isStuck\n ? isNextSelected && stickyTopRows.indexOf(rowIndex + 1) > -1\n : isNextSelected,\n isNonSelectable,\n isPreviousSelected: isPreviousSelected && !isStuck && transientEdgeState !== rowIndex,\n isRtl,\n isSelected,\n isSelectionEnabled,\n isShowFocusRing: isShowFocusRing && containsActiveCell,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n listId,\n onSelectionChange,\n padding: itemPadding,\n rowData: listRowContext.data,\n rowIndex,\n rowMetadata: context.data.metadata,\n selectedRowKeys: selected,\n stickyTop,\n variants\n };\n isPreviousSelected = isSelected && !hasLoadMoreAnchor;\n hasPreviousSelectedLoadMoreAnchor = isSelected && hasLoadMoreAnchor;\n previousSectionIndex = sectionIndex;\n\n const childContent =\n reorderItemProps != null ? (\n <MemoizeListReorderableRow {...{ ...rowProps, ...reorderItemProps }} />\n ) : (\n <MemoizeListRow {...rowProps} />\n );\n\n if (isExpanded != null) {\n const onToggle = (detail: ToggleDetail) => {\n if (onExpandedChange) {\n const newExpandedKeys = expanded ?? { all: false, keys: new Set() };\n if (containsKey(newExpandedKeys, rowKey)) {\n onExpandedChange({\n value: removeKey(newExpandedKeys, rowKey, false),\n target: detail.target\n });\n } else {\n onExpandedChange({ value: addKey(newExpandedKeys, rowKey), target: detail.target });\n }\n }\n };\n return (\n <Fragment key={rowKey}>\n <ExpandableContext.Provider value={{ isExpanded, onToggle }}>\n {childContent}\n </ExpandableContext.Provider>\n {hasLoadMoreAnchor && loadMoreAnchorIndicator(rowKey)}\n </Fragment>\n );\n }\n return (\n <Fragment key={rowKey}>\n {childContent}\n {hasLoadMoreAnchor && loadMoreAnchorIndicator(rowKey)}\n </Fragment>\n );\n };\n\n const getNoDataProps = () => {\n const isActive = activeCell?.type === 'noData';\n const hasTabIndex = isActive && !isTabbableMode && isApplyCellTabIndex;\n return {\n listId,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex,\n isTabbableMode,\n isAccGrid,\n isAccTree,\n ariaRowIndex: 1,\n renderer: noDataRenderer\n };\n };\n\n const isShowEmptyLoading = listData.length === 0 && hasMore;\n const isShowNoData = listData.length === 0 && !hasMore;\n\n const defaultLoadingIndicator = (\n <ListSkeletonRow\n listId={listId}\n hasTabIndex={\n isApplyCellTabIndex &&\n (isShowEmptyLoading ? activeCell?.type === 'loading' : activeCell?.type === 'loadMore')\n }\n isEmbedded={isEmbedded}\n isAccGrid={isAccGrid}\n isAccTree={isAccTree}\n type={isShowEmptyLoading ? 'initial' : 'loadMore'}\n isShowFocusRing={\n isShowFocusRing &&\n (isShowEmptyLoading ? activeCell?.type === 'loading' : activeCell?.type === 'loadMore')\n }\n isHighContrast={isHighContrast}\n loadingIndicator={loadingIndicator}\n />\n );\n\n const loadMoreAnchorIndicator = (rowKey: K) => {\n const isActiveCell = activeCell?.type === 'loadMoreAnchor' && activeCell.rowKey === rowKey;\n const anchorIndex = listData.findIndex((item) => item.metadata.key === rowKey);\n const anchorItemContext =\n anchorIndex > -1\n ? ({\n index: anchorIndex,\n ...listData[anchorIndex]\n } as HierarchicalListItemContext<K, D>)\n : undefined;\n return (\n <ListSkeletonRow\n listId={listId}\n hasTabIndex={isApplyCellTabIndex && isActiveCell}\n isEmbedded={isEmbedded}\n isAccGrid={isAccGrid}\n isAccTree={isAccTree}\n type={'loadMoreAnchor'}\n rowKey={rowKey}\n anchorItemContext={anchorItemContext}\n isShowFocusRing={isShowFocusRing && isActiveCell}\n isHighContrast={isHighContrast}\n loadingIndicator={loadingIndicator}\n />\n );\n };\n\n return isShowNoData ? (\n <ListNoData {...getNoDataProps()} />\n ) : (\n <LoadMoreCollection<CollectionData<K, D>>\n data={listData}\n loadMoreIndicator={defaultLoadingIndicator}\n suggestions={promotedSection != null ? <Sparkle /> : undefined}\n sections={sectionInfo.sections}\n sectionContainerClasses={sectionInfo.sectionsContainerClasses}\n hasMore={hasMore}\n onLoadMore={onLoadMore}\n viewportConfig={viewportInfo.viewportConfig}>\n {collectionChildrenFunc}\n </LoadMoreCollection>\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 { ComponentProps } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { ListItemContext as ListItemMenuContext } from '#UNSAFE_Collection';\n\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { Menu } from '#UNSAFE_Menu';\nimport { TableListProps } from './List.types';\n\ntype Props<K extends string | number, D> = {\n contextMenuConfig: NonNullable<TableListProps<K, D>['contextMenuConfig']>;\n contextMenuContext: ListItemMenuContext<K, D>;\n} & Omit<ComponentProps<typeof Menu>, 'children'>;\n\n/**\n * The internal component used to render a custom context menu on the List\n */\nexport function ListContextMenu<K extends string | number, D>({\n contextMenuConfig,\n contextMenuContext,\n ...menuProps\n}: Props<K, D>) {\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","/**\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 { CurrentItemVariant } from '#UNSAFE_Collection';\nimport type { Handle } from '#UNSAFE_Collection/List.types';\nimport type { ListVariantOptions } from './themes/ListStyles.css';\nimport type { TableListProps } from './List.types';\n\nimport { createRef } from 'preact';\nimport { forwardRef } from 'preact/compat';\nimport { useCallback, useContext, useMemo, 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 { HiddenAccessible } from '#UNSAFE_HiddenAccessible';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { FocusTracker } from '#PRIVATE_FocusTracker';\nimport { ManageTabStops } from '#PRIVATE_FocusTracker/ManageTabStops';\nimport { useDataManager } from '#PRIVATE_TableCommon/hooks/useDataManager';\nimport { userSelectStyles } from '#PRIVATE_TableCommon/themes/Common.css';\nimport {\n ACC_GRID,\n ACC_LIST_BOX,\n ACC_TREE,\n ACC_TREE_GRID\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { useInteractionManager } from './hooks/useInteractionManager';\nimport { useSizingManager } from './hooks/useSizingManager';\nimport { reorderableStyles } from './themes/List.css';\nimport { ListRedwoodTheme } from './themes/redwood/ListTheme';\nimport { ListBody } from './ListBody';\nimport { ListContextMenu } from './ListContextMenu';\nimport { SwipeActionsCollectionContext } from '#UNSAFE_SwipeActions';\n\nconst _emptyKeys = { all: false, keys: new Set() };\n\n/**\n * Component that renders data in a flat list.\n */\nexport const List = forwardRef(function List<K extends string | number, D>(\n {\n allowedDropPositions,\n 'aria-describedby': ariaDescribedBy,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children = () => undefined,\n collectionData,\n contextMenuConfig,\n currentItemOverride,\n currentItemVariant,\n expanded = _emptyKeys as NonNullable<TableListProps<K, D>['expanded']>,\n getIsExpandableRow,\n getRowTopGridline,\n gridlines,\n hasMore = false,\n itemEnterKeyFocusBehavior = 'focusWithin',\n itemPadding = 'disabled',\n itemTooltip,\n cutItemKeys,\n loadMoreAnchorKeys,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n noDataRenderer,\n nonSelectableRowKeys,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDragStart,\n onDrop,\n onExpandedChange,\n onItemAction,\n onLoadMore = () => {},\n onPersistCurrentItem,\n onReorder,\n onSelectedChange,\n promotedSection,\n role,\n scrollerRef,\n scrollPositionOverride,\n selected = _emptyKeys as NonNullable<TableListProps<K, D>['selected']>,\n selectionMode,\n loadingIndicator,\n stickyRowKeys,\n stuckItemVariant,\n testId,\n viewportConfig\n }: TableListProps<K, D>,\n ref?: ForwardedRef<Handle<K>>\n) {\n const listId = 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\n const { direction, forcedColors } = useUser();\n const isHighContrast = forcedColors === 'active';\n const isRtl = direction === 'rtl';\n\n const collectionInteractionContext = useCollectionInteractionContext();\n const isEmbedded = collectionInteractionContext.mode === 'embedded';\n const itemVariant: CurrentItemVariant =\n currentItemVariant ??\n collectionInteractionContext.currentItemVariant ??\n (isEmbedded ? 'highlight' : 'none');\n const accRole = role ?? (isEmbedded ? ACC_LIST_BOX : ACC_GRID);\n\n const {\n managedData: listData,\n keyDataMap,\n onManagedLoadMore: onListLoadMore,\n stickyTopRows\n } = useDataManager<K, D>({\n collectionData,\n hasMore,\n onLoadMore,\n stickyRowKeys\n });\n\n const {\n viewportInfo,\n rowBorderEdges,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\n } = useSizingManager<K, D>({\n listData,\n scrollerRef: rootRef,\n viewportConfig,\n externalScrollerAccessRef: scrollerRef,\n stickyTopRows\n });\n\n const ariaRowCount = hasMore ? -1 : listData.length;\n\n const {\n interactionManagerProps,\n onListSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n focusCurrentCellOrRoot,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n contextMenuContext,\n menuProps,\n disabledRowInteractionKeys,\n reorderItemProps,\n reorderInstructions,\n reorderInstructionsId,\n dndDropIndicatorTop,\n tooltipContent\n } = useInteractionManager<K, D>({\n rootRef,\n viewportInfo,\n ref,\n listId,\n listData,\n keyDataMap,\n hasMore,\n isEmbedded,\n isLayoutRequired: false,\n isTree: accRole === ACC_TREE,\n isTreeGrid: accRole === ACC_TREE_GRID,\n itemTooltip,\n scrollPositionOverride,\n currentItemOverride,\n onPersistCurrentItem,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onSelectedChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n itemEnterKeyFocusBehavior,\n contextMenuConfig,\n onReorder,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n cutItemKeys\n });\n\n // initialize base List style classes\n const { classes: themeClasses } = useComponentTheme<ListVariantOptions>(ListRedwoodTheme, {\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n externalScroller: viewportInfo.isExternalScroller ? 'isExternalScroller' : 'notExternalScroller'\n });\n const classArray = [themeClasses];\n const allowBrowserContextMenu = !(\n getClientHints().platform === 'ios' || getClientHints().platform === 'android'\n );\n if (!allowBrowserContextMenu) {\n classArray.push(userSelectStyles.none);\n }\n const classes = classNames(classArray);\n\n const hasItemGridlines = gridlines?.item === 'visible';\n const hasTopGridline = gridlines?.top === 'visible';\n const hasTopGridlineSetting = gridlines?.top != null;\n const hasBottomGridline = gridlines?.bottom === 'visible';\n\n const isSelectionEnabled =\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle';\n const supportsMultipleSelection =\n selectionMode === 'multiple' || selectionMode === 'multipleToggle';\n\n // honor outer isTabbable context for embedded scenarios\n const { isTabbable } = useContext(TabbableModeContext);\n const isAccGrid = accRole === ACC_TREE_GRID || accRole === ACC_GRID;\n const isAccListBox = accRole === ACC_LIST_BOX;\n const isAccTree = accRole === ACC_TREE;\n\n const getListBodyProps = () => {\n return {\n activeCell: currentActiveCell,\n children,\n currentItemKey: currentCell?.type === 'data' ? currentCell.rowKey : undefined,\n currentItemVariant: itemVariant,\n disabledInteractionKeys: disabledRowInteractionKeys,\n cutItemKeys,\n expanded,\n getIsExpandableRow,\n getRowTopGridline,\n hasBottomGridline,\n hasItemGridlines,\n hasMore,\n hasTopGridline,\n hasTopGridlineSetting,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isApplyCellTabIndex: isTabbable,\n isEmbedded,\n isHighContrast,\n isRtl,\n isDroppable: onDrop != null,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled: selectionMode === 'single',\n isTabbableMode,\n itemTooltip,\n itemPadding,\n listData,\n listId,\n loadMoreAnchorKeys,\n noDataRenderer,\n nonSelectableRowKeys,\n onExpandedChange,\n onLoadMore: onListLoadMore,\n onSelectionChange: onListSelectionChange,\n promotedSection,\n reorderItemProps,\n rowBorderEdges,\n selected,\n loadingIndicator,\n stickyEdgesState,\n stickyTopRows,\n stuckItemVariant,\n transientEdgeState,\n viewportInfo\n };\n };\n\n const isReorderEnabled = onReorder != null;\n const compositeDescription =\n ariaDescribedBy != null\n ? isReorderEnabled\n ? `${ariaDescribedBy} ${reorderInstructionsId}`\n : ariaDescribedBy\n : isReorderEnabled\n ? reorderInstructionsId\n : undefined;\n\n const ariaMultiSelectableProps = supportsMultipleSelection\n ? { 'aria-multiselectable': true }\n : isSelectionEnabled\n ? { 'aria-multiselectable': false }\n : {};\n\n const swipeActionsCollectionContext = useMemo(\n () => ({\n restoreFocus: () => {\n // We use this instead of rootRef.current.focus() as it causes the page to scroll.\n focusCurrentCellOrRoot();\n }\n }),\n [focusCurrentCellOrRoot]\n );\n return (\n <>\n <div\n {...testIdProps}\n ref={rootRefCallback}\n aria-colcount={isAccGrid ? 1 : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={compositeDescription}\n aria-rowcount={isAccGrid ? ariaRowCount : undefined}\n {...ariaMultiSelectableProps}\n class={classes}\n id={listId}\n role={accRole}\n tabIndex={currentActiveCell != null || !isTabbable ? -1 : 0}\n {...interactionManagerProps}>\n <FocusTracker\n isDisabled={!isTabbableMode}\n onFocusStartEdge={onFocusStartEdge}\n onFocusEndEdge={onFocusEndEdge}\n onStartTracking={onStartFocusTracking}>\n <SwipeActionsCollectionContext value={swipeActionsCollectionContext}>\n <ManageTabStops\n isTabbable={isTabbableMode}\n isTrackingDisabled={accRole === ACC_TREE || accRole === ACC_LIST_BOX}>\n <ListBody {...getListBodyProps()} />\n </ManageTabStops>\n </SwipeActionsCollectionContext>\n </FocusTracker>\n {tooltipContent}\n {dndDropIndicatorTop != null && (\n <div\n class={reorderableStyles.dropIndicatorLine}\n style={`top: ${dndDropIndicatorTop}px;`}\n />\n )}\n </div>\n {isReorderEnabled && (\n <span id={reorderInstructionsId}>\n <HiddenAccessible>{reorderInstructions}</HiddenAccessible>\n </span>\n )}\n {contextMenuConfig != null && contextMenuContext != null && (\n <ListContextMenu\n {...menuProps}\n testId={testId != null ? testId + '-menu' : undefined}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n}) as <K extends string | number, D>(\n p: TableListProps<K, D> & { ref?: ForwardedRef<Handle<K>> }\n) => JSX.Element;\n"],"names":["DomUtils.getRowKey","DomUtils.getRowIndexForRowElement","DomUtils.getCellType","keyExtractor","DomUtils.getFirstRenderedRowKey","DomUtils.getLastRenderedRowKey","DomUtils.getElementBySelector","isHTMLScroller","getScrollbarHeight","getVerticalOverflowDiff","getRowKey","findElementByKey","useState","useRef","useContextMenuGesture","useCallback","hasAnyKeys","containsKey","useEffect","reorderableItemStyles","classNames","reorderableStyles","createMultiItemDragImageWithHotspot","createDragImage","useMemo","mergeProps","addKey","removeKey","getTruncatedTextInfos","handleCommonNavigationTooltipGesture","handleCommonMoveTooltipGesture","getCellType","handleLeaveTooltipGesture","getElementContainsFunc","handleEnterActionableMode","allTabbableElements","handleWrapActionableFocus","getActiveElement","getBodyElement","useReorderable","dragToScroll","isSameKey","isLogicalCtrl","useUser","getIsSelectionPending","getRowActionGestureContext","handleRowActionGesture","useLayoutEffect","useCommonTruncationTooltip","useImperativeHandle","UNSAFE_DOM_ACCESS","sparkleStyles","_jsx","useTranslationBundle","listRowStyles","useComponentTheme","ListNoDataRedwoodTheme","ACC_ROW","ACC_GRID_CELL","ACC_TREE_ITEM","ACC_OPTION","listRowStylesHC","textAlignStyles","verticalAlignStyles","listCellStylesHC","listCellStyles","useInteractionStyle","Selector","memo","useReorderableItem","_jsxs","isKeyDefined","_Fragment","dimensionInterpolations","mergeInterpolations","listSkeletonStylesHC","listSkeletonStyles","LOADMORE_STYLE_CLASS","useTheme","globalImages","Fragment","ExpandableContext","LoadMoreCollection","Menu","forwardRef","useId","useTestId","createRef","useCollectionInteractionContext","ACC_LIST_BOX","ACC_GRID","useDataManager","ACC_TREE","ACC_TREE_GRID","ListRedwoodTheme","getClientHints","userSelectStyles","useContext","TabbableModeContext","FocusTracker","SwipeActionsCollectionContext","ManageTabStops","HiddenAccessible"],"mappings":"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"}
1
+ {"version":3,"file":"List-436100e1.js","sources":["../../src/PRIVATE_TableList/utils/ListDomUtils.ts","../../src/PRIVATE_TableList/utils/ListScrollUtils.ts","../../src/PRIVATE_TableList/utils/ListFocusUtils.tsx","../../src/PRIVATE_TableList/hooks/useContextMenu.ts","../../src/PRIVATE_TableList/utils/ListDndUtils.ts","../../src/PRIVATE_TableList/hooks/useDnd.ts","../../src/PRIVATE_TableList/utils/ListActionUtils.ts","../../src/PRIVATE_TableList/utils/ListTooltipUtils.ts","../../src/PRIVATE_TableList/hooks/useFocusHandling.ts","../../src/PRIVATE_TableList/hooks/useItemReorder.ts","../../src/PRIVATE_TableList/utils/ListSelectionUtils.ts","../../src/PRIVATE_TableList/utils/ListNavigationUtils.ts","../../src/PRIVATE_TableList/hooks/useKeyboardHandling.ts","../../src/PRIVATE_TableList/hooks/usePointerHandling.ts","../../src/PRIVATE_TableList/hooks/useScrollHandling.ts","../../src/PRIVATE_TableList/hooks/useTruncationTooltip.tsx","../../src/PRIVATE_TableList/hooks/useInteractionManager.ts","../../src/PRIVATE_TableList/hooks/useSizingManager.ts","../../src/PRIVATE_TableList/Sparkle.tsx","../../src/PRIVATE_TableList/ListNoData.tsx","../../src/PRIVATE_TableList/utils/ListThemeUtils.ts","../../src/PRIVATE_TableList/ListCell.tsx","../../src/PRIVATE_TableList/ListRow.tsx","../../src/PRIVATE_TableList/ListReorderableRow.tsx","../../src/PRIVATE_TableList/ListSkeleton.tsx","../../src/PRIVATE_TableList/ListSkeletonRow.tsx","../../src/PRIVATE_TableList/ListBody.tsx","../../src/PRIVATE_TableList/ListContextMenu.tsx","../../src/PRIVATE_TableList/List.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 { ActiveCell } from '../List.types';\n\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport * as DomUtils from '#PRIVATE_TableCommon/utils/DomUtils';\n\nexport const LIST_ROW_SELECTOR = 'data-oj-list-row';\nexport const LIST_NODATA_SELECTOR = 'data-oj-list-nodata';\nexport const LIST_LOADING_SELECTOR = 'data-oj-list-loading';\nexport const LIST_LOADMORE_SELECTOR = 'data-oj-list-loadmore';\nexport const LIST_LOADMORE_ANCHOR_SELECTOR = 'data-oj-list-loadmore-anchor';\nexport const LIST_FOCUSABLE_SELECTOR = 'data-oj-list-focusable';\n\n/**\n * Returns whether or not auto focus is enabled on the specified cell\n */\nexport const isAutoFocusCell = <K>(\n rootElement: HTMLElement,\n listId: string,\n activeCell: ActiveCell<K>\n) => {\n const cellElement = getElementFromCell(rootElement, listId, activeCell);\n return cellElement != null && cellElement.dataset['ojListAutoFocus'] === 'enabled';\n};\n\n/**\n * Returns the key for the row at the given index\n */\nexport const getRowKeyForRowIndex = <K>(\n rootElement: HTMLElement,\n listId: string,\n index: number\n) => {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowElements.length > index) {\n return DomUtils.getRowKey<K>(rowElements[index] as HTMLElement);\n }\n return undefined;\n};\n\n/**\n * Returns the index of the given row element\n */\nexport const getRowIndexForRowElement = (\n rootElement: HTMLElement,\n listId: string,\n rowElement: HTMLElement\n) => {\n return DomUtils.getRowIndexForRowElement(rootElement, listId, rowElement, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the index of the row for the given key.\n */\nexport function getRowIndexForRowKey<K>(rootElement: HTMLElement, listId: string, rowKey: K) {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === DomUtils.getRowKey(rowElements[i] as HTMLElement)) {\n return i;\n }\n }\n return undefined;\n}\n\n/**\n * Returns the row element for the given row key.\n */\nexport function getRowElementByRowKey<K>(\n rootElement: HTMLElement,\n listId: string,\n rowKey: K\n): HTMLElement | undefined {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n const rowElement = rowElements[i] as HTMLElement;\n if (rowKey === DomUtils.getRowKey(rowElement)) {\n return rowElement;\n }\n }\n return undefined;\n}\n\n/**\n * Helper method to get the cell key definition from an element\n */\nexport function logicalCellExtractor<K extends string | number>(\n element: HTMLElement,\n listId: string,\n cellSelector?: string,\n onlyAncestors?: boolean\n): ActiveCell<K> | undefined {\n const selectorString =\n cellSelector != null ? cellSelector : `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`;\n const startingElement = onlyAncestors ? element.parentElement : element;\n if (startingElement != null) {\n const cellElement = startingElement.closest(selectorString) as HTMLElement;\n if (cellElement != null) {\n const cellType = DomUtils.getCellType(cellElement);\n if (cellType === 'data') {\n return {\n rowKey: keyExtractor<K>(cellElement, `[${LIST_ROW_SELECTOR}='${listId}']`)!,\n type: cellType\n };\n } else if (cellType === 'noData') {\n return { type: cellType };\n } else if (cellType === 'loading' || cellType === 'loadMore') {\n return { type: cellType };\n } else if (cellType === 'loadMoreAnchor') {\n return {\n rowKey: keyExtractor<K>(cellElement, `[${LIST_LOADMORE_ANCHOR_SELECTOR}='${listId}']`)!,\n type: cellType\n };\n }\n }\n }\n return undefined;\n}\n\nexport function rowExtractor(element: HTMLElement | null, listId: string): HTMLElement | undefined {\n const selectorString = `[${LIST_ROW_SELECTOR}='${listId}']`;\n return element?.closest(selectorString) as HTMLElement;\n}\n\nexport function compareClickTargets(element1: EventTarget, element2: EventTarget, listId: string) {\n return (\n rowExtractor(element1 as HTMLElement, listId) === rowExtractor(element2 as HTMLElement, listId)\n );\n}\n\n/**\n * Helper method to get an element from a cell descriptor\n */\nexport function getElementFromCell<K>(\n rootElement: HTMLElement,\n listId: string,\n cell: ActiveCell<K>\n): HTMLElement | undefined {\n if (cell.type === 'data') {\n // data body case\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (const rowElement of rowElements) {\n if (cell.rowKey === DomUtils.getRowKey(rowElement as HTMLElement)) {\n const cellElement = rowElement.querySelector(`[${LIST_FOCUSABLE_SELECTOR}='${listId}']`);\n if (cellElement != null) {\n return cellElement as HTMLElement;\n }\n }\n }\n } else if (cell.type === 'noData') {\n // no data case\n return getNoDataCellElement(rootElement, listId);\n } else if (cell.type === 'loading') {\n // loading skeletons case\n return getLoadingCellElement(rootElement, listId);\n } else if (cell.type === 'loadMore') {\n // loadMore skeletons case\n return getLoadMoreCellElement(rootElement, listId);\n } else if (cell.type === 'loadMoreAnchor') {\n // loadMoreAnchor skeletons case\n const loadMoreElements = rootElement.querySelectorAll(\n `[${LIST_LOADMORE_ANCHOR_SELECTOR}='${listId}']`\n );\n for (const loadMoreElement of loadMoreElements) {\n if (cell.rowKey === DomUtils.getRowKey(loadMoreElement as HTMLElement)) {\n return loadMoreElement as HTMLElement;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Returns the key of the first focusable row in the List\n */\nexport const getFirstRenderedRowKey = <K>(rootElement: HTMLElement, listId: string) => {\n return DomUtils.getFirstRenderedRowKey<K>(rootElement, listId, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the key of the last focusable row in the List\n */\nexport const getLastRenderedRowKey = <K>(rootElement: HTMLElement, listId: string) => {\n return DomUtils.getLastRenderedRowKey<K>(rootElement, listId, LIST_ROW_SELECTOR);\n};\n\n/**\n * Returns the cell definition of the first rendered cell in the List\n */\nexport const getFirstFocusableCell = <K extends string | number>(\n rootElement: HTMLElement,\n listId: string\n): ActiveCell<K> | undefined => {\n const firstCellElement = rootElement.querySelector(\n `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (firstCellElement != null) {\n const firstCellType = DomUtils.getCellType(firstCellElement);\n if (firstCellType === 'noData') {\n return { type: 'noData' };\n }\n return {\n rowKey: keyExtractor<K>(firstCellElement, `[${LIST_ROW_SELECTOR}='${listId}']`)!,\n type: 'data'\n };\n }\n return undefined;\n};\n\n/**\n * Helper method to get the 'loading' cell\n */\nexport const getLoadingCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_LOADING_SELECTOR);\n};\n\n/**\n * Helper method to get the 'loadMore' cell\n */\nexport const getLoadMoreCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_LOADMORE_SELECTOR);\n};\n\n/**\n * Helper method to get the 'noData' cell\n */\nexport const getNoDataCellElement = (rootElement: HTMLElement, listId: string) => {\n return DomUtils.getElementBySelector(rootElement, listId, LIST_NODATA_SELECTOR);\n};\n\n/**\n * Helper method to determine if the 'loading' cell is present in the List\n */\nexport const hasLoadingCell = (rootElement: HTMLElement, listId: string) => {\n return getLoadingCellElement(rootElement, listId) != null;\n};\n\n/**\n * Helper method to determine if the 'loadMore' cell is present in the List\n */\nexport const hasLoadMoreCell = (rootElement: HTMLElement, listId: string) => {\n return getLoadMoreCellElement(rootElement, listId) != null;\n};\n\n/**\n * Helper method to determine if the no data cell is present in the List\n */\nexport const hasNoDataCell = (rootElement: HTMLElement, listId: string) => {\n return getNoDataCellElement(rootElement, listId) != 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 { RefObject } from 'preact';\nimport type { ListScrollPosition, ViewportConfig } from '#UNSAFE_Collection/List.types';\n\nimport type { ScrollDetail, ViewportInfo } from '../List.types';\n\nimport { findElementByKey } from '#utils/PRIVATE_collectionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getScrollbarHeight,\n getVerticalOverflowDiff,\n isHTMLScroller\n} from '#PRIVATE_TableCommon/utils/ScrollUtils';\nimport { getElementFromCell, getRowKeyForRowIndex, LIST_ROW_SELECTOR } from './ListDomUtils';\n\n/**\n * Helper method to get the top scroller offset of the List\n */\nconst _getScrollerTopOffset = (viewportConfig: ViewportConfig) => {\n return viewportConfig.scrollerOffsetTop ?? 0;\n};\n\n/**\n * Helper method to get the bottom scroller offset of the List\n */\nconst _getScrollerBottomOffset = (viewportConfig: ViewportConfig) => {\n return viewportConfig.scrollerOffsetBottom ?? 0;\n};\n\n/**\n * Helper method to return the top position of the scroller element.\n */\nexport const getScrollerTop = (scrollerElement: HTMLElement, viewportConfig: ViewportConfig) => {\n return isHTMLScroller(scrollerElement)\n ? _getScrollerTopOffset(viewportConfig)\n : _getScrollerTopOffset(viewportConfig) + scrollerElement.getBoundingClientRect().top;\n};\n\n/**\n * Helper method to return the bottom position of the scroller element.\n */\nexport const getScrollerBottom = (scrollerElement: HTMLElement, viewportConfig: ViewportConfig) => {\n const bottomOffset = _getScrollerBottomOffset(viewportConfig);\n if (isHTMLScroller(scrollerElement)) {\n return scrollerElement.clientHeight - bottomOffset;\n }\n const scrollbarHeight = getScrollbarHeight(scrollerElement);\n return scrollerElement.getBoundingClientRect().bottom - (bottomOffset + scrollbarHeight);\n};\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nconst _scrollElementIntoView = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTop: number,\n location?: 'inView' | 'top' | 'bottom'\n) => {\n const verticalOverflowDiff = getVerticalOverflowDiff(\n element,\n getScrollerTop(scrollerElement, viewportInfo.viewportConfig) + stickyTop,\n getScrollerBottom(scrollerElement, viewportInfo.viewportConfig)\n );\n const topOverflowDiff = verticalOverflowDiff.top;\n const hasTopOverflow = topOverflowDiff > 0;\n const bottomOverflowDiff = verticalOverflowDiff.bottom;\n const hasBottomOverflow = bottomOverflowDiff > 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasTopOverflow && hasBottomOverflow) {\n return;\n }\n if (location == null || location === 'inView') {\n // if row fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with row\n if (hasBottomOverflow) {\n if (Math.abs(topOverflowDiff) > Math.abs(bottomOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n }\n } else if (hasTopOverflow) {\n if (Math.abs(bottomOverflowDiff) > Math.abs(topOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n }\n } else if (location === 'top') {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n};\n\n/**\n * Helper method to round a desired scrollTop or scrollLeft value to the nearest valid value\n * depending on the client browser.\n */\nconst _roundScrollValue = (value: number, isOver: boolean) => {\n // use Math.floor() and Math.ceil() to ensure we round to nearest containing valid\n // pixel value in either direction as valid scrollTop values are only integers\n return isOver ? Math.ceil(value) : Math.floor(value);\n};\n\n/**\n * Helper to set the vertical scroll position on the List.\n */\nexport function setScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n scrollPosition?: ListScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n scrollPosition\n );\n scrollerElement.scrollTop = y ?? 0;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n scrollPosition?: ListScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let rowKey;\n let useRow = false;\n if (scrollPosition.key != null) {\n // rowKey takes precedence over everything else\n useRow = true;\n rowKey = scrollPosition.key;\n } else if (scrollPosition.offsetY != null && scrollPosition.y == null) {\n // offsetY can be used on its own if it is the only vertical aspect provided\n useRow = true;\n rowKey = getScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n ).key;\n }\n if (useRow) {\n if (rowKey != null) {\n let scrollerTop = getScrollerTop(scrollerElement, viewportInfo.viewportConfig);\n const offsetY = scrollPosition.offsetY ?? 0;\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n // offset the 'scrollerTop' by the closest sticky row height if not sticky itself\n if (!stickyTopRows.includes(i)) {\n const stickyRowCount = stickyTopRows.length;\n if (stickyRowCount > 0) {\n for (let j = stickyRowCount - 1; j >= 0; j--) {\n const stickyIndex = stickyTopRows[j];\n if (stickyIndex < i) {\n scrollerTop += (rowElements[stickyIndex] as HTMLElement).getBoundingClientRect()\n .height;\n break;\n }\n }\n }\n }\n const rowTop = rowElements[i].getBoundingClientRect().top;\n return scrollerElement.scrollTop + rowTop - scrollerTop + offsetY;\n }\n }\n }\n } else if (scrollPosition.y != null) {\n return scrollPosition.y;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollTop value. If no scrollTop value is given,\n * it will use the current scrollTop value of the List.\n */\nexport function getScrollPosition<K>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string\n) {\n // ensure scroll position y value is initialized\n const scrollPosition: ListScrollPosition<K> = {\n y: Math.abs(scrollerElement.scrollTop),\n key: undefined,\n offsetY: undefined\n };\n\n let startIndex = 0;\n let scrollerTop = getScrollerTop(scrollerElement, viewportInfo.viewportConfig);\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n const stickyEdgeCount = stickyEdgesState.length;\n let stuckHeight = 0;\n if (stickyEdgeCount > 0) {\n startIndex = stickyEdgesState[stickyEdgeCount - 1];\n stuckHeight = (rowElements[startIndex] as HTMLElement).getBoundingClientRect().height;\n scrollerTop += stuckHeight;\n }\n for (let i = startIndex; i < rowElements.length; i++) {\n const rowRect = rowElements[i].getBoundingClientRect();\n if (rowRect.bottom > scrollerTop || i === rowElements.length - 1) {\n scrollPosition.key = getRowKeyForRowIndex<K>(rootElement, listId, i)!;\n if (stickyTopRows.includes(i)) {\n scrollPosition.offsetY = scrollerTop - stuckHeight - rowRect.top;\n } else {\n scrollPosition.offsetY = scrollerTop - rowRect.top;\n }\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper function to update the sticky row edges based on the given scrollTop value.\n */\nexport function updateStickyEdges(\n rootElement: HTMLDivElement,\n viewportInfo: ViewportInfo,\n listId: string,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n setStickyEdgesState: (stickyEdgesState: number[]) => void,\n transientEdgeState: number | undefined,\n setTransientEdgeState: (transientEdgeState: number | undefined) => void\n) {\n let isUpdated = false;\n let newTransientEdge: number | undefined = undefined;\n const newStickyEdges = [];\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (scrollerElement != null && scrollerElement.scrollTop > 0 && stickyTopRows.length > 0) {\n const scrollerTop = isHTMLScroller(scrollerElement)\n ? 0\n : scrollerElement.getBoundingClientRect().top;\n const relativeTop = viewportInfo.isExternalScroller\n ? scrollerTop + (viewportInfo.viewportConfig.scrollerOffsetTop ?? 0)\n : scrollerTop;\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < stickyTopRows.length; i++) {\n const rowIndex = stickyTopRows[i];\n const row = rowElements[rowIndex];\n if (row.getBoundingClientRect().top <= relativeTop) {\n newStickyEdges.push(rowIndex);\n if (!stickyEdgesState.includes(rowIndex)) {\n isUpdated = true;\n }\n } else {\n // check if this sticky row has started to push the previous sticky row out of view\n if (i > 0 && rowElements[stickyTopRows[i - 1]].getBoundingClientRect().top < relativeTop) {\n newTransientEdge = rowIndex;\n }\n break;\n }\n }\n }\n if (isUpdated || newStickyEdges.length !== stickyEdgesState.length) {\n setStickyEdgesState(newStickyEdges);\n }\n if (newTransientEdge !== transientEdgeState) {\n setTransientEdgeState(newTransientEdge);\n }\n}\n\nexport function applyScrollDetail<K extends string | number>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n listId: string,\n scrollDetail: ScrollDetail<K>\n) {\n if (scrollDetail.locationY != null) {\n let stickyTop = 0;\n // calculate stickyTop for 'data' and 'loadMoreAnchor' cell types\n if (scrollDetail.cell.rowKey != null) {\n const rowElement = findElementByKey(\n rootElement,\n scrollDetail.cell.rowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (rowElement != null) {\n stickyTop = _getRowElementStickyTop(\n rootElement,\n rowElement,\n stickyTopRows,\n listId,\n scrollDetail.cell.rowKey,\n scrollDetail.cell.type === 'loadMoreAnchor'\n );\n if (scrollDetail.cell.type === 'data') {\n _scrollElementIntoView(\n rowElement,\n scrollerElement,\n viewportInfo,\n stickyTop,\n scrollDetail.locationY\n );\n return;\n }\n }\n }\n if (scrollDetail.isTransient) {\n const cellElement = getElementFromCell(rootElement, listId, scrollDetail.cell);\n if (cellElement != null) {\n _scrollElementIntoView(\n cellElement,\n scrollerElement,\n viewportInfo,\n stickyTop,\n scrollDetail.cell.type === 'loading' && scrollDetail.locationY === 'inView'\n ? 'top'\n : scrollDetail.locationY\n );\n }\n }\n }\n}\n\nfunction _getRowElementStickyTop<K extends string | number>(\n rootElement: HTMLDivElement,\n rowElement: HTMLElement,\n stickyTopRows: number[],\n listId: string,\n rowKey: K,\n isLoadMoreAnchor: boolean\n) {\n let stickyTop = 0;\n if (stickyTopRows.length > 0 && rowKey != null) {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowElements[i] === rowElement) {\n if (!stickyTopRows.includes(i) || isLoadMoreAnchor) {\n for (let j = stickyTopRows.length - 1; j >= 0; j--) {\n const stickyIndex = stickyTopRows[j];\n if (stickyIndex < i || (stickyIndex === i && isLoadMoreAnchor)) {\n stickyTop = (rowElements[stickyIndex] as HTMLElement).getBoundingClientRect().height;\n break;\n }\n }\n }\n break;\n }\n }\n }\n return stickyTop;\n}\n\n/**\n * Helper function to reset the scroll position of the scroller element\n */\nexport const resetScrollPosition = (scrollerElement: HTMLElement) => {\n scrollerElement.scrollTop = 0;\n};\n\n/**\n * Helper function to get the viewport config.\n */\nexport const getViewportConfig = (scrollerRef: RefObject<HTMLElement>, config?: ViewportConfig) => {\n return config ?? { scrollerRef };\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 {\n CollectionData,\n Item,\n ListItemContext as ListItemMenuContext\n} from '#UNSAFE_Collection';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n Cell,\n CurrencyStatus,\n ViewportInfo\n} from '../List.types';\n\nimport { getElementFromCell, getRowIndexForRowKey, isAutoFocusCell } from './ListDomUtils';\nimport { applyScrollDetail, resetScrollPosition } from './ListScrollUtils';\n\n/**\n * Helper function to determine if a given active cell represents a 'transient' state.\n */\nexport function isTransientCell<K>(activeCell?: ActiveCell<K>) {\n return (\n activeCell != null &&\n (activeCell.type === 'loadMore' ||\n activeCell.type === 'loading' ||\n activeCell.type === 'loadMoreAnchor')\n );\n}\n\n/**\n * Helper function to compare two given cell descriptors.\n */\nexport function cellComparator<K>(\n cell1?: ActiveCell<K> | Cell<K>,\n cell2?: ActiveCell<K> | Cell<K>\n) {\n if (cell1 == null) {\n return cell2 == null;\n }\n if (cell2 == null) {\n return false;\n }\n return cell1.type === cell2.type && cell1.rowKey === cell2.rowKey;\n}\n\nexport function getCellContextMenuContextFromCell<K extends string | number, D>(\n rootElement: HTMLElement,\n listId: string,\n listData: CollectionData<K, D>[],\n cell?: ActiveCell<K>\n) {\n if (cell?.type === 'data') {\n const allMenuItems = {};\n const defaultMenuItems = undefined;\n for (const rowData of listData) {\n if (rowData.metadata.key === cell.rowKey) {\n return {\n allMenuItems,\n defaultMenuItems,\n data: rowData.data,\n metadata: { key: cell.rowKey },\n index: getRowIndexForRowKey(rootElement, listId, cell.rowKey)\n } as ListItemMenuContext<K, D>;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Helper function to determine the resulting cell from a cell override.\n */\nfunction _getCellFromCellOverride<K>(cellOverride: Item<K>): Cell<K> | undefined {\n let cellType;\n let cellRowKey;\n if (cellOverride?.rowKey != null) {\n cellType = 'data';\n cellRowKey = cellOverride.rowKey;\n } else {\n return undefined;\n }\n return { type: cellType, rowKey: cellRowKey } as Cell<K>;\n}\n\n/**\n * Helper function to determine the resulting cell type from a cell override.\n */\nfunction _getCellTypeFromCellOverride<K>(cellOverride: Item<K>) {\n if (cellOverride?.rowKey != null) {\n return 'data';\n }\n return 'data';\n}\n\n/**\n * Helper function to apply a current cell override if necessary.\n */\nexport function applyCurrentCellOverride<K extends string | number, D>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n listId: string,\n currencyStatusRef: MutableRef<CurrencyStatus<K, D>>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isEmbeddedSelect: boolean,\n isDataLoaded: boolean,\n currentItemOverride?: Item<K>\n) {\n // ensure any new currentItemOverride settings are applied if necessary\n if (\n currencyStatusRef.current.hasPendingCurrentCellOverride ||\n currencyStatusRef.current.currentItemOverride !== currentItemOverride\n ) {\n if (currentItemOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K>(currentItemOverride);\n if (realizedCell != null) {\n // override cell was determined - apply the override immediately\n onActiveCellChanged(\n { value: realizedCell },\n isAutoFocusCell(rootElement, listId, realizedCell),\n false,\n true\n );\n currencyStatusRef.current.currentItemOverride = currentItemOverride;\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 (getElementFromCell(rootElement, listId, realizedCell) != null) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: realizedCell,\n isTransient: isTransientCell(realizedCell),\n locationY: 'inView'\n });\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (!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.currentItemOverride = currentItemOverride;\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: currentItemOverride });\n currencyStatusRef.current.currentItemOverride = currentItemOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n if (isEmbeddedSelect) {\n // scroll back to the top for embedded select\n resetScrollPosition(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 (getElementFromCell(rootElement, listId, currencyStatusRef.current.currentCell) != null) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: currencyStatusRef.current.currentCell,\n isTransient: isTransientCell(currencyStatusRef.current.currentCell),\n locationY: 'inView'\n });\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (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>(\n cell: ActiveCell<K>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n loadMoreAnchorKeys?: Set<K>\n) {\n if (listData.length > 0) {\n if (cell.type === 'loadMore') {\n return hasMore;\n }\n if (cell.type === 'data') {\n for (let i = 0; i < listData.length; i++) {\n if (listData[i].metadata.key === cell.rowKey) {\n return true;\n }\n }\n }\n if (cell.type === 'loadMoreAnchor') {\n if (loadMoreAnchorKeys?.has(cell.rowKey)) {\n for (let i = 0; i < listData.length; i++) {\n if (listData[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 first cell of a given render.\n */\nfunction _getFirstCell<K, D>(listData: CollectionData<K, D>[]): ActiveCell<K> | undefined {\n if (listData.length > 0) {\n return { rowKey: listData[0].metadata.key, type: 'data' };\n }\n return { type: 'loading' };\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>(\n currencyStatusRef: MutableRef<CurrencyStatus<K, D>>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n isEmbeddedSelect: boolean,\n loadMoreAnchorKeys?: Set<K>,\n currentItemOverride?: Item<K>\n): ActiveCell<K> | undefined {\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.currentItemOverride !== currentItemOverride\n ) {\n if (currentItemOverride != null) {\n // attempt to find the cell the override specifies\n const realizedCell = _getCellFromCellOverride<K>(currentItemOverride);\n if (\n realizedCell != null &&\n _renderIncludesCell(realizedCell, listData, hasMore, loadMoreAnchorKeys)\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(currentItemOverride);\n if (overrideCellType === 'data') {\n if (listData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n } else if (overrideCellType === 'noData' && listData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n }\n return _getFirstCell(listData);\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 (listData.length > 0 && listData !== initialData) {\n const rowKey =\n initialData != null && listData.length > initialData.length\n ? listData[initialData.length].metadata.key\n : listData[listData.length - 1].metadata.key;\n const cell: ActiveCell<K> = { type: 'data', rowKey: rowKey };\n if (_renderIncludesCell(cell, listData, hasMore, loadMoreAnchorKeys)) {\n return cell;\n }\n } else if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n }\n if (_renderIncludesCell(activeCell, listData, hasMore, loadMoreAnchorKeys)) {\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 (_renderIncludesCell(currentCell, listData, hasMore, loadMoreAnchorKeys)) {\n return currentCell;\n }\n }\n // otherwise, find the first row if available\n if (listData.length > 0) {\n const rowKey = listData[0].metadata.key;\n const cell: ActiveCell<K> = { type: 'data', rowKey: rowKey };\n if (_renderIncludesCell(cell, listData, hasMore, loadMoreAnchorKeys)) {\n return cell;\n }\n } else {\n return { type: 'noData' };\n }\n } else if (activeCell.type === 'loadMoreAnchor') {\n if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n // if loadMoreAnchor skeleton is no longer shown, shift to the next row in\n // the data set if possible - otherwise just the closest row / anchor row\n for (let i = 0; i < listData.length; i++) {\n if (listData[i].metadata.key === activeCell.rowKey) {\n if (i === listData.length - 1) {\n return { type: 'data', rowKey: activeCell.rowKey };\n }\n return { type: 'data', rowKey: listData[i + 1].metadata.key };\n }\n }\n return { type: 'data', rowKey: listData[0].metadata.key };\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 (_renderIncludesCell(currentCell, listData, hasMore, loadMoreAnchorKeys)) {\n return currentCell;\n }\n if (currentCell.type === 'data') {\n if (listData.length === 0 && hasMore) {\n // pending 'data' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n } else if (currentCell.type === 'noData' && listData.length === 0 && hasMore) {\n // pending 'noData' override when 'loading' skeletons are shown\n return { type: 'loading' };\n }\n }\n if (listData.length === 0) {\n return hasMore ? { type: 'loading' } : { type: 'noData' };\n }\n return _getFirstCell(listData);\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 { CollectionData, ListItemContext as ListItemMenuContext } from '#UNSAFE_Collection';\nimport type { ActiveCellDetail, TableListProps } from '../List.types';\n\nimport { useCallback, useRef, useState } from 'preact/hooks';\nimport { useContextMenuGesture } from '#hooks/UNSAFE_useContextMenuGesture';\nimport { Menu } from '#UNSAFE_Menu';\nimport { LIST_FOCUSABLE_SELECTOR, logicalCellExtractor } from '../utils/ListDomUtils';\nimport { getCellContextMenuContextFromCell } from '../utils/ListFocusUtils';\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\ntype UseContextMenuProps<K, D> = {\n contextMenuConfig: TableListProps<K, D>['contextMenuConfig'];\n listData: CollectionData<K, D>[];\n listId: string;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n rootRef: RefObject<HTMLDivElement>;\n};\n\nexport const useContextMenu = <K extends string | number, D>({\n contextMenuConfig,\n listData,\n listId,\n onActiveCellChanged,\n rootRef\n}: UseContextMenuProps<K, D>) => {\n const [contextMenuContext, setContextMenuContext] = useState<ListItemMenuContext<K, D>>();\n const [menuProps, setMenuProps] = useState<MenuProps>(_initialMenuProps);\n const currentCellElementRef = useRef<HTMLElement>();\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 `[${LIST_FOCUSABLE_SELECTOR}='${listId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const targetCell = logicalCellExtractor<K>(cellElement, listId);\n if (targetCell != null) {\n onActiveCellChanged({ value: targetCell }, false, false, true);\n const cellContextMenuContext = getCellContextMenuContextFromCell<K, D>(\n rootRef.current,\n listId,\n listData,\n targetCell\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 };\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 { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData } from '#UNSAFE_Collection';\nimport type {\n DndDropPosition,\n DragStartDetail,\n DropDetail,\n ListSelectionMode\n} from '#UNSAFE_Collection/List.types';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { ActiveCell } from '../List.types';\n\nimport { containsKey, hasAnyKeys } from '#utils/UNSAFE_keys';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { LIST_ROW_SELECTOR, rowExtractor } from './ListDomUtils';\n\ntype DragStartPreflightOk = {\n ok: true;\n dragRoot: HTMLElement;\n target: HTMLElement;\n dragHandle: HTMLElement;\n itemContainer: HTMLElement;\n};\n\ntype DragStartPreflightFail = {\n ok: false;\n stopPropagation: boolean;\n};\n\nexport type DragStartPreflightResult = DragStartPreflightOk | DragStartPreflightFail;\n\nexport const isValidRowKey = <K extends string | number>(key: K | undefined): key is K =>\n key !== undefined && !(typeof key === 'number' && Number.isNaN(key));\n\nexport const getClipboardItemKeys = <K extends string | number>({\n activeCell,\n selected,\n selectionMode\n}: {\n activeCell?: ActiveCell<K>;\n selected?: Keys<K>;\n selectionMode?: ListSelectionMode | null;\n}) => {\n if (activeCell?.type !== 'data') {\n return undefined;\n }\n\n if (\n selectionMode != null &&\n selectionMode !== 'none' &&\n hasAnyKeys(selected) &&\n containsKey(selected, activeCell.rowKey)\n ) {\n return selected;\n }\n\n return { all: false as const, keys: new Set([activeCell.rowKey]) };\n};\n\nexport const canPasteToActiveCell = <K extends string | number>(activeCell?: ActiveCell<K>) =>\n activeCell?.type === 'data' || activeCell?.type === 'noData';\n\n// Returns the drag handle element if the gesture originated from a valid handle within this list.\nconst findValidDragHandle = (dragRoot: HTMLElement, target: HTMLElement) => {\n const dragHandle = target.closest('[data-oj-draggable]') as HTMLElement | null;\n return dragHandle && dragRoot.contains(dragHandle) ? dragHandle : null;\n};\n\nexport const resolveDragStartElements = (\n event: DragEvent,\n listId: string,\n dragCandidate: HTMLElement | null\n): DragStartPreflightResult => {\n const dragRoot = event.currentTarget as HTMLElement;\n const target = event.target as HTMLElement | null;\n if (!target || !dragRoot) {\n return { ok: false, stopPropagation: false };\n }\n\n const dragHandle = findValidDragHandle(dragRoot, target);\n if (!dragHandle) {\n return { ok: false, stopPropagation: true };\n }\n\n const pointerTarget = dragCandidate ?? target;\n let itemContainer = rowExtractor(pointerTarget, listId) ?? null;\n if (!itemContainer || !dragRoot.contains(itemContainer)) {\n itemContainer = rowExtractor(target, listId) ?? null;\n }\n if (!itemContainer || !dragRoot.contains(itemContainer)) {\n return { ok: false, stopPropagation: false };\n }\n\n return { ok: true, dragRoot, target, dragHandle, itemContainer };\n};\n\nexport const getDragContext = <K extends string | number, D>(\n target: HTMLElement,\n event: DragEvent,\n listId: string,\n keyDataMap: KeyDataMap<K, D>,\n listData: CollectionData<K, D>[],\n selectedKeys?: Keys<K>\n): DragStartDetail<K> | undefined => {\n const rowNode = rowExtractor(target, listId);\n if (!rowNode) {\n return undefined;\n }\n\n const key = getRowKey<K | undefined>(rowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n\n const listItem = keyDataMap.get(key)?.item;\n if (!listItem) {\n return undefined;\n }\n\n let itemKeys: Keys<K> = { all: false, keys: new Set([key]) };\n if (selectedKeys && containsKey(selectedKeys, key)) {\n if (selectedKeys.all) {\n // Mirror previous behavior: expand \"all\" selections to the currently loaded list keys.\n const keys = new Set<K>();\n for (let i = 0; i < listData.length; i++) {\n const selectedKey = listData[i].metadata.key;\n if (!selectedKeys.deletedKeys.has(selectedKey)) {\n keys.add(selectedKey);\n }\n }\n if (keys.size) {\n itemKeys = { all: false, keys };\n }\n } else if (selectedKeys.keys.size) {\n itemKeys = selectedKeys;\n }\n }\n\n return {\n itemKeys,\n event\n };\n};\n\nexport const getDropContext = <K extends string | number, D>(\n event: DragEvent,\n listId: string,\n rootRef: RefObject<HTMLDivElement>,\n listData: CollectionData<K, D>[],\n hasMore: boolean,\n hasOnDrop: boolean,\n // Avoid repeated `indexOf`/`findIndex` in dragover hot paths by providing an O(1) lookup.\n keyDataMap: KeyDataMap<K, D>\n): DropDetail<K, D> | undefined => {\n let rowNode = rowExtractor(event.target as HTMLElement | null, listId) ?? null;\n let position: DndDropPosition = 'after';\n let key: K | undefined;\n let index = -1;\n let listItem: CollectionData<K, D> | undefined;\n\n if (rowNode) {\n key = getRowKey<K | undefined>(rowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n\n const listItemEntry = keyDataMap.get(key);\n listItem = listItemEntry?.item;\n index = listItemEntry?.index ?? -1;\n if (!listItem || index < 0) {\n return undefined;\n }\n\n const rect = rowNode.getBoundingClientRect();\n position = event.clientY < rect.top + rect.height / 2 ? 'before' : 'after';\n } else {\n const rootNode = rootRef.current;\n const rowNodes = rootNode?.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n const firstRowNode = (rowNodes?.[0] ?? null) as HTMLElement | null;\n const lastRowNode = (rowNodes?.[rowNodes.length - 1] ?? null) as HTMLElement | null;\n if (!firstRowNode || !lastRowNode) {\n if (listData.length > 0 || !hasOnDrop) {\n return undefined;\n }\n // Empty list loading context (e.g. initial skeleton): avoid enabling drop until the list is ready.\n if (hasMore) {\n return undefined;\n }\n // Empty list drop context: allow consumers to accept drop into an empty target list.\n // Note: for an empty list, before/after is not meaningful (and ListView does not show a drop indicator),\n // but DropDetail requires a position, so we set it to 'before' by convention.\n return {\n position: 'before',\n event\n };\n }\n const firstRowRect = firstRowNode.getBoundingClientRect();\n const lastRowRect = lastRowNode.getBoundingClientRect();\n\n if (event.clientY <= firstRowRect.top) {\n // Special top drop zone behavior: announce and treat as \"before first item\".\n rowNode = firstRowNode;\n key = getRowKey<K | undefined>(firstRowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n position = 'before';\n } else if (event.clientY >= lastRowRect.bottom) {\n // Special bottom drop zone behavior: treat dead space as \"after last item\".\n rowNode = lastRowNode;\n key = getRowKey<K | undefined>(lastRowNode);\n if (!isValidRowKey(key)) {\n return undefined;\n }\n position = 'after';\n } else {\n return undefined;\n }\n\n const listItemEntry = keyDataMap.get(key);\n listItem = listItemEntry?.item;\n index = listItemEntry?.index ?? -1;\n if (!listItem || index < 0) {\n return undefined;\n }\n }\n\n const itemContext = {\n data: listItem.data,\n index,\n metadata: listItem.metadata\n };\n\n return {\n item: itemContext,\n position,\n event\n };\n};\n\nexport const isDropAllowedForContext = <K extends string | number, D>(\n context: DropDetail<K, D>,\n listDataLength: number,\n allowedDropPositions?: Set<DndDropPosition>\n) => {\n // Empty list drop context: ignore before/after restrictions (position is not meaningful without an item).\n if (!context.item && listDataLength === 0) {\n return true;\n }\n if (!allowedDropPositions) {\n return true;\n }\n return allowedDropPositions.has(context.position);\n};\n\nexport const clearDragSource = (\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string\n) => {\n if (dragSourcesRef.current.length) {\n for (let i = 0; i < dragSourcesRef.current.length; i++) {\n dragSourcesRef.current[i].classList.remove(draggedClassName);\n }\n }\n dragSourcesRef.current = [];\n};\n\nexport const removeDragImage = (\n dragImgRef: MutableRef<HTMLElement | null>,\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string\n) => {\n clearDragSource(dragSourcesRef, draggedClassName);\n if (dragImgRef.current && dragImgRef.current.parentElement === document.body) {\n document.body.removeChild(dragImgRef.current);\n }\n dragImgRef.current = null;\n};\n\nexport const clearDndState = (\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (\n value: number | undefined | ((prev: number | undefined) => number | undefined)\n ) => void\n) => {\n dndDropIndicatorTopRef.current = undefined;\n if (dndDropIndicatorRafIdRef.current != null) {\n // Cancel any queued indicator update when a drag gesture ends/leaves/drops.\n cancelAnimationFrame(dndDropIndicatorRafIdRef.current);\n dndDropIndicatorRafIdRef.current = undefined;\n }\n setDndDropIndicatorTop(undefined);\n};\n\nexport const cleanupCanceledDragStart = (\n event: DragEvent,\n dragCandidateRef: MutableRef<HTMLElement | null>,\n dragImgRef: MutableRef<HTMLElement | null>,\n dragSourcesRef: MutableRef<HTMLElement[]>,\n draggedClassName: string,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (\n value: number | undefined | ((prev: number | undefined) => number | undefined)\n ) => void\n) => {\n event.dataTransfer?.clearData?.();\n dragCandidateRef.current = null;\n removeDragImage(dragImgRef, dragSourcesRef, draggedClassName);\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n};\n\nexport const flushDndIndicator = (\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (updater: (prev: number | undefined) => number | undefined) => void\n) => {\n dndDropIndicatorRafIdRef.current = undefined;\n setDndDropIndicatorTop((prev) => {\n const next = dndDropIndicatorTopRef.current;\n return prev !== next ? next : prev;\n });\n};\n\nexport const scheduleDndIndicatorUpdate = (\n nextTop: number | undefined,\n dndDropIndicatorTopRef: MutableRef<number | undefined>,\n dndDropIndicatorRafIdRef: MutableRef<number | undefined>,\n setDndDropIndicatorTop: (updater: (prev: number | undefined) => number | undefined) => void\n) => {\n dndDropIndicatorTopRef.current = nextTop;\n if (dndDropIndicatorRafIdRef.current != null) {\n return;\n }\n if (typeof requestAnimationFrame === 'function') {\n dndDropIndicatorRafIdRef.current = requestAnimationFrame(() =>\n flushDndIndicator(dndDropIndicatorRafIdRef, dndDropIndicatorTopRef, setDndDropIndicatorTop)\n );\n } else {\n flushDndIndicator(dndDropIndicatorRafIdRef, dndDropIndicatorTopRef, setDndDropIndicatorTop);\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 { CollectionData } from '#UNSAFE_Collection';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { TableListProps, ViewportInfo } from '../List.types';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'preact/hooks';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\nimport { styles as reorderableItemStyles } from '#hooks/PRIVATE_useReorderable/themes/ReorderableItemStyles.css';\nimport { createDragImage, createMultiItemDragImageWithHotspot } from '#utils/PRIVATE_dndUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { reorderableStyles } from '../themes/List.css';\nimport {\n cleanupCanceledDragStart,\n clearDndState,\n getDragContext,\n getDropContext,\n isDropAllowedForContext,\n isValidRowKey,\n removeDragImage,\n resolveDragStartElements,\n scheduleDndIndicatorUpdate\n} from '../utils/ListDndUtils';\nimport { getRowElementByRowKey } from '../utils/ListDomUtils';\n\ntype UseDndOptions<K extends string | number, D> = {\n allowedDropPositions: TableListProps<K, D>['allowedDropPositions'];\n hasMore: boolean;\n keyDataMap: KeyDataMap<K, D>;\n listData: CollectionData<K, D>[];\n listId: string;\n onDragStart: TableListProps<K, D>['onDragStart'];\n onDrag: TableListProps<K, D>['onDrag'];\n onDragEnd: TableListProps<K, D>['onDragEnd'];\n onDragEnter: TableListProps<K, D>['onDragEnter'];\n onDragLeave: TableListProps<K, D>['onDragLeave'];\n onDragOver: TableListProps<K, D>['onDragOver'];\n onDrop: TableListProps<K, D>['onDrop'];\n rootRef: RefObject<HTMLDivElement>;\n selected: TableListProps<K, D>['selected'];\n viewportInfo: ViewportInfo;\n};\n\nexport function useDnd<K extends string | number, D>({\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n rootRef,\n selected,\n viewportInfo\n}: UseDndOptions<K, D>) {\n const [dndDropIndicatorTop, setDndDropIndicatorTop] = useState<number | undefined>(undefined);\n // Dragover can fire at very high frequency. Batch indicator updates to once-per-frame to avoid\n // forcing a rerender on every dragover event.\n const dndDropIndicatorTopRef = useRef<number | undefined>(undefined);\n const dndDropIndicatorRafIdRef = useRef<number | undefined>(undefined);\n\n const dragCandidate = useRef<HTMLElement | null>(null);\n const dragImgRef = useRef<HTMLElement | null>(null);\n const dragSourcesRef = useRef<HTMLElement[]>([]);\n\n const isDragSourceEnabled = onDragStart != null;\n const isDropTargetEnabled = onDrop != null;\n\n useEffect(() => {\n return () => {\n if (dndDropIndicatorRafIdRef.current != null) {\n // Prevent a queued animation frame from updating state after unmount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n cancelAnimationFrame(dndDropIndicatorRafIdRef.current);\n }\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n };\n }, []);\n\n const onPointerDown = useCallback((event: PointerEvent) => {\n dragCandidate.current = event.target as HTMLElement;\n }, []);\n\n const handleDragStart = useCallback(\n (event: DragEvent) => {\n // Drag lifecycle is only meaningful for lists that opted into drag-start API.\n const onDragStartCb = onDragStart;\n if (!onDragStartCb) {\n return;\n }\n\n const preflight = resolveDragStartElements(event, listId, dragCandidate.current);\n if (!preflight.ok) {\n event.preventDefault();\n if (preflight.stopPropagation) {\n event.stopPropagation();\n }\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n const { dragRoot, dragHandle, itemContainer } = preflight;\n\n const context = getDragContext(itemContainer, event, listId, keyDataMap, listData, selected);\n if (!context) {\n event.preventDefault();\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n const dragImageClasses = classNames([\n reorderableItemStyles.itemDragger,\n reorderableStyles.reorderableItemDragger\n ]);\n\n const dragKeys = context.itemKeys.all ? [] : Array.from(context.itemKeys.keys.values());\n\n if (dragKeys.length > 1) {\n // Avoid repeated DOM scans when resolving multiple selected rows.\n const rowElements = dragRoot.querySelectorAll(`[data-oj-list-row='${listId}']`);\n const rowByKey = new Map<K, HTMLElement>();\n for (let i = 0; i < rowElements.length; i++) {\n const rowEl = rowElements[i] as HTMLElement;\n const key = getRowKey<K | undefined>(rowEl);\n if (isValidRowKey(key)) {\n rowByKey.set(key, rowEl);\n }\n }\n\n const dragTargets = dragKeys\n .map((key) => rowByKey.get(key) ?? getRowElementByRowKey(dragRoot, listId, key))\n .filter((el): el is HTMLElement => el != null);\n\n // Apply dragged styling to all dragged rows that are currently in the DOM.\n // (Virtualized/offscreen rows may not be present and cannot be styled.)\n const draggedRowSet = new Set<HTMLElement>();\n draggedRowSet.add(itemContainer);\n for (let i = 0; i < dragTargets.length; i++) {\n draggedRowSet.add(dragTargets[i]);\n }\n dragSourcesRef.current = Array.from(draggedRowSet);\n for (let i = 0; i < dragSourcesRef.current.length; i++) {\n dragSourcesRef.current[i].classList.add(reorderableItemStyles.itemDragged);\n }\n\n if (dragTargets.length > 1) {\n const { dragImage, x, y } = createMultiItemDragImageWithHotspot(\n dragTargets,\n dragImageClasses,\n itemContainer,\n dragHandle\n );\n dragImgRef.current = dragImage;\n event.dataTransfer?.setDragImage(dragImage, x, y);\n try {\n onDragStartCb(context);\n } catch (e) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n throw e;\n }\n if (event.defaultPrevented) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n return;\n }\n dragImgRef.current = createDragImage(itemContainer, dragImageClasses);\n } else {\n dragImgRef.current = createDragImage(itemContainer, dragImageClasses);\n dragSourcesRef.current = [itemContainer];\n itemContainer.classList.add(reorderableItemStyles.itemDragged);\n }\n\n if (itemContainer !== dragHandle) {\n event.dataTransfer?.setDragImage(\n dragImgRef.current,\n dragHandle.offsetLeft + dragHandle.offsetWidth / 2,\n dragHandle.offsetTop + dragHandle.offsetHeight / 2\n );\n } else {\n event.dataTransfer?.setDragImage(\n dragImgRef.current,\n dragHandle.offsetWidth / 2,\n dragHandle.offsetHeight / 2\n );\n }\n try {\n onDragStartCb(context);\n } catch (e) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n throw e;\n }\n if (event.defaultPrevented) {\n cleanupCanceledDragStart(\n event,\n dragCandidate,\n dragImgRef,\n dragSourcesRef,\n reorderableItemStyles.itemDragged,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n },\n [keyDataMap, listData, listId, onDragStart, setDndDropIndicatorTop, selected]\n );\n\n const handleDrag = useCallback(\n (event: DragEvent) => {\n onDrag?.({ event });\n },\n [onDrag]\n );\n\n const handleDragEnd = useCallback(\n (event: DragEvent) => {\n dragCandidate.current = null;\n removeDragImage(dragImgRef, dragSourcesRef, reorderableItemStyles.itemDragged);\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n onDragEnd?.({\n event\n } as Parameters<NonNullable<TableListProps<K, D>['onDragEnd']>>[0]);\n },\n [onDragEnd]\n );\n\n const handleDragEnter = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (context && isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n onDragEnter?.(context);\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragEnter,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const handleDragLeave = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (context && isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n onDragLeave?.(context);\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDragLeave,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const handleDragOver = useCallback(\n (event: DragEvent) => {\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (!context) {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n if (!isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n return;\n }\n\n const rootNode = rootRef.current;\n const scrollerNode = viewportInfo.viewportConfig.scrollerRef.current;\n const scrollOffset = viewportInfo.isExternalScroller ? 0 : scrollerNode?.scrollTop ?? 0;\n const rootRect = rootNode?.getBoundingClientRect();\n const item = context.item;\n if (!item) {\n // UX: do not show the drop indicator when dropping into an empty list.\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n onDragOver?.(context);\n // Only advertise drop support when a drop handler exists.\n // `preventDefault()` here enables dropping; apps accept/reject by handling (or no-oping) in `onDrop`.\n if (onDrop && !context.event.defaultPrevented) {\n context.event.preventDefault();\n }\n return;\n }\n\n if (rootNode && rootRect) {\n const currentRowNode = getRowElementByRowKey(rootNode, listId, item.metadata.key);\n if (currentRowNode) {\n const currentRect = currentRowNode.getBoundingClientRect();\n let boundaryClientY =\n context.position === 'before' ? currentRect.top : currentRect.bottom;\n\n if (context.position === 'after') {\n const nextItem = listData[item.index + 1];\n if (nextItem) {\n const nextRowNode = getRowElementByRowKey(rootNode, listId, nextItem.metadata.key);\n if (nextRowNode) {\n boundaryClientY = nextRowNode.getBoundingClientRect().top;\n }\n }\n }\n\n const nextTop = boundaryClientY - rootRect.top + scrollOffset;\n scheduleDndIndicatorUpdate(\n nextTop,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n } else {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n } else {\n scheduleDndIndicatorUpdate(\n undefined,\n dndDropIndicatorTopRef,\n dndDropIndicatorRafIdRef,\n setDndDropIndicatorTop\n );\n }\n\n onDragOver?.(context);\n // Only call preventDefault when this ListView is acting as a drop target.\n // Drag-only sources should not advertise themselves as valid drop targets.\n if (onDrop && !context.event.defaultPrevented) {\n context.event.preventDefault();\n }\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n isDropTargetEnabled,\n listData,\n listId,\n onDragOver,\n onDrop,\n rootRef,\n viewportInfo\n ]\n );\n\n const handleDrop = useCallback(\n (event: DragEvent) => {\n clearDndState(dndDropIndicatorTopRef, dndDropIndicatorRafIdRef, setDndDropIndicatorTop);\n const context = getDropContext(\n event,\n listId,\n rootRef,\n listData,\n hasMore,\n isDropTargetEnabled,\n keyDataMap\n );\n if (!context || !isDropAllowedForContext(context, listData.length, allowedDropPositions)) {\n return;\n }\n onDrop?.(context);\n },\n [\n allowedDropPositions,\n hasMore,\n keyDataMap,\n listData,\n listId,\n onDrop,\n isDropTargetEnabled,\n rootRef\n ]\n );\n\n const dndProps = useMemo(() => {\n return mergeProps(\n isDragSourceEnabled\n ? {\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n onPointerDown\n }\n : {},\n isDropTargetEnabled\n ? {\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop\n }\n : {}\n );\n }, [\n handleDrag,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragOver,\n handleDragStart,\n handleDrop,\n isDragSourceEnabled,\n isDropTargetEnabled,\n onPointerDown\n ]);\n\n return { dndProps, dndDropIndicatorTop };\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 { Metadata } from '#UNSAFE_Collection';\nimport type { ActiveCell, TableListProps } from '../List.types';\n\nimport { addKey, containsKey, removeKey } from '#utils/UNSAFE_keys';\nimport { getElementFromCell } from './ListDomUtils';\n\n/**\n * Helper function to get the item action context from row information\n */\nexport const getActionContext = <K extends string | number, D>(\n index: number,\n metadata: Metadata<K>,\n data: D\n) => {\n return { metadata, data, index };\n};\n\nexport const isCellExpandable = <K>(\n rootElement: HTMLElement,\n listId: string,\n cell: ActiveCell<K>\n) => {\n if (cell.type === 'data') {\n const cellElement = getElementFromCell(rootElement, listId, cell);\n return cellElement != null && cellElement.hasAttribute('aria-expanded');\n }\n return false;\n};\n\nexport const handleToggleExpandedGesture = <K, D>(\n rowKey: K,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: NonNullable<TableListProps<K, D>['onExpandedChange']>,\n target: EventTarget | null\n) => {\n let newExpandedKeys;\n if (!containsKey(expanded, rowKey)) {\n newExpandedKeys = addKey(expanded, rowKey);\n } else {\n newExpandedKeys = removeKey(expanded, rowKey, false);\n }\n onExpandedChange({ value: newExpandedKeys, target });\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 { ActiveCell } from '../List.types';\n\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n handleLeaveTooltipGesture,\n handleMoveTooltipGesture as handleCommonMoveTooltipGesture,\n handleNavigationTooltipGesture as handleCommonNavigationTooltipGesture\n} from '#PRIVATE_TableCommon/utils/TooltipGestureUtils';\nimport {\n getTruncatedTextInfos,\n type TruncatedTextInfo\n} from '#PRIVATE_TableCommon/utils/TruncationTooltipUtils';\nimport { getElementFromCell, LIST_FOCUSABLE_SELECTOR, logicalCellExtractor } from './ListDomUtils';\n\nexport const LIST_TOOLTIP_SELECTOR = 'data-oj-private-list-tooltip';\nconst LIST_TOOLTIP_ENABLED_SELECTOR = `[${LIST_TOOLTIP_SELECTOR}='enabled']`;\nconst TRUNCATED_TEXT_SEPARATOR = ' - ';\n\nconst getTooltipCandidates = (\n cellElement: HTMLElement,\n targetElement?: HTMLElement\n): HTMLElement[] => {\n const candidateElement = targetElement?.closest(LIST_TOOLTIP_ENABLED_SELECTOR);\n if (candidateElement != null && cellElement.contains(candidateElement)) {\n return [candidateElement as HTMLElement];\n }\n\n if (cellElement.getAttribute(LIST_TOOLTIP_SELECTOR) === 'enabled') {\n return [cellElement];\n }\n\n const candidateElements = Array.from(\n cellElement.querySelectorAll(LIST_TOOLTIP_ENABLED_SELECTOR)\n ) as HTMLElement[];\n\n return candidateElements;\n};\n\n/**\n * Helper method to find truncated marked text inside a List cell.\n */\nexport const getListTruncatedTextInfo = (\n cellElement: HTMLElement,\n targetElement?: HTMLElement\n): TruncatedTextInfo | undefined => {\n const candidateElements = getTooltipCandidates(cellElement, targetElement);\n const truncatedTextInfos = getTruncatedTextInfos(candidateElements);\n if (truncatedTextInfos.length > 0) {\n return {\n element: truncatedTextInfos[0].element,\n text: truncatedTextInfos.map(({ text }) => text).join(TRUNCATED_TEXT_SEPARATOR)\n };\n }\n return undefined;\n};\n\n/**\n * Helper function to handle updating the List's tooltip due to a focus navigation gesture.\n */\nexport function handleNavigationTooltipGesture<K>(\n rootElement: HTMLDivElement,\n listId: string,\n cell: ActiveCell<K>,\n showTooltip: (cell: ActiveCell<K>) => void,\n hideTooltip: (isImmediate?: boolean) => void\n) {\n handleCommonNavigationTooltipGesture(\n rootElement,\n listId,\n cell,\n getElementFromCell,\n (cell): cell is ActiveCell<K> => cell.type === 'data',\n showTooltip,\n hideTooltip\n );\n}\n\n/**\n * Helper function to handle updating the List's tooltip due to a pointer move gesture.\n */\nexport function handleMoveTooltipGesture<K extends string | number>(\n listId: string,\n event: PointerEvent,\n showTooltip: (cell: ActiveCell<K>, targetElement?: HTMLElement) => void,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) {\n handleCommonMoveTooltipGesture<ActiveCell<K>>({\n collectionId: listId,\n event,\n focusableSelector: LIST_FOCUSABLE_SELECTOR,\n tooltipId,\n showTooltip,\n hideTooltip,\n getCellFromElement: (cellElement) => logicalCellExtractor<K>(cellElement, listId),\n isTooltipCellElement: (cellElement) => getCellType(cellElement) === 'data',\n getShowTooltipTargetElement: (event) => event.target as HTMLElement\n });\n}\n\n/**\n * Helper function to handle updating the List's tooltip due to a pointer leave gesture.\n */\nexport const handleLeaveListTooltipGesture = (\n rootElement: HTMLDivElement,\n event: PointerEvent,\n hideTooltip: (isImmediate?: boolean) => void,\n tooltipId: string\n) => {\n handleLeaveTooltipGesture(rootElement, event, hideTooltip, tooltipId);\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 { FocusableElement } from '#utils/PRIVATE_tabbableUtils';\nimport type { CollectionData, CurrentKeyDetail, Item } from '#UNSAFE_Collection';\nimport type { FocusGuardCallbackDetail } from '#PRIVATE_FocusTracker';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n CurrencyStatus,\n ScrollDetail,\n ViewportInfo\n} from '../List.types';\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} from '#utils/PRIVATE_tabbableUtils';\nimport { getCellType } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isCellExpandable } from '../utils/ListActionUtils';\nimport { getElementFromCell, isAutoFocusCell, logicalCellExtractor } from '../utils/ListDomUtils';\nimport {\n applyCurrentCellOverride,\n cellComparator,\n determineActiveCell,\n isTransientCell\n} from '../utils/ListFocusUtils';\nimport { applyScrollDetail } from '../utils/ListScrollUtils';\nimport { handleNavigationTooltipGesture } from '../utils/ListTooltipUtils';\n\ntype UseFocusHandlingProps<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n stickyTopRows: number[];\n listId: string;\n listData: CollectionData<K, D>[];\n hasMore: boolean;\n loadMoreAnchorKeys?: Set<K>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n currentItemOverride?: Item<K>;\n onPersistCurrentItem?: (detail: CurrentKeyDetail<K>) => void;\n isEmbedded: boolean;\n allowTabbableMode: boolean;\n itemEnterKeyFocusBehavior: 'none' | 'focusWithin';\n isDataLoaded: boolean;\n reorderContext?: { currentItemKey: MutableRef<K | undefined> };\n deferredScrollDetail?: ScrollDetail<K>;\n deferredScrollDetailRef: RefObject<ScrollDetail<K> | undefined>;\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void;\n showTooltip: (cell: ActiveCell<K>) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n isTruncationTooltipEnabled: 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 List\n */\nexport function useFocusHandling<K extends string | number, D>({\n rootRef,\n viewportInfo,\n stickyTopRows,\n listId,\n listData,\n hasMore,\n loadMoreAnchorKeys,\n selectionExtensionElementRef,\n currentItemOverride,\n onPersistCurrentItem,\n isEmbedded,\n allowTabbableMode,\n itemEnterKeyFocusBehavior,\n isDataLoaded,\n reorderContext,\n deferredScrollDetail,\n deferredScrollDetailRef,\n updateDeferredScrollDetail,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n}: UseFocusHandlingProps<K, D>) {\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\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> | undefined>(undefined);\n const currencyStatusRef = useRef<CurrencyStatus<K, D>>({\n hasPendingCurrentCellOverride: false,\n hasPendingCurrentCellOverrideScroll: false\n });\n\n const wasTransient = isTransientCell(currencyStatusRef.current.activeCell);\n const currentActiveCell = determineActiveCell<K, D>(\n currencyStatusRef,\n listData,\n hasMore,\n isEmbedded,\n loadMoreAnchorKeys,\n currentItemOverride\n );\n\n // intercept onPersistCurrentItem calls to ensure internal state is updated appropriately\n const onActiveCellChanged = useMemo(() => {\n return (\n detail: ActiveCellDetail<K>,\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 // make sure the reorder currentItemKey is always up to date\n if (reorderContext != null) {\n reorderContext.currentItemKey.current = newActiveCell?.rowKey;\n }\n\n currencyStatusRef.current.activeCell = newActiveCell;\n if (!isTransientCell(newActiveCell)) {\n const newCurrentCell = newActiveCell;\n // only update current cell when 'active' is not one of the transient 'skeleton' regions\n // TODO: we should be persisting even when undefined here, but API needs to update\n if (onPersistCurrentItem != null && newCurrentCell?.rowKey != null) {\n onPersistCurrentItem({ value: newCurrentCell.rowKey });\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.currentItemOverride = currentItemOverride;\n currencyStatusRef.current.hasPendingCurrentCellOverride = false;\n currencyStatusRef.current.hasPendingCurrentCellOverrideScroll = false;\n } else if (newActiveCell?.type === 'loadMore') {\n currencyStatusRef.current.loadMoreInitialData = listData;\n }\n if (!isSelectionExtension) {\n selectionExtensionElementRef.current = undefined;\n if (isAutoFocus && newActiveCell != null) {\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 isTransient: isTransientCell(newActiveCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n };\n }, [\n currentItemOverride,\n isTabbableMode,\n listData,\n onPersistCurrentItem,\n selectionExtensionElementRef,\n updateDeferredScrollDetail,\n reorderContext\n ]);\n\n // Helper function to set the List's focus tracking state to reflect that it is inactive.\n const _setAsInactive = useCallback(() => {\n hasFocusRef.current = false;\n isTabDownDetectedRef.current = false;\n\n setIsTabbableMode(false);\n setIsShowFocusRing(false);\n hideTooltip();\n }, [hideTooltip]);\n\n // Helper function to set the List's focus tracking state to reflect that one of its cells has focus.\n const _enableNavigationMode = useCallback(\n (cell: ActiveCell<K>, 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 && isTruncationTooltipEnabled) {\n handleNavigationTooltipGesture(rootElement, listId, cell, showTooltip, hideTooltip);\n }\n onActiveCellChanged({ value: cell }, false, false, skipScrollCellIntoView);\n }\n },\n [\n rootRef,\n viewportInfo,\n listId,\n onActiveCellChanged,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n ]\n );\n\n // Helper function to set the List's focus tracking state to reflect that it is tabbable.\n const _enableTabbableMode = useCallback(\n (cell: ActiveCell<K>, 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 List'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>) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n const cellElement = getElementFromCell(rootElement, listId, cell);\n if (cellElement != null) {\n cellElement.focus({ preventScroll: true });\n } else {\n rootElement.focus({ preventScroll: true });\n }\n }\n },\n [rootRef, listId]\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 List. 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 List. 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 List. 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;\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>(targetElement, listId);\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 List. 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) {\n _setAsInactive();\n if (isRenderCycle.current) {\n // store element that loses focus during a render cycle for focus recapture logic\n blurredRenderCycleElementRef.current = event.target as FocusableElement;\n }\n } else if (!getElementContainsFunc(rootElement, true)(relatedTarget)) {\n // if focus is moving to a valid element, do not prime focus recapture logic\n _setAsInactive();\n }\n }\n },\n [rootRef, isShowFocusRing, _setAsInactive]\n );\n\n // KeyDown handler for the outer List. 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 (activeCell != null) {\n if (event.key === 'F2') {\n if (isTabbableMode) {\n _disableTabbableMode(activeCell);\n } else if (allowTabbableMode) {\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 if (isTabbableMode) {\n _disableTabbableMode(activeCell);\n event.stopPropagation();\n }\n } else if (\n event.key === 'Enter' &&\n !isTabbableMode &&\n !isEmbedded &&\n allowTabbableMode &&\n itemEnterKeyFocusBehavior === 'focusWithin' &&\n !isCellExpandable(rootElement, listId, activeCell)\n ) {\n _enableTabbableMode(activeCell, true);\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 isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n },\n [\n rootRef,\n listId,\n viewportInfo,\n isTabbableMode,\n isEmbedded,\n allowTabbableMode,\n activeCell,\n _enableTabbableMode,\n _disableTabbableMode,\n updateDeferredScrollDetail,\n itemEnterKeyFocusBehavior\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 isTransient: isTransientCell(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 List'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, listId, activeCell) as FocusableElement\n ),\n (value?: ActiveCell<K>) => {\n setIsTabbableMode(value != undefined);\n }\n );\n }\n },\n [rootRef, activeCell, listId]\n );\n\n // Callback for the outer List's FocusTracker usage.\n const onFocusStartEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(true, detail.tabbableElements, (value?: ActiveCell<K>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Callback for the outer List's FocusTracker usage.\n const onFocusEndEdge = useCallback((detail: FocusGuardCallbackDetail) => {\n handleWrapActionableFocus(false, detail.tabbableElements, (value?: ActiveCell<K>) => {\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, listId, currentActiveCell);\n if (cellElement != null) {\n if (isCaptureFocus) {\n applyScrollDetail(rootElement, scrollerElement, viewportInfo, stickyTopRows, listId, {\n cell: currentActiveCell,\n isTransient: isTransientCell(currentActiveCell),\n locationX: 'inView',\n locationY: 'inView'\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, listId, 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) {\n _disableTabbableMode(currentActiveCell);\n } else {\n handleEnterActionableMode(\n false,\n allTabbableElements(cellElement),\n (value?: ActiveCell<K>) => {\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 stickyTopRows,\n listId,\n deferredScrollDetail\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 stickyTopRows,\n listId,\n currencyStatusRef,\n onActiveCellChanged,\n isEmbedded,\n isDataLoaded,\n currentItemOverride\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 (blurredRenderCycleElement != null && activeElement === getBodyElement(rootElement)) {\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 { RefObject } from 'preact';\nimport type { Dispatch, StateUpdater } from 'preact/hooks';\nimport type { ReorderDetail } from '#UNSAFE_Collection';\n\nimport { useMemo, useState } from 'preact/hooks';\nimport { useReorderable } from '#hooks/PRIVATE_useReorderable';\nimport { dragToScroll } from '#utils/PRIVATE_collectionUtils';\n\ntype useListReorderProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n scrollerRef: RefObject<HTMLElement>;\n itemSelector: string;\n onReorder?: (detail: ReorderDetail<K>) => void;\n};\n\nexport type ReorderItemProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n dragKey?: K;\n setDragKey: Dispatch<StateUpdater<K | undefined>>;\n onReorder?: (detail: ReorderDetail<K>) => void;\n};\n\nexport const useItemReorder = <K extends string | number>({\n rootRef,\n scrollerRef,\n onReorder,\n itemSelector\n}: useListReorderProps<K>) => {\n const isReorderEnabled = onReorder != undefined;\n\n const [dragKey, setDragKey] = useState<K | undefined>(undefined);\n const { reorderProps, reorderContext, reorderInstructionsId, reorderInstructions } =\n useReorderable({\n onReorder,\n rootRef,\n itemSelector,\n isDisabled: !isReorderEnabled,\n columns: 1\n });\n\n const reorderItemProps: ReorderItemProps<K> = useMemo(() => {\n return { dragKey, setDragKey, onReorder, rootRef };\n }, [dragKey, onReorder, rootRef]);\n\n if (!isReorderEnabled) {\n return {\n reorderProps: {},\n reorderKeyboardProps: reorderProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n }\n\n const handleDragOver = (event: DragEvent) => {\n if (dragKey !== undefined) {\n dragToScroll(event, dragKey !== undefined, scrollerRef.current);\n }\n };\n\n return {\n reorderProps: { onDragOver: handleDragOver },\n reorderKeyboardProps: reorderProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\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 { SelectionDetail } from '#UNSAFE_Collection';\nimport type { ListSelectionMode } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, ActiveCellDetail, ScrollDetail } from '../List.types';\n\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { addKey, containsKey, isSameKey, removeKey } from '#utils/UNSAFE_keys';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport {\n getElementFromCell,\n getFirstFocusableCell,\n getRowKeyForRowIndex,\n getRowIndexForRowElement,\n LIST_ROW_SELECTOR,\n logicalCellExtractor,\n rowExtractor\n} from './ListDomUtils';\nimport { isTransientCell } from './ListFocusUtils';\n\n/**\n * Helper function to handle a selection gesture (click, spacebar, etc...)\n */\nexport function handleSelectionGesture<K extends string | number>(\n listId: string,\n targetElement: HTMLElement,\n isModifierKey: boolean,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected != null ? selected : (emptyKeys as Keys<K>);\n\n const newRowKey = keyExtractor<K>(targetElement, `[${LIST_ROW_SELECTOR}='${listId}']`);\n if (newRowKey != null && !nonSelectableRowKeys?.has(newRowKey)) {\n if (\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle'\n ) {\n const isToggleSelectionMode = isDropDownSelection || selectionMode === '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 !== '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 }\n }\n if (!isSameKey(selectedRows, selected)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, false);\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n startIndex: number,\n endIndex: number,\n isRowGesture: boolean,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>,\n previousEndIndex?: number\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected != null ? selected : (emptyKeys as Keys<K>);\n\n if (isRowGesture) {\n if (selectionMode === 'multiple' || selectionMode === 'multipleToggle') {\n const isToggleSelectionMode = isDropDownSelection || selectionMode === '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, listId, i);\n if (key != null && !nonSelectableRowKeys?.has(key)) {\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\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, listId, 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, listId, 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, listId, i);\n if (key != null && !nonSelectableRowKeys?.has(key)) {\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\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, listId, 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, listId, i);\n selectedRows = removeKey(selectedRows, key, false) as Keys<K>;\n }\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, true);\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n activeCell: ActiveCell<K>,\n selectionMode?: ListSelectionMode\n) {\n const targetRowElement = rowExtractor(targetElement, listId);\n if (\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle') &&\n activeCell.type === 'data' &&\n targetRowElement != null\n ) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null && targetRowElement != null) {\n return (\n getRowIndexForRowElement(\n rootElement,\n listId,\n activeCellElement.parentElement as HTMLElement\n ) != null && getRowIndexForRowElement(rootElement, listId, targetRowElement) != null\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>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n activeCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const targetRowElement = rowExtractor(targetElement, listId);\n if (targetRowElement != null) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null) {\n if (\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle') &&\n activeCell.type === 'data'\n ) {\n let previousEndIndex;\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n const endElement = targetRowElement;\n const startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n const startIndex = getRowIndexForRowElement(rootElement, listId, startElement);\n const endIndex = getRowIndexForRowElement(rootElement, listId, endElement);\n const previousElement = isToggleSelectionMode\n ? (activeCellElement.parentElement as HTMLElement)\n : selectionExtensionElementRef.current;\n if (previousElement != null) {\n previousEndIndex = getRowIndexForRowElement(rootElement, listId, previousElement);\n }\n if (startIndex != null && endIndex != null) {\n if (!isToggleSelectionMode) {\n selectionExtensionElementRef.current = endElement;\n } else {\n if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current = activeCellElement.parentElement as HTMLElement;\n }\n let targetCell = logicalCellExtractor<K>(targetElement, listId);\n if (targetCell == null) {\n targetCell = getFirstFocusableCell<K>(targetRowElement, listId) as ActiveCell<K>;\n }\n if (targetCell != null) {\n onActiveCellChanged({ value: targetCell }, false, true);\n const targetCellElement = getElementFromCell(rootElement, listId, targetCell);\n targetCellElement?.focus({ preventScroll: true });\n }\n }\n _applyRangeSelection(\n rootElement,\n listId,\n targetElement,\n startIndex,\n endIndex,\n true,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n previousEndIndex\n );\n return true;\n }\n }\n }\n }\n return false;\n}\n\nexport const getAdjacentSelectableRowElement = <K extends string | number>(\n rowElements: ArrayLike<Element>,\n rowIndex: number,\n isPrevious: boolean,\n nonSelectableRowKeys?: Set<K>\n) => {\n const step = isPrevious ? -1 : 1;\n for (let i = rowIndex + step; i >= 0 && i < rowElements.length; i += step) {\n const rowElement = rowElements[i] as HTMLElement;\n const rowKey = getRowKey<K>(rowElement);\n if (rowKey != null && !nonSelectableRowKeys?.has(rowKey)) {\n return rowElement;\n }\n }\n return undefined;\n};\n\n/**\n * Helper function to handle a selection extension gesture (shift+arrow key)\n */\nexport function handleExtendSelectionGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n listId: string,\n targetElement: HTMLElement,\n isPrevious: boolean,\n activeCell: ActiveCell<K>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n isDropDownSelection: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n selectionMode?: ListSelectionMode,\n selected?: Keys<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n const activeCellElement = getElementFromCell(rootElement, listId, activeCell);\n if (activeCellElement != null) {\n let startIndex;\n let startElement;\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n const isRow = activeCell.type === 'data';\n if (isRow) {\n startElement =\n isToggleSelectionMode && selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : (activeCellElement.parentElement as HTMLElement);\n startIndex = getRowIndexForRowElement(rootElement, listId, startElement);\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 = getRowIndexForRowElement(rootElement, listId, cursorElement);\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (cursorElement != null) {\n const rowIndex = getRowIndexForRowElement(rootElement, listId, cursorElement);\n if (rowIndex != null) {\n extendedElement = getAdjacentSelectableRowElement(\n rowElements,\n rowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n if (\n extendedElement != null &&\n (!isRow || (isRow && getRowKey(extendedElement) != null))\n ) {\n if (!isToggleSelectionMode || !isRow) {\n selectionExtensionElementRef.current = extendedElement;\n } else if (selectionExtensionElementRef.current == null) {\n selectionExtensionElementRef.current =\n activeCellElement.parentElement as HTMLElement;\n }\n endIndex = getRowIndexForRowElement(rootElement, listId, extendedElement);\n } else {\n endIndex = getRowIndexForRowElement(rootElement, listId, cursorElement);\n }\n }\n }\n } else {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (startElement != null) {\n const rowIndex = getRowIndexForRowElement(rootElement, listId, startElement);\n if (rowIndex != null) {\n extendedElement = getAdjacentSelectableRowElement(\n rowElements,\n rowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n if (\n extendedElement != null &&\n (!isRow || (isRow && getRowKey(extendedElement) != null))\n ) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = getRowIndexForRowElement(rootElement, listId, extendedElement);\n } else {\n endIndex = startIndex;\n }\n }\n }\n }\n if (endIndex != null) {\n _applyRangeSelection(\n rootElement,\n listId,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\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, `[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowKey != null) {\n extensionCell = {\n type: activeCell.type,\n rowKey: rowKey\n };\n }\n } else {\n extensionCell = logicalCellExtractor<K>(extensionElement, listId);\n }\n if (extensionCell != null) {\n updateDeferredScrollDetail({\n cell: extensionCell,\n isTransient: isTransientCell(extensionCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n }\n }\n }\n}\n\n/**\n * Helper function to handle a select-all gesture.\n */\nexport function handleSelectAllGesture<K extends string | number>(\n targetElement: HTMLElement,\n onSelectionChange: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void,\n selectionMode?: ListSelectionMode,\n selectedKeys?: Keys<K>\n) {\n if (selectionMode === 'multiple' || selectionMode === 'multipleToggle') {\n const selectedRows: Keys<K> = {\n all: true,\n deletedKeys: new Set([])\n };\n if (!isSameKey(selectedRows, selectedKeys)) {\n onSelectionChange({ value: selectedRows, target: targetElement }, false);\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 { CollectionData } from '#UNSAFE_Collection';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ScrollDetail,\n TableListProps,\n ViewportInfo\n} from '../List.types';\n\nimport { findElementByKey } from '#utils/PRIVATE_collectionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { containsKey } from '#utils/UNSAFE_keys';\nimport {\n getElementFromCell,\n getFirstRenderedRowKey,\n getLastRenderedRowKey,\n getRowIndexForRowKey,\n getRowKeyForRowIndex,\n hasLoadMoreCell,\n isAutoFocusCell,\n LIST_ROW_SELECTOR\n} from './ListDomUtils';\nimport { handleToggleExpandedGesture, isCellExpandable } from './ListActionUtils';\nimport { cellComparator, isTransientCell } from './ListFocusUtils';\nimport { getScrollerBottom, getScrollPosition } from './ListScrollUtils';\nimport { getAdjacentSelectableRowElement } from './ListSelectionUtils';\n\nconst getAdjacentRowElement = <K extends string | number>(\n rowElements: HTMLElement[],\n currentRowIndex: number,\n isPrevious: boolean,\n isExtendSelectionGesture: boolean,\n nonSelectableRowKeys?: Set<K>\n) => {\n const step = isPrevious ? -1 : 1;\n const adjacentIndex = currentRowIndex + step;\n if (!isExtendSelectionGesture) {\n return adjacentIndex >= 0 && adjacentIndex < rowElements.length\n ? rowElements[adjacentIndex]\n : undefined;\n }\n\n return getAdjacentSelectableRowElement(\n rowElements,\n currentRowIndex,\n isPrevious,\n nonSelectableRowKeys\n );\n};\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>(\n rootElement: HTMLDivElement,\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n isExtendSelectionGesture: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n loadMoreAnchorKeys?: Set<K>,\n nonSelectableRowKeys?: Set<K>\n) {\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'loadMore') {\n if (isPrevious) {\n const rowKey = getLastRenderedRowKey<K>(rootElement, listId);\n if (rowKey != null) {\n if (loadMoreAnchorKeys?.has(rowKey)) {\n newCell = { rowKey: rowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n newCell = { rowKey: rowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n } else if (cellType === 'data') {\n const currentRowKey = initialCell.rowKey;\n if (!isPrevious && loadMoreAnchorKeys?.has(currentRowKey)) {\n newCell = { rowKey: currentRowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n const currentRowElement = findElementByKey(\n rootElement,\n currentRowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n );\n if (currentRowElement != null) {\n const rowElements = [...rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`)];\n const currentRowIndex = rowElements.indexOf(currentRowElement);\n const adjacentRowElement = getAdjacentRowElement(\n rowElements as HTMLElement[],\n currentRowIndex,\n isPrevious,\n isExtendSelectionGesture,\n nonSelectableRowKeys\n );\n if (adjacentRowElement != null) {\n const rowKey = getRowKey<K>(adjacentRowElement);\n if (rowKey != null) {\n if (isPrevious && loadMoreAnchorKeys?.has(rowKey)) {\n newCell = { rowKey: rowKey, type: 'loadMoreAnchor' };\n onActiveCellChanged({ value: newCell });\n } else {\n newCell = { rowKey: rowKey, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n isExtendSelectionGesture\n );\n }\n }\n } else if (\n !isExtendSelectionGesture &&\n !isPrevious &&\n hasLoadMoreCell(rootElement, listId)\n ) {\n newCell = { type: 'loadMore' };\n if (getElementFromCell(rootElement, listId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n }\n } else if (cellType === 'loadMoreAnchor') {\n const currentRowKey = initialCell.rowKey;\n if (isPrevious) {\n newCell = { rowKey: currentRowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n } else {\n const currentRowElement = findElementByKey(\n rootElement,\n currentRowKey,\n `[${LIST_ROW_SELECTOR}='${listId}']`\n );\n if (currentRowElement != null) {\n const rowElements = [...rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`)];\n const currentRowIndex = rowElements.indexOf(currentRowElement);\n let adjacentRowElement;\n if (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, type: 'data' };\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n isExtendSelectionGesture\n );\n }\n } else if (\n !isExtendSelectionGesture &&\n !isPrevious &&\n hasLoadMoreCell(rootElement, listId)\n ) {\n newCell = { type: 'loadMore' };\n if (getElementFromCell(rootElement, listId, newCell) != null) {\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n }\n }\n }\n if (cellComparator(initialCell, newCell)) {\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: 'inView'\n });\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 List 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 List so it becomes the first visible row in the viewport when able.\n */\nexport function handlePageRowGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n scrollerElement: HTMLElement,\n viewportInfo: ViewportInfo,\n stickyTopRows: number[],\n stickyEdgesState: number[],\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void\n) {\n if (initialCell.type !== 'noData') {\n const rowElements = rootElement.querySelectorAll(`[${LIST_ROW_SELECTOR}='${listId}']`);\n if (rowElements.length > 0) {\n const scrollPosition = getScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n );\n const verticalRowIndex = getRowIndexForRowKey(rootElement, listId, scrollPosition.key!);\n let targetRowIndex;\n if (isPrevious) {\n if (scrollPosition.offsetY === 0) {\n targetRowIndex = Math.max(verticalRowIndex! - 1, 0);\n } else {\n targetRowIndex = verticalRowIndex!;\n }\n } else {\n const scrollerBottom = getScrollerBottom(scrollerElement, viewportInfo.viewportConfig);\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, listId, targetRowIndex);\n if (newRowKey != null) {\n const newCell: ActiveCell<K> = {\n rowKey: newRowKey,\n type: 'data'\n };\n if (newRowKey !== initialCell.rowKey) {\n onActiveCellChanged(\n { value: newCell },\n isAutoFocusCell(rootElement, listId, newCell),\n false,\n true\n );\n }\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: isPrevious ? 'bottom' : 'top'\n });\n }\n }\n }\n}\n\n/**\n * Helper function to handle a 'Ctrl/Cmd + Home' or 'Ctrl/Cmd + End' key press.\n * Ctrl/Cmd + Home - Jumps to the first row in the list. No op if already on that row.\n * Ctrl/Cmd + End - Jumps to the last row in the list. No op if already on that row.\n */\nexport function handleJumpRowGesture<K extends string | number>(\n rootElement: HTMLDivElement,\n listId: string,\n initialCell: ActiveCell<K>,\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n isPrevious: boolean,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void\n) {\n let newCell = initialCell;\n const cellType = initialCell.type;\n if (cellType === 'data') {\n const newRowKey = isPrevious\n ? getFirstRenderedRowKey<K>(rootElement, listId)\n : getLastRenderedRowKey<K>(rootElement, listId);\n if (newRowKey != null) {\n newCell = { rowKey: newRowKey, type: 'data' };\n onActiveCellChanged({ value: newCell }, isAutoFocusCell(rootElement, listId, newCell));\n }\n }\n if (cellComparator(initialCell, newCell)) {\n updateDeferredScrollDetail({\n cell: newCell,\n isTransient: isTransientCell(newCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n}\n\nexport function handleTreeCollapseGesture<K extends string | number, D>(\n rootElement: HTMLDivElement,\n listId: string,\n listData: CollectionData<K, D>[],\n activeCell: ActiveCell<K> | undefined,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: TableListProps<K, D>['onExpandedChange'],\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n target: EventTarget | null\n) {\n if (activeCell?.type === 'loadMoreAnchor') {\n const parentCell: ActiveCell<K> = { rowKey: activeCell.rowKey, type: 'data' };\n onActiveCellChanged({ value: parentCell }, isAutoFocusCell(rootElement, listId, parentCell));\n updateDeferredScrollDetail({\n cell: parentCell,\n isTransient: isTransientCell(parentCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n\n if (activeCell?.type === 'data') {\n const isExpanded = containsKey(expanded, activeCell.rowKey);\n if (\n isExpanded &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(activeCell.rowKey, expanded, onExpandedChange, target);\n return true;\n }\n\n if (!isExpanded) {\n const parentCell = getParentCell(listData, activeCell.rowKey);\n if (parentCell != null) {\n onActiveCellChanged(\n { value: parentCell },\n isAutoFocusCell(rootElement, listId, parentCell)\n );\n updateDeferredScrollDetail({\n cell: parentCell,\n isTransient: isTransientCell(parentCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n }\n }\n\n return false;\n}\n\nexport function handleTreeExpandGesture<K extends string | number, D>(\n rootElement: HTMLDivElement,\n listId: string,\n listData: CollectionData<K, D>[],\n activeCell: ActiveCell<K> | undefined,\n expanded: NonNullable<TableListProps<K, D>['expanded']>,\n onExpandedChange: TableListProps<K, D>['onExpandedChange'],\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void,\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void,\n target: EventTarget | null,\n loadMoreAnchorKeys?: Set<K>\n) {\n if (activeCell?.type !== 'data') {\n return false;\n }\n\n const isExpanded = containsKey(expanded, activeCell.rowKey);\n if (\n !isExpanded &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(activeCell.rowKey, expanded, onExpandedChange, target);\n return true;\n }\n\n if (isExpanded) {\n const childCell =\n getFirstChildCell(listData, activeCell.rowKey) ??\n (loadMoreAnchorKeys?.has(activeCell.rowKey)\n ? ({ rowKey: activeCell.rowKey, type: 'loadMoreAnchor' } as ActiveCell<K>)\n : undefined);\n if (childCell != null) {\n onActiveCellChanged({ value: childCell }, isAutoFocusCell(rootElement, listId, childCell));\n updateDeferredScrollDetail({\n cell: childCell,\n isTransient: isTransientCell(childCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n return true;\n }\n }\n\n return false;\n}\n\nexport function isReorderGesture(event: KeyboardEvent) {\n return event.shiftKey && isLogicalCtrl(event);\n}\n\nexport function getParentCell<K extends string | number, D>(\n listData: CollectionData<K, D>[],\n rowKey: K\n): ActiveCell<K> | undefined {\n const currentItem = listData.find((item) => item.metadata.key === rowKey);\n const parentKey = currentItem?.metadata.parentKey;\n if (parentKey != null && listData.some((item) => item.metadata.key === parentKey)) {\n return { rowKey: parentKey, type: 'data' };\n }\n return undefined;\n}\n\nexport function getFirstChildCell<K extends string | number, D>(\n listData: CollectionData<K, D>[],\n rowKey: K\n): ActiveCell<K> | undefined {\n const currentIndex = listData.findIndex((item) => item.metadata.key === rowKey);\n if (currentIndex > -1) {\n const nextItem = listData[currentIndex + 1];\n const parentKey = nextItem?.metadata.parentKey;\n if (parentKey === rowKey) {\n return { rowKey: nextItem.metadata.key, type: 'data' };\n }\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 { RefObject } from 'preact';\nimport type { MutableRef } from 'preact/hooks';\nimport type { CollectionData, ItemActionDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n ActiveCell,\n ActiveCellDetail,\n ScrollDetail,\n TableListProps,\n ViewportInfo\n} from '../List.types';\n\nimport { useCallback, useRef } from 'preact/hooks';\nimport { getIsSelectionPending } from '#utils/PRIVATE_textSelectionUtils';\nimport { hasAnyKeys } from '#utils/UNSAFE_keys';\nimport {\n getRowActionGestureContext,\n handleRowActionGesture\n} from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { useUser } from '#hooks/UNSAFE_useUser';\nimport {\n getActionContext,\n handleToggleExpandedGesture,\n isCellExpandable\n} from '../utils/ListActionUtils';\nimport { canPasteToActiveCell, getClipboardItemKeys } from '../utils/ListDndUtils';\nimport { getElementFromCell, isAutoFocusCell, LIST_ROW_SELECTOR } from '../utils/ListDomUtils';\nimport { isTransientCell } from '#PRIVATE_TableList/utils/ListFocusUtils';\nimport {\n handleAdjacentRowGesture,\n handleJumpRowGesture,\n handlePageRowGesture,\n handleTreeCollapseGesture,\n handleTreeExpandGesture,\n isReorderGesture\n} from '../utils/ListNavigationUtils';\nimport {\n handleExtendSelectionGesture,\n handleSelectAllGesture,\n handleSelectionGesture\n} from '../utils/ListSelectionUtils';\n\ntype UseKeyboardHandlingProps<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n listId: string;\n listData: CollectionData<K, D>[];\n isTabbableMode: boolean;\n isTree: boolean;\n isTreeGrid: boolean;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n activeCell?: ActiveCell<K>;\n isDropDownSelection: boolean;\n selectionMode: TableListProps<K, D>['selectionMode'];\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n loadMoreAnchorKeys?: Set<K>;\n onListSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n expanded: NonNullable<TableListProps<K, D>['expanded']>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onItemAction?: (detail: ItemActionDetail<K, D>) => void;\n onCutRequest?: TableListProps<K, D>['onCutRequest'];\n onCutCancelRequest?: TableListProps<K, D>['onCutCancelRequest'];\n onCopyRequest?: TableListProps<K, D>['onCopyRequest'];\n onPasteRequest?: TableListProps<K, D>['onPasteRequest'];\n cutItemKeys?: TableListProps<K, D>['cutItemKeys'];\n updateDeferredScrollDetail: (scrollDetail: ScrollDetail<K>) => void;\n reorderKeyboardProps: { onKeyDown?: (e: KeyboardEvent) => void };\n isReorderEnabled: boolean;\n};\n\n/**\n * Hook that manages keyboard interactions on the Preact TableList\n */\nexport function useKeyboardHandling<K extends string | number, D>({\n rootRef,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled\n}: UseKeyboardHandlingProps<K, D>) {\n // state for the key that a space or enter keydown occurs on for matching keyup handling\n const triggerDownKeyRef = useRef<K | undefined>();\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n\n // Keydown handler for the outer List. This handles all internal\n // keyboard navigation for the List.\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 handleTreeCollapseKey = () => {\n if (\n !event.repeat &&\n isTree &&\n handleTreeCollapseGesture(\n rootElement,\n listId,\n listData,\n activeCell,\n expanded,\n onExpandedChange,\n onActiveCellChanged,\n updateDeferredScrollDetail,\n event.target\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n const handleTreeExpandKey = () => {\n if (\n !event.repeat &&\n isTree &&\n handleTreeExpandGesture(\n rootElement,\n listId,\n listData,\n activeCell,\n expanded,\n onExpandedChange,\n onActiveCellChanged,\n updateDeferredScrollDetail,\n event.target,\n loadMoreAnchorKeys\n )\n ) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n const key = event.key.toLowerCase();\n if (\n (key === 'escape' || key === 'esc') &&\n !isTabbableMode &&\n onCutCancelRequest != null &&\n hasAnyKeys(cutItemKeys)\n ) {\n onCutCancelRequest();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (\n isLogicalCtrl(event) &&\n !event.altKey &&\n (key === 'c' || key === 'x' || key === 'v') &&\n // Only intercept clipboard shortcuts in navigation mode; preserve native behavior in actionable mode.\n !isTabbableMode &&\n // Preserve default copy/cut/paste behavior when there is a text selection.\n !getIsSelectionPending()\n ) {\n if (key === 'v') {\n if (onPasteRequest != null && canPasteToActiveCell(activeCell)) {\n event.preventDefault();\n event.stopPropagation();\n onPasteRequest();\n }\n return;\n }\n\n const clipboardHandler = key === 'c' ? onCopyRequest : onCutRequest;\n if (clipboardHandler == null) {\n return;\n }\n\n const itemKeys = getClipboardItemKeys<K>({ activeCell, selected, selectionMode });\n if (itemKeys == null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n clipboardHandler({ itemKeys });\n return;\n }\n\n const keyHandlers: Record<string, () => void> = {\n ' ': function () {\n if (activeCell != null) {\n triggerDownKeyRef.current = activeCell.rowKey;\n if (!isTabbableMode) {\n // prevent default action on space to avoid scrolling during a selection\n event.preventDefault();\n }\n if (\n onItemAction != null &&\n getRowActionGestureContext(\n listId,\n listData,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n }\n },\n a: function () {\n if (\n isTree &&\n !isTabbableMode &&\n isLogicalCtrl(event) &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleSelectAllGesture(\n event.target as HTMLElement,\n onListSelectionChange,\n selectionMode,\n selected\n );\n event.preventDefault();\n event.stopPropagation();\n }\n },\n A: function () {\n keyHandlers['a']();\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 !event.repeat &&\n isTreeGrid &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n handleToggleExpandedGesture(\n activeCell.rowKey,\n expanded,\n onExpandedChange,\n event.target\n );\n event.stopPropagation();\n } else if (\n onItemAction != null &&\n getRowActionGestureContext(\n listId,\n listData,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n ) != null\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n ArrowLeft: function () {\n if (isRtl) {\n handleTreeExpandKey();\n } else {\n handleTreeCollapseKey();\n }\n },\n ArrowRight: function () {\n if (isRtl) {\n handleTreeCollapseKey();\n } else {\n handleTreeExpandKey();\n }\n },\n ArrowUp: function () {\n if (isReorderEnabled && !isTabbableMode && isReorderGesture(event)) {\n selectionExtensionElementRef.current = undefined;\n if (activeCell?.type === 'data') {\n reorderKeyboardProps.onKeyDown?.(event);\n updateDeferredScrollDetail({\n cell: activeCell,\n isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n return;\n }\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n listId,\n rootElement,\n true,\n activeCell,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n isExtendSelectionGesture,\n updateDeferredScrollDetail,\n loadMoreAnchorKeys,\n nonSelectableRowKeys\n );\n }\n event.preventDefault();\n }\n },\n ArrowDown: function () {\n if (isReorderEnabled && !isTabbableMode && isReorderGesture(event)) {\n selectionExtensionElementRef.current = undefined;\n if (activeCell?.type === 'data') {\n reorderKeyboardProps.onKeyDown?.(event);\n updateDeferredScrollDetail({\n cell: activeCell,\n isTransient: isTransientCell(activeCell),\n locationX: 'inView',\n locationY: 'inView'\n });\n }\n return;\n }\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n let isExtendSelectionGesture = false;\n if (\n !isTabbableMode &&\n activeCell.type === 'data' &&\n event.shiftKey &&\n onListSelectionChange != null &&\n (selectionMode === 'multiple' || selectionMode === 'multipleToggle')\n ) {\n handleExtendSelectionGesture(\n rootElement,\n listId,\n rootElement,\n false,\n activeCell,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n updateDeferredScrollDetail,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isExtendSelectionGesture = true;\n }\n if (\n !isExtendSelectionGesture ||\n isDropDownSelection ||\n selectionMode === 'multipleToggle'\n ) {\n handleAdjacentRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n isExtendSelectionGesture,\n updateDeferredScrollDetail,\n loadMoreAnchorKeys,\n nonSelectableRowKeys\n );\n }\n event.preventDefault();\n }\n },\n PageUp: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n PageDown: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n handlePageRowGesture(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n updateDeferredScrollDetail\n );\n event.preventDefault();\n }\n },\n Home: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n if (isLogicalCtrl(event)) {\n handleJumpRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n true,\n updateDeferredScrollDetail\n );\n }\n event.preventDefault();\n }\n },\n End: function () {\n if (\n activeCell != null &&\n (!isTabbableMode || isAutoFocusCell(rootElement, listId, activeCell))\n ) {\n if (isLogicalCtrl(event)) {\n handleJumpRowGesture(\n rootElement,\n listId,\n activeCell,\n onActiveCellChanged,\n false,\n updateDeferredScrollDetail\n );\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 stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isRtl,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled\n ]\n );\n\n // Keyup handler for the outer List.\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 if (triggerDownKeyRef.current === activeCell.rowKey) {\n if (!isTabbableMode) {\n if (onListSelectionChange != null) {\n handleSelectionGesture(\n listId,\n getElementFromCell(rootElement, listId, activeCell) as HTMLElement,\n true,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n }\n if (\n onItemAction != null &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n event.target as HTMLElement,\n LIST_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 let isStopPropagation = false;\n if (activeCell.type === 'data') {\n if (isDropDownSelection && !isTabbableMode) {\n if (onListSelectionChange != null) {\n handleSelectionGesture(\n listId,\n getElementFromCell(rootElement, listId, activeCell) as HTMLElement,\n true,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n isStopPropagation = true;\n }\n }\n if (\n onItemAction != null &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n event.target as HTMLElement,\n LIST_ROW_SELECTOR,\n getActionContext,\n activeCell\n )\n ) {\n isStopPropagation = true;\n }\n if (\n isTreeGrid &&\n onExpandedChange != null &&\n isCellExpandable(rootElement, listId, activeCell)\n ) {\n isStopPropagation = true;\n }\n }\n if (isStopPropagation) {\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 listId,\n listData,\n isTabbableMode,\n isTreeGrid,\n activeCell,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onExpandedChange,\n onItemAction\n ]\n );\n\n return {\n onKeyDown: _keyDownHandler,\n onKeyUp: _keyUpHandler\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 { MutableRef } from 'preact/hooks';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData, ItemActionDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { ListSelectionMode } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, ActiveCellDetail } from '../List.types';\n\nimport { useCallback, useRef } from 'preact/hooks';\nimport { keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { getIsSelectionPending } from '#utils/PRIVATE_textSelectionUtils';\nimport { handleRowActionGesture } from '#PRIVATE_TableCommon/utils/ActionUtils';\nimport { getRowKey } from '#PRIVATE_TableCommon/utils/DomUtils';\nimport { isLogicalCtrl } from '#PRIVATE_TableCommon/utils/EventUtils';\nimport { getActionContext } from '../utils/ListActionUtils';\nimport {\n compareClickTargets,\n getElementFromCell,\n getFirstFocusableCell,\n LIST_ROW_SELECTOR,\n logicalCellExtractor\n} from '../utils/ListDomUtils';\nimport { handleLeaveListTooltipGesture, handleMoveTooltipGesture } from '../utils/ListTooltipUtils';\nimport {\n handleRangeSelectionGesture,\n handleSelectionGesture,\n isRangeSelectionGesture\n} from '../utils/ListSelectionUtils';\n\ntype PointerInfo = {\n target: EventTarget | null;\n x: number;\n y: number;\n};\n\ntype UsePointerHandlingOptions<K, D> = {\n rootRef: RefObject<HTMLDivElement>;\n listId: string;\n listData: CollectionData<K, D>[];\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n activeCell?: ActiveCell<K>;\n onActiveCellChanged: (\n detail: ActiveCellDetail<K>,\n isAutoFocus?: boolean,\n isSelectionExtension?: boolean,\n skipScrollCellIntoView?: boolean\n ) => void;\n isDropDownSelection: boolean;\n selectionMode?: ListSelectionMode;\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n onListSelectionChange?: (detail: SelectionDetail<K>, isSelectionExtension: boolean) => void;\n onItemAction?: (detail: ItemActionDetail<K, D>) => void;\n showTooltip: (cell: ActiveCell<K>, targetElement?: HTMLElement) => void;\n hideTooltip: (isImmediate?: boolean) => void;\n tooltipId: string;\n isTruncationTooltipEnabled: boolean;\n};\n\n/**\n * Hook that manages pointer interactions on the Preact TableList\n */\nexport function usePointerHandling<K extends string | number, D>({\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction,\n showTooltip,\n hideTooltip,\n tooltipId,\n isTruncationTooltipEnabled\n}: UsePointerHandlingOptions<K, D>) {\n // tracks whether the most recent 'pointerdown' event was due to a touch gesture\n const selectionTouchRef = useRef<boolean>(false);\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 List.\n const _pointerMoveHandler = 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 if (isTruncationTooltipEnabled) {\n handleMoveTooltipGesture(listId, event, showTooltip, hideTooltip, tooltipId);\n }\n }\n },\n [rootRef, isTruncationTooltipEnabled, listId, showTooltip, hideTooltip, tooltipId]\n );\n\n // Pointer over handler for the outer List.\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 }\n },\n [rootRef]\n );\n\n // Pointer down handler for the outer List. 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 List.\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n selectionTouchRef.current = event.pointerType === 'touch';\n const targetElement = event.target as HTMLElement;\n if (\n onListSelectionChange != null &&\n activeCell != null &&\n event.shiftKey &&\n isRangeSelectionGesture(rootElement, listId, targetElement, activeCell, selectionMode)\n ) {\n // prevent focus change on selection extension gesture\n if (!getIsSelectionPending()) {\n event.preventDefault();\n }\n } else {\n const cell = logicalCellExtractor<K>(targetElement, listId);\n if (\n cell == null ||\n (cell.type === 'data' &&\n keyExtractor<K>(targetElement, `[${LIST_ROW_SELECTOR}='${listId}']`) == null)\n ) {\n // prevent focus shift when interacting with 'non-focusable' regions (ie - scrollbar)\n event.preventDefault();\n }\n }\n }\n },\n [rootRef, listId, activeCell, selectionMode, onListSelectionChange]\n );\n\n // Pointer leave handler for the outer List.\n const _pointerLeaveHandler = useCallback(\n (event: PointerEvent) => {\n const rootElement = rootRef.current;\n if (rootElement != null && isTruncationTooltipEnabled) {\n handleLeaveListTooltipGesture(rootElement, event, hideTooltip, tooltipId);\n }\n pointerInfoRef.current = undefined;\n },\n [rootRef, isTruncationTooltipEnabled, hideTooltip, tooltipId]\n );\n\n // Click handler for the outer List. It ensures the List'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 if (\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle'\n ) {\n event.stopPropagation();\n }\n const rootElement = rootRef.current;\n if (rootElement != null) {\n const target = event.target as HTMLElement;\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 (target != null &&\n pointerInfoRef.current?.target != null &&\n compareClickTargets(pointerInfoRef.current.target, target, listId) &&\n Math.abs(pointerInfoRef.current.x - event.clientX) <= 1 &&\n Math.abs(pointerInfoRef.current.y - event.clientY) <= 1)\n ) {\n let isSelectionExtension = false;\n if (onListSelectionChange != null && !getIsSelectionPending()) {\n if (activeCell != null && event.shiftKey) {\n isSelectionExtension = handleRangeSelectionGesture(\n rootElement,\n listId,\n target,\n activeCell,\n onActiveCellChanged,\n selectionExtensionElementRef,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n if (!isSelectionExtension) {\n handleSelectionGesture(\n listId,\n target,\n isLogicalCtrl(event) || selectionTouchRef.current,\n onListSelectionChange,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys\n );\n }\n }\n if (\n onItemAction != null &&\n !getIsSelectionPending() &&\n handleRowActionGesture(\n listId,\n listData,\n onItemAction,\n target,\n LIST_ROW_SELECTOR,\n getActionContext\n )\n ) {\n event.stopPropagation();\n }\n // if click event occurs on the row element itself, focus the first child grid cell\n const isToggleSelectionMode = isDropDownSelection || selectionMode === 'multipleToggle';\n if ((!isSelectionExtension || isToggleSelectionMode) && getRowKey(target) != null) {\n const logicalCell = getFirstFocusableCell<K>(target, listId);\n if (logicalCell != null) {\n onActiveCellChanged({ value: logicalCell }, false, true);\n getElementFromCell(rootElement, listId, logicalCell)?.focus({ preventScroll: true });\n }\n }\n }\n }\n },\n [\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction\n ]\n );\n\n return {\n pointerHandlingProps: {\n onPointerOver: _pointerOverHandler,\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler,\n onPointerLeave: _pointerLeaveHandler,\n onClick: _clickHandler\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 { ListScrollPosition } from '#UNSAFE_Collection/List.types';\nimport type { ViewportInfo } from '../List.types';\n\nimport { useCallback, useLayoutEffect, useRef } from 'preact/hooks';\nimport { isHTMLScroller } from '#PRIVATE_TableCommon/utils/ScrollUtils';\nimport { setScrollPosition, updateStickyEdges } from '../utils/ListScrollUtils';\n\ntype UseScrollHandlingProps<K> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n listId: string;\n isLayoutRequired: boolean;\n scrollPositionOverride?: ListScrollPosition<K>;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n setStickyEdgesState: (stickyEdgesState: number[]) => void;\n transientEdgeState?: number;\n setTransientEdgeState: (transientEdgeState: number | undefined) => void;\n hideTooltip?: (isImmediate?: boolean) => void;\n};\n\n/**\n * Hook that manages handling scroll events on the Preact TableList\n */\nexport function useScrollHandling<K extends string | number>({\n rootRef,\n viewportInfo,\n listId,\n isLayoutRequired,\n scrollPositionOverride,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n}: UseScrollHandlingProps<K>) {\n const scrollPositionOverrideRef = useRef<ListScrollPosition<K>>();\n\n // update horizontal and/or vertical scroll position if a new value is provided\n // NO DEPENDENCY ARRAY AS THIS SHOULD RUN ON EVERY RENDER\n useLayoutEffect(() => {\n const rootElement = rootRef.current;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n if (\n scrollPositionOverrideRef.current !== scrollPositionOverride &&\n rootElement != null &&\n scrollerElement != null &&\n !isLayoutRequired\n ) {\n setScrollPosition(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n scrollPositionOverride\n );\n scrollPositionOverrideRef.current = scrollPositionOverride;\n }\n });\n\n // Scroll hander for the outer TableList. It ensures the List's sticky rows are updated\n const _scrollHandler = useCallback(() => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n updateStickyEdges(\n rootElement,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\n );\n hideTooltip?.(true);\n }\n }, [\n rootRef,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n ]);\n\n useLayoutEffect(() => {\n const isExternalScroller = viewportInfo.isExternalScroller;\n const scrollerElement = viewportInfo.viewportConfig.scrollerRef.current;\n let scrollerEventElement: Element | typeof globalThis;\n if (isExternalScroller && scrollerElement != null) {\n if (isHTMLScroller(scrollerElement)) {\n scrollerEventElement = window;\n } else {\n scrollerEventElement = scrollerElement;\n }\n scrollerEventElement.addEventListener('scroll', _scrollHandler);\n }\n return () => {\n if (isExternalScroller && scrollerEventElement != null) {\n scrollerEventElement.removeEventListener('scroll', _scrollHandler);\n }\n };\n }, [viewportInfo, _scrollHandler]);\n\n return viewportInfo.isExternalScroller ? {} : { onScroll: _scrollHandler };\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 { ActiveCell } from '../List.types';\n\nimport { useCallback, useEffect, useRef } from 'preact/hooks';\nimport { useTruncationTooltip as useCommonTruncationTooltip } from '#PRIVATE_TableCommon/hooks/useTruncationTooltip';\nimport { cellComparator } from '../utils/ListFocusUtils';\nimport { getElementFromCell } from '../utils/ListDomUtils';\nimport { getListTruncatedTextInfo } from '../utils/ListTooltipUtils';\n\ntype UseTruncationTooltipOptions = {\n rootRef: RefObject<HTMLDivElement>;\n listId: string;\n isEnabled?: boolean;\n};\n\n/**\n * Hook that manages marked text tooltip interactions on the List when truncation is present.\n */\nexport function useTruncationTooltip<K extends string | number>({\n rootRef,\n listId,\n isEnabled = true\n}: UseTruncationTooltipOptions) {\n const getListCellElement = useCallback(\n (rootElement: HTMLDivElement, cell: ActiveCell<K>) =>\n getElementFromCell(rootElement, listId, cell),\n [listId]\n );\n\n const showTooltipNoop = useCallback(\n (_cell: ActiveCell<K>, _targetElement?: HTMLElement) => undefined,\n []\n );\n const hideTooltipNoop = useCallback((_isImmediate?: boolean) => undefined, []);\n\n const { tooltipContent, tooltipId, showTooltip, hideTooltip } = useCommonTruncationTooltip<\n ActiveCell<K>\n >({\n rootRef,\n containerId: listId,\n getElementFromCell: getListCellElement,\n getTruncatedTextInfo: getListTruncatedTextInfo,\n cellComparator,\n placement: 'top'\n });\n\n const wasEnabledRef = useRef(isEnabled);\n useEffect(() => {\n if (wasEnabledRef.current && !isEnabled) {\n hideTooltip(true);\n }\n wasEnabledRef.current = isEnabled;\n }, [hideTooltip, isEnabled]);\n\n if (isEnabled) {\n return { tooltipContent, tooltipId, showTooltip, hideTooltip };\n }\n\n return {\n tooltipContent: undefined,\n tooltipId,\n showTooltip: showTooltipNoop,\n hideTooltip: hideTooltipNoop\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 { Keys } from '#utils/UNSAFE_keys';\nimport type { CollectionData, ReorderDetail, SelectionDetail } from '#UNSAFE_Collection';\nimport type { Handle } from '#UNSAFE_Collection/List.types';\nimport type { KeyDataMap } from '#PRIVATE_TableCommon/Common.types';\nimport type { ScrollDetail, TableListProps, ViewportInfo } from '../List.types';\n\nimport { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'preact/hooks';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\nimport { useContextMenu } from './useContextMenu';\nimport { useDnd } from './useDnd';\nimport { useFocusHandling } from './useFocusHandling';\nimport { useItemReorder } from './useItemReorder';\nimport { useKeyboardHandling } from './useKeyboardHandling';\nimport { usePointerHandling } from './usePointerHandling';\nimport { useScrollHandling } from './useScrollHandling';\nimport { useTruncationTooltip } from './useTruncationTooltip';\nimport { getElementFromCell, LIST_ROW_SELECTOR } from '../utils/ListDomUtils';\nimport { getScrollPosition } from '../utils/ListScrollUtils';\n\ntype UseInteractionManagerOptions<K extends string | number, D> = {\n rootRef: RefObject<HTMLDivElement>;\n viewportInfo: ViewportInfo;\n ref?: ForwardedRef<Handle<K>>;\n listId: string;\n listData: CollectionData<K, D>[];\n keyDataMap: KeyDataMap<K, D>;\n hasMore: boolean;\n isEmbedded: boolean;\n isLayoutRequired: boolean;\n isTree: boolean;\n isTreeGrid: boolean;\n itemTooltip?: TableListProps<K, D>['itemTooltip'];\n scrollPositionOverride?: TableListProps<K, D>['scrollPositionOverride'];\n currentItemOverride?: TableListProps<K, D>['currentItemOverride'];\n onPersistCurrentItem?: TableListProps<K, D>['onPersistCurrentItem'];\n selectionMode?: TableListProps<K, D>['selectionMode'];\n selected?: Keys<K>;\n nonSelectableRowKeys?: Set<K>;\n loadMoreAnchorKeys?: Set<K>;\n onSelectedChange?: (detail: SelectionDetail<K>) => void;\n expanded: NonNullable<TableListProps<K, D>['expanded']>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onItemAction?: TableListProps<K, D>['onItemAction'];\n onCutRequest?: TableListProps<K, D>['onCutRequest'];\n onCutCancelRequest?: TableListProps<K, D>['onCutCancelRequest'];\n onCopyRequest?: TableListProps<K, D>['onCopyRequest'];\n onPasteRequest?: TableListProps<K, D>['onPasteRequest'];\n itemEnterKeyFocusBehavior: NonNullable<TableListProps<K, D>['itemEnterKeyFocusBehavior']>;\n contextMenuConfig?: TableListProps<K, D>['contextMenuConfig'];\n onReorder?: (detail: ReorderDetail<K>) => void;\n stickyTopRows: number[];\n stickyEdgesState: number[];\n setStickyEdgesState: (stickyEdgesState: number[]) => void;\n transientEdgeState?: number;\n setTransientEdgeState: (transientEdgeState: number | undefined) => void;\n allowedDropPositions: TableListProps<K, D>['allowedDropPositions'];\n onDragStart: TableListProps<K, D>['onDragStart'];\n onDrag: TableListProps<K, D>['onDrag'];\n onDragEnd: TableListProps<K, D>['onDragEnd'];\n onDragEnter: TableListProps<K, D>['onDragEnter'];\n onDragLeave: TableListProps<K, D>['onDragLeave'];\n onDragOver: TableListProps<K, D>['onDragOver'];\n onDrop: TableListProps<K, D>['onDrop'];\n cutItemKeys?: TableListProps<K, D>['cutItemKeys'];\n};\n\nconst _defaultDisabledRowInteractionKeys: ('enter' | 'space')[] = ['enter'];\n\n/**\n * Hook that manages interactions and events on the Preact TableList\n */\nexport function useInteractionManager<K extends string | number, D>({\n rootRef,\n viewportInfo,\n ref,\n listId,\n listData,\n keyDataMap,\n hasMore,\n isEmbedded,\n isLayoutRequired,\n isTree,\n isTreeGrid,\n itemTooltip,\n scrollPositionOverride,\n currentItemOverride,\n onPersistCurrentItem,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onSelectedChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n itemEnterKeyFocusBehavior,\n contextMenuConfig,\n onReorder,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n cutItemKeys\n}: UseInteractionManagerOptions<K, D>) {\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 const isTruncationTooltipEnabled = isTree && itemTooltip !== 'disabled';\n\n // handles default tooltip state management\n const { tooltipContent, tooltipId, showTooltip, hideTooltip } = useTruncationTooltip<K>({\n rootRef,\n listId,\n isEnabled: isTruncationTooltipEnabled\n });\n\n // intercept onSelectedChange calls to ensure local selectionExtensionElementRef is cleared\n const onListSelectionChange = useMemo(() => {\n return onSelectedChange != null\n ? (detail: SelectionDetail<K>, isExtendableSelection: boolean) => {\n if (!isExtendableSelection) {\n selectionExtensionElementRef.current = undefined;\n }\n onSelectedChange(detail);\n }\n : undefined;\n }, [onSelectedChange]);\n\n // track pending scrolls to minimize 'flash' of focus rings when scrolling\n const [deferredScrollDetail, setDeferredScrollDetail] = useState<ScrollDetail<K> | undefined>(\n undefined\n );\n const deferredScrollDetailRef = useRef<ScrollDetail<K>>();\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>) => {\n setDeferredScrollDetail(scrollDetail);\n deferredScrollDetailRef.current = scrollDetail;\n }, []);\n\n const {\n reorderProps,\n reorderKeyboardProps,\n reorderItemProps,\n reorderContext,\n reorderInstructions,\n reorderInstructionsId\n } = useItemReorder({\n rootRef,\n scrollerRef: viewportInfo.viewportConfig.scrollerRef,\n itemSelector: `[${LIST_ROW_SELECTOR}='${listId}']`,\n onReorder\n });\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 } = useFocusHandling({\n rootRef,\n viewportInfo,\n stickyTopRows,\n listId,\n listData,\n hasMore,\n loadMoreAnchorKeys,\n selectionExtensionElementRef,\n currentItemOverride,\n onPersistCurrentItem,\n isEmbedded,\n allowTabbableMode: !isTree,\n itemEnterKeyFocusBehavior,\n isDataLoaded: !hasMore || listData.length > 0,\n reorderContext,\n deferredScrollDetail,\n deferredScrollDetailRef,\n updateDeferredScrollDetail,\n showTooltip,\n hideTooltip,\n isTruncationTooltipEnabled\n });\n\n const keyboardHandlingProps = useKeyboardHandling({\n rootRef,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId,\n listData,\n isTabbableMode,\n isTree,\n isTreeGrid,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onListSelectionChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n cutItemKeys,\n updateDeferredScrollDetail,\n reorderKeyboardProps,\n isReorderEnabled: onReorder != null\n });\n\n const { pointerHandlingProps } = usePointerHandling({\n rootRef,\n listId,\n listData,\n selectionExtensionElementRef,\n activeCell,\n onActiveCellChanged,\n isDropDownSelection: isEmbedded,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n onListSelectionChange,\n onItemAction,\n showTooltip,\n hideTooltip,\n tooltipId,\n isTruncationTooltipEnabled\n });\n\n const scrollHandlingProps = useScrollHandling({\n rootRef,\n viewportInfo,\n listId,\n isLayoutRequired,\n scrollPositionOverride,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n hideTooltip\n });\n\n const { dndProps, dndDropIndicatorTop } = useDnd<K, D>({\n rootRef,\n viewportInfo,\n listId,\n listData,\n keyDataMap,\n hasMore,\n selected,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop\n });\n\n const { contextMenuTriggerProps, menuProps, contextMenuContext } = useContextMenu<K, D>({\n rootRef,\n listId,\n listData,\n contextMenuConfig,\n onActiveCellChanged\n });\n\n const interactionManagerProps = mergeProps(\n focusHandlingProps,\n keyboardHandlingProps,\n pointerHandlingProps,\n reorderProps,\n contextMenuTriggerProps,\n scrollHandlingProps,\n dndProps\n );\n // We want to use this focus method inside imperative handle and other places hence extracted into named method.\n const focusCurrentCellOrRoot = useCallback(() => {\n const rootElement = rootRef.current;\n if (rootElement != null) {\n hideTooltip(true);\n if (currentActiveCell != null) {\n const cellElement = getElementFromCell(rootElement, listId, 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 }, [currentActiveCell, listId, rootRef, hideTooltip]);\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: focusCurrentCellOrRoot,\n getScrollPosition: () => {\n if (rootElement == null || scrollerElement == null || isLayoutRequired) {\n return {};\n }\n return getScrollPosition<K>(\n rootElement,\n scrollerElement,\n viewportInfo,\n stickyTopRows,\n stickyEdgesState,\n listId\n );\n }\n };\n },\n [\n focusCurrentCellOrRoot,\n rootRef,\n viewportInfo,\n listId,\n stickyTopRows,\n stickyEdgesState,\n isLayoutRequired\n ]\n );\n\n return {\n interactionManagerProps,\n onListSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n focusCurrentCellOrRoot,\n contextMenuContext,\n menuProps,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n disabledRowInteractionKeys,\n reorderItemProps,\n reorderInstructions,\n reorderInstructionsId,\n dndDropIndicatorTop,\n tooltipContent\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 { Ref, RefObject } from 'preact';\nimport type { UnsafeDomHandle } from '#utils/UNSAFE_unsafeDomAccess';\nimport type { CollectionData } from '#UNSAFE_Collection';\nimport type { BorderEdges, TableListProps } from '../List.types';\n\nimport { useImperativeHandle, useMemo, useState } from 'preact/hooks';\nimport { UNSAFE_DOM_ACCESS } from '#utils/UNSAFE_unsafeDomAccess';\nimport { getViewportConfig } from '../utils/ListScrollUtils';\n\ntype UseSizingManagerProps<K extends string | number, D> = {\n listData: CollectionData<K, D>[];\n scrollerRef: RefObject<HTMLDivElement>;\n viewportConfig: TableListProps<K, D>['viewportConfig'];\n externalScrollerAccessRef?: Ref<UnsafeDomHandle>;\n stickyTopRows: number[];\n};\n\n/**\n * Hook that manages sizing on the Preact TableList\n */\nexport function useSizingManager<K extends string | number, D>({\n listData,\n scrollerRef,\n viewportConfig,\n externalScrollerAccessRef,\n stickyTopRows\n}: UseSizingManagerProps<K, D>) {\n // sticky edge state management\n const [stickyEdgesState, setStickyEdgesState] = useState<number[]>([]);\n const [transientEdgeState, setTransientEdgeState] = useState<number>();\n\n const rowBorderEdges: BorderEdges = useMemo(() => {\n let isNextRowTopSticky = false;\n let stickyTopRowsIndex = stickyTopRows.length > 0 ? stickyTopRows.length - 1 : undefined;\n const newRowBorderEdges: BorderEdges = new Array(listData.length);\n for (let i = listData.length - 1; i >= 0; i--) {\n let hasTop = true;\n let isStickyTopRow = false;\n if (stickyTopRowsIndex != null) {\n isStickyTopRow = stickyTopRows[stickyTopRowsIndex] === i;\n if (isStickyTopRow) {\n hasTop = true;\n stickyTopRowsIndex--;\n if (stickyTopRowsIndex < 0) {\n stickyTopRowsIndex = undefined;\n }\n } else {\n hasTop = stickyTopRows[stickyTopRowsIndex] !== i - 1;\n }\n }\n const isLastRow = i === listData.length - 1;\n const hasBottom = isLastRow || (isStickyTopRow && !isNextRowTopSticky);\n newRowBorderEdges[i] = { hasTop, hasBottom };\n isNextRowTopSticky = isStickyTopRow;\n }\n return newRowBorderEdges;\n }, [listData, stickyTopRows]);\n\n useImperativeHandle(\n externalScrollerAccessRef!,\n () => {\n if (viewportConfig != null) {\n return { [UNSAFE_DOM_ACCESS]: viewportConfig.scrollerRef.current! };\n }\n return { [UNSAFE_DOM_ACCESS]: scrollerRef.current! };\n },\n [scrollerRef, viewportConfig]\n );\n\n // current viewport information\n const viewportInfo = useMemo(() => {\n const listViewportConfig = getViewportConfig(scrollerRef, viewportConfig);\n return {\n isExternalScroller: viewportConfig != null,\n viewportConfig: listViewportConfig\n };\n }, [scrollerRef, viewportConfig]);\n\n return {\n viewportInfo,\n rowBorderEdges,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\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 { sparkleStyles } from './themes/List.css';\n\n/**\n * A sparkle component for smart suggestion indicator in TableList\n * @param sparkleHeight the height of sparkle\n */\nexport function Sparkle() {\n const sparkleClasses = classNames([sparkleStyles.base]);\n\n return <div class={sparkleClasses} />;\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 { ListNoDataVariantOptions } from './themes/ListNoDataStyles.css';\n\nimport { useComponentTheme } from '#hooks/UNSAFE_useComponentTheme';\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport {\n ACC_GRID_CELL,\n ACC_OPTION,\n ACC_ROW,\n ACC_TREE_ITEM\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { listRowStyles } from './themes/ListRowStyles.css';\nimport { ListNoDataRedwoodTheme } from './themes/redwood/ListNoDataTheme';\nimport type { NoDataRendererContext } from '#UNSAFE_ListView';\n\n/**\n * Props for the ListNoData Component\n */\ntype ListNoDataProps = {\n listId: string;\n isShowFocusRing: boolean;\n hasTabIndex: boolean;\n isTabbableMode: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n ariaRowIndex: number;\n renderer?: (context: NoDataRendererContext) => ComponentChildren;\n};\n\n/**\n * The internal component used to render an empty list cell in a ListBody.\n */\nexport function ListNoData({\n listId,\n isShowFocusRing,\n hasTabIndex,\n isTabbableMode,\n isAccGrid,\n isAccTree,\n ariaRowIndex,\n renderer\n}: ListNoDataProps) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const rowClasses = classNames([listRowStyles.base]);\n\n const { classes: themeClasses } = useComponentTheme<ListNoDataVariantOptions>(\n ListNoDataRedwoodTheme,\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.noData_message();\n }\n\n const contentRenderer = renderer != null ? renderer : defaultContentRenderer;\n\n return (\n <div\n aria-rowindex={isAccGrid ? ariaRowIndex : undefined}\n class={rowClasses}\n style={'height:100%;width:100%;'}\n role={isAccGrid ? ACC_ROW : undefined}>\n <div\n aria-colindex={isAccGrid ? 1 : undefined}\n class={cellClasses}\n tabIndex={hasTabIndex ? 0 : -1}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n data-oj-cell-type={'noData'}\n data-oj-list-focusable={listId}\n data-oj-list-nodata={listId}>\n {contentRenderer({ isTabbable: isTabbableMode })}\n </div>\n </div>\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 { ItemPadding } from '#UNSAFE_Collection/List.types';\nimport type { RowStyles } from '../themes/ListRowStyles.css';\n\nimport { textAlignStyles, verticalAlignStyles } from '#PRIVATE_TableCommon/themes/Common.css';\nimport { listCellStyles, listCellStylesHC } from '../themes/ListCellStyles.css';\nimport { listRowStyles, listRowStylesHC } from '../themes/ListRowStyles.css';\n\ntype ListRowThemingProps = {\n hasTopGridline: boolean;\n hasBottomGridline: boolean;\n hasTopEdge: boolean;\n hasBottomEdge: boolean;\n hasStickyEdge: boolean;\n isTopSticky: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isNextSelected: boolean;\n isShowFocusRing: boolean;\n isSelectionEnabled: boolean;\n isSingleSelection: boolean;\n isActive: boolean;\n isHover: boolean;\n isPseudoHover: boolean;\n isHighContrast: boolean;\n variants?: string[];\n padding?: ItemPadding;\n};\n\n/**\n * Helper function to generate the class array for a list row.\n */\nexport const getListRowClassArray = ({\n hasTopGridline,\n hasBottomGridline,\n hasTopEdge,\n hasBottomEdge,\n hasStickyEdge,\n isTopSticky,\n isSelected,\n isPreviousSelected,\n isNextSelected,\n isShowFocusRing,\n isSelectionEnabled,\n isSingleSelection,\n isActive,\n isHover,\n isPseudoHover,\n isHighContrast,\n variants,\n padding\n}: ListRowThemingProps) => {\n const rowStyles = isHighContrast ? listRowStylesHC : listRowStyles;\n const classArray = [rowStyles.base];\n\n // Padding styling logic\n const { isTopPadding, isBottomPadding, isStartPadding, isEndPadding } = _getPaddingInfo(padding);\n classArray.push(isStartPadding ? rowStyles.startPadding : rowStyles.startNoPadding);\n classArray.push(isEndPadding ? rowStyles.endPadding : rowStyles.endNoPadding);\n\n _applyFocusStyling(classArray, rowStyles, isShowFocusRing);\n\n // Horizontal and vertical alignment styling logic\n classArray.push(textAlignStyles['start']);\n classArray.push(verticalAlignStyles['center']);\n\n // Interaction styling logic\n let hasHoverFeedback = false;\n if (isSelectionEnabled) {\n if (isActive) {\n classArray.push(rowStyles.active);\n hasHoverFeedback = true;\n } else if (isHover) {\n classArray.push(rowStyles.hover);\n hasHoverFeedback = true;\n } else if (isPseudoHover) {\n classArray.push(rowStyles.pseudoHover);\n hasHoverFeedback = true;\n }\n }\n if (variants?.includes('currentHighlight')) {\n classArray.push(rowStyles.rowHighlight);\n hasHoverFeedback = true;\n }\n if (variants?.includes('stuckHighlight')) {\n classArray.push(rowStyles.stuckHighlight);\n }\n if (variants?.includes('clipboardCut')) {\n classArray.push(rowStyles.clipboardCut);\n }\n if (isTopSticky) {\n classArray.push(rowStyles.topSticky);\n if (hasStickyEdge) {\n classArray.push(rowStyles.stuck);\n }\n }\n\n // Selected Rows and Horizontal Gridline styling logic\n let hasBackground = false;\n if (isSelected) {\n hasBackground = true;\n classArray.push(rowStyles.selectedBackground);\n classArray.push(rowStyles.selectedBorder);\n if (variants?.includes('selectedBorderTop')) {\n classArray.push(rowStyles.selectedBorderTop);\n }\n if (variants?.includes('selectedBorderBottom')) {\n classArray.push(rowStyles.selectedBorderBottom);\n }\n } else if (hasHoverFeedback) {\n classArray.push(rowStyles.hoverBorderRadius);\n }\n\n let edgeCount = 0;\n if (hasTopEdge) {\n edgeCount++;\n if (isSingleSelection && (isSelected || isPreviousSelected)) {\n classArray.push(rowStyles.horizontalSelectedGridTop);\n classArray.push(\n isTopPadding ? rowStyles.selectedBorderTopPadding : rowStyles.selectedBorderTopNoPadding\n );\n } else if (hasTopGridline) {\n classArray.push(rowStyles.horizontalGridTop);\n classArray.push(isTopPadding ? rowStyles.borderTopPadding : rowStyles.borderTopNoPadding);\n } else {\n classArray.push(isTopPadding ? rowStyles.topSpacerPadding : rowStyles.topSpacerNoPadding);\n }\n } else {\n classArray.push(isTopPadding ? rowStyles.topPadding : rowStyles.topNoPadding);\n }\n if (hasBottomEdge) {\n edgeCount++;\n if (isSingleSelection && (isSelected || isNextSelected)) {\n classArray.push(rowStyles.horizontalSelectedGridBottom);\n classArray.push(\n isBottomPadding\n ? rowStyles.selectedBorderBottomPadding\n : rowStyles.selectedBorderBottomNoPadding\n );\n } else if (hasBottomGridline) {\n classArray.push(rowStyles.horizontalGridBottom);\n classArray.push(\n isBottomPadding ? rowStyles.borderBottomPadding : rowStyles.borderBottomNoPadding\n );\n } else {\n classArray.push(\n isBottomPadding ? rowStyles.bottomSpacerPadding : rowStyles.bottomSpacerNoPadding\n );\n }\n } else {\n classArray.push(isBottomPadding ? rowStyles.bottomPadding : rowStyles.bottomNoPadding);\n }\n if (edgeCount === 0) {\n classArray.push(rowStyles.noGridlineRow);\n } else if (edgeCount === 1) {\n classArray.push(rowStyles.singleGridlineRow);\n } else {\n classArray.push(rowStyles.doubleGridlineRow);\n }\n\n if (!hasBackground) {\n classArray.push(rowStyles.background);\n }\n return classArray;\n};\n\ntype ListCellThemingProps = {\n isHighContrast: boolean;\n};\n\n/**\n * Helper function to generate the class array for a list cell.\n */\nexport const getListCellClassArray = ({ isHighContrast }: ListCellThemingProps) => {\n const cellStyles = isHighContrast ? listCellStylesHC : listCellStyles;\n const classArray = [cellStyles.base];\n return classArray;\n};\n\nconst _getPaddingInfo = (padding?: ItemPadding) => {\n const isPaddingEnabled = padding === 'enabled';\n const isComplexPadding = padding instanceof Object;\n\n const isBottomPadding = isPaddingEnabled || (isComplexPadding && padding?.bottom === 'enabled');\n const isEndPadding = isPaddingEnabled || (isComplexPadding && padding?.end === 'enabled');\n const isStartPadding = isPaddingEnabled || (isComplexPadding && padding?.start === 'enabled');\n const isTopPadding = isPaddingEnabled || (isComplexPadding && padding?.top === 'enabled');\n\n return { isTopPadding, isBottomPadding, isStartPadding, isEndPadding };\n};\n\nconst _applyFocusStyling = (\n classArray: string[],\n elementStyles: RowStyles,\n isShowFocusRing?: boolean\n) => {\n if (isShowFocusRing) {\n classArray.push(elementStyles.focused);\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 } from 'preact';\nimport type { ListItemRendererContext, Metadata } from '#UNSAFE_Collection';\nimport type { ItemTooltip } from './List.types';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { ACC_GRID_CELL, ACC_OPTION, ACC_TREE_ITEM } from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { getListCellClassArray } from './utils/ListThemeUtils';\n\n/**\n * Props for the ListCell Component\n */\ntype ListCellProps<K, D> = {\n hasTabIndex: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n isExpanded?: boolean;\n isHighContrast: boolean;\n isSelected?: boolean;\n isTabbableMode: boolean;\n itemTooltip?: ItemTooltip<K, D>;\n listId: string;\n renderer?: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n rowData: D;\n rowIndex: number;\n rowMetadata: Metadata<K>;\n selectorRenderer?: () => ComponentChildren;\n};\n\n/**\n * The internal component used to render a single cell in a ListRow.\n */\nexport function ListCell<K, D>({\n hasTabIndex,\n isAccGrid,\n isAccTree,\n isExpanded,\n isHighContrast,\n isSelected,\n isTabbableMode,\n itemTooltip,\n listId,\n renderer,\n rowData,\n rowIndex,\n rowMetadata,\n selectorRenderer\n}: ListCellProps<K, D>) {\n const itemContext: ListItemRendererContext<K, D> = {\n data: rowData,\n metadata: rowMetadata,\n selector: selectorRenderer,\n isSelected,\n index: rowIndex,\n isTabbable: isTabbableMode\n };\n const itemTooltipValue =\n typeof itemTooltip === 'function' ? itemTooltip(itemContext) : itemTooltip;\n\n return (\n <div\n aria-colindex={isAccGrid ? 1 : undefined}\n aria-expanded={isExpanded}\n aria-level={\n isAccTree\n ? rowMetadata.treeDepth != null\n ? rowMetadata.treeDepth + 1\n : undefined\n : undefined\n }\n aria-selected={isSelected}\n class={classNames(getListCellClassArray({ isHighContrast }))}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n tabIndex={hasTabIndex ? 0 : -1}\n data-oj-cell-type={'data'}\n data-oj-list-data={listId}\n data-oj-private-list-tooltip={\n isAccTree && itemTooltipValue === 'enabled' ? 'enabled' : undefined\n }\n data-oj-list-focusable={listId}>\n {renderer?.(itemContext)}\n </div>\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 } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type { ListItemRendererContext, Metadata, SelectionDetail } from '#UNSAFE_Collection';\nimport type { ItemTooltip } from './List.types';\nimport type { ItemPadding } from '#UNSAFE_Collection/List.types';\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 { isSameKey } from '#utils/UNSAFE_keys';\nimport { Selector } from '#UNSAFE_Selector';\nimport { ACC_ROW } from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { getListRowClassArray } from './utils/ListThemeUtils';\nimport { ListCell } from './ListCell';\n\n/**\n * Props for the ListRow Component\n */\nexport type ListRowProps<K extends string | number, D> = {\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n disabledInteractionKeys?: ('enter' | 'space')[];\n hasBottomEdge: boolean;\n hasBottomGridline: boolean;\n hasStickyEdge: boolean;\n hasTopEdge: boolean;\n hasTopGridline: boolean;\n isAccGrid: boolean;\n isAccListBox: boolean;\n isAccTree: boolean;\n isActive: boolean;\n isApplyCellTabIndex: boolean;\n isExpanded?: boolean;\n isHighContrast: boolean;\n isNextSelected: boolean;\n isNonSelectable: boolean;\n isPreviousSelected: boolean;\n isRtl: boolean;\n isSelected: boolean;\n isSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isSingleSelectionEnabled: boolean;\n isTabbableMode: boolean;\n itemTooltip?: ItemTooltip<K, D>;\n listId: string;\n onSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n padding: ItemPadding;\n rowData: D;\n rowIndex: number;\n rowMetadata: Metadata<K>;\n selectedRowKeys: Keys<K>;\n stickyTop?: number;\n variants?: string[];\n};\n\n/**\n * The internal component used to render a single row in List.\n */\nexport function ListRow<K extends string | number, D>({\n children,\n disabledInteractionKeys,\n hasBottomEdge,\n hasBottomGridline,\n hasStickyEdge,\n hasTopEdge,\n hasTopGridline,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isActive,\n isApplyCellTabIndex,\n isExpanded,\n isHighContrast,\n isNextSelected,\n isNonSelectable,\n isPreviousSelected,\n isRtl,\n isSelected,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n listId,\n onSelectionChange,\n padding,\n rowData,\n rowIndex,\n rowMetadata,\n selectedRowKeys,\n stickyTop,\n variants\n}: ListRowProps<K, D>) {\n const rowKey = rowMetadata.key;\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle({ disabledKeys: disabledInteractionKeys });\n\n const isSelectable = isSelectionEnabled && !isNonSelectable;\n const rowClasses = classNames(\n getListRowClassArray({\n hasBottomEdge,\n hasBottomGridline,\n hasStickyEdge,\n hasTopEdge,\n hasTopGridline,\n isActive: applyActiveStyle,\n isHighContrast,\n isHover: applyHoverStyle,\n isNextSelected,\n isPreviousSelected,\n isPseudoHover: applyPseudoHoverStyle,\n isSelected,\n isSelectionEnabled: isSelectable,\n isShowFocusRing,\n isSingleSelection: isSingleSelectionEnabled,\n isTopSticky: stickyTop != null,\n padding,\n variants\n })\n );\n\n const accessibleRowName = (rowIndex + 1).toString();\n const handleRowSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n {\n value: detail.value,\n target: detail.target\n },\n false\n );\n }\n };\n const selectorRenderer =\n isSelectable && !isSingleSelectionEnabled\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 // WAI-ARIA permits user agents to infer aria-selected for option and treeitem\n // roles under certain conditions, so keep the unselected state explicit.\n const ariaSelected = isSelected\n ? true\n : isSelectable || isAccTree || isAccListBox\n ? false\n : undefined;\n const cellProps = {\n listId,\n rowData,\n rowMetadata,\n rowIndex,\n isExpanded,\n isSelected: ariaSelected,\n isAccGrid,\n isAccTree,\n isHighContrast,\n hasTabIndex: isActive && !isTabbableMode && isApplyCellTabIndex,\n isTabbableMode,\n itemTooltip,\n renderer: children,\n selectorRenderer,\n isRtl\n };\n return (\n <div\n aria-rowindex={isAccGrid ? rowIndex + 1 : undefined}\n aria-level={\n isAccGrid\n ? rowMetadata.treeDepth != null\n ? rowMetadata.treeDepth + 1\n : undefined\n : undefined\n }\n class={rowClasses}\n role={isAccGrid ? ACC_ROW : undefined}\n style={stickyTop != null ? `top: ${stickyTop}px` : undefined}\n data-oj-key={rowKey}\n data-oj-list-row={listId}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(isSelectable && interactionProps)}>\n <ListCell {...cellProps} />\n </div>\n );\n}\n\nexport const compareListRows = (\n prev: ListRowProps<string | number, unknown>,\n next: ListRowProps<string | number, unknown>\n) => {\n if (prev && next) {\n return (\n prev.children === next.children &&\n prev.disabledInteractionKeys === next.disabledInteractionKeys &&\n prev.hasBottomEdge === next.hasBottomEdge &&\n prev.hasBottomGridline === next.hasBottomGridline &&\n prev.hasStickyEdge === next.hasStickyEdge &&\n prev.hasTopEdge === next.hasTopEdge &&\n prev.hasTopGridline === next.hasTopGridline &&\n prev.isAccGrid === next.isAccGrid &&\n prev.isAccListBox === next.isAccListBox &&\n prev.isAccTree === next.isAccTree &&\n prev.isActive === next.isActive &&\n prev.isApplyCellTabIndex === next.isApplyCellTabIndex &&\n prev.isExpanded === next.isExpanded &&\n prev.isHighContrast === next.isHighContrast &&\n prev.isNextSelected === next.isNextSelected &&\n prev.isNonSelectable === next.isNonSelectable &&\n prev.isPreviousSelected === next.isPreviousSelected &&\n prev.isRtl === next.isRtl &&\n prev.isSelected === next.isSelected &&\n (prev.isSelectionEnabled && !prev.isSingleSelectionEnabled\n ? isSameKey(prev.selectedRowKeys, next.selectedRowKeys)\n : true) &&\n prev.isSelectionEnabled === next.isSelectionEnabled &&\n prev.isShowFocusRing === next.isShowFocusRing &&\n prev.isSingleSelectionEnabled === next.isSingleSelectionEnabled &&\n prev.isTabbableMode === next.isTabbableMode &&\n prev.itemTooltip === next.itemTooltip &&\n prev.listId === next.listId &&\n prev.onSelectionChange === next.onSelectionChange &&\n prev.padding === next.padding &&\n prev.rowData === next.rowData &&\n prev.rowIndex === next.rowIndex &&\n prev.rowMetadata.isLeaf === next.rowMetadata.isLeaf &&\n prev.rowMetadata.key === next.rowMetadata.key &&\n prev.rowMetadata.parentKey === next.rowMetadata.parentKey &&\n prev.rowMetadata.suggestion === next.rowMetadata.suggestion &&\n prev.rowMetadata.treeDepth === next.rowMetadata.treeDepth &&\n prev.stickyTop === next.stickyTop &&\n prev.variants === next.variants\n );\n }\n return false;\n};\nexport const MemoizeListRow = memo(ListRow, compareListRows);\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 { ListItemRendererContext } from '#UNSAFE_Collection';\nimport type { ReorderableItemProps } from '#UNSAFE_Collection/Reorderable.types';\n\nimport { memo } from 'preact/compat';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { isKeyDefined } from '#utils/UNSAFE_keys';\nimport { useReorderableItem } from '#hooks/PRIVATE_useReorderable';\nimport { LIST_ROW_SELECTOR } from './utils/ListDomUtils';\nimport { reorderableStyles } from './themes/List.css';\nimport { compareListRows, ListRow, ListRowProps } from './ListRow';\n\n/**\n * Props for the ListRow Component\n */\ntype ListReorderableRowProps<K extends string | number, D> = ListRowProps<K, D> &\n ReorderableItemProps<K>;\n\n/**\n * The internal component used to render a single reorderable row in List.\n */\nfunction ListReorderableRow<K extends string | number, D>({\n children,\n dragKey,\n onReorder,\n rootRef,\n setDragKey,\n ...rowProps\n}: ListReorderableRowProps<K, D>) {\n const itemRef = useRef<HTMLDivElement | null>(null);\n const itemStyles = {\n itemOverlayFront: reorderableStyles.reorderableItemOverlayFront,\n itemOverlayRear: reorderableStyles.reorderableItemOverlayRear,\n itemDragger: reorderableStyles.reorderableItemDragger\n };\n const itemSelector = `[${LIST_ROW_SELECTOR}='${rowProps.listId}']`;\n const getItem = () => itemRef?.current?.closest(itemSelector);\n const setTransferData = useCallback(\n (event: DragEvent) => {\n event.dataTransfer?.setData(\n 'text/listview-items-key',\n JSON.stringify(rowProps.rowMetadata.key)\n );\n },\n [rowProps.rowMetadata.key]\n );\n\n const { rootProps, isDragged, overlayZoneBeforeProps, overlayZoneAfterProps } =\n useReorderableItem({\n isDisabled: onReorder ? false : true,\n dragKey,\n setDragKey,\n onReorder,\n rootRef,\n ref: itemRef,\n getItem,\n setTransferData,\n itemStyles,\n itemSelector,\n isVertical: true\n });\n\n const reorderClassArray = [];\n if (rootProps?.class != null) {\n reorderClassArray.push(rootProps.class);\n }\n reorderClassArray.push(reorderableStyles.reorderableItemDnd);\n const reorderClasses = classNames(reorderClassArray);\n\n const reorderableRenderer = (context: ListItemRendererContext<K, D>) => {\n return (\n <div {...rootProps} class={reorderClasses}>\n {children(context)}\n {!isDragged && isKeyDefined(dragKey) && (\n <>\n <div {...overlayZoneBeforeProps}></div>\n <div {...overlayZoneAfterProps}></div>\n </>\n )}\n </div>\n );\n };\n\n return <ListRow {...rowProps}>{reorderableRenderer}</ListRow>;\n}\n\nexport const MemoizeListReorderableRow = memo(\n ListReorderableRow,\n (\n prev: ListReorderableRowProps<string | number, unknown>,\n next: ListReorderableRowProps<string | number, unknown>\n ) => {\n if (prev && next) {\n return (\n compareListRows(prev, next) &&\n prev.dragKey === next.dragKey &&\n prev.onReorder === next.onReorder &&\n prev.rootRef === next.rootRef &&\n prev.setDragKey === next.setDragKey\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 { Size } from '#utils/UNSAFE_size';\n\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { dimensionInterpolations } from '#utils/UNSAFE_interpolations/dimensions';\nimport { mergeInterpolations } from '#utils/UNSAFE_mergeInterpolations';\nimport { listSkeletonStyles, listSkeletonStylesHC } from './themes/ListSkeletonStyles.css';\n\nconst dimensions = ['height', 'width'] as const;\n//This type has StyleInterpolationProps with the height prop made required.\ntype ListSkeletonProps = {\n isHighContrast: boolean;\n height?: Size;\n width?: Size;\n};\n\n// Create an array [dimensionInterpolations['height'], dimensionInterpolations['width']]\nconst skeletonDimensionInterpolation = Array.from(dimensions, (x) => dimensionInterpolations[x]);\nconst interpolations = [...Object.values(skeletonDimensionInterpolation)];\nconst SkeletonInterpolations = mergeInterpolations<ListSkeletonProps>(interpolations);\n\n/**\n * ListSkeleton component allows the appropriate skeleton to be rendered based on the\n * property values\n **/\nexport function ListSkeleton({ ...props }: ListSkeletonProps) {\n const skeletonStyles = props.isHighContrast ? listSkeletonStylesHC : listSkeletonStyles;\n const classes = classNames([skeletonStyles.bar]);\n\n const skeletonDimensions = SkeletonInterpolations({ width: '100%', ...props });\n return <div style={skeletonDimensions} class={classes} />;\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 { HierarchicalListItemContext } from '#UNSAFE_Collection';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { TableListProps } from './List.types';\n\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { LOADMORE_STYLE_CLASS } from '#PRIVATE_LoadMoreCollection';\nimport {\n ACC_GRID_CELL,\n ACC_OPTION,\n ACC_ROW,\n ACC_TREE_ITEM\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { listSkeletonStyles, listSkeletonStylesHC } from './themes/ListSkeletonStyles.css';\nimport { ListSkeleton } from './ListSkeleton';\n\ntype SkeletonRowProps<K extends string | number, D> = {\n listId: string;\n hasTabIndex: boolean;\n isEmbedded: boolean;\n isAccGrid: boolean;\n isAccTree: boolean;\n isShowFocusRing: boolean;\n type: 'initial' | 'loadMore' | 'loadMoreAnchor';\n isHighContrast: boolean;\n rowKey?: K;\n anchorItemContext?: HierarchicalListItemContext<K, D>;\n loadingIndicator: TableListProps<K, D>['loadingIndicator'];\n};\n\n/**\n * ListSkeletonRow renders a set of 'loading' skeletons.\n **/\nexport function ListSkeletonRow<K extends string | number, D>({\n listId,\n hasTabIndex,\n isEmbedded,\n isAccGrid,\n isAccTree,\n isShowFocusRing,\n type,\n isHighContrast,\n rowKey,\n anchorItemContext,\n loadingIndicator\n}: SkeletonRowProps<K, D>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const skeletonStyles = isHighContrast ? listSkeletonStylesHC : listSkeletonStyles;\n const cellClassArray = [skeletonStyles.cell];\n if (isShowFocusRing) {\n cellClassArray.push(skeletonStyles.focus);\n }\n const cellClasses = classNames(cellClassArray);\n const innerCellClasses = classNames([skeletonStyles.innerCell]);\n const rowClasses = classNames([skeletonStyles.row, skeletonStyles.rowHeight]);\n const firstRowClasses = rowClasses;\n\n const accCellContent = (\n <div style={'width:1px;height:0px;overflow:hidden;'}>{translations.collection_loading()}</div>\n );\n\n // The number of skeleton rows will be determined as follows:\n // 1. if we are rendering load more rows -> 3 skeletons\n // 2. if we are rendering initial loading in embedded mode -> 3 skeletons\n // 3. if we are rendering initial loading in non-embedded mode -> 25 skeletons\n const skeletonsCount = type !== 'initial' || isEmbedded ? 3 : 25;\n\n const treeDepth = anchorItemContext?.metadata?.treeDepth;\n const ariaLevel = treeDepth != null ? treeDepth + 2 : undefined;\n\n return (\n <div\n aria-level={isAccGrid ? ariaLevel : undefined}\n class={type !== 'loadMoreAnchor' ? LOADMORE_STYLE_CLASS : undefined}\n role={isAccGrid ? ACC_ROW : undefined}>\n <div\n aria-level={isAccTree ? ariaLevel : undefined}\n class={cellClasses}\n role={isAccGrid ? ACC_GRID_CELL : isAccTree ? ACC_TREE_ITEM : ACC_OPTION}\n tabIndex={hasTabIndex ? 0 : -1}\n data-oj-cell-type={type === 'initial' ? 'loading' : type}\n data-oj-key={rowKey != null ? rowKey : undefined}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(type === 'initial'\n ? { 'data-oj-list-loading': listId }\n : type === 'loadMore'\n ? { 'data-oj-list-loadmore': listId }\n : { 'data-oj-list-loadmore-anchor': listId })}\n data-oj-list-focusable={listId}>\n <div class={loadingIndicator != null ? undefined : innerCellClasses}>\n {accCellContent}\n {[...Array(skeletonsCount)].map((_element, index) => {\n const loadingIndicatorContext =\n type === 'loadMoreAnchor'\n ? {\n index,\n loadingStatus: type,\n anchorItemContext\n }\n : {\n index,\n loadingStatus: type\n };\n return loadingIndicator != null ? (\n loadingIndicator(loadingIndicatorContext)\n ) : (\n <div class={index === 0 ? firstRowClasses : rowClasses}>\n <ListSkeleton height=\"4x\" isHighContrast={isHighContrast} />\n </div>\n );\n })}\n </div>\n </div>\n </div>\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 } from 'preact';\nimport type { Keys } from '#utils/UNSAFE_keys';\nimport type {\n CollectionData,\n CurrentItemVariant,\n HierarchicalListItemContext,\n ItemContext,\n ListItemContext,\n ListItemRendererContext,\n SelectionDetail\n} from '#UNSAFE_Collection';\nimport type { ItemPadding, PromotedSection } from '#UNSAFE_Collection/List.types';\nimport type { ActiveCell, BorderEdges, TableListProps, ViewportInfo } from './List.types';\n\nimport { Fragment } from 'preact';\nimport { useCallback, useMemo } from 'preact/hooks';\nimport { globalImages } from '#ImageVars.css';\nimport { ExpandableContext, ToggleDetail } from '#hooks/UNSAFE_useExpandableContext';\nimport { useTheme } from '#hooks/UNSAFE_useTheme';\nimport { classNames } from '#utils/UNSAFE_classNames';\nimport { addKey, containsKey, removeKey } from '#utils/UNSAFE_keys';\nimport { LoadMoreCollection } from '#PRIVATE_LoadMoreCollection';\nimport { ReorderItemProps } from './hooks/useItemReorder';\nimport { sparkleStyles } from './themes/List.css';\nimport { Sparkle } from './Sparkle';\nimport { ListNoData } from './ListNoData';\nimport { MemoizeListRow } from './ListRow';\nimport { MemoizeListReorderableRow } from './ListReorderableRow';\nimport { ListSkeletonRow } from './ListSkeletonRow';\n\n/**\n * Props for the ListBody Component\n */\ntype ListBodyProps<K extends string | number, D> = {\n activeCell?: ActiveCell<K>;\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n currentItemKey?: K;\n currentItemVariant?: CurrentItemVariant;\n disabledInteractionKeys?: ('enter' | 'space')[];\n expanded?: Keys<K>;\n getIsExpandableRow?: (context: ListItemContext<K, D>) => boolean;\n getRowTopGridline: TableListProps<K, D>['getRowTopGridline'];\n hasBottomGridline: boolean;\n hasItemGridlines: boolean;\n hasMore: boolean;\n hasTopGridline: boolean;\n hasTopGridlineSetting: boolean;\n isAccGrid: boolean;\n isAccListBox: boolean;\n isAccTree: boolean;\n isApplyCellTabIndex: boolean;\n isEmbedded: boolean;\n isHighContrast: boolean;\n isRtl: boolean;\n isSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isSingleSelectionEnabled: boolean;\n isTabbableMode: boolean;\n itemTooltip?: TableListProps<K, D>['itemTooltip'];\n itemPadding: ItemPadding;\n listData: CollectionData<K, D>[];\n listId: string;\n loadMoreAnchorKeys?: Set<K>;\n noDataRenderer: TableListProps<K, D>['noDataRenderer'];\n nonSelectableRowKeys?: Set<K>;\n onExpandedChange: TableListProps<K, D>['onExpandedChange'];\n onLoadMore: () => void;\n onSelectionChange?: (detail: SelectionDetail<K>, isExtendableSelection: boolean) => void;\n promotedSection?: PromotedSection;\n reorderItemProps?: ReorderItemProps<K>;\n rowBorderEdges: BorderEdges;\n selected: Keys<K>;\n loadingIndicator: TableListProps<K, D>['loadingIndicator'];\n stickyEdgesState: number[];\n stickyTopRows: number[];\n stuckItemVariant?: CurrentItemVariant;\n transientEdgeState?: number;\n viewportInfo: ViewportInfo;\n cutItemKeys?: Keys<K>;\n};\n\n/**\n * The internal component used to render the body of a List.\n */\nexport function ListBody<K extends string | number, D>({\n activeCell,\n children,\n currentItemKey,\n currentItemVariant,\n disabledInteractionKeys,\n expanded,\n getIsExpandableRow,\n getRowTopGridline,\n hasBottomGridline,\n hasItemGridlines,\n hasMore,\n hasTopGridline,\n hasTopGridlineSetting,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isApplyCellTabIndex,\n isEmbedded,\n isHighContrast,\n isRtl,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n itemPadding,\n listData,\n listId,\n loadMoreAnchorKeys,\n noDataRenderer,\n nonSelectableRowKeys,\n onExpandedChange,\n onLoadMore,\n onSelectionChange,\n promotedSection,\n reorderItemProps,\n rowBorderEdges,\n selected,\n loadingIndicator,\n cutItemKeys,\n stickyEdgesState,\n stickyTopRows,\n stuckItemVariant,\n transientEdgeState,\n viewportInfo\n}: ListBodyProps<K, D>) {\n // returns a ListRowContext based on ItemContext (added key)\n const getRowContext = useCallback((context: ItemContext<CollectionData<K, D>>) => {\n return {\n data: context.data.data,\n index: context.index,\n key: context.data.metadata.key,\n metadata: context.data.metadata\n };\n }, []);\n\n const { name } = useTheme();\n\n const sectionInfo = useMemo(() => {\n const sections = [];\n const sectionsContainerClasses = [];\n const containerClasses = classNames([sparkleStyles.container]);\n if (promotedSection != null && promotedSection.count > 0) {\n const sparkleContainerClasses = classNames([\n sparkleStyles.container,\n // TODO: this component should create separate theme definitions to only show the image in redwood\n name === 'redwood' && globalImages\n ]);\n sections.push({ count: promotedSection.count, key: listData[0].metadata.key });\n sectionsContainerClasses.push(sparkleContainerClasses);\n if (promotedSection.count < listData.length) {\n sections.push({\n count: listData.length - promotedSection.count,\n key: listData[promotedSection.count].metadata.key\n });\n sectionsContainerClasses.push(containerClasses);\n }\n } else {\n let index = 0;\n for (let i = 0; i < stickyTopRows.length; i++) {\n if (stickyTopRows[i] === index) {\n continue;\n }\n sections.push({ count: stickyTopRows[i] - index, key: listData[index].metadata.key });\n sectionsContainerClasses.push(containerClasses);\n index = stickyTopRows[i];\n }\n if (listData.length > index) {\n sections.push({ count: listData.length - index, key: listData[index].metadata.key });\n sectionsContainerClasses.push(containerClasses);\n }\n }\n return { sections, sectionsContainerClasses };\n }, [promotedSection, stickyTopRows, listData, name]);\n\n let isPreviousSelected = false;\n let hasPreviousSelectedLoadMoreAnchor = false;\n let previousSectionIndex: number | undefined;\n const collectionChildrenFunc = (context: ItemContext<CollectionData<K, D>>) => {\n const listRowContext = getRowContext(context);\n const rowIndex = listRowContext.index;\n const isFinalRow = rowIndex === listData.length - 1;\n let sectionIndex: number | undefined;\n let nextSectionIndex: number | undefined;\n const sections = sectionInfo.sections;\n if (sections != null) {\n let count = 0;\n for (let i = 0; i < sections.length; i++) {\n if (rowIndex + 1 <= count + sections[i].count) {\n sectionIndex = i;\n nextSectionIndex = !isFinalRow && rowIndex + 2 <= count + sections[i].count ? i : i + 1;\n break;\n }\n count += sections[i].count;\n }\n }\n const rowKey = listRowContext.key;\n const isExpandable = getIsExpandableRow?.(listRowContext) ?? false;\n const isExpanded = isExpandable ? containsKey(expanded, rowKey) : undefined;\n const containsActiveCell = activeCell?.type === 'data' && activeCell.rowKey === rowKey;\n const isStuck = stickyEdgesState.includes(rowIndex);\n const isSelected = containsKey(selected, rowKey);\n const isNonSelectable = nonSelectableRowKeys != null && nonSelectableRowKeys.has(rowKey);\n const hasLoadMoreAnchor = loadMoreAnchorKeys?.has(rowKey) ?? false;\n const hasNextLoadingIndicator = hasLoadMoreAnchor || (isFinalRow && hasMore);\n const isNextSelected =\n !isFinalRow &&\n containsKey(selected, listData[rowIndex + 1].metadata.key) &&\n !hasLoadMoreAnchor;\n const rowTopGridline = getRowTopGridline?.(listRowContext);\n const isSpecificTopGridline = rowIndex === 0 || isStuck;\n const isTopGridlineVisible =\n isSpecificTopGridline && hasTopGridlineSetting\n ? hasTopGridline\n : rowTopGridline != null\n ? rowTopGridline === 'visible'\n : isSpecificTopGridline\n ? hasTopGridline\n : hasItemGridlines || sectionIndex !== previousSectionIndex;\n const isBottomGridlineVisible = isFinalRow\n ? hasBottomGridline || (hasMore && hasItemGridlines)\n : hasItemGridlines || sectionIndex !== nextSectionIndex;\n const stickyTop =\n stickyTopRows.indexOf(rowIndex) > -1\n ? viewportInfo.viewportConfig.scrollerOffsetTop ?? 0\n : undefined;\n const variants: string[] = [];\n if (isStuck && stuckItemVariant === 'highlight') {\n variants.push('stuckHighlight');\n }\n if (currentItemKey === rowKey && currentItemVariant === 'highlight') {\n variants.push('currentHighlight');\n }\n if (containsKey(cutItemKeys, rowKey)) {\n variants.push('clipboardCut');\n }\n if (isSelected) {\n if (!isPreviousSelected && !hasPreviousSelectedLoadMoreAnchor) {\n variants.push('selectedBorderTop');\n }\n if (!isNextSelected && !hasNextLoadingIndicator) {\n variants.push('selectedBorderBottom');\n }\n }\n const rowProps = {\n children,\n disabledInteractionKeys,\n hasBottomEdge: rowBorderEdges[rowIndex].hasBottom,\n hasBottomGridline: isBottomGridlineVisible,\n hasStickyEdge: isStuck,\n hasTopEdge: rowBorderEdges[rowIndex].hasTop,\n hasTopGridline: isTopGridlineVisible,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isActive: containsActiveCell,\n isApplyCellTabIndex,\n isExpanded,\n isHighContrast,\n isNextSelected: isStuck\n ? isNextSelected && stickyTopRows.indexOf(rowIndex + 1) > -1\n : isNextSelected,\n isNonSelectable,\n isPreviousSelected: isPreviousSelected && !isStuck && transientEdgeState !== rowIndex,\n isRtl,\n isSelected,\n isSelectionEnabled,\n isShowFocusRing: isShowFocusRing && containsActiveCell,\n isSingleSelectionEnabled,\n isTabbableMode,\n itemTooltip,\n listId,\n onSelectionChange,\n padding: itemPadding,\n rowData: listRowContext.data,\n rowIndex,\n rowMetadata: context.data.metadata,\n selectedRowKeys: selected,\n stickyTop,\n variants\n };\n isPreviousSelected = isSelected && !hasLoadMoreAnchor;\n hasPreviousSelectedLoadMoreAnchor = isSelected && hasLoadMoreAnchor;\n previousSectionIndex = sectionIndex;\n\n const childContent =\n reorderItemProps != null ? (\n <MemoizeListReorderableRow {...{ ...rowProps, ...reorderItemProps }} />\n ) : (\n <MemoizeListRow {...rowProps} />\n );\n\n if (isExpanded != null) {\n const onToggle = (detail: ToggleDetail) => {\n if (onExpandedChange) {\n const newExpandedKeys = expanded ?? { all: false, keys: new Set() };\n if (containsKey(newExpandedKeys, rowKey)) {\n onExpandedChange({\n value: removeKey(newExpandedKeys, rowKey, false),\n target: detail.target\n });\n } else {\n onExpandedChange({ value: addKey(newExpandedKeys, rowKey), target: detail.target });\n }\n }\n };\n return (\n <Fragment key={rowKey}>\n <ExpandableContext.Provider value={{ isExpanded, onToggle }}>\n {childContent}\n </ExpandableContext.Provider>\n {hasLoadMoreAnchor && loadMoreAnchorIndicator(rowKey)}\n </Fragment>\n );\n }\n return (\n <Fragment key={rowKey}>\n {childContent}\n {hasLoadMoreAnchor && loadMoreAnchorIndicator(rowKey)}\n </Fragment>\n );\n };\n\n const getNoDataProps = () => {\n const isActive = activeCell?.type === 'noData';\n const hasTabIndex = isActive && !isTabbableMode && isApplyCellTabIndex;\n return {\n listId,\n isShowFocusRing: isShowFocusRing && isActive,\n hasTabIndex,\n isTabbableMode,\n isAccGrid,\n isAccTree,\n ariaRowIndex: 1,\n renderer: noDataRenderer\n };\n };\n\n const isShowEmptyLoading = listData.length === 0 && hasMore;\n const isShowNoData = listData.length === 0 && !hasMore;\n\n const defaultLoadingIndicator = (\n <ListSkeletonRow\n listId={listId}\n hasTabIndex={\n isApplyCellTabIndex &&\n (isShowEmptyLoading ? activeCell?.type === 'loading' : activeCell?.type === 'loadMore')\n }\n isEmbedded={isEmbedded}\n isAccGrid={isAccGrid}\n isAccTree={isAccTree}\n type={isShowEmptyLoading ? 'initial' : 'loadMore'}\n isShowFocusRing={\n isShowFocusRing &&\n (isShowEmptyLoading ? activeCell?.type === 'loading' : activeCell?.type === 'loadMore')\n }\n isHighContrast={isHighContrast}\n loadingIndicator={loadingIndicator}\n />\n );\n\n const loadMoreAnchorIndicator = (rowKey: K) => {\n const isActiveCell = activeCell?.type === 'loadMoreAnchor' && activeCell.rowKey === rowKey;\n const anchorIndex = listData.findIndex((item) => item.metadata.key === rowKey);\n const anchorItemContext =\n anchorIndex > -1\n ? ({\n index: anchorIndex,\n ...listData[anchorIndex]\n } as HierarchicalListItemContext<K, D>)\n : undefined;\n return (\n <ListSkeletonRow\n listId={listId}\n hasTabIndex={isApplyCellTabIndex && isActiveCell}\n isEmbedded={isEmbedded}\n isAccGrid={isAccGrid}\n isAccTree={isAccTree}\n type={'loadMoreAnchor'}\n rowKey={rowKey}\n anchorItemContext={anchorItemContext}\n isShowFocusRing={isShowFocusRing && isActiveCell}\n isHighContrast={isHighContrast}\n loadingIndicator={loadingIndicator}\n />\n );\n };\n\n return isShowNoData ? (\n <ListNoData {...getNoDataProps()} />\n ) : (\n <LoadMoreCollection<CollectionData<K, D>>\n data={listData}\n loadMoreIndicator={defaultLoadingIndicator}\n suggestions={promotedSection != null ? <Sparkle /> : undefined}\n sections={sectionInfo.sections}\n sectionContainerClasses={sectionInfo.sectionsContainerClasses}\n hasMore={hasMore}\n onLoadMore={onLoadMore}\n viewportConfig={viewportInfo.viewportConfig}>\n {collectionChildrenFunc}\n </LoadMoreCollection>\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 { ComponentProps } from 'preact';\nimport type { BundleType } from '#resources/nls/bundle';\nimport type { ListItemContext as ListItemMenuContext } from '#UNSAFE_Collection';\n\nimport { useTranslationBundle } from '#hooks/UNSAFE_useTranslationBundle';\nimport { Menu } from '#UNSAFE_Menu';\nimport { TableListProps } from './List.types';\n\ntype Props<K extends string | number, D> = {\n contextMenuConfig: NonNullable<TableListProps<K, D>['contextMenuConfig']>;\n contextMenuContext: ListItemMenuContext<K, D>;\n} & Omit<ComponentProps<typeof Menu>, 'children'>;\n\n/**\n * The internal component used to render a custom context menu on the List\n */\nexport function ListContextMenu<K extends string | number, D>({\n contextMenuConfig,\n contextMenuContext,\n ...menuProps\n}: Props<K, D>) {\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","/**\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 { CurrentItemVariant } from '#UNSAFE_Collection';\nimport type { Handle } from '#UNSAFE_Collection/List.types';\nimport type { ListVariantOptions } from './themes/ListStyles.css';\nimport type { TableListProps } from './List.types';\n\nimport { createRef } from 'preact';\nimport { forwardRef } from 'preact/compat';\nimport { useCallback, useContext, useMemo, 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 { HiddenAccessible } from '#UNSAFE_HiddenAccessible';\nimport { getClientHints } from '#utils/PRIVATE_clientHints';\nimport { FocusTracker } from '#PRIVATE_FocusTracker';\nimport { ManageTabStops } from '#PRIVATE_FocusTracker/ManageTabStops';\nimport { useDataManager } from '#PRIVATE_TableCommon/hooks/useDataManager';\nimport { userSelectStyles } from '#PRIVATE_TableCommon/themes/Common.css';\nimport {\n ACC_GRID,\n ACC_LIST_BOX,\n ACC_TREE,\n ACC_TREE_GRID\n} from '#PRIVATE_TableCommon/utils/AccUtils';\nimport { useInteractionManager } from './hooks/useInteractionManager';\nimport { useSizingManager } from './hooks/useSizingManager';\nimport { reorderableStyles } from './themes/List.css';\nimport { ListRedwoodTheme } from './themes/redwood/ListTheme';\nimport { ListBody } from './ListBody';\nimport { ListContextMenu } from './ListContextMenu';\nimport { SwipeActionsCollectionContext } from '#UNSAFE_SwipeActions';\n\nconst _emptyKeys = { all: false, keys: new Set() };\n\n/**\n * Component that renders data in a flat list.\n */\nexport const List = forwardRef(function List<K extends string | number, D>(\n {\n allowedDropPositions,\n 'aria-describedby': ariaDescribedBy,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n children = () => undefined,\n collectionData,\n contextMenuConfig,\n currentItemOverride,\n currentItemVariant,\n expanded = _emptyKeys as NonNullable<TableListProps<K, D>['expanded']>,\n getIsExpandableRow,\n getRowTopGridline,\n gridlines,\n hasMore = false,\n itemEnterKeyFocusBehavior = 'focusWithin',\n itemPadding = 'disabled',\n itemTooltip,\n cutItemKeys,\n loadMoreAnchorKeys,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n noDataRenderer,\n nonSelectableRowKeys,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDragStart,\n onDrop,\n onExpandedChange,\n onItemAction,\n onLoadMore = () => {},\n onPersistCurrentItem,\n onReorder,\n onSelectedChange,\n promotedSection,\n role,\n scrollerRef,\n scrollPositionOverride,\n selected = _emptyKeys as NonNullable<TableListProps<K, D>['selected']>,\n selectionMode,\n loadingIndicator,\n stickyRowKeys,\n stuckItemVariant,\n testId,\n viewportConfig\n }: TableListProps<K, D>,\n ref?: ForwardedRef<Handle<K>>\n) {\n const listId = 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\n const { direction, forcedColors } = useUser();\n const isHighContrast = forcedColors === 'active';\n const isRtl = direction === 'rtl';\n\n const collectionInteractionContext = useCollectionInteractionContext();\n const isEmbedded = collectionInteractionContext.mode === 'embedded';\n const itemVariant: CurrentItemVariant =\n currentItemVariant ??\n collectionInteractionContext.currentItemVariant ??\n (isEmbedded ? 'highlight' : 'none');\n const accRole = role ?? (isEmbedded ? ACC_LIST_BOX : ACC_GRID);\n\n const {\n managedData: listData,\n keyDataMap,\n onManagedLoadMore: onListLoadMore,\n stickyTopRows\n } = useDataManager<K, D>({\n collectionData,\n hasMore,\n onLoadMore,\n stickyRowKeys\n });\n\n const {\n viewportInfo,\n rowBorderEdges,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState\n } = useSizingManager<K, D>({\n listData,\n scrollerRef: rootRef,\n viewportConfig,\n externalScrollerAccessRef: scrollerRef,\n stickyTopRows\n });\n\n const ariaRowCount = hasMore ? -1 : listData.length;\n\n const {\n interactionManagerProps,\n onListSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n currentActiveCell,\n focusCurrentCellOrRoot,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge,\n contextMenuContext,\n menuProps,\n disabledRowInteractionKeys,\n reorderItemProps,\n reorderInstructions,\n reorderInstructionsId,\n dndDropIndicatorTop,\n tooltipContent\n } = useInteractionManager<K, D>({\n rootRef,\n viewportInfo,\n ref,\n listId,\n listData,\n keyDataMap,\n hasMore,\n isEmbedded,\n isLayoutRequired: false,\n isTree: accRole === ACC_TREE,\n isTreeGrid: accRole === ACC_TREE_GRID,\n itemTooltip,\n scrollPositionOverride,\n currentItemOverride,\n onPersistCurrentItem,\n selectionMode,\n selected,\n nonSelectableRowKeys,\n loadMoreAnchorKeys,\n onSelectedChange,\n expanded,\n onExpandedChange,\n onItemAction,\n onCutRequest,\n onCutCancelRequest,\n onCopyRequest,\n onPasteRequest,\n itemEnterKeyFocusBehavior,\n contextMenuConfig,\n onReorder,\n stickyTopRows,\n stickyEdgesState,\n setStickyEdgesState,\n transientEdgeState,\n setTransientEdgeState,\n allowedDropPositions,\n onDragStart,\n onDrag,\n onDragEnd,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDrop,\n cutItemKeys\n });\n\n // initialize base List style classes\n const { classes: themeClasses } = useComponentTheme<ListVariantOptions>(ListRedwoodTheme, {\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n externalScroller: viewportInfo.isExternalScroller ? 'isExternalScroller' : 'notExternalScroller'\n });\n const classArray = [themeClasses];\n const allowBrowserContextMenu = !(\n getClientHints().platform === 'ios' || getClientHints().platform === 'android'\n );\n if (!allowBrowserContextMenu) {\n classArray.push(userSelectStyles.none);\n }\n const classes = classNames(classArray);\n\n const hasItemGridlines = gridlines?.item === 'visible';\n const hasTopGridline = gridlines?.top === 'visible';\n const hasTopGridlineSetting = gridlines?.top != null;\n const hasBottomGridline = gridlines?.bottom === 'visible';\n\n const isSelectionEnabled =\n selectionMode === 'single' ||\n selectionMode === 'multiple' ||\n selectionMode === 'multipleToggle';\n const supportsMultipleSelection =\n selectionMode === 'multiple' || selectionMode === 'multipleToggle';\n\n // honor outer isTabbable context for embedded scenarios\n const { isTabbable } = useContext(TabbableModeContext);\n const isAccGrid = accRole === ACC_TREE_GRID || accRole === ACC_GRID;\n const isAccListBox = accRole === ACC_LIST_BOX;\n const isAccTree = accRole === ACC_TREE;\n\n const getListBodyProps = () => {\n return {\n activeCell: currentActiveCell,\n children,\n currentItemKey: currentCell?.type === 'data' ? currentCell.rowKey : undefined,\n currentItemVariant: itemVariant,\n disabledInteractionKeys: disabledRowInteractionKeys,\n cutItemKeys,\n expanded,\n getIsExpandableRow,\n getRowTopGridline,\n hasBottomGridline,\n hasItemGridlines,\n hasMore,\n hasTopGridline,\n hasTopGridlineSetting,\n isAccGrid,\n isAccListBox,\n isAccTree,\n isApplyCellTabIndex: isTabbable,\n isEmbedded,\n isHighContrast,\n isRtl,\n isDroppable: onDrop != null,\n isSelectionEnabled,\n isShowFocusRing,\n isSingleSelectionEnabled: selectionMode === 'single',\n isTabbableMode,\n itemTooltip,\n itemPadding,\n listData,\n listId,\n loadMoreAnchorKeys,\n noDataRenderer,\n nonSelectableRowKeys,\n onExpandedChange,\n onLoadMore: onListLoadMore,\n onSelectionChange: onListSelectionChange,\n promotedSection,\n reorderItemProps,\n rowBorderEdges,\n selected,\n loadingIndicator,\n stickyEdgesState,\n stickyTopRows,\n stuckItemVariant,\n transientEdgeState,\n viewportInfo\n };\n };\n\n const isReorderEnabled = onReorder != null;\n const compositeDescription =\n ariaDescribedBy != null\n ? isReorderEnabled\n ? `${ariaDescribedBy} ${reorderInstructionsId}`\n : ariaDescribedBy\n : isReorderEnabled\n ? reorderInstructionsId\n : undefined;\n\n const ariaMultiSelectableProps = supportsMultipleSelection\n ? { 'aria-multiselectable': true }\n : isSelectionEnabled\n ? { 'aria-multiselectable': false }\n : {};\n\n const swipeActionsCollectionContext = useMemo(\n () => ({\n restoreFocus: () => {\n // We use this instead of rootRef.current.focus() as it causes the page to scroll.\n focusCurrentCellOrRoot();\n }\n }),\n [focusCurrentCellOrRoot]\n );\n return (\n <>\n <div\n {...testIdProps}\n ref={rootRefCallback}\n aria-colcount={isAccGrid ? 1 : undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={compositeDescription}\n aria-rowcount={isAccGrid ? ariaRowCount : undefined}\n {...ariaMultiSelectableProps}\n class={classes}\n id={listId}\n role={accRole}\n tabIndex={currentActiveCell != null || !isTabbable ? -1 : 0}\n {...interactionManagerProps}>\n <FocusTracker\n isDisabled={!isTabbableMode}\n onFocusStartEdge={onFocusStartEdge}\n onFocusEndEdge={onFocusEndEdge}\n onStartTracking={onStartFocusTracking}>\n <SwipeActionsCollectionContext value={swipeActionsCollectionContext}>\n <ManageTabStops\n isTabbable={isTabbableMode}\n isTrackingDisabled={accRole === ACC_TREE || accRole === ACC_LIST_BOX}>\n <ListBody {...getListBodyProps()} />\n </ManageTabStops>\n </SwipeActionsCollectionContext>\n </FocusTracker>\n {tooltipContent}\n {dndDropIndicatorTop != null && (\n <div\n class={reorderableStyles.dropIndicatorLine}\n style={`top: ${dndDropIndicatorTop}px;`}\n />\n )}\n </div>\n {isReorderEnabled && (\n <span id={reorderInstructionsId}>\n <HiddenAccessible>{reorderInstructions}</HiddenAccessible>\n </span>\n )}\n {contextMenuConfig != null && contextMenuContext != null && (\n <ListContextMenu\n {...menuProps}\n testId={testId != null ? testId + '-menu' : undefined}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n}) as <K extends string | number, D>(\n p: TableListProps<K, D> & { ref?: ForwardedRef<Handle<K>> }\n) => JSX.Element;\n"],"names":["DomUtils.getRowKey","DomUtils.getRowIndexForRowElement","DomUtils.getCellType","keyExtractor","DomUtils.getFirstRenderedRowKey","DomUtils.getLastRenderedRowKey","DomUtils.getElementBySelector","isHTMLScroller","getScrollbarHeight","getVerticalOverflowDiff","getRowKey","findElementByKey","useState","useRef","useContextMenuGesture","useCallback","hasAnyKeys","containsKey","useEffect","reorderableItemStyles","classNames","reorderableStyles","createMultiItemDragImageWithHotspot","createDragImage","useMemo","mergeProps","addKey","removeKey","getTruncatedTextInfos","handleCommonNavigationTooltipGesture","handleCommonMoveTooltipGesture","getCellType","handleLeaveTooltipGesture","getElementContainsFunc","handleEnterActionableMode","allTabbableElements","handleWrapActionableFocus","getActiveElement","getBodyElement","useReorderable","dragToScroll","isSameKey","isLogicalCtrl","useUser","getIsSelectionPending","getRowActionGestureContext","handleRowActionGesture","useLayoutEffect","useCommonTruncationTooltip","useImperativeHandle","UNSAFE_DOM_ACCESS","sparkleStyles","_jsx","useTranslationBundle","listRowStyles","useComponentTheme","ListNoDataRedwoodTheme","ACC_ROW","ACC_GRID_CELL","ACC_TREE_ITEM","ACC_OPTION","listRowStylesHC","textAlignStyles","verticalAlignStyles","listCellStylesHC","listCellStyles","useInteractionStyle","Selector","memo","useReorderableItem","_jsxs","isKeyDefined","_Fragment","dimensionInterpolations","mergeInterpolations","listSkeletonStylesHC","listSkeletonStyles","LOADMORE_STYLE_CLASS","useTheme","globalImages","Fragment","ExpandableContext","LoadMoreCollection","Menu","forwardRef","useId","useTestId","createRef","useCollectionInteractionContext","ACC_LIST_BOX","ACC_GRID","useDataManager","ACC_TREE","ACC_TREE_GRID","ListRedwoodTheme","getClientHints","userSelectStyles","useContext","TabbableModeContext","FocusTracker","SwipeActionsCollectionContext","ManageTabStops","HiddenAccessible"],"mappings":"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"}