@oracle/oraclejet-preact 18.0.4 → 18.0.6

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 (595) hide show
  1. package/amd/{BaseCardView-ab799b69.js → BaseCardView-70b177ed.js} +2 -2
  2. package/amd/{BaseCardView-ab799b69.js.map → BaseCardView-70b177ed.js.map} +1 -1
  3. package/amd/CardFlexView-bb5c4369.js +2 -0
  4. package/amd/{CardFlexView-296f97f5.js.map → CardFlexView-bb5c4369.js.map} +1 -1
  5. package/amd/{CardGridView-054ffc3f.js → CardGridView-c28ff2f7.js} +2 -2
  6. package/amd/{CardGridView-054ffc3f.js.map → CardGridView-c28ff2f7.js.map} +1 -1
  7. package/amd/ExpandableList-dd3a05b4.js +1 -1
  8. package/amd/GroupLoadingIndicator-6b2ab709.js +1 -1
  9. package/amd/{Indexer-1531dbc3.js → Indexer-357554c4.js} +2 -2
  10. package/amd/{Indexer-1531dbc3.js.map → Indexer-357554c4.js.map} +1 -1
  11. package/amd/InputDatePicker-fc39f0a6.js +2 -0
  12. package/amd/{InputDatePicker-18e2546b.js.map → InputDatePicker-fc39f0a6.js.map} +1 -1
  13. package/amd/{LineAreaChart-d0941475.js → LineAreaChart-4140d004.js} +2 -2
  14. package/amd/{LineAreaChart-d0941475.js.map → LineAreaChart-4140d004.js.map} +1 -1
  15. package/amd/List-04c4fed0.js +2 -0
  16. package/amd/{List-0b764e84.js.map → List-04c4fed0.js.map} +1 -1
  17. package/amd/{ListView-5bb45f81.js → ListView-bf740071.js} +2 -2
  18. package/amd/{ListView-5bb45f81.js.map → ListView-bf740071.js.map} +1 -1
  19. package/amd/LoadMoreCollection-a6adbc3f.js +2 -0
  20. package/amd/{LoadMoreCollection-83413a59.js.map → LoadMoreCollection-a6adbc3f.js.map} +1 -1
  21. package/amd/NavigationListItem-044a79fd.js +2 -0
  22. package/amd/{NavigationListItem-021b2d58.js.map → NavigationListItem-044a79fd.js.map} +1 -1
  23. package/amd/{OverflowTabBar-ea3a4742.js → OverflowTabBar-339f34cf.js} +2 -2
  24. package/amd/{OverflowTabBar-ea3a4742.js.map → OverflowTabBar-339f34cf.js.map} +1 -1
  25. package/amd/{OverflowTabBarItem-763773c9.js → OverflowTabBarItem-c59db4a2.js} +2 -2
  26. package/amd/{OverflowTabBarItem-763773c9.js.map → OverflowTabBarItem-c59db4a2.js.map} +1 -1
  27. package/amd/PRIVATE_BaseCardView.js +1 -1
  28. package/amd/PRIVATE_List.js +1 -1
  29. package/amd/PRIVATE_LoadMoreCollection.js +1 -1
  30. package/amd/PRIVATE_SelectCommon.js +1 -1
  31. package/amd/PRIVATE_Table.js +1 -1
  32. package/amd/PRIVATE_VirtualizedCollection.js +1 -1
  33. package/amd/{SelectMultiple-7e9bd455.js → SelectMultiple-e3a6732b.js} +2 -2
  34. package/amd/{SelectMultiple-7e9bd455.js.map → SelectMultiple-e3a6732b.js.map} +1 -1
  35. package/amd/{SelectSingle-466bcd67.js → SelectSingle-9d0dca8f.js} +2 -2
  36. package/amd/{SelectSingle-466bcd67.js.map → SelectSingle-9d0dca8f.js.map} +1 -1
  37. package/amd/{Table-87f7e3c4.js → Table-31cc83c6.js} +2 -2
  38. package/amd/{Table-87f7e3c4.js.map → Table-31cc83c6.js.map} +1 -1
  39. package/amd/{TableView-2b884e2c.js → TableView-ab5d0c12.js} +2 -2
  40. package/amd/{TableView-2b884e2c.js.map → TableView-ab5d0c12.js.map} +1 -1
  41. package/amd/Theme-redwood/theme.css +149 -149
  42. package/amd/Theme-stable/theme.css +277 -277
  43. package/amd/UNSAFE_CardFlexView.js +1 -1
  44. package/amd/UNSAFE_CardGridView.js +1 -1
  45. package/amd/UNSAFE_ExpandableList.js +1 -1
  46. package/amd/UNSAFE_Indexer.js +1 -1
  47. package/amd/UNSAFE_InputDatePicker.js +1 -1
  48. package/amd/UNSAFE_LineAreaChart.js +1 -1
  49. package/amd/UNSAFE_ListView.js +1 -1
  50. package/amd/UNSAFE_NavigationList.js +1 -1
  51. package/amd/UNSAFE_OverflowTabBar.js +1 -1
  52. package/amd/UNSAFE_SelectMultiple.js +1 -1
  53. package/amd/UNSAFE_SelectSingle.js +1 -1
  54. package/amd/UNSAFE_TabBar.js +1 -1
  55. package/amd/UNSAFE_TabBarCommon.js +1 -1
  56. package/amd/UNSAFE_TabBarMixed.js +1 -1
  57. package/amd/UNSAFE_TableView.js +1 -1
  58. package/amd/UNSAFE_VirtualizedListView.js +1 -1
  59. package/amd/{VirtualizedCollection-897516a5.js → VirtualizedCollection-63223f5e.js} +2 -2
  60. package/amd/{VirtualizedCollection-897516a5.js.map → VirtualizedCollection-63223f5e.js.map} +1 -1
  61. package/amd/{VirtualizedListView-cbe87ec2.js → VirtualizedListView-554eaee6.js} +2 -2
  62. package/amd/{VirtualizedListView-cbe87ec2.js.map → VirtualizedListView-554eaee6.js.map} +1 -1
  63. package/amd/{useSelectCommon-d9c4a7bd.js → useSelectCommon-e7f123ce.js} +2 -2
  64. package/amd/{useSelectCommon-d9c4a7bd.js.map → useSelectCommon-e7f123ce.js.map} +1 -1
  65. package/cjs/{BarChart-93a3813c.js → BarChart-ca7f8ed5.js} +2 -2
  66. package/cjs/{BarChart-93a3813c.js.map → BarChart-ca7f8ed5.js.map} +1 -1
  67. package/cjs/{Chart-40d95d14.js → Chart-fbbd3329.js} +2 -2
  68. package/cjs/{Chart-40d95d14.js.map → Chart-fbbd3329.js.map} +1 -1
  69. package/cjs/CheckboxSet-1bdbc419.js +53 -0
  70. package/cjs/CheckboxSet-1bdbc419.js.map +1 -0
  71. package/cjs/{ComboChart-cffd0759.js → ComboChart-95863e7a.js} +2 -2
  72. package/cjs/{ComboChart-cffd0759.js.map → ComboChart-95863e7a.js.map} +1 -1
  73. package/cjs/{LineAreaChart-57408e94.js → LineAreaChart-46dde5d3.js} +3 -3
  74. package/cjs/{LineAreaChart-57408e94.js.map → LineAreaChart-46dde5d3.js.map} +1 -1
  75. package/cjs/PRIVATE_Chart.js +4 -4
  76. package/cjs/{ScatterChart-763e1f3e.js → ScatterChart-0497f41a.js} +2 -2
  77. package/cjs/{ScatterChart-763e1f3e.js.map → ScatterChart-0497f41a.js.map} +1 -1
  78. package/cjs/Theme-redwood/theme.css +242 -242
  79. package/cjs/Theme-stable/theme.css +295 -295
  80. package/cjs/UNSAFE_BarChart/__test__/BarChart.spec.js +5 -5
  81. package/cjs/UNSAFE_BarChart.js +5 -5
  82. package/cjs/UNSAFE_CheckboxItem.js +81 -30
  83. package/cjs/UNSAFE_CheckboxItem.js.map +1 -1
  84. package/cjs/UNSAFE_CheckboxSet.js +15 -44
  85. package/cjs/UNSAFE_CheckboxSet.js.map +1 -1
  86. package/cjs/UNSAFE_ComboChart.js +5 -5
  87. package/cjs/UNSAFE_LineAreaChart.js +5 -5
  88. package/cjs/UNSAFE_RichCheckboxSet.js +15 -13
  89. package/cjs/UNSAFE_RichCheckboxSet.js.map +1 -1
  90. package/cjs/UNSAFE_RichSelectionItem.js +181 -44
  91. package/cjs/UNSAFE_RichSelectionItem.js.map +1 -1
  92. package/cjs/UNSAFE_ScatterChart.js +5 -5
  93. package/es/ActionCard-e64b1771.js +1 -1
  94. package/es/{BarChart-dd37d569.js → BarChart-a3209793.js} +3 -3
  95. package/es/{BarChart-dd37d569.js.map → BarChart-a3209793.js.map} +1 -1
  96. package/es/BarGroup-740cd159.js +1 -1
  97. package/es/BaseButton-3ce1f027.js +2 -2
  98. package/es/BaseCardView-c5a8ee6a.js +7 -7
  99. package/es/{BaseCardViewSelectionTest-1a6585af.js → BaseCardViewSelectionTest-cf72be09.js} +7 -7
  100. package/es/{BaseCardViewSelectionTest-1a6585af.js.map → BaseCardViewSelectionTest-cf72be09.js.map} +1 -1
  101. package/es/BaseNavigationListItem-530bc3df.js +1 -1
  102. package/es/BaseRichSelection-9fa49816.js +8 -8
  103. package/es/ButtonSet-51dcff96.js +2 -2
  104. package/es/ButtonSetIconButton-536c1045.js +3 -3
  105. package/es/{Card-44b7de2f.js → Card-de0aef24.js} +2 -2
  106. package/es/{Card-44b7de2f.js.map → Card-de0aef24.js.map} +1 -1
  107. package/es/{Center-8b48ab02.js → Center-9f355d44.js} +2 -2
  108. package/es/{Center-8b48ab02.js.map → Center-9f355d44.js.map} +1 -1
  109. package/es/{Chart-b046fb6a.js → Chart-b97e00f1.js} +10 -10
  110. package/es/{Chart-b046fb6a.js.map → Chart-b97e00f1.js.map} +1 -1
  111. package/es/CheckboxControl-ee327a6d.js +6 -6
  112. package/es/CheckboxRadioField-a4db2c10.js +6 -6
  113. package/es/CheckboxSet-3c3b7c71.js +49 -0
  114. package/es/CheckboxSet-3c3b7c71.js.map +1 -0
  115. package/es/Chip-8554d3ff.js +1 -1
  116. package/es/ClearIcon-95064ad6.js +1 -1
  117. package/es/CollapseIcon-4e943f42.js +1 -1
  118. package/es/Collapsible-cb2ba356.js +2 -2
  119. package/es/{ComboChart-58ac07b4.js → ComboChart-b8c2be4d.js} +4 -4
  120. package/es/{ComboChart-58ac07b4.js.map → ComboChart-b8c2be4d.js.map} +1 -1
  121. package/es/CompactHelpSource-9c0d4cb4.js +2 -2
  122. package/es/{CompactLabelAssistance-6a627bbb.js → CompactLabelAssistance-7912767d.js} +5 -5
  123. package/es/{CompactLabelAssistance-6a627bbb.js.map → CompactLabelAssistance-7912767d.js.map} +1 -1
  124. package/es/CompactUserAssistance-12950e48.js +4 -4
  125. package/es/ComponentMessageContainer-f2837e7f.js +4 -4
  126. package/es/ConveyorBeltItem-188fcaf0.js +2 -2
  127. package/es/{DatePicker-d4c3ec06.js → DatePicker-38a71007.js} +6 -6
  128. package/es/{DatePicker-d4c3ec06.js.map → DatePicker-38a71007.js.map} +1 -1
  129. package/es/DatePickerHeader-5806fbea.js +3 -3
  130. package/es/{Diagram-a6348a41.js → Diagram-ee9ec4a9.js} +5 -5
  131. package/es/{Diagram-a6348a41.js.map → Diagram-ee9ec4a9.js.map} +1 -1
  132. package/es/{Dialog-d64dd573.js → Dialog-2248109e.js} +8 -8
  133. package/es/{Dialog-d64dd573.js.map → Dialog-2248109e.js.map} +1 -1
  134. package/es/DirectionalCollapseArrowIcon-daafb64c.js +1 -1
  135. package/es/DirectionalExpandArrowIcon-35def552.js +1 -1
  136. package/es/{DragHandle-d3a739f5.js → DragHandle-5cba8c4b.js} +2 -2
  137. package/es/{DragHandle-d3a739f5.js.map → DragHandle-5cba8c4b.js.map} +1 -1
  138. package/es/{Dropdown-f0cdaeae.js → Dropdown-f7fbfa81.js} +5 -5
  139. package/es/{Dropdown-f0cdaeae.js.map → Dropdown-f7fbfa81.js.map} +1 -1
  140. package/es/{EnvironmentProvider-0fc2fd0c.js → EnvironmentProvider-a3819bde.js} +3 -3
  141. package/es/{EnvironmentProvider-0fc2fd0c.js.map → EnvironmentProvider-a3819bde.js.map} +1 -1
  142. package/es/ExpandableList-478db30a.js +3 -3
  143. package/es/FilePicker-ecfad7d4.js +2 -2
  144. package/es/{Flex-8696b27b.js → Flex-2d51e914.js} +2 -2
  145. package/es/{Flex-8696b27b.js.map → Flex-2d51e914.js.map} +1 -1
  146. package/es/{Floating-9bf456f9.js → Floating-c13f9f62.js} +4 -4
  147. package/es/{Floating-9bf456f9.js.map → Floating-c13f9f62.js.map} +1 -1
  148. package/es/FormLayout-2efb00f6.js +1 -1
  149. package/es/Gantt-0adf9527.js +9 -9
  150. package/es/{Grid-7fd29a9e.js → Grid-c2385b22.js} +2 -2
  151. package/es/{Grid-7fd29a9e.js.map → Grid-c2385b22.js.map} +1 -1
  152. package/es/{Gridlines-5ac89a84.js → Gridlines-89b5506f.js} +2 -2
  153. package/es/{Gridlines-5ac89a84.js.map → Gridlines-89b5506f.js.map} +1 -1
  154. package/es/GroupLoadingIndicator-63035d08.js +1 -1
  155. package/es/{HighlightText-cc043982.js → HighlightText-d505bf35.js} +2 -2
  156. package/es/{HighlightText-cc043982.js.map → HighlightText-d505bf35.js.map} +1 -1
  157. package/es/Icon-bdd49f29.js +3 -3
  158. package/es/IconButton-62cd1cf9.js +3 -3
  159. package/es/IconMenuButton-242dc102.js +3 -3
  160. package/es/IconProgressButton-193d58bf.js +3 -3
  161. package/es/IconSwitchButton-a92911d0.js +3 -3
  162. package/es/IconToggleButton-fb7ccce9.js +3 -3
  163. package/es/{IconUserAssistance-627f9d18.js → IconUserAssistance-2b494a2e.js} +3 -3
  164. package/es/{IconUserAssistance-627f9d18.js.map → IconUserAssistance-2b494a2e.js.map} +1 -1
  165. package/es/Indexer-ba2c7593.js +4 -4
  166. package/es/InlineHelpSource-fcdcd122.js +1 -1
  167. package/es/InlineUserAssistance-04cce83e.js +5 -5
  168. package/es/InputDateMask-23aef570.js +7 -7
  169. package/es/{InputDatePicker-dd3b6c89.js → InputDatePicker-59bbd31d.js} +10 -10
  170. package/es/{InputDatePicker-dd3b6c89.js.map → InputDatePicker-59bbd31d.js.map} +1 -1
  171. package/es/InputPassword-2c87ceb9.js +4 -4
  172. package/es/InputText-3701adf8.js +6 -6
  173. package/es/Label-6d90e627.js +5 -5
  174. package/es/LabelValueLayout-bcf482be.js +1 -1
  175. package/es/{Layer-12a734d1.js → Layer-7497a324.js} +3 -3
  176. package/es/{Layer-12a734d1.js.map → Layer-7497a324.js.map} +1 -1
  177. package/es/{LayerHost-15b42a3e.js → LayerHost-7a2149f5.js} +2 -2
  178. package/es/{LayerHost-15b42a3e.js.map → LayerHost-7a2149f5.js.map} +1 -1
  179. package/es/{LayerManager-af39e736.js → LayerManager-be34be40.js} +2 -2
  180. package/es/{LayerManager-af39e736.js.map → LayerManager-be34be40.js.map} +1 -1
  181. package/es/Legend-588633b2.js +3 -3
  182. package/es/{LineAreaChart-b136ad7b.js → LineAreaChart-d6924882.js} +5 -5
  183. package/es/{LineAreaChart-b136ad7b.js.map → LineAreaChart-d6924882.js.map} +1 -1
  184. package/es/{LineSeries-ca5836e7.js → LineSeries-00fa2ab7.js} +2 -2
  185. package/es/{LineSeries-ca5836e7.js.map → LineSeries-00fa2ab7.js.map} +1 -1
  186. package/es/Link-9f8b5c41.js +1 -1
  187. package/es/List-97b7be70.js +5 -5
  188. package/es/{ListItemLayout-e87958e3.js → ListItemLayout-b3d899d6.js} +2 -2
  189. package/es/{ListItemLayout-e87958e3.js.map → ListItemLayout-b3d899d6.js.map} +1 -1
  190. package/es/ListView-936d8a4f.js +3 -3
  191. package/es/{LiveRegion-cb4f8a54.js → LiveRegion-5302331c.js} +2 -2
  192. package/es/{LiveRegion-cb4f8a54.js.map → LiveRegion-5302331c.js.map} +1 -1
  193. package/es/{MaxLengthLiveRegion-59087064.js → MaxLengthLiveRegion-9b386b63.js} +3 -3
  194. package/es/{MaxLengthLiveRegion-59087064.js.map → MaxLengthLiveRegion-9b386b63.js.map} +1 -1
  195. package/es/Menu-a37635b8.js +6 -6
  196. package/es/MenuButton-422a74de.js +2 -2
  197. package/es/MenuItem-831dfd05.js +1 -1
  198. package/es/Message-9d1504b6.js +2 -2
  199. package/es/{MessageLayer-8bed437a.js → MessageLayer-9ea7cf82.js} +6 -6
  200. package/es/{MessageLayer-8bed437a.js.map → MessageLayer-9ea7cf82.js.map} +1 -1
  201. package/es/MessageToast-7058b181.js +8 -8
  202. package/es/MessagesManager-9dd3eb3d.js +3 -3
  203. package/es/MeterBar-551d32db.js +5 -5
  204. package/es/MeterCircle-5e2ee267.js +5 -5
  205. package/es/{Modal-103da2aa.js → Modal-1710fdd2.js} +3 -3
  206. package/es/{Modal-103da2aa.js.map → Modal-1710fdd2.js.map} +1 -1
  207. package/es/{MonthView-3f86e858.js → MonthView-9c0b40f1.js} +4 -4
  208. package/es/{MonthView-3f86e858.js.map → MonthView-9c0b40f1.js.map} +1 -1
  209. package/es/{NavigationListItem-57a7cf4b.js → NavigationListItem-5b25b2f5.js} +16 -3
  210. package/es/{NavigationListItem-57a7cf4b.js.map → NavigationListItem-5b25b2f5.js.map} +1 -1
  211. package/es/NumberInputText-58e80ab7.js +6 -6
  212. package/es/{OverflowTabBar-9df72c15.js → OverflowTabBar-47a03b1f.js} +2 -2
  213. package/es/{OverflowTabBar-9df72c15.js.map → OverflowTabBar-47a03b1f.js.map} +1 -1
  214. package/es/{OverflowTabBarItem-0d925d02.js → OverflowTabBarItem-08625093.js} +5 -5
  215. package/es/{OverflowTabBarItem-0d925d02.js.map → OverflowTabBarItem-08625093.js.map} +1 -1
  216. package/es/PRIVATE_BaseCardView.js +22 -22
  217. package/es/PRIVATE_Chart.js +35 -35
  218. package/es/PRIVATE_CheckboxControl.js +23 -23
  219. package/es/PRIVATE_CheckboxRadioField.js +24 -24
  220. package/es/PRIVATE_ClearIcon.js +18 -18
  221. package/es/PRIVATE_DatePickerHeader.js +19 -19
  222. package/es/PRIVATE_DatePickerLayout.js +4 -4
  223. package/es/PRIVATE_EmbeddedIconButton.js +3 -3
  224. package/es/PRIVATE_FormControls.js +19 -19
  225. package/es/PRIVATE_IconSwitchButton.js +16 -16
  226. package/es/PRIVATE_Icons/CheckboxMixed.js +16 -16
  227. package/es/PRIVATE_Icons/CheckboxOff.js +16 -16
  228. package/es/PRIVATE_Icons/CheckboxOn.js +16 -16
  229. package/es/PRIVATE_Icons/DragV.js +16 -16
  230. package/es/PRIVATE_Icons/WarningS.js +16 -16
  231. package/es/PRIVATE_List.js +20 -20
  232. package/es/PRIVATE_Message.js +19 -19
  233. package/es/PRIVATE_MessageLayer.js +12 -12
  234. package/es/PRIVATE_MonthView.js +7 -7
  235. package/es/PRIVATE_MonthYearGridView.js +7 -7
  236. package/es/PRIVATE_PlotArea.js +4 -4
  237. package/es/PRIVATE_RevealToggleIcon.js +17 -17
  238. package/es/PRIVATE_RichSelectionCommon.js +25 -25
  239. package/es/PRIVATE_SelectCommon.js +28 -28
  240. package/es/PRIVATE_StyledCard.js +4 -4
  241. package/es/PRIVATE_StyledCheckbox.js +16 -16
  242. package/es/PRIVATE_Table.js +24 -24
  243. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +16 -16
  244. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +16 -16
  245. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +16 -16
  246. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +16 -16
  247. package/es/PRIVATE_ThemedIcons/CheckIcon.js +16 -16
  248. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +16 -16
  249. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +16 -16
  250. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +16 -16
  251. package/es/PRIVATE_ThemedIcons/CloseIcon.js +16 -16
  252. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +17 -17
  253. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +16 -16
  254. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +16 -16
  255. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +16 -16
  256. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +17 -17
  257. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +17 -17
  258. package/es/PRIVATE_ThemedIcons/DragHandleIcon.js +16 -16
  259. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +16 -16
  260. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +16 -16
  261. package/es/PRIVATE_ThemedIcons/HelpIcon.js +16 -16
  262. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +16 -16
  263. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +16 -16
  264. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +16 -16
  265. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +16 -16
  266. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +16 -16
  267. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +16 -16
  268. package/es/PRIVATE_ThemedIcons/MinusIcon.js +16 -16
  269. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +16 -16
  270. package/es/PRIVATE_ThemedIcons/OverviewHorizontalDragHandleIcon.js +16 -16
  271. package/es/PRIVATE_ThemedIcons/PlusIcon.js +16 -16
  272. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +16 -16
  273. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +16 -16
  274. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +16 -16
  275. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +16 -16
  276. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +16 -16
  277. package/es/PRIVATE_ThemedIcons/ViewIcon.js +16 -16
  278. package/es/PRIVATE_TimeComponent.js +18 -18
  279. package/es/PRIVATE_VisOverview.js +16 -16
  280. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  281. package/es/PictoChart-3f059ad1.js +6 -6
  282. package/es/PieChart-ca02932e.js +6 -6
  283. package/es/{Popup-6c3f0839.js → Popup-a4be2769.js} +9 -9
  284. package/es/{Popup-6c3f0839.js.map → Popup-a4be2769.js.map} +1 -1
  285. package/es/{ProgressBar-95461222.js → ProgressBar-4fbb27ab.js} +3 -3
  286. package/es/{ProgressBar-95461222.js.map → ProgressBar-4fbb27ab.js.map} +1 -1
  287. package/es/ProgressButton-2497c81b.js +3 -3
  288. package/es/ProgressButtonLabelLayout-bfc7c805.js +3 -3
  289. package/es/{ProgressCircle-93c309cb.js → ProgressCircle-2d3833fa.js} +2 -2
  290. package/es/{ProgressCircle-93c309cb.js.map → ProgressCircle-2d3833fa.js.map} +1 -1
  291. package/es/RadioItem-35f68420.js +6 -6
  292. package/es/RatingGauge-5346d0bf.js +7 -7
  293. package/es/ReadonlyTextFieldInput-a15badb6.js +1 -1
  294. package/es/RemovableNavigationListItem-29fdaddc.js +1 -1
  295. package/es/RemovableTabBarItem-1cc7a0ca.js +2 -2
  296. package/es/ReorderableTabBar-b9019d0a.js +3 -3
  297. package/es/RevealToggleIcon-51514e37.js +1 -1
  298. package/es/{ScatterChart-0cbabd0f.js → ScatterChart-d26d4ea9.js} +4 -4
  299. package/es/{ScatterChart-0cbabd0f.js.map → ScatterChart-d26d4ea9.js.map} +1 -1
  300. package/es/SectionalLegend-c71d48a3.js +4 -4
  301. package/es/{SectionedContent-3fd063af.js → SectionedContent-2d0a744d.js} +5 -5
  302. package/es/{SectionedContent-3fd063af.js.map → SectionedContent-2d0a744d.js.map} +1 -1
  303. package/es/SelectMultiple-ad8fc99a.js +8 -8
  304. package/es/SelectSingle-abaf271c.js +7 -7
  305. package/es/{SelectionCard-1f8585cb.js → SelectionCard-792c249d.js} +2 -2
  306. package/es/{SelectionCard-1f8585cb.js.map → SelectionCard-792c249d.js.map} +1 -1
  307. package/es/Selector-5892544f.js +1 -1
  308. package/es/{SelectorAll-e833da6d.js → SelectorAll-ab748274.js} +7 -7
  309. package/es/{SelectorAll-e833da6d.js.map → SelectorAll-ab748274.js.map} +1 -1
  310. package/es/{Sheet-0861fcc0.js → Sheet-31e6970c.js} +3 -3
  311. package/es/{Sheet-0861fcc0.js.map → Sheet-31e6970c.js.map} +1 -1
  312. package/es/SplitMenuButton-3dbd83b7.js +2 -2
  313. package/es/SplitMenuButtonTheme.styles.css +4 -4
  314. package/es/SplitMenuButtonTheme.styles2.css +4 -4
  315. package/es/{StyledCard-f5965d6d.js → StyledCard-6913b45c.js} +2 -2
  316. package/es/{StyledCard-f5965d6d.js.map → StyledCard-6913b45c.js.map} +1 -1
  317. package/es/StyledTextField-ebb5409d.js +3 -3
  318. package/es/TabBar-fb7f97d2.js +5 -5
  319. package/es/TabBarItem-252cba76.js +3 -3
  320. package/es/TabBarLayout-8caaa060.js +1 -1
  321. package/es/TabBarMixed-f60c2c7a.js +5 -5
  322. package/es/{TabBarMixedSeparator-da56f4c0.js → TabBarMixedSeparator-16c88691.js} +2 -2
  323. package/es/{TabBarMixedSeparator-da56f4c0.js.map → TabBarMixedSeparator-16c88691.js.map} +1 -1
  324. package/es/Table-1ba124ec.js +9 -9
  325. package/es/TagCloud-f7e50ac4.js +8 -8
  326. package/es/TextArea-7230675f.js +5 -5
  327. package/es/TextAreaAutosize-0d293016.js +5 -5
  328. package/es/TextField-cb494638.js +3 -3
  329. package/es/TextFieldInput-3c2e920d.js +1 -1
  330. package/es/Theme-redwood/theme.css +467 -467
  331. package/es/Theme-stable/theme.css +560 -560
  332. package/es/TimeComponentCanvas2D-2a4a0c94.js +5 -5
  333. package/es/Toolbar-7676795b.js +1 -1
  334. package/es/{TruncatingBadge-b69c1ceb.js → TruncatingBadge-0f04b894.js} +4 -4
  335. package/es/{TruncatingBadge-b69c1ceb.js.map → TruncatingBadge-0f04b894.js.map} +1 -1
  336. package/es/{TruncatingText-68acfafd.js → TruncatingText-ccad557f.js} +4 -4
  337. package/es/{TruncatingText-68acfafd.js.map → TruncatingText-ccad557f.js.map} +1 -1
  338. package/es/UNSAFE_ActionCard.js +3 -3
  339. package/es/UNSAFE_BarChart/__test__/BarChart.spec.js +36 -36
  340. package/es/UNSAFE_BarChart.js +36 -36
  341. package/es/UNSAFE_BaseButton.js +3 -3
  342. package/es/UNSAFE_Button.js +3 -3
  343. package/es/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +22 -22
  344. package/es/UNSAFE_ButtonSet.js +4 -4
  345. package/es/UNSAFE_ButtonSetButton.js +3 -3
  346. package/es/UNSAFE_ButtonSetIconButton.js +16 -16
  347. package/es/UNSAFE_ButtonSetItem.js +16 -16
  348. package/es/UNSAFE_ButtonSetMultiple.js +4 -4
  349. package/es/UNSAFE_ButtonSetSingle.js +4 -4
  350. package/es/UNSAFE_Card.js +5 -5
  351. package/es/UNSAFE_CardFlexView.js +22 -22
  352. package/es/UNSAFE_CardGridView.js +22 -22
  353. package/es/UNSAFE_Center.js +5 -5
  354. package/es/UNSAFE_ChartWithLegend.js +4 -4
  355. package/es/UNSAFE_Checkbox.js +23 -23
  356. package/es/UNSAFE_CheckboxItem.js +103 -52
  357. package/es/UNSAFE_CheckboxItem.js.map +1 -1
  358. package/es/UNSAFE_CheckboxSet.js +33 -67
  359. package/es/UNSAFE_CheckboxSet.js.map +1 -1
  360. package/es/UNSAFE_Chip.js +2 -2
  361. package/es/UNSAFE_Collapsible.js +18 -18
  362. package/es/UNSAFE_ComboChart.js +38 -38
  363. package/es/UNSAFE_ComponentMessage.js +19 -19
  364. package/es/UNSAFE_ConveyorBelt.js +16 -16
  365. package/es/UNSAFE_DatePicker.js +24 -24
  366. package/es/UNSAFE_Diagram.js +21 -21
  367. package/es/UNSAFE_Dialog.js +21 -21
  368. package/es/UNSAFE_DragHandle.js +18 -18
  369. package/es/UNSAFE_DrawerLayout.js +12 -12
  370. package/es/UNSAFE_DrawerPopup.js +11 -11
  371. package/es/UNSAFE_Dropdown.js +13 -13
  372. package/es/UNSAFE_Environment.js +4 -4
  373. package/es/UNSAFE_ExpandableList.js +23 -23
  374. package/es/UNSAFE_FilePicker.js +4 -4
  375. package/es/UNSAFE_Flex.js +4 -4
  376. package/es/UNSAFE_Floating.js +11 -11
  377. package/es/UNSAFE_FormLayout.js +2 -2
  378. package/es/UNSAFE_Gantt.js +23 -23
  379. package/es/UNSAFE_Grid.js +4 -4
  380. package/es/UNSAFE_HighlightText.js +4 -4
  381. package/es/UNSAFE_Icon.js +16 -16
  382. package/es/UNSAFE_IconButton.js +16 -16
  383. package/es/UNSAFE_IconMenuButton.js +21 -21
  384. package/es/UNSAFE_IconProgressButton.js +19 -19
  385. package/es/UNSAFE_IconToggleButton.js +16 -16
  386. package/es/UNSAFE_Indexer.js +6 -6
  387. package/es/UNSAFE_InputDateMask.js +24 -24
  388. package/es/UNSAFE_InputDatePicker.js +113 -113
  389. package/es/UNSAFE_InputPassword.js +23 -23
  390. package/es/UNSAFE_InputSensitiveText.js +25 -25
  391. package/es/UNSAFE_InputText.js +26 -26
  392. package/es/UNSAFE_InputTimeMask.js +24 -24
  393. package/es/UNSAFE_Label.js +23 -23
  394. package/es/UNSAFE_LabelValueLayout.js +4 -4
  395. package/es/UNSAFE_LabelledLink.js +24 -24
  396. package/es/UNSAFE_Layer.js +8 -8
  397. package/es/UNSAFE_Legend.js +24 -24
  398. package/es/UNSAFE_LineAreaChart.js +38 -38
  399. package/es/UNSAFE_Link.js +2 -2
  400. package/es/UNSAFE_ListItemLayout.js +5 -5
  401. package/es/UNSAFE_ListView.js +28 -28
  402. package/es/UNSAFE_LiveRegion.js +4 -4
  403. package/es/UNSAFE_Menu.js +23 -23
  404. package/es/UNSAFE_MenuButton.js +21 -21
  405. package/es/UNSAFE_MessageBanner.js +19 -19
  406. package/es/UNSAFE_MessageToast.js +22 -22
  407. package/es/UNSAFE_MeterBar.js +16 -16
  408. package/es/UNSAFE_MeterCircle.js +17 -17
  409. package/es/UNSAFE_Modal.js +8 -8
  410. package/es/UNSAFE_NavigationList.js +24 -24
  411. package/es/UNSAFE_NavigationListCommon.js +18 -18
  412. package/es/UNSAFE_NumberInputText.js +25 -25
  413. package/es/UNSAFE_OverflowTabBar.js +27 -27
  414. package/es/UNSAFE_PictoChart.js +14 -14
  415. package/es/UNSAFE_PieChart/__test__/PieChart.spec.js +21 -21
  416. package/es/UNSAFE_PieChart.js +21 -21
  417. package/es/UNSAFE_Popup.js +16 -16
  418. package/es/UNSAFE_ProgressBar.js +5 -5
  419. package/es/UNSAFE_ProgressButton.js +19 -19
  420. package/es/UNSAFE_ProgressButtonLabelLayout.js +10 -10
  421. package/es/UNSAFE_ProgressCircle.js +4 -4
  422. package/es/UNSAFE_RadioItem.js +23 -23
  423. package/es/UNSAFE_RadioSet.js +23 -23
  424. package/es/UNSAFE_RatingGauge.js +17 -17
  425. package/es/UNSAFE_ReorderableTabBar.js +24 -24
  426. package/es/UNSAFE_RichCheckboxSet.js +38 -36
  427. package/es/UNSAFE_RichCheckboxSet.js.map +1 -1
  428. package/es/UNSAFE_RichRadioSet.js +25 -25
  429. package/es/UNSAFE_RichSelectionItem.js +194 -57
  430. package/es/UNSAFE_RichSelectionItem.js.map +1 -1
  431. package/es/UNSAFE_ScatterChart.js +38 -38
  432. package/es/UNSAFE_SectionalLegend.js +25 -25
  433. package/es/UNSAFE_SelectMultiple.js +30 -30
  434. package/es/UNSAFE_SelectSingle.js +30 -30
  435. package/es/UNSAFE_SelectionCard.js +5 -5
  436. package/es/UNSAFE_Selector.js +16 -16
  437. package/es/UNSAFE_SelectorAll.js +20 -20
  438. package/es/UNSAFE_Sheet/__test__/Sheet.spec.js +14 -14
  439. package/es/UNSAFE_Sheet.js +11 -11
  440. package/es/UNSAFE_SplitMenuButton/themes/redwood/SplitMenuButtonTheme.css.js +1 -1
  441. package/es/UNSAFE_SplitMenuButton/themes/stable/SplitMenuButtonTheme.css.js +1 -1
  442. package/es/UNSAFE_SplitMenuButton.js +22 -22
  443. package/es/UNSAFE_TabBar.js +27 -27
  444. package/es/UNSAFE_TabBarCommon.js +27 -27
  445. package/es/UNSAFE_TabBarMixed.js +28 -28
  446. package/es/UNSAFE_TableView.js +24 -24
  447. package/es/UNSAFE_TagCloud.js +23 -23
  448. package/es/UNSAFE_TextArea.js +25 -25
  449. package/es/UNSAFE_TextAreaAutosize.js +25 -25
  450. package/es/UNSAFE_TextField.js +7 -7
  451. package/es/UNSAFE_ToggleButton.js +3 -3
  452. package/es/UNSAFE_Toolbar/tests/Toolbar.spec.js +24 -24
  453. package/es/UNSAFE_Toolbar.js +4 -4
  454. package/es/UNSAFE_Train.js +17 -17
  455. package/es/UNSAFE_TruncatingBadge.js +18 -18
  456. package/es/UNSAFE_TruncatingText.js +17 -17
  457. package/es/UNSAFE_UserAssistance.js +24 -24
  458. package/es/UNSAFE_View.js +7 -7
  459. package/es/UNSAFE_VirtualizedListView.js +20 -20
  460. package/es/UNSAFE_VisProgressiveLoader/__test__/VisProgressiveLoader.spec.js +8 -8
  461. package/es/UNSAFE_VisProgressiveLoader.js +6 -6
  462. package/es/UNSAFE_VisStatusMessage.js +6 -6
  463. package/es/UNSAFE_WindowOverlay.js +4 -4
  464. package/es/{View-63980a9b.js → View-a8a64eb1.js} +5 -5
  465. package/es/{View-63980a9b.js.map → View-a8a64eb1.js.map} +1 -1
  466. package/es/{VisNoData-02cab8f6.js → VisNoData-794ddc21.js} +3 -3
  467. package/es/{VisNoData-02cab8f6.js.map → VisNoData-794ddc21.js.map} +1 -1
  468. package/es/{VisProgressiveLoader-2b2103c8.js → VisProgressiveLoader-66dde1ff.js} +3 -3
  469. package/es/{VisProgressiveLoader-2b2103c8.js.map → VisProgressiveLoader-66dde1ff.js.map} +1 -1
  470. package/es/{VisTabularDatatip-2ae7ee48.js → VisTabularDatatip-6aa607bb.js} +2 -2
  471. package/es/{VisTabularDatatip-2ae7ee48.js.map → VisTabularDatatip-6aa607bb.js.map} +1 -1
  472. package/es/{WindowOverlay-9b43e658.js → WindowOverlay-de5d0819.js} +2 -2
  473. package/es/{WindowOverlay-9b43e658.js.map → WindowOverlay-de5d0819.js.map} +1 -1
  474. package/es/{YearsGridView-cc0574f2.js → YearsGridView-cb510d1e.js} +4 -4
  475. package/es/{YearsGridView-cc0574f2.js.map → YearsGridView-cb510d1e.js.map} +1 -1
  476. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  477. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  478. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  479. package/es/hooks/PRIVATE_useChartContextMenu.js +20 -20
  480. package/es/hooks/PRIVATE_useChartDatatip.js +14 -14
  481. package/es/hooks/PRIVATE_useChartEvents.js +18 -18
  482. package/es/hooks/PRIVATE_useChartMarquee.js +18 -18
  483. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  484. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  485. package/es/hooks/PRIVATE_useDatatip.js +12 -12
  486. package/es/hooks/PRIVATE_useFloating.js +4 -4
  487. package/es/hooks/PRIVATE_useReorderable.js +5 -5
  488. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  489. package/es/hooks/PRIVATE_useSelection.js +4 -4
  490. package/es/hooks/PRIVATE_useTabBar.js +4 -4
  491. package/es/hooks/PRIVATE_useVisContextMenu.js +20 -20
  492. package/es/hooks/PRIVATE_useVisDragModeControls.js +18 -18
  493. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  494. package/es/hooks/PRIVATE_useVisMeterEvents.js +14 -14
  495. package/es/hooks/PRIVATE_useVisSelection.js +13 -13
  496. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  497. package/es/hooks/UNSAFE_useCurrentBgColor.js +3 -3
  498. package/es/hooks/UNSAFE_useDensity.js +3 -3
  499. package/es/hooks/UNSAFE_useOutsideClick.js +8 -8
  500. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  501. package/es/hooks/UNSAFE_useScale.js +3 -3
  502. package/es/hooks/UNSAFE_useTestId.js +3 -3
  503. package/es/hooks/UNSAFE_useTheme.js +3 -3
  504. package/es/hooks/UNSAFE_useThemeInterpolations.js +6 -6
  505. package/es/hooks/UNSAFE_useTooltip.js +17 -17
  506. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  507. package/es/hooks/UNSAFE_useUser.js +3 -3
  508. package/es/{index-20f848bc.js → index-f4c1d6de.js} +2 -2
  509. package/es/index-f4c1d6de.js.map +1 -0
  510. package/es/listViewSelectionTests-79aa17b2.js +3 -3
  511. package/es/{render-2b908d4f.js → render-9dce082a.js} +3 -3
  512. package/es/{render-2b908d4f.js.map → render-9dce082a.js.map} +1 -1
  513. package/es/{tabbableUtils-20bbaf8d.js → tabbableUtils-93a7cd6f.js} +3 -3
  514. package/es/{tabbableUtils-20bbaf8d.js.map → tabbableUtils-93a7cd6f.js.map} +1 -1
  515. package/es/{testData-70bebfae.js → testData-a9ced8ec.js} +3 -3
  516. package/es/{testData-70bebfae.js.map → testData-a9ced8ec.js.map} +1 -1
  517. package/es/{tooltipUtils-38192add.js → tooltipUtils-fcfd7dbb.js} +5 -5
  518. package/es/{tooltipUtils-38192add.js.map → tooltipUtils-fcfd7dbb.js.map} +1 -1
  519. package/es/useCellNavigation-00d575ca.js +1 -1
  520. package/es/useChartContextMenu-121a5f6d.js +2 -2
  521. package/es/{useChartDatatip-977bc33d.js → useChartDatatip-c929f857.js} +4 -4
  522. package/es/{useChartDatatip-977bc33d.js.map → useChartDatatip-c929f857.js.map} +1 -1
  523. package/es/{useColorScheme-d8a80e2b.js → useColorScheme-f69d53b5.js} +2 -2
  524. package/es/{useColorScheme-d8a80e2b.js.map → useColorScheme-f69d53b5.js.map} +1 -1
  525. package/es/useContextMenu-8c47333e.js +2 -2
  526. package/es/{useCssVars-8e6932f8.js → useCssVars-48595cd2.js} +5 -5
  527. package/es/{useCssVars-8e6932f8.js.map → useCssVars-48595cd2.js.map} +1 -1
  528. package/es/{useCurrentBgColor-5418492b.js → useCurrentBgColor-894d059b.js} +2 -2
  529. package/es/{useCurrentBgColor-5418492b.js.map → useCurrentBgColor-894d059b.js.map} +1 -1
  530. package/es/{useCurrentKey-63f6afcc.js → useCurrentKey-aa75ec92.js} +2 -2
  531. package/es/{useCurrentKey-63f6afcc.js.map → useCurrentKey-aa75ec92.js.map} +1 -1
  532. package/es/{useDatatip-bce558e2.js → useDatatip-40475371.js} +4 -4
  533. package/es/{useDatatip-bce558e2.js.map → useDatatip-40475371.js.map} +1 -1
  534. package/es/{useDensity-64ecb649.js → useDensity-04a01caf.js} +2 -2
  535. package/es/{useDensity-64ecb649.js.map → useDensity-04a01caf.js.map} +1 -1
  536. package/es/{useFloating-41d21e7d.js → useFloating-dad3f791.js} +2 -2
  537. package/es/{useFloating-41d21e7d.js.map → useFloating-dad3f791.js.map} +1 -1
  538. package/es/{useKeyboardEvents-5c311766.js → useKeyboardEvents-b02e5fda.js} +2 -2
  539. package/es/{useKeyboardEvents-5c311766.js.map → useKeyboardEvents-b02e5fda.js.map} +1 -1
  540. package/es/useLegendContextMenu-1043d63c.js +4 -4
  541. package/es/{useMeterDatatip-5268869e.js → useMeterDatatip-4adf64f2.js} +3 -3
  542. package/es/{useMeterDatatip-5268869e.js.map → useMeterDatatip-4adf64f2.js.map} +1 -1
  543. package/es/{useOutsideClick-8a582d08.js → useOutsideClick-c19a8d7f.js} +2 -2
  544. package/es/{useOutsideClick-8a582d08.js.map → useOutsideClick-c19a8d7f.js.map} +1 -1
  545. package/es/{usePopupAnimation-e2e6a2ca.js → usePopupAnimation-267b444c.js} +2 -2
  546. package/es/{usePopupAnimation-e2e6a2ca.js.map → usePopupAnimation-267b444c.js.map} +1 -1
  547. package/es/{usePrefixSuffix-435a9c59.js → usePrefixSuffix-995d4cda.js} +2 -2
  548. package/es/{usePrefixSuffix-435a9c59.js.map → usePrefixSuffix-995d4cda.js.map} +1 -1
  549. package/es/{useReorderableItem-96616318.js → useReorderableItem-7f7c13b5.js} +3 -3
  550. package/es/{useReorderableItem-96616318.js.map → useReorderableItem-7f7c13b5.js.map} +1 -1
  551. package/es/{useRovingTabIndexContainer-9afe3ee0.js → useRovingTabIndexContainer-7ec9f36f.js} +2 -2
  552. package/es/{useRovingTabIndexContainer-9afe3ee0.js.map → useRovingTabIndexContainer-7ec9f36f.js.map} +1 -1
  553. package/es/{useScale-c86ecc6e.js → useScale-3b323ab2.js} +2 -2
  554. package/es/{useScale-c86ecc6e.js.map → useScale-3b323ab2.js.map} +1 -1
  555. package/es/useSelectCommon-1dafa6f9.js +11 -11
  556. package/es/{useSelectDrill-24264e6b.js → useSelectDrill-232b571c.js} +3 -3
  557. package/es/{useSelectDrill-24264e6b.js.map → useSelectDrill-232b571c.js.map} +1 -1
  558. package/es/{useSelection-1b256f77.js → useSelection-bbd2320f.js} +5 -5
  559. package/es/{useSelection-1b256f77.js.map → useSelection-bbd2320f.js.map} +1 -1
  560. package/es/{useSelection-879c64aa.js → useSelection-c46ba985.js} +2 -2
  561. package/es/{useSelection-879c64aa.js.map → useSelection-c46ba985.js.map} +1 -1
  562. package/es/useTabBar-efad9075.js +1 -1
  563. package/es/{useTestId-3bc3958c.js → useTestId-af32a9eb.js} +2 -2
  564. package/es/{useTestId-3bc3958c.js.map → useTestId-af32a9eb.js.map} +1 -1
  565. package/es/{useTheme-4b0f211c.js → useTheme-73aca0e4.js} +2 -2
  566. package/es/{useTheme-4b0f211c.js.map → useTheme-73aca0e4.js.map} +1 -1
  567. package/es/{useThemeInterpolations-8bee52ac.js → useThemeInterpolations-242b30ed.js} +5 -5
  568. package/es/{useThemeInterpolations-8bee52ac.js.map → useThemeInterpolations-242b30ed.js.map} +1 -1
  569. package/es/{useTooltip-98b6d3b5.js → useTooltip-72f5cf2e.js} +2 -2
  570. package/es/{useTooltip-98b6d3b5.js.map → useTooltip-72f5cf2e.js.map} +1 -1
  571. package/es/{useTooltipControlled-b565c75b.js → useTooltipControlled-97142fd1.js} +5 -5
  572. package/es/{useTooltipControlled-b565c75b.js.map → useTooltipControlled-97142fd1.js.map} +1 -1
  573. package/es/{useTranslationBundle-98df6291.js → useTranslationBundle-6da03e52.js} +2 -2
  574. package/es/{useTranslationBundle-98df6291.js.map → useTranslationBundle-6da03e52.js.map} +1 -1
  575. package/es/{useUser-a15426fc.js → useUser-bca8cf2d.js} +2 -2
  576. package/es/{useUser-a15426fc.js.map → useUser-bca8cf2d.js.map} +1 -1
  577. package/es/useVisDragModeControls-4d8d8a3b.js +1 -1
  578. package/es/{useVisEvents-7d4753c4.js → useVisEvents-37c78cfe.js} +2 -2
  579. package/es/{useVisEvents-7d4753c4.js.map → useVisEvents-37c78cfe.js.map} +1 -1
  580. package/es/utils/PRIVATE_tooltipUtils.js +14 -14
  581. package/es/utils/PRIVATE_visTestUtils.js +6 -6
  582. package/es/{withDirectionIcon-90d7c798.js → withDirectionIcon-389870a2.js} +2 -2
  583. package/es/{withDirectionIcon-90d7c798.js.map → withDirectionIcon-389870a2.js.map} +1 -1
  584. package/es/withThemeProps-6545df54.js +2 -2
  585. package/package.json +2 -2
  586. package/amd/CardFlexView-296f97f5.js +0 -2
  587. package/amd/InputDatePicker-18e2546b.js +0 -2
  588. package/amd/List-0b764e84.js +0 -2
  589. package/amd/LoadMoreCollection-83413a59.js +0 -2
  590. package/amd/NavigationListItem-021b2d58.js +0 -2
  591. package/cjs/CheckboxSetContext-c62db26d.js +0 -12
  592. package/cjs/CheckboxSetContext-c62db26d.js.map +0 -1
  593. package/es/CheckboxSetContext-1be56556.js +0 -9
  594. package/es/CheckboxSetContext-1be56556.js.map +0 -1
  595. package/es/index-20f848bc.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"List-0b764e84.js","sources":["../../src/PRIVATE_List/ListRoles.ts","../../src/PRIVATE_List/ListItem.tsx","../../src/PRIVATE_List/SkeletonContainer.tsx","../../src/PRIVATE_List/Sparkle.tsx","../../src/PRIVATE_List/usePromotedSection.ts","../../src/PRIVATE_List/ListUtils.ts","../../src/PRIVATE_List/useSelectionAndNavigation.ts","../../src/PRIVATE_List/useFocusTabbableMode.ts","../../src/PRIVATE_List/List.tsx","../../src/PRIVATE_List/useCurrentItemOverride.ts"],"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 */\n\nimport { Roles } from '../UNSAFE_ListView';\nimport { HTMLAttributesSignalExcluded } from '../utils/UNSAFE_attributeUtils';\n\n/**\n * List Roles need to be kept in matching sets, this module encapsulates the sets\n *\n * @param ariaRole\n * @returns matching, valid set of roles\n */\n\nconst getListViewRoles = (\n ariaRole: Roles\n): {\n list: HTMLAttributesSignalExcluded['role'];\n item: HTMLAttributesSignalExcluded['role'];\n cell: HTMLAttributesSignalExcluded['role'];\n} => {\n switch (ariaRole) {\n case 'listbox':\n return { list: 'listbox', item: 'presentation', cell: 'option' };\n case 'treegrid':\n return { list: 'treegrid', item: 'row', cell: 'gridcell' };\n default:\n return { list: 'grid', item: 'row', cell: 'gridcell' };\n }\n};\n\nexport { getListViewRoles };\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 { ComponentChildren } from 'preact';\nimport { useRef, useMemo } from 'preact/hooks';\nimport { memo } from 'preact/compat';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { TabbableModeContext } from '../hooks/UNSAFE_useTabbableMode';\nimport { SelectionMode, CurrentItemVariant, ListItemRendererContext } from '../UNSAFE_Collection';\nimport { FocusTrap } from '../UNSAFE_FocusTrap';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { Roles, ItemPadding } from '../UNSAFE_ListView';\nimport { getListViewRoles } from './ListRoles';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { mergeInterpolations } from '../utils/UNSAFE_mergeInterpolations';\nimport { flexitemInterpolations } from '../utils/UNSAFE_interpolations/flexitem';\nimport type { FlexitemProps } from '../utils/UNSAFE_interpolations/flexitem';\nimport { listItemStyles, listItemMultiVariantStyles, paddingStyles } from './themes/ListStyles.css';\nimport { compareListItemContext } from '../utils/PRIVATE_collectionUtils';\n\nexport const ITEM_SELECTOR = '[data-oj-key]';\n\n/**\n * Props for the ListViewItem Component\n */\nexport type Props<K, D> = {\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n context: ListItemRendererContext<K, D>;\n itemDepth?: number;\n isFocused: boolean;\n isFocusRingVisible: boolean;\n isActive: boolean;\n isGridlineVisible: boolean;\n isSelected: boolean;\n isTopGridlineVisible?: boolean;\n isTabbable?: boolean;\n role: Roles;\n selectionMode: SelectionMode;\n suggestion?: 'end' | true;\n currentItemVariant?: CurrentItemVariant;\n padding?: 'enabled' | 'disabled' | ItemPadding;\n};\n\n/**\n * The internal component used to render a single item in ListView.\n */\nexport function ListViewItem<K extends string | number, D>({\n children,\n context,\n itemDepth,\n isFocused,\n isFocusRingVisible,\n isActive,\n isGridlineVisible,\n isSelected,\n isTopGridlineVisible = false,\n isTabbable = false,\n role,\n selectionMode,\n suggestion,\n currentItemVariant,\n padding\n}: Props<K, D>) {\n const rootRef = useRef<HTMLDivElement>(null);\n const roles = useMemo(() => getListViewRoles(role), [role]);\n const itemKey = context.metadata.key;\n const itemIndex = context.index;\n\n // some roles come with related aria attributes which need to be set\n const cellRoleAttributes =\n roles.cell === 'option'\n ? {\n role: roles.cell,\n 'aria-posinset': itemIndex + 1,\n 'aria-setsize': -1\n }\n : {\n role: roles.cell\n };\n\n // don't bubble Arrow Up and Down events to parent when in isTabbable mode\n // this bubbling causes the outer CollectionFocus ring to change index while in the isTabbable mode.\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isTabbable && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n event.stopPropagation();\n }\n };\n\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const variantClasses = listItemMultiVariantStyles({\n selectable: isSelectable(selectionMode, isSelected) ? 'isSelectable' : 'notSelectable',\n selected: isSelected ? 'isSelected' : 'notSelected',\n selectedSingle:\n isSelected && selectionMode === 'single' ? 'isSelectedSingle' : 'notSelectedSingle',\n needsEventsHover: applyHoverStyle ? 'isNeedsEventsHover' : 'notNeedsEventsHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n active: applyActiveStyle || isActive ? 'isActive' : 'notActive',\n focusHighlight:\n currentItemVariant === 'highlight' && isFocused ? 'isFocusHighlight' : 'notFocusHighlight',\n focusRingVisible:\n isFocusRingVisible && isFocused ? 'isFocusRingVisible' : 'notFocusRingVisible',\n gridlineTop: isTopGridlineVisible ? 'visible' : 'hidden',\n gridlineBottom:\n isGridlineVisible ||\n (suggestion === 'end' && !isGridlineVisible && (!isSelected || selectionMode !== 'single'))\n ? 'visible'\n : 'hidden'\n });\n const paddingClasses = [];\n if (padding) {\n if (padding === 'enabled') {\n paddingClasses.push(paddingStyles.allPadding);\n } else if (padding !== 'disabled') {\n if (padding.top === 'enabled') {\n paddingClasses.push(paddingStyles.topItemPadding);\n }\n if (padding.bottom === 'enabled') {\n paddingClasses.push(paddingStyles.bottomItemPadding);\n }\n if (padding.start === 'enabled') {\n paddingClasses.push(paddingStyles.startItemPadding);\n }\n if (padding.end === 'enabled') {\n paddingClasses.push(paddingStyles.endItemPadding);\n }\n }\n }\n\n const classes = classNames([variantClasses, ...paddingClasses]);\n const styleInterpolations = mergeInterpolations<FlexitemProps>([\n ...Object.values(flexitemInterpolations)\n ]);\n const { class: cls, ...cellStyles } = styleInterpolations({\n flex: '1 1 auto',\n alignSelf: 'center'\n });\n const cellClasses = classNames([\n cls,\n selectionMode === 'multiple' && listItemStyles.checkboxContainer\n ]);\n\n // todo: use translated text for selector\n // note cannot put focus on gridcell div since JAWS will not read the aria-rowindex\n // correctly, so unfortunately needed another div\n return (\n <div\n aria-rowindex={role === 'grid' ? itemIndex + 1 : undefined}\n aria-level={itemDepth}\n data-oj-key={itemKey}\n class={classes}\n ref={rootRef}\n role={roles.item}\n {...(suggestion && { 'data-oj-suggestion': true })}\n {...(typeof itemKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...interactionProps}>\n <div\n id={useId()}\n style={cellStyles}\n class={cellClasses}\n aria-posinset={role === 'grid' ? undefined : itemIndex + 1}\n aria-setsize={role === 'grid' ? undefined : -1}\n onKeyDown={handleKeyDown}\n aria-colindex={role === 'grid' ? 1 : undefined}\n aria-selected={selectionMode !== 'none' ? isSelected : undefined}\n {...cellRoleAttributes}>\n <TabbableModeContext.Provider value={{ isTabbable }}>\n <FocusTrap isDisabled={!isTabbable} restoreFocusRef={false}>\n {children(context)}\n </FocusTrap>\n </TabbableModeContext.Provider>\n </div>\n </div>\n );\n}\n\n/**\n * Helper method to determine whether item is selectable\n * @returns true if item is selectable (show hover effect), false otherwise\n */\nconst isSelectable = (selectionMode: SelectionMode, isItemSelected: boolean) => {\n return selectionMode !== 'none' && (selectionMode === 'multiple' || !isItemSelected);\n};\n\nexport const MemoizeListViewItem = memo(ListViewItem, (prev: any, next: any) => {\n if (prev && next) {\n return (\n prev.children === next.children &&\n prev.isFocused === next.isFocused &&\n prev.isFocusRingVisible === next.isFocusRingVisible &&\n prev.isSelected === next.isSelected &&\n prev.isTabbable === next.isTabbable &&\n prev.isActive === next.isActive &&\n prev.suggestion === next.suggestion &&\n prev.isGridlineVisible === next.isGridlineVisible &&\n prev.isTopGridlineVisible === next.isTopGridlineVisible &&\n prev.padding === next.padding &&\n compareListItemContext(prev.context, next.context)\n );\n }\n return false;\n});\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { skeletonStyles } from './themes/ListStyles.css';\n\ntype Props = {\n /**\n * Allows to pass and access the properties from child elements\n **/\n children?: (index: number) => ComponentChildren;\n /**\n * Allows to specify number of skeletons to be rendered on initial load\n **/\n minimumCount?: number;\n};\n\n/**\n * Allows to specify the time delay for rendering the component\n **/\nconst timerValue = 50;\n\n/**\n * SkeletonContainer renders 'minimumCount' number of skeletons\n * of the variant specified from its child element - Skeleton's prop after\n * 'timerValue' ms delay\n **/\nexport function SkeletonContainer({ children, minimumCount = 1 }: Props) {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsVisible(true);\n }, timerValue);\n }, []);\n\n const containerClasses = classNames([skeletonStyles.container]);\n return isVisible && children ? (\n <div class={containerClasses} role=\"presentation\">\n {[...Array(minimumCount)].map((_element, index) => children(index))}\n </div>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { globalImages } from '#/ImageVars.css';\nimport { sparkleStyles } from './themes/ListStyles.css';\nimport { useTheme } from '#/hooks/UNSAFE_useTheme';\n\nconst SPARKLE_STYLE_CLASS = 'oj-collection-sparkle';\n\n/**\n * A sparkle component for smart suggestion indicator in ListView\n * @param sparkleHeight the height of sparkle\n */\nexport function Sparkle({ sparkleHeight }: { sparkleHeight: number }) {\n const { name } = useTheme();\n if (sparkleHeight <= 0) {\n return null;\n }\n\n const height = sparkleHeight + 'px';\n const sparkleClasses = classNames([sparkleStyles.base]);\n const containerClasses = classNames([\n sparkleStyles.container,\n SPARKLE_STYLE_CLASS,\n // TODO: this component should create separate theme definitions to only show the image in redwood\n name === 'redwood' && globalImages\n ]);\n\n return (\n <div key=\"sparkle\" class={containerClasses}>\n <div class={sparkleClasses} style={{ height }}></div>\n </div>\n );\n}\n","import type { RefObject } from 'preact';\nimport { useState, useEffect, useMemo } from 'preact/hooks';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { PLACEHOLDER_STYLE_CLASS } from '../PRIVATE_VirtualizedCollection';\nimport { Metadata } from '../UNSAFE_Collection';\n\nexport const usePromotedSection = <K extends string | number, D>(\n data: ListViewProps<K, D>['data'],\n promotedSection: ListViewProps<K, D>['promotedSection'],\n rootRef: RefObject<HTMLDivElement>\n) => {\n // tracking sparkle height\n const [sparkleHeight, setSparkleHeight] = useState<number>(0);\n\n const suggestions = useMemo(\n () => data && promotedSection && findSuggestions(data.data, promotedSection.count),\n [data, promotedSection]\n );\n\n useEffect(() => {\n // update sparkleHeight only when we have suggestions\n // avoid unnecessary iterating through elements\n if (suggestions) {\n const placeholder = rootRef.current?.querySelector(\n '.' + PLACEHOLDER_STYLE_CLASS\n ) as HTMLElement;\n let height = placeholder?.offsetHeight || 0;\n const suggestionItems = rootRef.current?.querySelectorAll('[data-oj-suggestion]');\n suggestionItems?.forEach((item) => (height += (item as HTMLElement).offsetHeight));\n setSparkleHeight(height);\n }\n }, [rootRef, suggestions]);\n\n return { sparkleHeight, suggestions };\n};\n\n/**\n * A helper function that finds the data with suggestions, and\n * returns the corresponding keys\n * @param dataState\n */\nconst findSuggestions = <K, D>(data: { data: D; metadata: Metadata<K> }[], count: number) => {\n if (count === 0) {\n return null;\n }\n\n const suggestionsData = data.slice(0, count);\n return suggestionsData.reduce((suggestions, value, index) => {\n const key = value.metadata.key;\n\n if (index === count - 1) {\n suggestions.set(key, 'end');\n } else {\n suggestions.set(key, true);\n }\n\n return suggestions;\n }, new Map<K, 'end' | true>());\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 { FlattenedDataState } from '../UNSAFE_Collection';\nimport { Keys } from '../utils/UNSAFE_keys';\n\n/**\n * Helper function to only include keys of leaf items.\n */\nexport const excludeGroup = <K, D>(data: FlattenedDataState<K, D>, keys: Keys<K>) => {\n if (!keys.all) {\n const groups = data.data\n .filter((dataMetadata) => {\n return !dataMetadata.metadata.isLeaf;\n })\n .map((dataMetadata) => {\n return dataMetadata.metadata.key;\n });\n const leafOnly = Array.from(keys.keys.values()).filter((key: K) => {\n return !groups.includes(key);\n });\n return { ...keys, keys: new Set(leafOnly) };\n }\n return keys;\n};\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nexport const scrollToVisible = (elem: Element, scroller: Element, offset: number) => {\n if (elem && scroller) {\n if ((elem as any).scrollIntoViewIfNeeded) {\n // for Safari, we'll need the non-standard scrollIntoViewIfNeeded\n (elem as any).scrollIntoViewIfNeeded();\n } else {\n elem.scrollIntoView({ block: 'nearest' });\n }\n if (offset > 0) {\n const scrollerBounds = scroller.getBoundingClientRect();\n const elemBounds = elem.getBoundingClientRect();\n const diff = scrollerBounds.top + offset - elemBounds.top;\n if (diff > 0) {\n scroller.scrollTop = scroller.scrollTop - diff;\n }\n }\n }\n};\n","import type { RefObject } from 'preact';\nimport { useEffect, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { Keys, addKeys } from '../utils/UNSAFE_keys';\nimport {\n DataState,\n Metadata,\n Range,\n SelectionDetail,\n CurrentKeyDetail\n} from '../UNSAFE_Collection';\nimport { getListViewRoles } from './ListRoles';\nimport {\n SelectionRangeDetail,\n useSelection,\n useDropDownSelection\n} from '../hooks/PRIVATE_useSelection';\nimport { useCurrentKey } from '../hooks/PRIVATE_useCurrentKey';\nimport { useCollectionFocusRing } from '../hooks/PRIVATE_useCollectionFocusRing';\nimport { useItemAction } from '../hooks/PRIVATE_useItemAction';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { getPrevNextKey, findElementByKey, keyExtractor } from '../utils/PRIVATE_collectionUtils';\nimport { ITEM_SELECTOR } from './ListItem';\nimport { scrollToVisible } from './ListUtils';\n\nexport const useSelectionAndNavigation = <K extends string | number, D>(\n currentKey: K | undefined,\n selectedKeys: Keys<K>,\n selectionMode: ListViewProps<K, D>['selectionMode'] = 'none',\n onCurrentKeyChange: ((detail: CurrentKeyDetail<K>) => void) | undefined,\n onSelectionChange: ListViewProps<K, D>['onSelectionChange'],\n onItemAction: ListViewProps<K, D>['onItemAction'],\n data: ListViewProps<K, D>['data'],\n viewportConfig: ListViewProps<K, D>['viewportConfig'],\n role: ListViewProps<K, D>['role'] = 'grid',\n scrollToVisibleOffset: ListViewProps<K, D>['scrollToVisibleOffset'],\n rootRef: RefObject<HTMLDivElement>,\n pendingSelectionCallback: (detail: SelectionRangeDetail<K>, value: Range) => void,\n isCurrentItemOverridden: boolean,\n isEmbedded: boolean\n) => {\n const listRoles = useMemo(() => getListViewRoles(role), [role]);\n\n // tracking the anchor key which is used for shift+click selection\n const anchorKey = useRef<K | undefined>();\n\n const { currentKeyProps } = useCurrentKey(\n (element) => keyExtractor(element, ITEM_SELECTOR),\n selectionMode !== 'multiple' || isEmbedded,\n getPrevNextKey(rootRef.current, currentKey, true, ITEM_SELECTOR),\n getPrevNextKey(rootRef.current, currentKey, false, ITEM_SELECTOR),\n undefined,\n undefined,\n currentKey,\n onCurrentKeyChange\n );\n\n const [showFocusRing, focusRingProps] = useCollectionFocusRing(rootRef, ['ArrowUp', 'ArrowDown']);\n\n useEffect(() => {\n if (currentKey != null && rootRef.current) {\n const elem = findElementByKey(rootRef.current, currentKey, ITEM_SELECTOR);\n if (elem) {\n const activeDescendant = rootRef.current.getAttribute('aria-activedescendant');\n const cell = elem.querySelector(`[role=${listRoles.cell}]`);\n if (cell && activeDescendant !== cell.id) {\n // update aria-activedescendant for screenreader\n rootRef.current.setAttribute('aria-activedescendant', cell.id);\n\n // scroll the current item into view only when the current item is updated internally and listview has focus\n // or when the collection gesture is 'embedded' if the current item is updated by the app\n const hasFocus = rootRef.current?.contains(document.activeElement as HTMLElement);\n if ((!isCurrentItemOverridden && hasFocus) || isEmbedded) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n // make sure item is visible\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n }\n }\n }\n // listen to data because the current item would re-render when the virtualizer\n // is fetching data or updating the data, i.e. the id of current item would be updated,\n // so the currentKey itself couldn't guarantee the root has latest aria-activedescendant\n }, [\n currentKey,\n data,\n listRoles.cell,\n viewportConfig,\n scrollToVisibleOffset,\n rootRef,\n isCurrentItemOverridden,\n isEmbedded\n ]);\n\n const handleSelectionChange = useCallback(\n (detail: SelectionDetail<K>) => {\n if (onSelectionChange) {\n if (detail.value.all === false && detail.value.keys.size > 0) {\n // during regular selection, the last key selected by a user gesture is the anchor key\n anchorKey.current = Array.from(detail.value.keys.values()).pop();\n }\n onSelectionChange(detail);\n }\n },\n [anchorKey, onSelectionChange]\n );\n\n const handleSelectionRangeChange = useCallback(\n (detail: SelectionRangeDetail<K>) => {\n if (data && onSelectionChange) {\n const value = handleSelectionRange(detail, data);\n if (Array.isArray(value)) {\n if (detail.eventType === 'shiftSpace') {\n // during range selection by shift+space, the first key selected by a user gesture is the anchor key\n anchorKey.current = detail.value.start;\n } else {\n // during range selection by shift+click/arrow keys, the last key selected by a user gesture is the anchor key\n anchorKey.current = detail.value.end;\n }\n if (!isEmbedded) {\n onSelectionChange({ value: { all: false, keys: new Set(value) }, target: null });\n } else {\n const keys = addKeys(selectedKeys, value);\n onSelectionChange({ value: keys, target: null });\n }\n } else {\n pendingSelectionCallback(detail, value);\n }\n }\n },\n [data, isEmbedded, selectedKeys, onSelectionChange, pendingSelectionCallback]\n );\n\n const { selectionProps } = useSelection(\n (element: HTMLElement) => {\n if (element === rootRef.current) {\n return currentKey === undefined ? null : currentKey;\n }\n return keyExtractor(element, ITEM_SELECTOR) as K;\n },\n selectedKeys,\n isEmbedded ? 'none' : selectionMode,\n false,\n 'replace',\n handleSelectionChange,\n anchorKey.current,\n currentKey,\n (currentKey: K | undefined, isPrev: boolean) =>\n getPrevNextKey(rootRef.current, currentKey, isPrev, ITEM_SELECTOR),\n undefined,\n (key: K) => {\n if (rootRef.current) {\n const elem = findElementByKey(rootRef.current, key, ITEM_SELECTOR);\n if (elem) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n }\n },\n handleSelectionRangeChange\n );\n\n const { dropDownSelectionProps } = useDropDownSelection(\n (element: HTMLElement) => {\n if (element === rootRef.current) {\n return currentKey === undefined ? null : currentKey;\n }\n return keyExtractor(element, ITEM_SELECTOR) as K;\n },\n selectedKeys,\n isEmbedded ? selectionMode : 'none',\n false,\n (key: K) => {\n if (data) {\n return data.data.findIndex(\n (value: { data: D; metadata: Metadata<K> }) => value.metadata.key === key\n );\n }\n return -1;\n },\n (startIndex: number, endIndex: number) => {\n if (data) {\n const keys = data.data.map(\n (value: { data: D; metadata: Metadata<K> }) => value.metadata.key\n );\n return keys.slice(startIndex, endIndex);\n }\n return [];\n },\n (currentKey: K | undefined, isPrev: boolean) =>\n getPrevNextKey(rootRef.current, currentKey, isPrev, ITEM_SELECTOR),\n currentKey,\n handleSelectionChange,\n handleSelectionRangeChange\n );\n\n const itemActionProps = useItemAction(currentKey, data, onItemAction, ITEM_SELECTOR, isEmbedded);\n\n return {\n eventProps: mergeProps(\n currentKeyProps,\n focusRingProps,\n selectionProps,\n itemActionProps,\n dropDownSelectionProps\n ),\n showFocusRing,\n handleSelectionChange\n };\n};\n\nexport const handleSelectionRange = <K, D>(\n detail: SelectionRangeDetail<K>,\n dataState: DataState<K, D>\n) => {\n const keys = dataState.data.map((value: { data: D; metadata: Metadata<K> }) => {\n return value.metadata.key;\n });\n const startIndex = keys.indexOf(detail.value.start);\n const endIndex = keys.indexOf(detail.value.end);\n const minIndex = Math.min(startIndex, endIndex);\n const maxIndex = Math.max(startIndex, endIndex);\n if (minIndex === -1) {\n // return a range to fetch so we can find all the keys, maxIndex should not be -1\n return { offset: 0, count: dataState.totalSize };\n } else {\n // range of keys are in the current viewport, return them\n return keys.slice(minIndex, maxIndex + 1);\n }\n};\n","import type { RefObject } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { CurrentKeyDetail } from '../UNSAFE_Collection';\nimport { getFirstVisibleKey, keyExtractor } from '../utils/PRIVATE_collectionUtils';\nimport { isKeyDefined } from '../utils/UNSAFE_keys';\nimport { ITEM_SELECTOR } from './ListItem';\nimport { useTabbableModeSet } from '../hooks/PRIVATE_useTabbableModeSet';\nimport { findElementByKey } from '../utils/PRIVATE_collectionUtils';\nimport { scrollToVisible } from './ListUtils';\n\nexport const useFocusTabbableMode = <K extends string | number, D>(\n currentKey: K | undefined,\n onCurrentKeyChange: ((detail: CurrentKeyDetail<K>) => void) | undefined,\n allowTabbableMode: ListViewProps<K, D>['allowTabbableMode'],\n rootRef: RefObject<HTMLDivElement>,\n viewportConfig: ListViewProps<K, D>['viewportConfig'],\n scrollToVisibleOffset: ListViewProps<K, D>['scrollToVisibleOffset']\n) => {\n const pendingCurrentKey = useRef<K>();\n\n // ensure current item scroll into view when listview regains focus\n // unless pendingCurrentKey gets updated to something different than currentKey\n const focusAndScrollIntoView = useRef(true);\n\n const [isCurrentTabbableKey, tabbableModeProps] = useTabbableModeSet(\n rootRef,\n (element) => {\n // we don't want List to go into Tabbable mode when user clicks on expander\n return isExpander(element) ? null : (keyExtractor(element, ITEM_SELECTOR) as K);\n },\n currentKey,\n onCurrentKeyChange\n );\n\n const handleInitialFocus = useCallback(() => {\n if (\n rootRef.current &&\n onCurrentKeyChange &&\n (!allowTabbableMode || isCurrentTabbableKey(undefined))\n ) {\n const firstKey =\n pendingCurrentKey.current || (getFirstVisibleKey(rootRef.current, ITEM_SELECTOR) as K);\n if (isKeyDefined(firstKey)) {\n onCurrentKeyChange({ value: firstKey });\n }\n }\n }, [rootRef, onCurrentKeyChange, allowTabbableMode, isCurrentTabbableKey]);\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n if (isExpander(event.target as HTMLElement)) {\n rootRef.current?.focus();\n const key = keyExtractor(event.target as HTMLElement, ITEM_SELECTOR);\n if (onCurrentKeyChange && isKeyDefined(key)) {\n onCurrentKeyChange({ value: key as K });\n }\n return;\n }\n if (!isKeyDefined(currentKey)) {\n onCurrentKeyChange && handleInitialFocus();\n } else if (rootRef.current) {\n const elem = findElementByKey(rootRef.current, currentKey as K, ITEM_SELECTOR);\n if (elem) {\n // if currentKey is defined, make sure scroll the current item into view only when listview regains focus\n // unless pendingCurrentKey gets updated to something different than currentKey\n if (focusAndScrollIntoView.current) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n focusAndScrollIntoView.current = true;\n } else {\n // if elem is not found, meaning the currentKey is not valid, we should pick the first item as current item\n onCurrentKeyChange && handleInitialFocus();\n }\n }\n },\n [\n currentKey,\n handleInitialFocus,\n onCurrentKeyChange,\n scrollToVisibleOffset,\n viewportConfig,\n rootRef\n ]\n );\n\n /**\n * Need to track pointer down element to set currentItem when initial focus happens\n */\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n const key = keyExtractor(event.target as HTMLElement, ITEM_SELECTOR);\n if (isKeyDefined(key)) {\n pendingCurrentKey.current = key as K;\n if (key !== currentKey) {\n focusAndScrollIntoView.current = false;\n }\n }\n },\n [currentKey]\n );\n\n return {\n eventProps: mergeProps(allowTabbableMode ? tabbableModeProps : {}, {\n onFocus: handleFocus,\n onPointerDown: handlePointerDown\n }),\n isCurrentTabbableKey\n };\n};\n\nconst isExpander = (elem: HTMLElement) => {\n if (elem.parentElement && elem.parentElement.classList.contains('oj-listview-expander')) {\n return true;\n }\n return false;\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport { useRef, useCallback, useState, useImperativeHandle, useEffect } from 'preact/hooks';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { containsKey, Keys, isKeyDefined, addKeys } from '../utils/UNSAFE_keys';\nimport { DataState, ItemContext, ListItemRendererContext, Range } from '../UNSAFE_Collection';\nimport { LoadMoreCollection, LOADMORE_STYLE_CLASS } from '../PRIVATE_LoadMoreCollection';\nimport { VirtualizedCollection } from '../PRIVATE_VirtualizedCollection';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { ListViewItem, ITEM_SELECTOR, MemoizeListViewItem } from './ListItem';\n\nimport { SelectionRangeDetail } from '../hooks/PRIVATE_useSelection';\nimport { SkeletonContainer } from './SkeletonContainer';\nimport { Skeleton } from '../UNSAFE_Skeleton';\nimport { Flex } from '../UNSAFE_Flex';\nimport { Selector } from '../UNSAFE_Selector';\nimport { Props } from '../UNSAFE_ListView';\nimport { Sparkle } from './Sparkle';\nimport { listStyles } from './themes/ListStyles.css';\nimport { useTestId } from '../hooks/UNSAFE_useTestId';\nimport { useCollectionInteractionContext } from '../hooks/UNSAFE_useCollectionInteractionContext';\nimport { usePromotedSection } from './usePromotedSection';\nimport { useSelectionAndNavigation, handleSelectionRange } from './useSelectionAndNavigation';\nimport { useFocusTabbableMode } from './useFocusTabbableMode';\nimport { useCurrentItemOverride } from './useCurrentItemOverride';\nimport { Inset } from '../UNSAFE_Inset';\n// TODO: add this import due to issue JET-67485, need to update once Stable is introduced\nimport './themes/redwood/ListBaseTheme.css';\n\n/**\n * Component that renders items as a flat list.\n * In order to maximize performance, only items that are visible in the viewport are rendered.\n */\nexport function List<K extends string | number, D>({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n allowTabbableMode = true,\n children,\n data,\n gridlines,\n loadingIndicator = defaultLoadingIndicator,\n currentItemOverride,\n onPersistCurrentItem,\n onLoadRange,\n onSelectionChange,\n onItemAction,\n rangeExtractor,\n role = 'grid',\n selectedKeys = emptyKeys as Keys<K>,\n selectionMode = 'none',\n viewportConfig,\n currentItemVariant,\n promotedSection,\n isVirtualized = false,\n customItemRenderer,\n scrollToVisibleOffset,\n testId,\n scrollerRef,\n reorderProps,\n contextMenuTriggerProps,\n itemPadding,\n ...props\n}: Props<K, D>) {\n const rootRef = useRef<HTMLDivElement>(null);\n const isFetching = useRef(false);\n\n // tracking pending selection key that is not in current data\n const pendingSelection = useRef<{ detail: SelectionRangeDetail<K>; range: Range }>();\n\n const [active, setActive] = useState<boolean>(false);\n\n const showGridline = (index: number) => {\n // show bottom gridlines for each item, and for the last item if specified\n return (\n gridlines?.item === 'visible' &&\n (index + 1 !== data?.totalSize || gridlines?.bottom === 'visible')\n );\n };\n\n const showGridlineTop = () => {\n // show the top gridline for the first item\n return gridlines?.item === 'visible' && gridlines?.top === 'visible';\n };\n\n const ariaMultiSelectable = selectionMode === 'none' ? undefined : selectionMode === 'multiple';\n const ariaRowCount =\n data === null ? undefined : data.sizePrecision === 'exact' ? data.totalSize : -1;\n\n const classes = classNames([listStyles.base]);\n\n const isEmbedded = useCollectionInteractionContext() === 'embedded';\n const itemVariant =\n currentItemVariant !== undefined ? currentItemVariant : isEmbedded ? 'highlight' : 'none';\n\n const pendingSelectionCallback = useCallback(\n (detail: SelectionRangeDetail<K>, value: Range) => {\n if (data) {\n pendingSelection.current = {\n detail: detail,\n range: { offset: data.offset, count: data.data.length }\n };\n onLoadRange(value);\n }\n },\n [data, onLoadRange]\n );\n\n /*****************************************************************************************/\n /************************************* Load More *****************************************/\n /*****************************************************************************************/\n\n const lastRange = useRef({ offset: 0, count: 0 });\n const handleLoadRange = useCallback(\n (newRange: { offset: number; count: number }) => {\n // check isFetching to avoid multiple load more at the same time (details in JET-68994)\n if (\n !isFetching.current ||\n lastRange.current.offset !== newRange.offset ||\n lastRange.current.count !== newRange.count\n ) {\n isFetching.current = true;\n lastRange.current = newRange;\n onLoadRange(newRange);\n }\n },\n [isFetching, onLoadRange]\n );\n\n useEffect(() => {\n isFetching.current = false;\n // listen to data because when one of them gets updated, the fetching is done\n }, [data]);\n\n const { currentKey, onCurrentKeyChange, isCurrentItemOverridden } = useCurrentItemOverride(\n currentItemOverride,\n onPersistCurrentItem\n );\n\n const { eventProps, showFocusRing, handleSelectionChange } = useSelectionAndNavigation(\n currentKey,\n selectedKeys,\n selectionMode,\n onCurrentKeyChange,\n onSelectionChange,\n onItemAction,\n data,\n viewportConfig,\n role,\n scrollToVisibleOffset,\n rootRef,\n pendingSelectionCallback,\n isCurrentItemOverridden,\n isEmbedded\n );\n\n const { eventProps: focusTabbableProps, isCurrentTabbableKey } = useFocusTabbableMode(\n currentKey,\n onCurrentKeyChange,\n allowTabbableMode,\n rootRef,\n viewportConfig,\n scrollToVisibleOffset\n );\n\n if (data && pendingSelection.current !== undefined && onSelectionChange) {\n const keys = handleSelectionRange(pendingSelection.current.detail, data);\n if (Array.isArray(keys)) {\n if (!isEmbedded) {\n onSelectionChange({ value: { all: false, keys: new Set(keys) }, target: null });\n } else {\n const value = addKeys(selectedKeys, keys);\n onSelectionChange({ value, target: null });\n }\n }\n const range = pendingSelection.current\n ? pendingSelection.current.range\n : { offset: data.offset, count: data.data.length };\n data = adjustDataState(data, range);\n pendingSelection.current = undefined;\n onLoadRange(range);\n }\n\n const { sparkleHeight, suggestions } = usePromotedSection(data, promotedSection, rootRef);\n\n // TODO: check suggestions before Sparkle would cause a scrolling issue\n const sparkleIndicator = <Sparkle sparkleHeight={sparkleHeight}></Sparkle>;\n\n // Collection generic is of this type\n type DataStateData = DataState<K, D>['data'][number];\n\n // returns an ListItemContext based on ItemContext (added metadata and selector)\n // note the type for ItemContext, this is the context coming from Collection\n const getItemContext = useCallback(\n (context: ItemContext<DataStateData>) => {\n const dataStateData = context.data;\n const selectorRenderer =\n selectionMode === 'multiple'\n ? () => (\n <Selector\n onChange={handleSelectionChange}\n rowKey={dataStateData.metadata.key}\n selectedKeys={selectedKeys}></Selector>\n )\n : undefined;\n\n return {\n index: context.index,\n data: dataStateData.data,\n metadata: dataStateData.metadata,\n selector: selectorRenderer\n };\n },\n [selectionMode, selectedKeys, handleSelectionChange]\n );\n\n const ItemComponent = isVirtualized ? ListViewItem : MemoizeListViewItem;\n\n const childrenComponent = (context: ItemContext<DataStateData>) => {\n const listItemContext = getItemContext(context);\n const suggestion = suggestions?.get(listItemContext.metadata.key);\n const isTabbable = allowTabbableMode && isCurrentTabbableKey(listItemContext.metadata.key);\n const isFocused = currentKey === listItemContext.metadata.key && !isTabbable;\n const isActive = isFocused && active;\n const isSelected = containsKey(selectedKeys, listItemContext.metadata.key);\n const isFocusRingVisible = isFocused && showFocusRing;\n const listItemFunc = (ctx: ListItemRendererContext<K, D>, otherProps?: any) => (\n <ItemComponent\n key={listItemContext.metadata.key}\n context={ctx}\n isFocused={isFocused}\n isFocusRingVisible={isFocusRingVisible}\n isActive={isActive}\n isGridlineVisible={showGridline(listItemContext.index)}\n isSelected={isSelected}\n isTabbable={allowTabbableMode && isCurrentTabbableKey(listItemContext.metadata.key)}\n role={role}\n selectionMode={selectionMode}\n currentItemVariant={itemVariant}\n padding={itemPadding}\n {...(suggestion && { suggestion })}\n {...(listItemContext.index === 0 && { isTopGridlineVisible: showGridlineTop() })}\n {...otherProps}>\n {children}\n </ItemComponent>\n );\n\n // if customItemRenderer is specified (ExpandableList and GroupedList)\n // create a custom context with additional info including a function\n // that helps create the default item component\n if (customItemRenderer) {\n const customRendererContext = {\n listItemContext,\n isFocused,\n isFocusRingVisible,\n isSelected,\n isTabbable,\n isActive,\n defaultListItem: listItemFunc\n };\n return customItemRenderer(customRendererContext);\n }\n return listItemFunc(listItemContext);\n };\n\n viewportConfig = getViewportConfig(rootRef, viewportConfig);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' && isKeyDefined(currentKey) && selectionMode !== 'none') {\n setActive(true);\n }\n },\n [currentKey, selectionMode, setActive]\n );\n\n const handleKeyUp = useCallback(() => {\n setActive(false);\n }, [setActive]);\n\n useImperativeHandle(scrollerRef!, () => rootRef.current);\n\n // if data is not specified, listview should show loading indicator\n // todo: replace placeholder with actual SkeletonContainer component (Ash is working on)\n const testIdProps = useTestId(testId);\n return (\n <div\n {...mergeProps(\n eventProps,\n focusTabbableProps,\n contextMenuTriggerProps || {},\n reorderProps || {},\n {\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp\n },\n props\n )}\n {...testIdProps}\n role={role}\n aria-rowcount={role === 'grid' ? ariaRowCount : undefined}\n aria-colcount={role === 'grid' ? 1 : undefined}\n ref={rootRef}\n class={classes}\n tabIndex={0}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-multiselectable={ariaMultiSelectable}>\n {data == null ? (\n loadingIndicator\n ) : isVirtualized ? (\n <VirtualizedCollection\n data={data}\n itemSelector={ITEM_SELECTOR}\n loadMoreIndicator={defaultLoadMoreIndicator}\n onLoadRange={onLoadRange}\n rangeExtractor={rangeExtractor}\n suggestions={sparkleIndicator}\n viewportConfig={viewportConfig}>\n {childrenComponent}\n </VirtualizedCollection>\n ) : (\n <LoadMoreCollection\n data={data.data}\n loadMoreIndicator={defaultLoadMoreIndicator}\n hasMore={data.sizePrecision === 'atLeast' && data.data.length <= data.totalSize}\n onLoadMore={() => {\n data && handleLoadRange({ offset: 0, count: data.data.length + 25 });\n }}\n suggestions={sparkleIndicator}\n viewportConfig={viewportConfig}>\n {childrenComponent}\n </LoadMoreCollection>\n )}\n </div>\n );\n}\n\nconst getViewportConfig = (rootRef: RefObject<HTMLElement>, config?: ViewportConfig) => {\n return (\n config ?? {\n scroller: () => {\n return rootRef.current;\n }\n }\n );\n};\n\nconst emptyKeys = { all: false, keys: new Set() };\n\nconst defaultLoadingIndicator = (\n <SkeletonContainer minimumCount={25}>\n {() => {\n return (\n <Inset variant=\"listview\">\n <Flex height=\"6x\" align=\"center\">\n <Skeleton height=\"4x\" />\n </Flex>\n </Inset>\n );\n }}\n </SkeletonContainer>\n);\n\nconst defaultLoadMoreIndicator = (\n <div class={LOADMORE_STYLE_CLASS}>\n <SkeletonContainer minimumCount={3}>\n {() => {\n return (\n <Inset variant=\"listview\">\n <Flex height=\"6x\" align=\"center\">\n <Skeleton height=\"4x\" />\n </Flex>\n </Inset>\n );\n }}\n </SkeletonContainer>\n </div>\n);\n\n/**\n * Adjust the DataState as needed if it contains more than needed for the specified range\n */\nconst adjustDataState = <K, D>(dataState: DataState<K, D>, range: Range | null) => {\n if (range) {\n // prevent range offset from being larger than the data state\n const safeRangeOffset = Math.min(range.offset, dataState.offset + dataState.totalSize);\n const diff = safeRangeOffset - dataState.offset;\n if (diff > 0) {\n dataState = {\n offset: safeRangeOffset,\n data: dataState.data.slice(diff, diff + range.count),\n totalSize: dataState.totalSize,\n sizePrecision: dataState.sizePrecision\n };\n }\n }\n return dataState;\n};\n","import { useRef, useMemo, useState, useEffect } from 'preact/hooks';\nimport { Props as ListProps } from '../UNSAFE_ListView';\nimport { CurrentKeyDetail, Item } from '../UNSAFE_Collection';\nimport { useReorderableContext } from '../hooks/PRIVATE_useReorderable/useReorderableContext';\n\n/**\n * This hook converts the new API (i.e. currentItemOverride and onPersistCurrentItem) back to\n * the old API (i.e. currentKey and onCurrentKeyChange), keeps the internal current item, and\n * also triggers an update when a new currentItemOverride is passed by the app\n *\n * @param currentItemOverride\n * @param onPersistCurrentItem\n */\nexport const useCurrentItemOverride = <K extends string | number, D>(\n currentItemOverride: ListProps<K, D>['currentItemOverride'],\n onPersistCurrentItem: ListProps<K, D>['onPersistCurrentItem']\n) => {\n // the internal state of current item\n const [currentItem, setCurrentItem] = useState<Item<K>>();\n // track the currentItemOverride props\n const currentItemOverrideRef = useRef<Item<K>>();\n // whether the current item is overridden by the app\n const isCurrentItemOverridden = useRef(false);\n\n // if reorder is enabled, need to update the context here when current item is changed\n const reorderContext = useReorderableContext();\n\n // intercept onPersistCurrentItem calls to ensure internal state is updated appropriately\n const handleCurrentItemChanged = useMemo(() => {\n return (detail: CurrentKeyDetail<K>) => {\n const rowKey = detail.value;\n setCurrentItem({ rowKey });\n onPersistCurrentItem?.(detail);\n if (reorderContext?.currentItemKey != null) {\n reorderContext.currentItemKey.current = rowKey;\n }\n };\n }, [onPersistCurrentItem, reorderContext?.currentItemKey]);\n\n // ensure any new currentItemOverride settings are applied only on that render\n // (same as how Table handles the changes)\n if (currentItemOverrideRef.current !== currentItemOverride) {\n currentItemOverrideRef.current = currentItemOverride;\n if (currentItem?.rowKey !== currentItemOverride?.rowKey) {\n isCurrentItemOverridden.current = true;\n handleCurrentItemChanged({ value: currentItemOverride?.rowKey as K });\n }\n }\n\n useEffect(() => {\n isCurrentItemOverridden.current = false;\n });\n\n return {\n currentKey: currentItem?.rowKey,\n onCurrentKeyChange: handleCurrentItemChanged,\n isCurrentItemOverridden: isCurrentItemOverridden.current\n };\n};\n"],"names":["getListViewRoles","ariaRole","list","item","cell","ITEM_SELECTOR","ListViewItem","children","context","itemDepth","isFocused","isFocusRingVisible","isActive","isGridlineVisible","isSelected","isTopGridlineVisible","isTabbable","role","selectionMode","suggestion","currentItemVariant","padding","rootRef","useRef","roles","useMemo","itemKey","metadata","key","itemIndex","index","cellRoleAttributes","interactionProps","applyActiveStyle","applyHoverStyle","applyPseudoHoverStyle","useInteractionStyle","variantClasses","listItemMultiVariantStyles","selectable","isSelectable","selected","selectedSingle","needsEventsHover","pseudoHover","active","focusHighlight","focusRingVisible","gridlineTop","gridlineBottom","paddingClasses","push","paddingStyles","allPadding","top","topItemPadding","bottom","bottomItemPadding","start","startItemPadding","end","endItemPadding","classes","classNames","styleInterpolations","mergeInterpolations","Object","values","flexitemInterpolations","class","cls","cellStyles","flex","alignSelf","cellClasses","listItemStyles","checkboxContainer","_jsx","jsx","undefined","ref","id","useId","style","onKeyDown","event","stopPropagation","TabbableModeContext","Provider","value","FocusTrap","isDisabled","restoreFocusRef","isItemSelected","MemoizeListViewItem","memo","prev","next","compareListItemContext","SkeletonContainer","minimumCount","isVisible","setIsVisible","useState","useEffect","setTimeout","containerClasses","skeletonStyles","container","Array","map","_element","SPARKLE_STYLE_CLASS","Sparkle","sparkleHeight","name","useTheme","height","sparkleClasses","sparkleStyles","base","globalImages","findSuggestions","data","count","slice","reduce","suggestions","set","Map","scrollToVisible","elem","scroller","offset","scrollIntoViewIfNeeded","scrollIntoView","block","scrollerBounds","getBoundingClientRect","elemBounds","diff","scrollTop","handleSelectionRange","detail","dataState","keys","startIndex","indexOf","endIndex","minIndex","Math","min","maxIndex","max","totalSize","isExpander","parentElement","classList","contains","getViewportConfig","config","current","emptyKeys","all","Set","defaultLoadingIndicator","Inset","variant","Flex","align","Skeleton","defaultLoadMoreIndicator","LOADMORE_STYLE_CLASS","adjustDataState","range","safeRangeOffset","sizePrecision","ariaLabel","ariaLabelledBy","allowTabbableMode","gridlines","loadingIndicator","currentItemOverride","onPersistCurrentItem","onLoadRange","onSelectionChange","onItemAction","rangeExtractor","selectedKeys","viewportConfig","promotedSection","isVirtualized","customItemRenderer","scrollToVisibleOffset","testId","scrollerRef","reorderProps","contextMenuTriggerProps","itemPadding","props","isFetching","pendingSelection","setActive","ariaMultiSelectable","ariaRowCount","listStyles","isEmbedded","useCollectionInteractionContext","itemVariant","pendingSelectionCallback","useCallback","length","lastRange","handleLoadRange","newRange","currentKey","onCurrentKeyChange","isCurrentItemOverridden","currentItem","setCurrentItem","currentItemOverrideRef","reorderContext","useReorderableContext","handleCurrentItemChanged","rowKey","currentItemKey","useCurrentItemOverride","eventProps","showFocusRing","handleSelectionChange","listRoles","anchorKey","currentKeyProps","useCurrentKey","element","keyExtractor","getPrevNextKey","focusRingProps","useCollectionFocusRing","findElementByKey","activeDescendant","getAttribute","querySelector","setAttribute","hasFocus","document","activeElement","size","from","pop","handleSelectionRangeChange","isArray","eventType","addKeys","target","selectionProps","useSelection","isPrev","dropDownSelectionProps","useDropDownSelection","findIndex","itemActionProps","useItemAction","mergeProps","useSelectionAndNavigation","focusTabbableProps","isCurrentTabbableKey","pendingCurrentKey","focusAndScrollIntoView","tabbableModeProps","useTabbableModeSet","handleInitialFocus","firstKey","getFirstVisibleKey","isKeyDefined","handleFocus","focus","handlePointerDown","onFocus","onPointerDown","useFocusTabbableMode","setSparkleHeight","placeholder","PLACEHOLDER_STYLE_CLASS","offsetHeight","suggestionItems","querySelectorAll","forEach","usePromotedSection","sparkleIndicator","getItemContext","dataStateData","selectorRenderer","Selector","onChange","selector","ItemComponent","childrenComponent","listItemContext","get","containsKey","listItemFunc","ctx","otherProps","defaultListItem","handleKeyDown","handleKeyUp","useImperativeHandle","testIdProps","useTestId","onKeyUp","tabIndex","VirtualizedCollection","itemSelector","loadMoreIndicator","LoadMoreCollection","hasMore","onLoadMore","groups","filter","dataMetadata","isLeaf","leafOnly","includes"],"mappings":"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"}
1
+ {"version":3,"file":"List-04c4fed0.js","sources":["../../src/PRIVATE_List/ListRoles.ts","../../src/PRIVATE_List/ListItem.tsx","../../src/PRIVATE_List/SkeletonContainer.tsx","../../src/PRIVATE_List/Sparkle.tsx","../../src/PRIVATE_List/usePromotedSection.ts","../../src/PRIVATE_List/ListUtils.ts","../../src/PRIVATE_List/useSelectionAndNavigation.ts","../../src/PRIVATE_List/useFocusTabbableMode.ts","../../src/PRIVATE_List/List.tsx","../../src/PRIVATE_List/useCurrentItemOverride.ts"],"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 */\n\nimport { Roles } from '../UNSAFE_ListView';\nimport { HTMLAttributesSignalExcluded } from '../utils/UNSAFE_attributeUtils';\n\n/**\n * List Roles need to be kept in matching sets, this module encapsulates the sets\n *\n * @param ariaRole\n * @returns matching, valid set of roles\n */\n\nconst getListViewRoles = (\n ariaRole: Roles\n): {\n list: HTMLAttributesSignalExcluded['role'];\n item: HTMLAttributesSignalExcluded['role'];\n cell: HTMLAttributesSignalExcluded['role'];\n} => {\n switch (ariaRole) {\n case 'listbox':\n return { list: 'listbox', item: 'presentation', cell: 'option' };\n case 'treegrid':\n return { list: 'treegrid', item: 'row', cell: 'gridcell' };\n default:\n return { list: 'grid', item: 'row', cell: 'gridcell' };\n }\n};\n\nexport { getListViewRoles };\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 { ComponentChildren } from 'preact';\nimport { useRef, useMemo } from 'preact/hooks';\nimport { memo } from 'preact/compat';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { TabbableModeContext } from '../hooks/UNSAFE_useTabbableMode';\nimport { SelectionMode, CurrentItemVariant, ListItemRendererContext } from '../UNSAFE_Collection';\nimport { FocusTrap } from '../UNSAFE_FocusTrap';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { Roles, ItemPadding } from '../UNSAFE_ListView';\nimport { getListViewRoles } from './ListRoles';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { mergeInterpolations } from '../utils/UNSAFE_mergeInterpolations';\nimport { flexitemInterpolations } from '../utils/UNSAFE_interpolations/flexitem';\nimport type { FlexitemProps } from '../utils/UNSAFE_interpolations/flexitem';\nimport { listItemStyles, listItemMultiVariantStyles, paddingStyles } from './themes/ListStyles.css';\nimport { compareListItemContext } from '../utils/PRIVATE_collectionUtils';\n\nexport const ITEM_SELECTOR = '[data-oj-key]';\n\n/**\n * Props for the ListViewItem Component\n */\nexport type Props<K, D> = {\n children: (context: ListItemRendererContext<K, D>) => ComponentChildren;\n context: ListItemRendererContext<K, D>;\n itemDepth?: number;\n isFocused: boolean;\n isFocusRingVisible: boolean;\n isActive: boolean;\n isGridlineVisible: boolean;\n isSelected: boolean;\n isTopGridlineVisible?: boolean;\n isTabbable?: boolean;\n role: Roles;\n selectionMode: SelectionMode;\n suggestion?: 'end' | true;\n currentItemVariant?: CurrentItemVariant;\n padding?: 'enabled' | 'disabled' | ItemPadding;\n};\n\n/**\n * The internal component used to render a single item in ListView.\n */\nexport function ListViewItem<K extends string | number, D>({\n children,\n context,\n itemDepth,\n isFocused,\n isFocusRingVisible,\n isActive,\n isGridlineVisible,\n isSelected,\n isTopGridlineVisible = false,\n isTabbable = false,\n role,\n selectionMode,\n suggestion,\n currentItemVariant,\n padding\n}: Props<K, D>) {\n const rootRef = useRef<HTMLDivElement>(null);\n const roles = useMemo(() => getListViewRoles(role), [role]);\n const itemKey = context.metadata.key;\n const itemIndex = context.index;\n\n // some roles come with related aria attributes which need to be set\n const cellRoleAttributes =\n roles.cell === 'option'\n ? {\n role: roles.cell,\n 'aria-posinset': itemIndex + 1,\n 'aria-setsize': -1\n }\n : {\n role: roles.cell\n };\n\n // don't bubble Arrow Up and Down events to parent when in isTabbable mode\n // this bubbling causes the outer CollectionFocus ring to change index while in the isTabbable mode.\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isTabbable && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {\n event.stopPropagation();\n }\n };\n\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const variantClasses = listItemMultiVariantStyles({\n selectable: isSelectable(selectionMode, isSelected) ? 'isSelectable' : 'notSelectable',\n selected: isSelected ? 'isSelected' : 'notSelected',\n selectedSingle:\n isSelected && selectionMode === 'single' ? 'isSelectedSingle' : 'notSelectedSingle',\n needsEventsHover: applyHoverStyle ? 'isNeedsEventsHover' : 'notNeedsEventsHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n active: applyActiveStyle || isActive ? 'isActive' : 'notActive',\n focusHighlight:\n currentItemVariant === 'highlight' && isFocused ? 'isFocusHighlight' : 'notFocusHighlight',\n focusRingVisible:\n isFocusRingVisible && isFocused ? 'isFocusRingVisible' : 'notFocusRingVisible',\n gridlineTop: isTopGridlineVisible ? 'visible' : 'hidden',\n gridlineBottom:\n isGridlineVisible ||\n (suggestion === 'end' && !isGridlineVisible && (!isSelected || selectionMode !== 'single'))\n ? 'visible'\n : 'hidden'\n });\n const paddingClasses = [];\n if (padding) {\n if (padding === 'enabled') {\n paddingClasses.push(paddingStyles.allPadding);\n } else if (padding !== 'disabled') {\n if (padding.top === 'enabled') {\n paddingClasses.push(paddingStyles.topItemPadding);\n }\n if (padding.bottom === 'enabled') {\n paddingClasses.push(paddingStyles.bottomItemPadding);\n }\n if (padding.start === 'enabled') {\n paddingClasses.push(paddingStyles.startItemPadding);\n }\n if (padding.end === 'enabled') {\n paddingClasses.push(paddingStyles.endItemPadding);\n }\n }\n }\n\n const classes = classNames([variantClasses, ...paddingClasses]);\n const styleInterpolations = mergeInterpolations<FlexitemProps>([\n ...Object.values(flexitemInterpolations)\n ]);\n const { class: cls, ...cellStyles } = styleInterpolations({\n flex: '1 1 auto',\n alignSelf: 'center'\n });\n const cellClasses = classNames([\n cls,\n selectionMode === 'multiple' && listItemStyles.checkboxContainer\n ]);\n\n // todo: use translated text for selector\n // note cannot put focus on gridcell div since JAWS will not read the aria-rowindex\n // correctly, so unfortunately needed another div\n return (\n <div\n aria-rowindex={role === 'grid' ? itemIndex + 1 : undefined}\n aria-level={itemDepth}\n data-oj-key={itemKey}\n class={classes}\n ref={rootRef}\n role={roles.item}\n {...(suggestion && { 'data-oj-suggestion': true })}\n {...(typeof itemKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...interactionProps}>\n <div\n id={useId()}\n style={cellStyles}\n class={cellClasses}\n aria-posinset={role === 'grid' ? undefined : itemIndex + 1}\n aria-setsize={role === 'grid' ? undefined : -1}\n onKeyDown={handleKeyDown}\n aria-colindex={role === 'grid' ? 1 : undefined}\n aria-selected={selectionMode !== 'none' ? isSelected : undefined}\n {...cellRoleAttributes}>\n <TabbableModeContext.Provider value={{ isTabbable }}>\n <FocusTrap isDisabled={!isTabbable} restoreFocusRef={false}>\n {children(context)}\n </FocusTrap>\n </TabbableModeContext.Provider>\n </div>\n </div>\n );\n}\n\n/**\n * Helper method to determine whether item is selectable\n * @returns true if item is selectable (show hover effect), false otherwise\n */\nconst isSelectable = (selectionMode: SelectionMode, isItemSelected: boolean) => {\n return selectionMode !== 'none' && (selectionMode === 'multiple' || !isItemSelected);\n};\n\nexport const MemoizeListViewItem = memo(ListViewItem, (prev: any, next: any) => {\n if (prev && next) {\n return (\n prev.children === next.children &&\n prev.isFocused === next.isFocused &&\n prev.isFocusRingVisible === next.isFocusRingVisible &&\n prev.isSelected === next.isSelected &&\n prev.isTabbable === next.isTabbable &&\n prev.isActive === next.isActive &&\n prev.suggestion === next.suggestion &&\n prev.isGridlineVisible === next.isGridlineVisible &&\n prev.isTopGridlineVisible === next.isTopGridlineVisible &&\n prev.padding === next.padding &&\n compareListItemContext(prev.context, next.context)\n );\n }\n return false;\n});\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { skeletonStyles } from './themes/ListStyles.css';\n\ntype Props = {\n /**\n * Allows to pass and access the properties from child elements\n **/\n children?: (index: number) => ComponentChildren;\n /**\n * Allows to specify number of skeletons to be rendered on initial load\n **/\n minimumCount?: number;\n};\n\n/**\n * Allows to specify the time delay for rendering the component\n **/\nconst timerValue = 50;\n\n/**\n * SkeletonContainer renders 'minimumCount' number of skeletons\n * of the variant specified from its child element - Skeleton's prop after\n * 'timerValue' ms delay\n **/\nexport function SkeletonContainer({ children, minimumCount = 1 }: Props) {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsVisible(true);\n }, timerValue);\n }, []);\n\n const containerClasses = classNames([skeletonStyles.container]);\n return isVisible && children ? (\n <div class={containerClasses} role=\"presentation\">\n {[...Array(minimumCount)].map((_element, index) => children(index))}\n </div>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { globalImages } from '#/ImageVars.css';\nimport { sparkleStyles } from './themes/ListStyles.css';\nimport { useTheme } from '#/hooks/UNSAFE_useTheme';\n\nconst SPARKLE_STYLE_CLASS = 'oj-collection-sparkle';\n\n/**\n * A sparkle component for smart suggestion indicator in ListView\n * @param sparkleHeight the height of sparkle\n */\nexport function Sparkle({ sparkleHeight }: { sparkleHeight: number }) {\n const { name } = useTheme();\n if (sparkleHeight <= 0) {\n return null;\n }\n\n const height = sparkleHeight + 'px';\n const sparkleClasses = classNames([sparkleStyles.base]);\n const containerClasses = classNames([\n sparkleStyles.container,\n SPARKLE_STYLE_CLASS,\n // TODO: this component should create separate theme definitions to only show the image in redwood\n name === 'redwood' && globalImages\n ]);\n\n return (\n <div key=\"sparkle\" class={containerClasses}>\n <div class={sparkleClasses} style={{ height }}></div>\n </div>\n );\n}\n","import type { RefObject } from 'preact';\nimport { useState, useEffect, useMemo } from 'preact/hooks';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { PLACEHOLDER_STYLE_CLASS } from '../PRIVATE_VirtualizedCollection';\nimport { Metadata } from '../UNSAFE_Collection';\n\nexport const usePromotedSection = <K extends string | number, D>(\n data: ListViewProps<K, D>['data'],\n promotedSection: ListViewProps<K, D>['promotedSection'],\n rootRef: RefObject<HTMLDivElement>\n) => {\n // tracking sparkle height\n const [sparkleHeight, setSparkleHeight] = useState<number>(0);\n\n const suggestions = useMemo(\n () => data && promotedSection && findSuggestions(data.data, promotedSection.count),\n [data, promotedSection]\n );\n\n useEffect(() => {\n // update sparkleHeight only when we have suggestions\n // avoid unnecessary iterating through elements\n if (suggestions) {\n const placeholder = rootRef.current?.querySelector(\n '.' + PLACEHOLDER_STYLE_CLASS\n ) as HTMLElement;\n let height = placeholder?.offsetHeight || 0;\n const suggestionItems = rootRef.current?.querySelectorAll('[data-oj-suggestion]');\n suggestionItems?.forEach((item) => (height += (item as HTMLElement).offsetHeight));\n setSparkleHeight(height);\n }\n }, [rootRef, suggestions]);\n\n return { sparkleHeight, suggestions };\n};\n\n/**\n * A helper function that finds the data with suggestions, and\n * returns the corresponding keys\n * @param dataState\n */\nconst findSuggestions = <K, D>(data: { data: D; metadata: Metadata<K> }[], count: number) => {\n if (count === 0) {\n return null;\n }\n\n const suggestionsData = data.slice(0, count);\n return suggestionsData.reduce((suggestions, value, index) => {\n const key = value.metadata.key;\n\n if (index === count - 1) {\n suggestions.set(key, 'end');\n } else {\n suggestions.set(key, true);\n }\n\n return suggestions;\n }, new Map<K, 'end' | true>());\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 { FlattenedDataState } from '../UNSAFE_Collection';\nimport { Keys } from '../utils/UNSAFE_keys';\n\n/**\n * Helper function to only include keys of leaf items.\n */\nexport const excludeGroup = <K, D>(data: FlattenedDataState<K, D>, keys: Keys<K>) => {\n if (!keys.all) {\n const groups = data.data\n .filter((dataMetadata) => {\n return !dataMetadata.metadata.isLeaf;\n })\n .map((dataMetadata) => {\n return dataMetadata.metadata.key;\n });\n const leafOnly = Array.from(keys.keys.values()).filter((key: K) => {\n return !groups.includes(key);\n });\n return { ...keys, keys: new Set(leafOnly) };\n }\n return keys;\n};\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nexport const scrollToVisible = (elem: Element, scroller: Element, offset: number) => {\n if (elem && scroller) {\n if ((elem as any).scrollIntoViewIfNeeded) {\n // for Safari, we'll need the non-standard scrollIntoViewIfNeeded\n (elem as any).scrollIntoViewIfNeeded();\n } else {\n elem.scrollIntoView({ block: 'nearest' });\n }\n if (offset > 0) {\n const scrollerBounds = scroller.getBoundingClientRect();\n const elemBounds = elem.getBoundingClientRect();\n const diff = scrollerBounds.top + offset - elemBounds.top;\n if (diff > 0) {\n scroller.scrollTop = scroller.scrollTop - diff;\n }\n }\n }\n};\n","import type { RefObject } from 'preact';\nimport { useEffect, useCallback, useRef, useMemo } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { Keys, addKeys } from '../utils/UNSAFE_keys';\nimport {\n DataState,\n Metadata,\n Range,\n SelectionDetail,\n CurrentKeyDetail\n} from '../UNSAFE_Collection';\nimport { getListViewRoles } from './ListRoles';\nimport {\n SelectionRangeDetail,\n useSelection,\n useDropDownSelection\n} from '../hooks/PRIVATE_useSelection';\nimport { useCurrentKey } from '../hooks/PRIVATE_useCurrentKey';\nimport { useCollectionFocusRing } from '../hooks/PRIVATE_useCollectionFocusRing';\nimport { useItemAction } from '../hooks/PRIVATE_useItemAction';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { getPrevNextKey, findElementByKey, keyExtractor } from '../utils/PRIVATE_collectionUtils';\nimport { ITEM_SELECTOR } from './ListItem';\nimport { scrollToVisible } from './ListUtils';\n\nexport const useSelectionAndNavigation = <K extends string | number, D>(\n currentKey: K | undefined,\n selectedKeys: Keys<K>,\n selectionMode: ListViewProps<K, D>['selectionMode'] = 'none',\n onCurrentKeyChange: ((detail: CurrentKeyDetail<K>) => void) | undefined,\n onSelectionChange: ListViewProps<K, D>['onSelectionChange'],\n onItemAction: ListViewProps<K, D>['onItemAction'],\n data: ListViewProps<K, D>['data'],\n viewportConfig: ListViewProps<K, D>['viewportConfig'],\n role: ListViewProps<K, D>['role'] = 'grid',\n scrollToVisibleOffset: ListViewProps<K, D>['scrollToVisibleOffset'],\n rootRef: RefObject<HTMLDivElement>,\n pendingSelectionCallback: (detail: SelectionRangeDetail<K>, value: Range) => void,\n isCurrentItemOverridden: boolean,\n isEmbedded: boolean\n) => {\n const listRoles = useMemo(() => getListViewRoles(role), [role]);\n\n // tracking the anchor key which is used for shift+click selection\n const anchorKey = useRef<K | undefined>();\n\n const { currentKeyProps } = useCurrentKey(\n (element) => keyExtractor(element, ITEM_SELECTOR),\n selectionMode !== 'multiple' || isEmbedded,\n getPrevNextKey(rootRef.current, currentKey, true, ITEM_SELECTOR),\n getPrevNextKey(rootRef.current, currentKey, false, ITEM_SELECTOR),\n undefined,\n undefined,\n currentKey,\n onCurrentKeyChange\n );\n\n const [showFocusRing, focusRingProps] = useCollectionFocusRing(rootRef, ['ArrowUp', 'ArrowDown']);\n\n useEffect(() => {\n if (currentKey != null && rootRef.current) {\n const elem = findElementByKey(rootRef.current, currentKey, ITEM_SELECTOR);\n if (elem) {\n const activeDescendant = rootRef.current.getAttribute('aria-activedescendant');\n const cell = elem.querySelector(`[role=${listRoles.cell}]`);\n if (cell && activeDescendant !== cell.id) {\n // update aria-activedescendant for screenreader\n rootRef.current.setAttribute('aria-activedescendant', cell.id);\n\n // scroll the current item into view only when the current item is updated internally and listview has focus\n // or when the collection gesture is 'embedded' if the current item is updated by the app\n const hasFocus = rootRef.current?.contains(document.activeElement as HTMLElement);\n if ((!isCurrentItemOverridden && hasFocus) || isEmbedded) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n // make sure item is visible\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n }\n }\n }\n // listen to data because the current item would re-render when the virtualizer\n // is fetching data or updating the data, i.e. the id of current item would be updated,\n // so the currentKey itself couldn't guarantee the root has latest aria-activedescendant\n }, [\n currentKey,\n data,\n listRoles.cell,\n viewportConfig,\n scrollToVisibleOffset,\n rootRef,\n isCurrentItemOverridden,\n isEmbedded\n ]);\n\n const handleSelectionChange = useCallback(\n (detail: SelectionDetail<K>) => {\n if (onSelectionChange) {\n if (detail.value.all === false && detail.value.keys.size > 0) {\n // during regular selection, the last key selected by a user gesture is the anchor key\n anchorKey.current = Array.from(detail.value.keys.values()).pop();\n }\n onSelectionChange(detail);\n }\n },\n [anchorKey, onSelectionChange]\n );\n\n const handleSelectionRangeChange = useCallback(\n (detail: SelectionRangeDetail<K>) => {\n if (data && onSelectionChange) {\n const value = handleSelectionRange(detail, data);\n if (Array.isArray(value)) {\n if (detail.eventType === 'shiftSpace') {\n // during range selection by shift+space, the first key selected by a user gesture is the anchor key\n anchorKey.current = detail.value.start;\n } else {\n // during range selection by shift+click/arrow keys, the last key selected by a user gesture is the anchor key\n anchorKey.current = detail.value.end;\n }\n if (!isEmbedded) {\n onSelectionChange({ value: { all: false, keys: new Set(value) }, target: null });\n } else {\n const keys = addKeys(selectedKeys, value);\n onSelectionChange({ value: keys, target: null });\n }\n } else {\n pendingSelectionCallback(detail, value);\n }\n }\n },\n [data, isEmbedded, selectedKeys, onSelectionChange, pendingSelectionCallback]\n );\n\n const { selectionProps } = useSelection(\n (element: HTMLElement) => {\n if (element === rootRef.current) {\n return currentKey === undefined ? null : currentKey;\n }\n return keyExtractor(element, ITEM_SELECTOR) as K;\n },\n selectedKeys,\n isEmbedded ? 'none' : selectionMode,\n false,\n 'replace',\n handleSelectionChange,\n anchorKey.current,\n currentKey,\n (currentKey: K | undefined, isPrev: boolean) =>\n getPrevNextKey(rootRef.current, currentKey, isPrev, ITEM_SELECTOR),\n undefined,\n (key: K) => {\n if (rootRef.current) {\n const elem = findElementByKey(rootRef.current, key, ITEM_SELECTOR);\n if (elem) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n }\n },\n handleSelectionRangeChange\n );\n\n const { dropDownSelectionProps } = useDropDownSelection(\n (element: HTMLElement) => {\n if (element === rootRef.current) {\n return currentKey === undefined ? null : currentKey;\n }\n return keyExtractor(element, ITEM_SELECTOR) as K;\n },\n selectedKeys,\n isEmbedded ? selectionMode : 'none',\n false,\n (key: K) => {\n if (data) {\n return data.data.findIndex(\n (value: { data: D; metadata: Metadata<K> }) => value.metadata.key === key\n );\n }\n return -1;\n },\n (startIndex: number, endIndex: number) => {\n if (data) {\n const keys = data.data.map(\n (value: { data: D; metadata: Metadata<K> }) => value.metadata.key\n );\n return keys.slice(startIndex, endIndex);\n }\n return [];\n },\n (currentKey: K | undefined, isPrev: boolean) =>\n getPrevNextKey(rootRef.current, currentKey, isPrev, ITEM_SELECTOR),\n currentKey,\n handleSelectionChange,\n handleSelectionRangeChange\n );\n\n const itemActionProps = useItemAction(currentKey, data, onItemAction, ITEM_SELECTOR, isEmbedded);\n\n return {\n eventProps: mergeProps(\n currentKeyProps,\n focusRingProps,\n selectionProps,\n itemActionProps,\n dropDownSelectionProps\n ),\n showFocusRing,\n handleSelectionChange\n };\n};\n\nexport const handleSelectionRange = <K, D>(\n detail: SelectionRangeDetail<K>,\n dataState: DataState<K, D>\n) => {\n const keys = dataState.data.map((value: { data: D; metadata: Metadata<K> }) => {\n return value.metadata.key;\n });\n const startIndex = keys.indexOf(detail.value.start);\n const endIndex = keys.indexOf(detail.value.end);\n const minIndex = Math.min(startIndex, endIndex);\n const maxIndex = Math.max(startIndex, endIndex);\n if (minIndex === -1) {\n // return a range to fetch so we can find all the keys, maxIndex should not be -1\n return { offset: 0, count: dataState.totalSize };\n } else {\n // range of keys are in the current viewport, return them\n return keys.slice(minIndex, maxIndex + 1);\n }\n};\n","import type { RefObject } from 'preact';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { Props as ListViewProps } from '../UNSAFE_ListView';\nimport { CurrentKeyDetail } from '../UNSAFE_Collection';\nimport { getFirstVisibleKey, keyExtractor } from '../utils/PRIVATE_collectionUtils';\nimport { isKeyDefined } from '../utils/UNSAFE_keys';\nimport { ITEM_SELECTOR } from './ListItem';\nimport { useTabbableModeSet } from '../hooks/PRIVATE_useTabbableModeSet';\nimport { findElementByKey } from '../utils/PRIVATE_collectionUtils';\nimport { scrollToVisible } from './ListUtils';\n\nexport const useFocusTabbableMode = <K extends string | number, D>(\n currentKey: K | undefined,\n onCurrentKeyChange: ((detail: CurrentKeyDetail<K>) => void) | undefined,\n allowTabbableMode: ListViewProps<K, D>['allowTabbableMode'],\n rootRef: RefObject<HTMLDivElement>,\n viewportConfig: ListViewProps<K, D>['viewportConfig'],\n scrollToVisibleOffset: ListViewProps<K, D>['scrollToVisibleOffset']\n) => {\n const pendingCurrentKey = useRef<K>();\n\n // ensure current item scroll into view when listview regains focus\n // unless pendingCurrentKey gets updated to something different than currentKey\n const focusAndScrollIntoView = useRef(true);\n\n const [isCurrentTabbableKey, tabbableModeProps] = useTabbableModeSet(\n rootRef,\n (element) => {\n // we don't want List to go into Tabbable mode when user clicks on expander\n return isExpander(element) ? null : (keyExtractor(element, ITEM_SELECTOR) as K);\n },\n currentKey,\n onCurrentKeyChange\n );\n\n const handleInitialFocus = useCallback(() => {\n if (\n rootRef.current &&\n onCurrentKeyChange &&\n (!allowTabbableMode || isCurrentTabbableKey(undefined))\n ) {\n const firstKey =\n pendingCurrentKey.current || (getFirstVisibleKey(rootRef.current, ITEM_SELECTOR) as K);\n if (isKeyDefined(firstKey)) {\n onCurrentKeyChange({ value: firstKey });\n }\n }\n }, [rootRef, onCurrentKeyChange, allowTabbableMode, isCurrentTabbableKey]);\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n if (isExpander(event.target as HTMLElement)) {\n rootRef.current?.focus();\n const key = keyExtractor(event.target as HTMLElement, ITEM_SELECTOR);\n if (onCurrentKeyChange && isKeyDefined(key)) {\n onCurrentKeyChange({ value: key as K });\n }\n return;\n }\n if (!isKeyDefined(currentKey)) {\n onCurrentKeyChange && handleInitialFocus();\n } else if (rootRef.current) {\n const elem = findElementByKey(rootRef.current, currentKey as K, ITEM_SELECTOR);\n if (elem) {\n // if currentKey is defined, make sure scroll the current item into view only when listview regains focus\n // unless pendingCurrentKey gets updated to something different than currentKey\n if (focusAndScrollIntoView.current) {\n const scroller = viewportConfig?.scroller();\n const offset = scrollToVisibleOffset ? scrollToVisibleOffset(rootRef.current) : 0;\n scrollToVisible(elem, scroller != null ? scroller : rootRef.current, offset);\n }\n focusAndScrollIntoView.current = true;\n } else {\n // if elem is not found, meaning the currentKey is not valid, we should pick the first item as current item\n onCurrentKeyChange && handleInitialFocus();\n }\n }\n },\n [\n currentKey,\n handleInitialFocus,\n onCurrentKeyChange,\n scrollToVisibleOffset,\n viewportConfig,\n rootRef\n ]\n );\n\n /**\n * Need to track pointer down element to set currentItem when initial focus happens\n */\n const handlePointerDown = useCallback(\n (event: PointerEvent) => {\n const key = keyExtractor(event.target as HTMLElement, ITEM_SELECTOR);\n if (isKeyDefined(key)) {\n pendingCurrentKey.current = key as K;\n if (key !== currentKey) {\n focusAndScrollIntoView.current = false;\n }\n }\n },\n [currentKey]\n );\n\n return {\n eventProps: mergeProps(allowTabbableMode ? tabbableModeProps : {}, {\n onFocus: handleFocus,\n onPointerDown: handlePointerDown\n }),\n isCurrentTabbableKey\n };\n};\n\nconst isExpander = (elem: HTMLElement) => {\n if (elem.parentElement && elem.parentElement.classList.contains('oj-listview-expander')) {\n return true;\n }\n return false;\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type { RefObject } from 'preact';\nimport { useRef, useCallback, useState, useImperativeHandle, useEffect } from 'preact/hooks';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { containsKey, Keys, isKeyDefined, addKeys } from '../utils/UNSAFE_keys';\nimport { DataState, ItemContext, ListItemRendererContext, Range } from '../UNSAFE_Collection';\nimport { LoadMoreCollection, LOADMORE_STYLE_CLASS } from '../PRIVATE_LoadMoreCollection';\nimport { VirtualizedCollection } from '../PRIVATE_VirtualizedCollection';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { ListViewItem, ITEM_SELECTOR, MemoizeListViewItem } from './ListItem';\n\nimport { SelectionRangeDetail } from '../hooks/PRIVATE_useSelection';\nimport { SkeletonContainer } from './SkeletonContainer';\nimport { Skeleton } from '../UNSAFE_Skeleton';\nimport { Flex } from '../UNSAFE_Flex';\nimport { Selector } from '../UNSAFE_Selector';\nimport { Props } from '../UNSAFE_ListView';\nimport { Sparkle } from './Sparkle';\nimport { listStyles } from './themes/ListStyles.css';\nimport { useTestId } from '../hooks/UNSAFE_useTestId';\nimport { useCollectionInteractionContext } from '../hooks/UNSAFE_useCollectionInteractionContext';\nimport { usePromotedSection } from './usePromotedSection';\nimport { useSelectionAndNavigation, handleSelectionRange } from './useSelectionAndNavigation';\nimport { useFocusTabbableMode } from './useFocusTabbableMode';\nimport { useCurrentItemOverride } from './useCurrentItemOverride';\nimport { Inset } from '../UNSAFE_Inset';\n// TODO: add this import due to issue JET-67485, need to update once Stable is introduced\nimport './themes/redwood/ListBaseTheme.css';\n\n/**\n * Component that renders items as a flat list.\n * In order to maximize performance, only items that are visible in the viewport are rendered.\n */\nexport function List<K extends string | number, D>({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n allowTabbableMode = true,\n children,\n data,\n gridlines,\n loadingIndicator = defaultLoadingIndicator,\n currentItemOverride,\n onPersistCurrentItem,\n onLoadRange,\n onSelectionChange,\n onItemAction,\n rangeExtractor,\n role = 'grid',\n selectedKeys = emptyKeys as Keys<K>,\n selectionMode = 'none',\n viewportConfig,\n currentItemVariant,\n promotedSection,\n isVirtualized = false,\n customItemRenderer,\n scrollToVisibleOffset,\n testId,\n scrollerRef,\n reorderProps,\n contextMenuTriggerProps,\n itemPadding,\n ...props\n}: Props<K, D>) {\n const rootRef = useRef<HTMLDivElement>(null);\n const isFetching = useRef(false);\n\n // tracking pending selection key that is not in current data\n const pendingSelection = useRef<{ detail: SelectionRangeDetail<K>; range: Range }>();\n\n const [active, setActive] = useState<boolean>(false);\n\n const showGridline = (index: number) => {\n // show bottom gridlines for each item, and for the last item if specified\n return (\n gridlines?.item === 'visible' &&\n (index + 1 !== data?.totalSize || gridlines?.bottom === 'visible')\n );\n };\n\n const showGridlineTop = () => {\n // show the top gridline for the first item\n return gridlines?.item === 'visible' && gridlines?.top === 'visible';\n };\n\n const ariaMultiSelectable = selectionMode === 'none' ? undefined : selectionMode === 'multiple';\n const ariaRowCount =\n data === null ? undefined : data.sizePrecision === 'exact' ? data.totalSize : -1;\n\n const classes = classNames([listStyles.base]);\n\n const isEmbedded = useCollectionInteractionContext() === 'embedded';\n const itemVariant =\n currentItemVariant !== undefined ? currentItemVariant : isEmbedded ? 'highlight' : 'none';\n\n const pendingSelectionCallback = useCallback(\n (detail: SelectionRangeDetail<K>, value: Range) => {\n if (data) {\n pendingSelection.current = {\n detail: detail,\n range: { offset: data.offset, count: data.data.length }\n };\n onLoadRange(value);\n }\n },\n [data, onLoadRange]\n );\n\n /*****************************************************************************************/\n /************************************* Load More *****************************************/\n /*****************************************************************************************/\n\n const lastRange = useRef({ offset: 0, count: 0 });\n const handleLoadRange = useCallback(\n (newRange: { offset: number; count: number }) => {\n // check isFetching to avoid multiple load more at the same time (details in JET-68994)\n if (\n !isFetching.current ||\n lastRange.current.offset !== newRange.offset ||\n lastRange.current.count !== newRange.count\n ) {\n isFetching.current = true;\n lastRange.current = newRange;\n onLoadRange(newRange);\n }\n },\n [isFetching, onLoadRange]\n );\n\n useEffect(() => {\n isFetching.current = false;\n // listen to data because when one of them gets updated, the fetching is done\n }, [data]);\n\n const { currentKey, onCurrentKeyChange, isCurrentItemOverridden } = useCurrentItemOverride(\n currentItemOverride,\n onPersistCurrentItem\n );\n\n const { eventProps, showFocusRing, handleSelectionChange } = useSelectionAndNavigation(\n currentKey,\n selectedKeys,\n selectionMode,\n onCurrentKeyChange,\n onSelectionChange,\n onItemAction,\n data,\n viewportConfig,\n role,\n scrollToVisibleOffset,\n rootRef,\n pendingSelectionCallback,\n isCurrentItemOverridden,\n isEmbedded\n );\n\n const { eventProps: focusTabbableProps, isCurrentTabbableKey } = useFocusTabbableMode(\n currentKey,\n onCurrentKeyChange,\n allowTabbableMode,\n rootRef,\n viewportConfig,\n scrollToVisibleOffset\n );\n\n if (data && pendingSelection.current !== undefined && onSelectionChange) {\n const keys = handleSelectionRange(pendingSelection.current.detail, data);\n if (Array.isArray(keys)) {\n if (!isEmbedded) {\n onSelectionChange({ value: { all: false, keys: new Set(keys) }, target: null });\n } else {\n const value = addKeys(selectedKeys, keys);\n onSelectionChange({ value, target: null });\n }\n }\n const range = pendingSelection.current\n ? pendingSelection.current.range\n : { offset: data.offset, count: data.data.length };\n data = adjustDataState(data, range);\n pendingSelection.current = undefined;\n onLoadRange(range);\n }\n\n const { sparkleHeight, suggestions } = usePromotedSection(data, promotedSection, rootRef);\n\n // TODO: check suggestions before Sparkle would cause a scrolling issue\n const sparkleIndicator = <Sparkle sparkleHeight={sparkleHeight}></Sparkle>;\n\n // Collection generic is of this type\n type DataStateData = DataState<K, D>['data'][number];\n\n // returns an ListItemContext based on ItemContext (added metadata and selector)\n // note the type for ItemContext, this is the context coming from Collection\n const getItemContext = useCallback(\n (context: ItemContext<DataStateData>) => {\n const dataStateData = context.data;\n const selectorRenderer =\n selectionMode === 'multiple'\n ? () => (\n <Selector\n onChange={handleSelectionChange}\n rowKey={dataStateData.metadata.key}\n selectedKeys={selectedKeys}></Selector>\n )\n : undefined;\n\n return {\n index: context.index,\n data: dataStateData.data,\n metadata: dataStateData.metadata,\n selector: selectorRenderer\n };\n },\n [selectionMode, selectedKeys, handleSelectionChange]\n );\n\n const ItemComponent = isVirtualized ? ListViewItem : MemoizeListViewItem;\n\n const childrenComponent = (context: ItemContext<DataStateData>) => {\n const listItemContext = getItemContext(context);\n const suggestion = suggestions?.get(listItemContext.metadata.key);\n const isTabbable = allowTabbableMode && isCurrentTabbableKey(listItemContext.metadata.key);\n const isFocused = currentKey === listItemContext.metadata.key && !isTabbable;\n const isActive = isFocused && active;\n const isSelected = containsKey(selectedKeys, listItemContext.metadata.key);\n const isFocusRingVisible = isFocused && showFocusRing;\n const listItemFunc = (ctx: ListItemRendererContext<K, D>, otherProps?: any) => (\n <ItemComponent\n key={listItemContext.metadata.key}\n context={ctx}\n isFocused={isFocused}\n isFocusRingVisible={isFocusRingVisible}\n isActive={isActive}\n isGridlineVisible={showGridline(listItemContext.index)}\n isSelected={isSelected}\n isTabbable={allowTabbableMode && isCurrentTabbableKey(listItemContext.metadata.key)}\n role={role}\n selectionMode={selectionMode}\n currentItemVariant={itemVariant}\n padding={itemPadding}\n {...(suggestion && { suggestion })}\n {...(listItemContext.index === 0 && { isTopGridlineVisible: showGridlineTop() })}\n {...otherProps}>\n {children}\n </ItemComponent>\n );\n\n // if customItemRenderer is specified (ExpandableList and GroupedList)\n // create a custom context with additional info including a function\n // that helps create the default item component\n if (customItemRenderer) {\n const customRendererContext = {\n listItemContext,\n isFocused,\n isFocusRingVisible,\n isSelected,\n isTabbable,\n isActive,\n defaultListItem: listItemFunc\n };\n return customItemRenderer(customRendererContext);\n }\n return listItemFunc(listItemContext);\n };\n\n viewportConfig = getViewportConfig(rootRef, viewportConfig);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === ' ' && isKeyDefined(currentKey) && selectionMode !== 'none') {\n setActive(true);\n }\n },\n [currentKey, selectionMode, setActive]\n );\n\n const handleKeyUp = useCallback(() => {\n setActive(false);\n }, [setActive]);\n\n useImperativeHandle(scrollerRef!, () => rootRef.current);\n\n // if data is not specified, listview should show loading indicator\n // todo: replace placeholder with actual SkeletonContainer component (Ash is working on)\n const testIdProps = useTestId(testId);\n return (\n <div\n {...mergeProps(\n eventProps,\n focusTabbableProps,\n contextMenuTriggerProps || {},\n reorderProps || {},\n {\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp\n },\n props\n )}\n {...testIdProps}\n role={role}\n aria-rowcount={role === 'grid' ? ariaRowCount : undefined}\n aria-colcount={role === 'grid' ? 1 : undefined}\n ref={rootRef}\n class={classes}\n tabIndex={0}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-multiselectable={ariaMultiSelectable}>\n {data == null ? (\n loadingIndicator\n ) : isVirtualized ? (\n <VirtualizedCollection\n data={data}\n itemSelector={ITEM_SELECTOR}\n loadMoreIndicator={defaultLoadMoreIndicator}\n onLoadRange={onLoadRange}\n rangeExtractor={rangeExtractor}\n suggestions={sparkleIndicator}\n viewportConfig={viewportConfig}>\n {childrenComponent}\n </VirtualizedCollection>\n ) : (\n <LoadMoreCollection\n data={data.data}\n loadMoreIndicator={defaultLoadMoreIndicator}\n hasMore={data.sizePrecision === 'atLeast' && data.data.length <= data.totalSize}\n onLoadMore={() => {\n data && handleLoadRange({ offset: 0, count: data.data.length + 25 });\n }}\n suggestions={sparkleIndicator}\n viewportConfig={viewportConfig}>\n {childrenComponent}\n </LoadMoreCollection>\n )}\n </div>\n );\n}\n\nconst getViewportConfig = (rootRef: RefObject<HTMLElement>, config?: ViewportConfig) => {\n return (\n config ?? {\n scroller: () => {\n return rootRef.current;\n }\n }\n );\n};\n\nconst emptyKeys = { all: false, keys: new Set() };\n\nconst defaultLoadingIndicator = (\n <SkeletonContainer minimumCount={25}>\n {() => {\n return (\n <Inset variant=\"listview\">\n <Flex height=\"6x\" align=\"center\">\n <Skeleton height=\"4x\" />\n </Flex>\n </Inset>\n );\n }}\n </SkeletonContainer>\n);\n\nconst defaultLoadMoreIndicator = (\n <div class={LOADMORE_STYLE_CLASS}>\n <SkeletonContainer minimumCount={3}>\n {() => {\n return (\n <Inset variant=\"listview\">\n <Flex height=\"6x\" align=\"center\">\n <Skeleton height=\"4x\" />\n </Flex>\n </Inset>\n );\n }}\n </SkeletonContainer>\n </div>\n);\n\n/**\n * Adjust the DataState as needed if it contains more than needed for the specified range\n */\nconst adjustDataState = <K, D>(dataState: DataState<K, D>, range: Range | null) => {\n if (range) {\n // prevent range offset from being larger than the data state\n const safeRangeOffset = Math.min(range.offset, dataState.offset + dataState.totalSize);\n const diff = safeRangeOffset - dataState.offset;\n if (diff > 0) {\n dataState = {\n offset: safeRangeOffset,\n data: dataState.data.slice(diff, diff + range.count),\n totalSize: dataState.totalSize,\n sizePrecision: dataState.sizePrecision\n };\n }\n }\n return dataState;\n};\n","import { useRef, useMemo, useState, useEffect } from 'preact/hooks';\nimport { Props as ListProps } from '../UNSAFE_ListView';\nimport { CurrentKeyDetail, Item } from '../UNSAFE_Collection';\nimport { useReorderableContext } from '../hooks/PRIVATE_useReorderable/useReorderableContext';\n\n/**\n * This hook converts the new API (i.e. currentItemOverride and onPersistCurrentItem) back to\n * the old API (i.e. currentKey and onCurrentKeyChange), keeps the internal current item, and\n * also triggers an update when a new currentItemOverride is passed by the app\n *\n * @param currentItemOverride\n * @param onPersistCurrentItem\n */\nexport const useCurrentItemOverride = <K extends string | number, D>(\n currentItemOverride: ListProps<K, D>['currentItemOverride'],\n onPersistCurrentItem: ListProps<K, D>['onPersistCurrentItem']\n) => {\n // the internal state of current item\n const [currentItem, setCurrentItem] = useState<Item<K>>();\n // track the currentItemOverride props\n const currentItemOverrideRef = useRef<Item<K>>();\n // whether the current item is overridden by the app\n const isCurrentItemOverridden = useRef(false);\n\n // if reorder is enabled, need to update the context here when current item is changed\n const reorderContext = useReorderableContext();\n\n // intercept onPersistCurrentItem calls to ensure internal state is updated appropriately\n const handleCurrentItemChanged = useMemo(() => {\n return (detail: CurrentKeyDetail<K>) => {\n const rowKey = detail.value;\n setCurrentItem({ rowKey });\n onPersistCurrentItem?.(detail);\n if (reorderContext?.currentItemKey != null) {\n reorderContext.currentItemKey.current = rowKey;\n }\n };\n }, [onPersistCurrentItem, reorderContext?.currentItemKey]);\n\n // ensure any new currentItemOverride settings are applied only on that render\n // (same as how Table handles the changes)\n if (currentItemOverrideRef.current !== currentItemOverride) {\n currentItemOverrideRef.current = currentItemOverride;\n if (currentItem?.rowKey !== currentItemOverride?.rowKey) {\n isCurrentItemOverridden.current = true;\n handleCurrentItemChanged({ value: currentItemOverride?.rowKey as K });\n }\n }\n\n useEffect(() => {\n isCurrentItemOverridden.current = false;\n });\n\n return {\n currentKey: currentItem?.rowKey,\n onCurrentKeyChange: handleCurrentItemChanged,\n isCurrentItemOverridden: isCurrentItemOverridden.current\n };\n};\n"],"names":["getListViewRoles","ariaRole","list","item","cell","ITEM_SELECTOR","ListViewItem","children","context","itemDepth","isFocused","isFocusRingVisible","isActive","isGridlineVisible","isSelected","isTopGridlineVisible","isTabbable","role","selectionMode","suggestion","currentItemVariant","padding","rootRef","useRef","roles","useMemo","itemKey","metadata","key","itemIndex","index","cellRoleAttributes","interactionProps","applyActiveStyle","applyHoverStyle","applyPseudoHoverStyle","useInteractionStyle","variantClasses","listItemMultiVariantStyles","selectable","isSelectable","selected","selectedSingle","needsEventsHover","pseudoHover","active","focusHighlight","focusRingVisible","gridlineTop","gridlineBottom","paddingClasses","push","paddingStyles","allPadding","top","topItemPadding","bottom","bottomItemPadding","start","startItemPadding","end","endItemPadding","classes","classNames","styleInterpolations","mergeInterpolations","Object","values","flexitemInterpolations","class","cls","cellStyles","flex","alignSelf","cellClasses","listItemStyles","checkboxContainer","_jsx","jsx","undefined","ref","id","useId","style","onKeyDown","event","stopPropagation","TabbableModeContext","Provider","value","FocusTrap","isDisabled","restoreFocusRef","isItemSelected","MemoizeListViewItem","memo","prev","next","compareListItemContext","SkeletonContainer","minimumCount","isVisible","setIsVisible","useState","useEffect","setTimeout","containerClasses","skeletonStyles","container","Array","map","_element","SPARKLE_STYLE_CLASS","Sparkle","sparkleHeight","name","useTheme","height","sparkleClasses","sparkleStyles","base","globalImages","findSuggestions","data","count","slice","reduce","suggestions","set","Map","scrollToVisible","elem","scroller","offset","scrollIntoViewIfNeeded","scrollIntoView","block","scrollerBounds","getBoundingClientRect","elemBounds","diff","scrollTop","handleSelectionRange","detail","dataState","keys","startIndex","indexOf","endIndex","minIndex","Math","min","maxIndex","max","totalSize","isExpander","parentElement","classList","contains","getViewportConfig","config","current","emptyKeys","all","Set","defaultLoadingIndicator","Inset","variant","Flex","align","Skeleton","defaultLoadMoreIndicator","LOADMORE_STYLE_CLASS","adjustDataState","range","safeRangeOffset","sizePrecision","ariaLabel","ariaLabelledBy","allowTabbableMode","gridlines","loadingIndicator","currentItemOverride","onPersistCurrentItem","onLoadRange","onSelectionChange","onItemAction","rangeExtractor","selectedKeys","viewportConfig","promotedSection","isVirtualized","customItemRenderer","scrollToVisibleOffset","testId","scrollerRef","reorderProps","contextMenuTriggerProps","itemPadding","props","isFetching","pendingSelection","setActive","ariaMultiSelectable","ariaRowCount","listStyles","isEmbedded","useCollectionInteractionContext","itemVariant","pendingSelectionCallback","useCallback","length","lastRange","handleLoadRange","newRange","currentKey","onCurrentKeyChange","isCurrentItemOverridden","currentItem","setCurrentItem","currentItemOverrideRef","reorderContext","useReorderableContext","handleCurrentItemChanged","rowKey","currentItemKey","useCurrentItemOverride","eventProps","showFocusRing","handleSelectionChange","listRoles","anchorKey","currentKeyProps","useCurrentKey","element","keyExtractor","getPrevNextKey","focusRingProps","useCollectionFocusRing","findElementByKey","activeDescendant","getAttribute","querySelector","setAttribute","hasFocus","document","activeElement","size","from","pop","handleSelectionRangeChange","isArray","eventType","addKeys","target","selectionProps","useSelection","isPrev","dropDownSelectionProps","useDropDownSelection","findIndex","itemActionProps","useItemAction","mergeProps","useSelectionAndNavigation","focusTabbableProps","isCurrentTabbableKey","pendingCurrentKey","focusAndScrollIntoView","tabbableModeProps","useTabbableModeSet","handleInitialFocus","firstKey","getFirstVisibleKey","isKeyDefined","handleFocus","focus","handlePointerDown","onFocus","onPointerDown","useFocusTabbableMode","setSparkleHeight","placeholder","PLACEHOLDER_STYLE_CLASS","offsetHeight","suggestionItems","querySelectorAll","forEach","usePromotedSection","sparkleIndicator","getItemContext","dataStateData","selectorRenderer","Selector","onChange","selector","ItemComponent","childrenComponent","listItemContext","get","containsKey","listItemFunc","ctx","otherProps","defaultListItem","handleKeyDown","handleKeyUp","useImperativeHandle","testIdProps","useTestId","onKeyUp","tabIndex","VirtualizedCollection","itemSelector","loadMoreIndicator","LoadMoreCollection","hasMore","onLoadMore","groups","filter","dataMetadata","isLeaf","leafOnly","includes"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- define(['exports', 'preact/jsx-runtime', 'preact/compat', 'preact/hooks', './LayerHost-e95c5f30', 'css!./DragAndDropStyles.styles.css', 'css!./ReorderableItemStyles.styles.css', './ReorderableContext-6d10a1b7', './HiddenAccessible-037ef42d', './collectionUtils-17f5cc64', './useReorderableItem-4c4779f7', './classNames-08d99695', './UNSAFE_ListView/themes/ListViewStyles.css', './keys-4755c121', './mergeProps-bcfa6a92', './List-0b764e84', './Menu-5d447084', './MenuItem-87cd59b8', 'preact', './logger-0f873e29', 'css!./TooltipContentStyles.styles.css', 'module', './hooks/UNSAFE_useTooltip/themes/redwood/TooltipContentVariants.css', './tooltipUtils-69ce0a2d', 'css!./IconStyle.styles.css', './SelectMenuGroupContext-67f24a8f', './UNSAFE_Separator/themes/SeparatorStyles.css', 'css!./MenuSeparatorStyles.styles.css', 'module', './UNSAFE_Menu/themes/redwood/MenuSeparatorVariants.css', './useItemAction-821d1b6e', './useContextMenuGesture-d55fbea5'], (function(e,r,t,o,n,s,l,i,c,a,u,d,f,y,m,g,p,x,C,h,I,R,S,b,v,M,E,P,T,O,K,k){"use strict";const w=(e,r)=>{if(null!=e){const t=e.querySelectorAll("[role='row']");if(t.length>r)return a.getKey(t[r])}return null};function L(e,r){const t=Math.abs(null==r?e.scrollTop:r),o={y:t,key:void 0,offsetY:void 0};let n=0;const s=e.querySelectorAll("[role='row']");if(s.length>0&&0===t)return o.key=w(e,0),o.offsetY=0,o;for(let r=0;r<s.length;r++){const l=s[r].getBoundingClientRect().height;if(n+=l,t<n){o.key=w(e,r),o.offsetY=l+t-n;break}}return o}function D(e,r){const t=function(e,r){if(null!=r){let t,o=!1;if(null!=r.key?(o=!0,t=r.key):null!=r.offsetY&&null==r.y&&(o=!0,t=L(e).key),o){if(null!=t){let o=0;const n=e.querySelectorAll("[role ='row']");for(let e=0;e<n.length;e++){if(t===a.getKey(n[e]))return o+(null!=r.offsetY?r.offsetY:0);o+=n[e].getBoundingClientRect().height}}}else if(null!=r.y)return r.y}return}(e,r);e.scrollTop=null!=t?t:0}const j=t.memo((function({children:e,dragKey:t,setDragKey:n,onReorder:s,rootRef:l,itemKey:i}){const c=o.useRef(null),m={itemOverlayFront:f.styles.reorderableItemOverlayFront,itemOverlayRear:f.styles.reorderableItemOverlayRear,itemDragger:f.styles.reorderableItemDragger},g=o.useCallback((e=>{e.dataTransfer?.setData("text/listview-items-key",JSON.stringify(i))}),[i]),{rootProps:p,isDragged:x,overlayZoneBeforeProps:C,overlayZoneAfterProps:h}=u.useReorderableItem({isDisabled:!s,dragKey:t,setDragKey:n,onReorder:s,rootRef:l,ref:c,getItem:()=>c?.current?.closest(a.ITEM_SELECTOR),setTransferData:g,itemStyles:m,itemSelector:a.ITEM_SELECTOR,isVertical:!0}),I=d.classNames([p?.class,f.styles.reorderableItemDnd]);return r.jsxs("div",{...p,class:I,children:[e,!x&&y.isKeyDefined(t)&&r.jsxs(r.Fragment,{children:[r.jsx("div",{...C}),r.jsx("div",{...h})]})]})}),((e,r)=>!(!e||!r)&&(e?.children===r?.children&&e?.dragKey===r?.dragKey)));function A({contextMenuConfig:e,contextMenuContext:t,...o}){const n=e.accessibleLabel;return r.jsx(r.Fragment,{children:r.jsx(p.Menu,{...o,...n&&{"aria-label":n},children:o.isOpen&&e.itemsRenderer(t)})})}const F={mouse:{initialFocus:"menu",placement:"bottom-start",offsetValue:0},keyboard:{initialFocus:"firstItem",placement:"bottom-start",offsetValue:0},touch:{initialFocus:"menu",placement:"end",offsetValue:40}},_={isOpen:!1,initialFocus:"menu",placement:"bottom-start",offsetValue:0,anchorRef:{current:null}},V=t.forwardRef(((e,t)=>{const{contextMenuConfig:n}=e,s=o.useRef(),l=o.useRef(null),{currentItemOverride:d,updateCurrentItemOverride:f}=(e=>{const r=o.useRef(),t=o.useRef();t.current!==e&&(t.current=e,r.current=e);const n=o.useCallback((e=>{r.current={rowKey:e}}),[]);return{currentItemOverride:r.current,updateCurrentItemOverride:n}})(e.currentItemOverride),y=e.data?e.data.map((r=>({data:r,metadata:{key:e.getRowKey(r)}}))):null,p=e.onLoadMore?e.onLoadMore:()=>{},x=y?{offset:0,data:y,sizePrecision:e.hasMore?"atLeast":"exact",totalSize:y.length}:null;o.useImperativeHandle(t,(()=>({getScrollPosition:()=>l.current?L(l.current):{y:0},focus:()=>{l.current&&l.current.focus()}}))),o.useLayoutEffect((()=>{l.current&&s.current!==e.scrollPositionOverride&&(D(l.current,e.scrollPositionOverride),s.current=e.scrollPositionOverride)}),[e.scrollPositionOverride]);const C=null!=e.onReorder,{reorderProps:h,reorderItemProps:I,reorderContext:R,reorderInstructionsId:S,reorderInstructions:b}=(({onReorder:e,rootRef:r,viewportConfig:t})=>{const n=null!=e,[s,l]=o.useState(void 0),{reorderProps:i,reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}=u.useReorderable({onReorder:e,rootRef:r,itemSelector:a.ITEM_SELECTOR,isDisabled:!n,columns:1}),y=o.useRef(!1);return o.useEffect((()=>{if(n&&y.current){const e=r.current,o=a.findElementByKey(e,c.currentItemKey.current,a.ITEM_SELECTOR);if(o){const r=t?.scroller()||e;g.scrollToVisible(o,r,0),y.current=!1}}})),n?{reorderProps:m.mergeProps({onKeyDown:e=>{n&&("ArrowUp"===e.key||"ArrowDown"===e.key)&&(e.metaKey||e.ctrlKey)&&e.shiftKey&&(y.current=!0,i.onKeyDown?.(e))},onDragOver:e=>{void 0!==s&&(y.current=!1,a.dragToScroll(e,void 0!==s,r.current))}}),reorderItemProps:{dragKey:s,setDragKey:l,onReorder:e,rootRef:r},reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}:{reorderProps:i,reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}})({onReorder:e.onReorder,rootRef:l,viewportConfig:e.viewportConfig}),{triggerProps:v,menuProps:M,contextMenuContext:E,notifyCurrentKeyChanged:P}=((e,r,t,n)=>{const[s,l]=o.useState(),[i,c]=o.useState(_),u=o.useRef(),{triggerProps:d}=k.useContextMenuGesture((({gesture:r,anchor:o,target:s})=>{let i=o;if("keyboard"===r){i=a.findElementByKey(t.current,u.current,a.ITEM_SELECTOR)||o;const r=K.findItemContext(u.current,e);l(r)}else{const r=a.keyExtractor(s,a.ITEM_SELECTOR),t=K.findItemContext(r,e);l(t),n(r)}c({...F[r],anchorRef:{current:i},isOpen:!0})}),{isDisabled:!r}),f=o.useCallback((e=>{"dismissed"!==e.reason&&"itemAction"!==e.reason||t.current?.focus({preventScroll:!0}),c({..._})}),[t]);return{menuProps:{...i,onClose:f},onClose:f,contextMenuContext:s,triggerProps:d,notifyCurrentKeyChanged:e=>{u.current=e.value}}})(x,n,l,f),T=r=>{e.onPersistCurrentItem?.(r),P(r)};return C&&I?r.jsxs(r.Fragment,{children:[r.jsxs(i.ReorderableContext.Provider,{value:R,children:[r.jsx(g.List,{...e,"aria-describedby":S,contextMenuTriggerProps:v,reorderProps:h,onLoadRange:p,scrollerRef:l,data:x,currentItemOverride:d,onPersistCurrentItem:T,children:t=>r.jsx(j,{...I,itemKey:t.metadata.key,children:e.children(t)})}),r.jsx("span",{id:S,children:r.jsx(c.HiddenAccessible,{children:b})})]}),n&&r.jsx(A,{...M,contextMenuConfig:n,contextMenuContext:E})]}):r.jsxs(r.Fragment,{children:[r.jsx(g.List,{...e,onLoadRange:p,scrollerRef:l,data:x,contextMenuTriggerProps:v,currentItemOverride:d,onPersistCurrentItem:T,children:e.children}),n&&r.jsx(A,{...M,contextMenuConfig:n,contextMenuContext:E})]})}));e.ListView=V}));
2
- //# sourceMappingURL=ListView-5bb45f81.js.map
1
+ define(['exports', 'preact/jsx-runtime', 'preact/compat', 'preact/hooks', './LayerHost-e95c5f30', 'css!./DragAndDropStyles.styles.css', 'css!./ReorderableItemStyles.styles.css', './ReorderableContext-6d10a1b7', './HiddenAccessible-037ef42d', './collectionUtils-17f5cc64', './useReorderableItem-4c4779f7', './classNames-08d99695', './UNSAFE_ListView/themes/ListViewStyles.css', './keys-4755c121', './mergeProps-bcfa6a92', './List-04c4fed0', './Menu-5d447084', './MenuItem-87cd59b8', 'preact', './logger-0f873e29', 'css!./TooltipContentStyles.styles.css', 'module', './hooks/UNSAFE_useTooltip/themes/redwood/TooltipContentVariants.css', './tooltipUtils-69ce0a2d', 'css!./IconStyle.styles.css', './SelectMenuGroupContext-67f24a8f', './UNSAFE_Separator/themes/SeparatorStyles.css', 'css!./MenuSeparatorStyles.styles.css', 'module', './UNSAFE_Menu/themes/redwood/MenuSeparatorVariants.css', './useItemAction-821d1b6e', './useContextMenuGesture-d55fbea5'], (function(e,r,t,o,n,s,l,i,c,a,u,d,f,y,m,g,p,x,C,h,I,R,S,b,v,M,E,P,T,O,K,k){"use strict";const w=(e,r)=>{if(null!=e){const t=e.querySelectorAll("[role='row']");if(t.length>r)return a.getKey(t[r])}return null};function L(e,r){const t=Math.abs(null==r?e.scrollTop:r),o={y:t,key:void 0,offsetY:void 0};let n=0;const s=e.querySelectorAll("[role='row']");if(s.length>0&&0===t)return o.key=w(e,0),o.offsetY=0,o;for(let r=0;r<s.length;r++){const l=s[r].getBoundingClientRect().height;if(n+=l,t<n){o.key=w(e,r),o.offsetY=l+t-n;break}}return o}function D(e,r){const t=function(e,r){if(null!=r){let t,o=!1;if(null!=r.key?(o=!0,t=r.key):null!=r.offsetY&&null==r.y&&(o=!0,t=L(e).key),o){if(null!=t){let o=0;const n=e.querySelectorAll("[role ='row']");for(let e=0;e<n.length;e++){if(t===a.getKey(n[e]))return o+(null!=r.offsetY?r.offsetY:0);o+=n[e].getBoundingClientRect().height}}}else if(null!=r.y)return r.y}return}(e,r);e.scrollTop=null!=t?t:0}const j=t.memo((function({children:e,dragKey:t,setDragKey:n,onReorder:s,rootRef:l,itemKey:i}){const c=o.useRef(null),m={itemOverlayFront:f.styles.reorderableItemOverlayFront,itemOverlayRear:f.styles.reorderableItemOverlayRear,itemDragger:f.styles.reorderableItemDragger},g=o.useCallback((e=>{e.dataTransfer?.setData("text/listview-items-key",JSON.stringify(i))}),[i]),{rootProps:p,isDragged:x,overlayZoneBeforeProps:C,overlayZoneAfterProps:h}=u.useReorderableItem({isDisabled:!s,dragKey:t,setDragKey:n,onReorder:s,rootRef:l,ref:c,getItem:()=>c?.current?.closest(a.ITEM_SELECTOR),setTransferData:g,itemStyles:m,itemSelector:a.ITEM_SELECTOR,isVertical:!0}),I=d.classNames([p?.class,f.styles.reorderableItemDnd]);return r.jsxs("div",{...p,class:I,children:[e,!x&&y.isKeyDefined(t)&&r.jsxs(r.Fragment,{children:[r.jsx("div",{...C}),r.jsx("div",{...h})]})]})}),((e,r)=>!(!e||!r)&&(e?.children===r?.children&&e?.dragKey===r?.dragKey)));function A({contextMenuConfig:e,contextMenuContext:t,...o}){const n=e.accessibleLabel;return r.jsx(r.Fragment,{children:r.jsx(p.Menu,{...o,...n&&{"aria-label":n},children:o.isOpen&&e.itemsRenderer(t)})})}const F={mouse:{initialFocus:"menu",placement:"bottom-start",offsetValue:0},keyboard:{initialFocus:"firstItem",placement:"bottom-start",offsetValue:0},touch:{initialFocus:"menu",placement:"end",offsetValue:40}},_={isOpen:!1,initialFocus:"menu",placement:"bottom-start",offsetValue:0,anchorRef:{current:null}},V=t.forwardRef(((e,t)=>{const{contextMenuConfig:n}=e,s=o.useRef(),l=o.useRef(null),{currentItemOverride:d,updateCurrentItemOverride:f}=(e=>{const r=o.useRef(),t=o.useRef();t.current!==e&&(t.current=e,r.current=e);const n=o.useCallback((e=>{r.current={rowKey:e}}),[]);return{currentItemOverride:r.current,updateCurrentItemOverride:n}})(e.currentItemOverride),y=e.data?e.data.map((r=>({data:r,metadata:{key:e.getRowKey(r)}}))):null,p=e.onLoadMore?e.onLoadMore:()=>{},x=y?{offset:0,data:y,sizePrecision:e.hasMore?"atLeast":"exact",totalSize:y.length}:null;o.useImperativeHandle(t,(()=>({getScrollPosition:()=>l.current?L(l.current):{y:0},focus:()=>{l.current&&l.current.focus()}}))),o.useLayoutEffect((()=>{l.current&&s.current!==e.scrollPositionOverride&&(D(l.current,e.scrollPositionOverride),s.current=e.scrollPositionOverride)}),[e.scrollPositionOverride]);const C=null!=e.onReorder,{reorderProps:h,reorderItemProps:I,reorderContext:R,reorderInstructionsId:S,reorderInstructions:b}=(({onReorder:e,rootRef:r,viewportConfig:t})=>{const n=null!=e,[s,l]=o.useState(void 0),{reorderProps:i,reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}=u.useReorderable({onReorder:e,rootRef:r,itemSelector:a.ITEM_SELECTOR,isDisabled:!n,columns:1}),y=o.useRef(!1);return o.useEffect((()=>{if(n&&y.current){const e=r.current,o=a.findElementByKey(e,c.currentItemKey.current,a.ITEM_SELECTOR);if(o){const r=t?.scroller()||e;g.scrollToVisible(o,r,0),y.current=!1}}})),n?{reorderProps:m.mergeProps({onKeyDown:e=>{n&&("ArrowUp"===e.key||"ArrowDown"===e.key)&&(e.metaKey||e.ctrlKey)&&e.shiftKey&&(y.current=!0,i.onKeyDown?.(e))},onDragOver:e=>{void 0!==s&&(y.current=!1,a.dragToScroll(e,void 0!==s,r.current))}}),reorderItemProps:{dragKey:s,setDragKey:l,onReorder:e,rootRef:r},reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}:{reorderProps:i,reorderContext:c,reorderInstructionsId:d,reorderInstructions:f}})({onReorder:e.onReorder,rootRef:l,viewportConfig:e.viewportConfig}),{triggerProps:v,menuProps:M,contextMenuContext:E,notifyCurrentKeyChanged:P}=((e,r,t,n)=>{const[s,l]=o.useState(),[i,c]=o.useState(_),u=o.useRef(),{triggerProps:d}=k.useContextMenuGesture((({gesture:r,anchor:o,target:s})=>{let i=o;if("keyboard"===r){i=a.findElementByKey(t.current,u.current,a.ITEM_SELECTOR)||o;const r=K.findItemContext(u.current,e);l(r)}else{const r=a.keyExtractor(s,a.ITEM_SELECTOR),t=K.findItemContext(r,e);l(t),n(r)}c({...F[r],anchorRef:{current:i},isOpen:!0})}),{isDisabled:!r}),f=o.useCallback((e=>{"dismissed"!==e.reason&&"itemAction"!==e.reason||t.current?.focus({preventScroll:!0}),c({..._})}),[t]);return{menuProps:{...i,onClose:f},onClose:f,contextMenuContext:s,triggerProps:d,notifyCurrentKeyChanged:e=>{u.current=e.value}}})(x,n,l,f),T=r=>{e.onPersistCurrentItem?.(r),P(r)};return C&&I?r.jsxs(r.Fragment,{children:[r.jsxs(i.ReorderableContext.Provider,{value:R,children:[r.jsx(g.List,{...e,"aria-describedby":S,contextMenuTriggerProps:v,reorderProps:h,onLoadRange:p,scrollerRef:l,data:x,currentItemOverride:d,onPersistCurrentItem:T,children:t=>r.jsx(j,{...I,itemKey:t.metadata.key,children:e.children(t)})}),r.jsx("span",{id:S,children:r.jsx(c.HiddenAccessible,{children:b})})]}),n&&r.jsx(A,{...M,contextMenuConfig:n,contextMenuContext:E})]}):r.jsxs(r.Fragment,{children:[r.jsx(g.List,{...e,onLoadRange:p,scrollerRef:l,data:x,contextMenuTriggerProps:v,currentItemOverride:d,onPersistCurrentItem:T,children:e.children}),n&&r.jsx(A,{...M,contextMenuConfig:n,contextMenuContext:E})]})}));e.ListView=V}));
2
+ //# sourceMappingURL=ListView-bf740071.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListView-5bb45f81.js","sources":["../../src/UNSAFE_ListView/ScrollPositionUtils.ts","../../src/UNSAFE_ListView/ListViewReorderableItem.tsx","../../src/UNSAFE_ListView/ListViewContextMenu.tsx","../../src/UNSAFE_ListView/useListViewContextMenu.ts","../../src/UNSAFE_ListView/ListView.tsx","../../src/UNSAFE_ListView/useListViewCurrentItemOverride.tsx","../../src/UNSAFE_ListView/useListViewReorder.ts"],"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 { getKey } from '../utils/PRIVATE_collectionUtils';\n\n/**\n * Type for scroll position in ListView\n */\nexport type ListViewScrollPosition<K> = {\n offsetY?: number;\n key?: K;\n y?: number;\n};\n\n/**\n * Returns the key for the row at the given index\n */\nconst getKeyForIndex = (root: HTMLElement, index: number) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[role='row']`);\n if (rowElements.length > index) {\n return getKey(rowElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\nexport function getScrollPosition<K>(root: HTMLDivElement, newScrollTop?: number) {\n // ensure scroll position y value is initialized\n const scrollTop = Math.abs(newScrollTop == null ? root.scrollTop : newScrollTop);\n\n const scrollPosition: ListViewScrollPosition<K> = {\n y: scrollTop,\n key: undefined,\n offsetY: undefined\n };\n\n let rowBottom = 0;\n const rowElements = root.querySelectorAll(`[role='row']`);\n if (rowElements.length > 0) {\n if (scrollTop === 0) {\n scrollPosition.key = getKeyForIndex(root, 0) as K;\n scrollPosition.offsetY = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < rowElements.length; i++) {\n const rowHeight = rowElements[i].getBoundingClientRect().height;\n rowBottom += rowHeight;\n if (scrollTop < rowBottom) {\n scrollPosition.key = getKeyForIndex(root, i) as K;\n scrollPosition.offsetY = rowHeight + scrollTop - rowBottom;\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper to set the scroll position on the ListView.\n */\nexport function setScrollPosition<K>(\n root: HTMLDivElement,\n scrollPosition?: ListViewScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(root, scrollPosition);\n root.scrollTop = y != null ? y : 0;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n root: HTMLDivElement,\n scrollPosition?: ListViewScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let key;\n let useRow = false;\n if (scrollPosition.key != null) {\n // key takes precedence over everything else\n useRow = true;\n key = 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 key = getScrollPosition(root).key;\n }\n if (useRow) {\n if (key != null) {\n let y = 0;\n const rowElements = root.querySelectorAll(`[role ='row']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (key === getKey(rowElements[i] as HTMLElement)) {\n return y + (scrollPosition.offsetY != null ? scrollPosition.offsetY : 0);\n }\n y += rowElements[i].getBoundingClientRect().height;\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","import { memo } from 'preact/compat';\nimport { useRef, useCallback } from 'preact/hooks';\nimport { useReorderableItem } from '../hooks/PRIVATE_useReorderable';\nimport { ReorderableItemProps } from '../UNSAFE_Collection/Reorderable.types';\nimport { ITEM_SELECTOR } from '../utils/PRIVATE_collectionUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { styles } from './themes/ListViewStyles.css';\nimport { isKeyDefined } from '../utils/UNSAFE_keys';\n\nexport type ListReorderableItemProps<K> = ReorderableItemProps<K>;\n\n/**\n * A private item that will be used by ReorderableCardFlexView, location TBD (could be moved to PRIVATE_CardFlexView)\n */\nexport function ListViewReorderableItem<K extends string | number>({\n children,\n dragKey,\n setDragKey,\n onReorder,\n rootRef,\n itemKey\n}: ListReorderableItemProps<K> & { itemKey: K }) {\n const itemRef = useRef<HTMLDivElement | null>(null);\n const itemStyles = {\n itemOverlayFront: styles.reorderableItemOverlayFront,\n itemOverlayRear: styles.reorderableItemOverlayRear,\n itemDragger: styles.reorderableItemDragger\n };\n const getItem = () => itemRef?.current?.closest(ITEM_SELECTOR);\n const setTransferData = useCallback(\n (event: DragEvent) => {\n event.dataTransfer?.setData('text/listview-items-key', JSON.stringify(itemKey));\n },\n [itemKey]\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: ITEM_SELECTOR,\n isVertical: true\n });\n const classes = classNames([rootProps?.class, styles.reorderableItemDnd]);\n\n return (\n <div {...rootProps} class={classes}>\n {children}\n {!isDragged && isKeyDefined(dragKey) && (\n <>\n <div {...overlayZoneBeforeProps}></div>\n <div {...overlayZoneAfterProps}></div>\n </>\n )}\n </div>\n );\n}\n\nexport const MemoizeListViewReorderableItem = memo(\n ListViewReorderableItem,\n <K,>(prev: ListReorderableItemProps<K>, next: ListReorderableItemProps<K>) => {\n if (prev && next) {\n return prev?.children === next?.children && prev?.dragKey === next?.dragKey;\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 { ComponentProps } from 'preact';\n\nimport { ListItemContext } from '#UNSAFE_Collection';\nimport { Menu } from '#UNSAFE_Menu';\nimport { ListViewContextMenuConfig } from './List.types';\n\nexport type Props<K extends string | number, D> = Omit<ComponentProps<typeof Menu>, 'children'> & {\n contextMenuConfig: ListViewContextMenuConfig<K, D>;\n} & { contextMenuContext: ListItemContext<K, D> };\n\n/**\n * The internal component used to render a custom context menu\n */\nexport function ListViewContextMenu<K extends string | number, D>({\n contextMenuConfig,\n contextMenuContext,\n ...menuProps\n}: Props<K, D>) {\n const accessibleLabel = contextMenuConfig.accessibleLabel;\n\n return (\n <>\n <Menu\n {...menuProps}\n {...(accessibleLabel && {\n 'aria-label': accessibleLabel\n })}>\n {menuProps.isOpen && contextMenuConfig.itemsRenderer(contextMenuContext)}\n </Menu>\n </>\n );\n}\n","import type { ComponentProps, RefObject } from 'preact';\nimport { useCallback, useState, useRef } from 'preact/hooks';\n\nimport { DataState, ListItemContext, CurrentKeyDetail } from '#UNSAFE_Collection';\nimport { Menu } from '#UNSAFE_Menu';\nimport { findItemContext } from '#hooks/PRIVATE_useItemAction';\nimport { useContextMenuGesture } from '#hooks/UNSAFE_useContextMenuGesture';\nimport { ITEM_SELECTOR, findElementByKey, keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { ListView } from './ListView';\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: 0\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 ListViewProps<K extends string | number, D> = ComponentProps<typeof ListView<K, D>>;\n\nexport const useListViewContextMenu = <K extends string | number, D>(\n dataState: DataState<K, D> | null,\n contextMenuConfig: ListViewProps<K, D>['contextMenuConfig'],\n scrollListRef: RefObject<HTMLElement | null>,\n updateCurrentKey: (key: K) => void\n) => {\n /*Context Menu section\n TODO: A version of context Menu listview will be merged using useContextMenuGesture instead. Once it's merged we \n can go back to this to create a hook or utility that could be share among all collection comps. JET-60320\n */\n\n /* \n Steps to open a menu:\n 1.- useContextMenu handler is called when menu is supposed to be opened.\n 2.- We set contextMenuContext when contextMenuRenderer is called.\n 3.- We dispatch opening the menu with the correct anchor.\n 5.- Menu receives updated props and updated contextMenuContext.\n 6.- Menu is opened. \n\n */\n\n //Supposed to be updated when menu is about to be opened\n //We set an initial key value for the context menu context, to allow user use object destructuring inside the\n //contextMenuRenderer. It doesn't matter if the key is not correct at the initial rendering since menu starts\n //being closed always\n const [contextMenuContext, setContextMenuContext] = useState<ListItemContext<K, D>>();\n\n const [menuProps, setMenuProps] = useState<MenuProps>(initialMenuProps);\n\n const currentKeyRef = useRef<K>();\n const notifyCurrentKeyChanged = (detail: CurrentKeyDetail<K>) => {\n currentKeyRef.current = detail.value;\n };\n\n const { triggerProps } = useContextMenuGesture(\n ({ gesture, anchor, target }) => {\n let anchorBasedOnGesture = anchor;\n if (gesture === 'keyboard') {\n //We find the element where the position of the menu is going to be based of\n const elem = findElementByKey(\n scrollListRef.current as HTMLElement,\n currentKeyRef.current as K,\n ITEM_SELECTOR\n );\n\n //We set the correct anchor\n anchorBasedOnGesture = elem ? elem : anchor;\n\n const context = findItemContext(\n currentKeyRef.current as K,\n dataState as DataState<string | number | null, D>\n );\n\n setContextMenuContext(context as ListItemContext<K, D>);\n } else {\n //We search for the key using the target of the event\n const key = keyExtractor(target as HTMLElement, ITEM_SELECTOR);\n\n const context = findItemContext(key, dataState as DataState<string | number | null, D>);\n\n setContextMenuContext(context as ListItemContext<K, D>);\n\n //We update the key so when we close logical focus is on the correct item\n updateCurrentKey(key as K);\n }\n setMenuProps({\n ...menuPropGestureStates[gesture],\n anchorRef: { current: anchorBasedOnGesture },\n isOpen: true\n });\n },\n {\n isDisabled: !contextMenuConfig //If there is no a context menu renderer we disable the hook\n }\n );\n\n const handleCloseContextMenu = useCallback<Required<ComponentProps<typeof Menu>>['onClose']>(\n (detail) => {\n /* \n TODO: Focus ring should be visible when context menu was closed because of selecting an item using keyboard, \n but should not be visible when the selection was done using mouse or touch. This would probably means menu \n onClose API is going to be changed a little bit so we can satisfy this requirement. JET-62372\n */\n //Focus has to be set on the current target that was obtained\n //during context menu gesture when menu is dismissed or item is \"selected\"\n if (detail.reason === 'dismissed' || detail.reason === 'itemAction') {\n scrollListRef.current?.focus({ preventScroll: true });\n }\n // We close the menu.The only prop that matters here is isOpen\n setMenuProps({ ...initialMenuProps });\n },\n [scrollListRef]\n );\n\n return {\n menuProps: { ...menuProps, onClose: handleCloseContextMenu },\n onClose: handleCloseContextMenu,\n contextMenuContext: contextMenuContext as ListItemContext<K, D>,\n triggerProps,\n notifyCurrentKeyChanged\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 { JSX } from 'preact';\nimport { ForwardedRef, forwardRef } from 'preact/compat';\nimport { useImperativeHandle, useRef, useLayoutEffect } from 'preact/hooks';\nimport { ReorderableContext } from '../hooks/PRIVATE_useReorderable';\nimport { DataState, CurrentKeyDetail } from '../UNSAFE_Collection';\nimport { HiddenAccessible } from '../UNSAFE_HiddenAccessible';\nimport { List } from '../PRIVATE_List';\nimport { ListProps, ListViewContextMenuConfig, ListViewHandle } from './List.types';\nimport {\n getScrollPosition,\n setScrollPosition,\n ListViewScrollPosition\n} from './ScrollPositionUtils';\nimport { MemoizeListViewReorderableItem } from './ListViewReorderableItem';\nimport { useListViewReorder } from './useListViewReorder';\nimport { ListViewContextMenu } from './ListViewContextMenu';\nimport { useListViewContextMenu } from './useListViewContextMenu';\nimport { useListViewCurrentItemOverride } from './useListViewCurrentItemOverride';\n\n/**\n * Props specific to non-virtualized ListView\n */\ntype NonVirtualizedListProps<K, D> = {\n /**\n * The data that is used to render each item in ListView. If the value is null, then ListView will show nothing\n * if hasMore is false, or loading indicator if hasMore is true.\n */\n data: D[] | null;\n /**\n * A callback function to extract the key which is used to identify the item.\n */\n getRowKey: (data: D) => K;\n /**\n * Whether there are more data available to load. By default this returns false.\n */\n hasMore?: boolean;\n /**\n * An optional callback function which is invoked when user scrolls to the end of the list.\n */\n onLoadMore?: () => void;\n\n /**\n * Configuration used to specify a context menu.\n */\n contextMenuConfig?: ListViewContextMenuConfig<K, D>;\n};\n\n/**\n * Props for the ListView Component\n */\nexport type Props<K, D> = Pick<\n ListProps<K, D>,\n | 'aria-label'\n | 'aria-labelledby'\n | 'children'\n | 'gridlines'\n | 'currentItemOverride'\n | 'onPersistCurrentItem'\n | 'onItemAction'\n | 'onSelectionChange'\n | 'promotedSection'\n | 'selectedKeys'\n | 'selectionMode'\n | 'viewportConfig'\n | 'testId'\n | 'scrollPositionOverride'\n | 'onReorder'\n | 'itemPadding'\n> &\n NonVirtualizedListProps<K, D>;\n/**\n * A list view displays data items as a list or a grid with highly interactive features.\n */\nexport const ListView = forwardRef(\n <K extends string | number, D>(props: Props<K, D>, ref?: ForwardedRef<ListViewHandle<K>>) => {\n const { contextMenuConfig } = props;\n const scrollPositionRef = useRef<ListViewScrollPosition<K>>();\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const { currentItemOverride, updateCurrentItemOverride } = useListViewCurrentItemOverride(\n props.currentItemOverride\n );\n\n const dataMetadata = props.data\n ? props.data.map((aData: D) => {\n const key = props.getRowKey(aData);\n return { data: aData, metadata: { key } };\n })\n : null;\n\n const loadRange = props.onLoadMore ? props.onLoadMore : () => {};\n const dataState = dataMetadata\n ? ({\n offset: 0,\n data: dataMetadata,\n sizePrecision: props.hasMore ? 'atLeast' : 'exact',\n totalSize: dataMetadata.length\n } as DataState<K, D>)\n : null;\n\n useImperativeHandle(ref!, () => ({\n getScrollPosition: () => {\n if (listRef.current) {\n return getScrollPosition(listRef.current);\n }\n return { y: 0 };\n },\n focus: () => {\n if (listRef.current) {\n listRef.current.focus();\n }\n }\n }));\n\n // update scroll position if a new value is provided\n useLayoutEffect(() => {\n if (listRef.current && scrollPositionRef.current !== props.scrollPositionOverride) {\n setScrollPosition(listRef.current, props.scrollPositionOverride);\n scrollPositionRef.current = props.scrollPositionOverride;\n }\n }, [props.scrollPositionOverride]);\n\n /**\n * Reorder Section\n */\n const isReorderEnabled = props.onReorder != undefined;\n const {\n reorderProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } = useListViewReorder({\n onReorder: props.onReorder,\n rootRef: listRef,\n viewportConfig: props.viewportConfig\n });\n\n const { triggerProps, menuProps, contextMenuContext, notifyCurrentKeyChanged } =\n useListViewContextMenu(dataState, contextMenuConfig, listRef, updateCurrentItemOverride);\n\n const onPersistCurrentItem = (detail: CurrentKeyDetail<K>) => {\n props.onPersistCurrentItem?.(detail);\n notifyCurrentKeyChanged(detail);\n };\n\n if (isReorderEnabled && reorderItemProps) {\n return (\n <>\n <ReorderableContext.Provider value={reorderContext}>\n <List\n {...props}\n aria-describedby={reorderInstructionsId}\n contextMenuTriggerProps={triggerProps}\n reorderProps={reorderProps}\n onLoadRange={loadRange}\n scrollerRef={listRef}\n data={dataState}\n currentItemOverride={currentItemOverride}\n onPersistCurrentItem={onPersistCurrentItem}>\n {(context) => (\n <MemoizeListViewReorderableItem\n {...reorderItemProps}\n itemKey={context.metadata.key}>\n {props.children(context)}\n </MemoizeListViewReorderableItem>\n )}\n </List>\n <span id={reorderInstructionsId}>\n <HiddenAccessible>{reorderInstructions}</HiddenAccessible>\n </span>\n </ReorderableContext.Provider>\n {contextMenuConfig && (\n <ListViewContextMenu\n {...menuProps}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n }\n\n return (\n <>\n <List\n {...props}\n onLoadRange={loadRange}\n scrollerRef={listRef}\n data={dataState}\n contextMenuTriggerProps={triggerProps}\n currentItemOverride={currentItemOverride}\n onPersistCurrentItem={onPersistCurrentItem}>\n {props.children}\n </List>\n {contextMenuConfig && (\n <ListViewContextMenu\n {...menuProps}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n }\n) as <K extends string | number, D>(\n props: Props<K, D> & { ref?: ForwardedRef<ListViewHandle<K>> }\n) => JSX.Element;\n","import { useCallback, useRef } from 'preact/hooks';\nimport { Item as CurrentItem } from '#UNSAFE_Collection';\nimport { ListProps } from './List.types';\n\n/**\n * This hook handles the currentItemOverride passing to PRIVATE_List layer.\n *\n * If the app provided new value for 'currentItemOverride', we pass that down to PRIVATE_List layer;\n * otherwise, we will pass down the value of internal override, which would be the value\n * updated by useListViewContextMenu hook\n *\n * @param currentItemOverride\n */\nexport const useListViewCurrentItemOverride = <K extends string | number, D>(\n currentItemOverride: ListProps<K, D>['currentItemOverride']\n) => {\n // the override that will be passed down to PRIVATE_List layer\n const listOverrideRef = useRef<CurrentItem<K>>();\n\n // track the currentItemOverride attribute set by app\n const appOverrideRef = useRef<CurrentItem<K>>();\n if (appOverrideRef.current !== currentItemOverride) {\n appOverrideRef.current = currentItemOverride;\n listOverrideRef.current = currentItemOverride;\n }\n\n // track the internal override updated by useListViewContextMenu hook\n // we can just update ref here since the hook will trigger a state update for its context, which will trigger a rerender\n const updateCurrentItemOverride = useCallback((key: K) => {\n listOverrideRef.current = { rowKey: key };\n }, []);\n\n return {\n currentItemOverride: listOverrideRef.current,\n updateCurrentItemOverride\n };\n};\n","import type { RefObject } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { ITEM_SELECTOR, dragToScroll, findElementByKey } from '../utils/PRIVATE_collectionUtils';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { useReorderable } from '../hooks/PRIVATE_useReorderable';\nimport { scrollToVisible } from '../PRIVATE_List';\nimport { ListProps } from './List.types';\n\ntype useListViewReorderProps<K, D> = Pick<ListProps<K, D>, 'onReorder'> & {\n rootRef: RefObject<HTMLDivElement>;\n viewportConfig?: ViewportConfig;\n};\n\nexport const useListViewReorder = <K extends string | number, D>({\n onReorder,\n rootRef,\n viewportConfig\n}: useListViewReorderProps<K, D>) => {\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: ITEM_SELECTOR,\n isDisabled: !isReorderEnabled,\n columns: 1\n });\n\n // ensure the current item is scrolled into view during keyboard reordering,\n // disable that during mouse reordering\n const reorderScrollIntoView = useRef(false);\n useEffect(() => {\n if (isReorderEnabled && reorderScrollIntoView.current) {\n const rootElement = rootRef.current as HTMLElement;\n const elem = findElementByKey(\n rootElement,\n reorderContext.currentItemKey.current as K,\n ITEM_SELECTOR\n );\n if (elem) {\n const scroller = viewportConfig?.scroller() || rootElement;\n // make sure item is visible\n scrollToVisible(elem, scroller, 0);\n reorderScrollIntoView.current = false;\n }\n }\n });\n\n if (!isReorderEnabled) {\n return {\n reorderProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // listview only do keyboard reordering with arrow up/down keys\n if (\n isReorderEnabled &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown') &&\n (event.metaKey || event.ctrlKey) &&\n event.shiftKey\n ) {\n reorderScrollIntoView.current = true;\n reorderProps.onKeyDown?.(event);\n }\n };\n\n const handleDragOver = (event: DragEvent) => {\n if (dragKey !== undefined) {\n reorderScrollIntoView.current = false;\n dragToScroll(event, dragKey !== undefined, rootRef.current);\n }\n };\n\n const reorderEventProps = mergeProps({ onKeyDown: handleKeyDown, onDragOver: handleDragOver });\n\n const reorderItemProps = {\n dragKey,\n setDragKey,\n onReorder,\n rootRef\n };\n\n return {\n reorderProps: reorderEventProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n};\n"],"names":["getKeyForIndex","root","index","rowElements","querySelectorAll","length","getKey","getScrollPosition","newScrollTop","scrollTop","Math","abs","scrollPosition","y","key","undefined","offsetY","rowBottom","i","rowHeight","getBoundingClientRect","height","setScrollPosition","useRow","_getScrollTopFromScrollPosition","MemoizeListViewReorderableItem","memo","children","dragKey","setDragKey","onReorder","rootRef","itemKey","itemRef","useRef","itemStyles","itemOverlayFront","styles","reorderableItemOverlayFront","itemOverlayRear","reorderableItemOverlayRear","itemDragger","reorderableItemDragger","setTransferData","useCallback","event","dataTransfer","setData","JSON","stringify","rootProps","isDragged","overlayZoneBeforeProps","overlayZoneAfterProps","useReorderableItem","isDisabled","ref","getItem","current","closest","ITEM_SELECTOR","itemSelector","isVertical","classes","classNames","class","reorderableItemDnd","_jsxs","isKeyDefined","jsxs","_Fragment","Fragment","_jsx","jsx","prev","next","ListViewContextMenu","contextMenuConfig","contextMenuContext","menuProps","accessibleLabel","Menu","isOpen","itemsRenderer","menuPropGestureStates","mouse","initialFocus","placement","offsetValue","keyboard","touch","initialMenuProps","anchorRef","ListView","forwardRef","props","scrollPositionRef","listRef","currentItemOverride","updateCurrentItemOverride","listOverrideRef","appOverrideRef","rowKey","useListViewCurrentItemOverride","dataMetadata","data","map","aData","metadata","getRowKey","loadRange","onLoadMore","dataState","offset","sizePrecision","hasMore","totalSize","useImperativeHandle","focus","useLayoutEffect","scrollPositionOverride","isReorderEnabled","reorderProps","reorderItemProps","reorderContext","reorderInstructionsId","reorderInstructions","viewportConfig","useState","useReorderable","columns","reorderScrollIntoView","useEffect","rootElement","elem","findElementByKey","currentItemKey","scroller","scrollToVisible","mergeProps","onKeyDown","metaKey","ctrlKey","shiftKey","onDragOver","dragToScroll","useListViewReorder","triggerProps","notifyCurrentKeyChanged","scrollListRef","updateCurrentKey","setContextMenuContext","setMenuProps","currentKeyRef","useContextMenuGesture","gesture","anchor","target","anchorBasedOnGesture","context","findItemContext","keyExtractor","handleCloseContextMenu","detail","reason","preventScroll","onClose","value","useListViewContextMenu","onPersistCurrentItem","ReorderableContext","Provider","List","contextMenuTriggerProps","onLoadRange","scrollerRef","id","HiddenAccessible"],"mappings":"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"}
1
+ {"version":3,"file":"ListView-bf740071.js","sources":["../../src/UNSAFE_ListView/ScrollPositionUtils.ts","../../src/UNSAFE_ListView/ListViewReorderableItem.tsx","../../src/UNSAFE_ListView/ListViewContextMenu.tsx","../../src/UNSAFE_ListView/useListViewContextMenu.ts","../../src/UNSAFE_ListView/ListView.tsx","../../src/UNSAFE_ListView/useListViewCurrentItemOverride.tsx","../../src/UNSAFE_ListView/useListViewReorder.ts"],"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 { getKey } from '../utils/PRIVATE_collectionUtils';\n\n/**\n * Type for scroll position in ListView\n */\nexport type ListViewScrollPosition<K> = {\n offsetY?: number;\n key?: K;\n y?: number;\n};\n\n/**\n * Returns the key for the row at the given index\n */\nconst getKeyForIndex = (root: HTMLElement, index: number) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[role='row']`);\n if (rowElements.length > index) {\n return getKey(rowElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\nexport function getScrollPosition<K>(root: HTMLDivElement, newScrollTop?: number) {\n // ensure scroll position y value is initialized\n const scrollTop = Math.abs(newScrollTop == null ? root.scrollTop : newScrollTop);\n\n const scrollPosition: ListViewScrollPosition<K> = {\n y: scrollTop,\n key: undefined,\n offsetY: undefined\n };\n\n let rowBottom = 0;\n const rowElements = root.querySelectorAll(`[role='row']`);\n if (rowElements.length > 0) {\n if (scrollTop === 0) {\n scrollPosition.key = getKeyForIndex(root, 0) as K;\n scrollPosition.offsetY = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < rowElements.length; i++) {\n const rowHeight = rowElements[i].getBoundingClientRect().height;\n rowBottom += rowHeight;\n if (scrollTop < rowBottom) {\n scrollPosition.key = getKeyForIndex(root, i) as K;\n scrollPosition.offsetY = rowHeight + scrollTop - rowBottom;\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper to set the scroll position on the ListView.\n */\nexport function setScrollPosition<K>(\n root: HTMLDivElement,\n scrollPosition?: ListViewScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(root, scrollPosition);\n root.scrollTop = y != null ? y : 0;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n root: HTMLDivElement,\n scrollPosition?: ListViewScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let key;\n let useRow = false;\n if (scrollPosition.key != null) {\n // key takes precedence over everything else\n useRow = true;\n key = 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 key = getScrollPosition(root).key;\n }\n if (useRow) {\n if (key != null) {\n let y = 0;\n const rowElements = root.querySelectorAll(`[role ='row']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (key === getKey(rowElements[i] as HTMLElement)) {\n return y + (scrollPosition.offsetY != null ? scrollPosition.offsetY : 0);\n }\n y += rowElements[i].getBoundingClientRect().height;\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","import { memo } from 'preact/compat';\nimport { useRef, useCallback } from 'preact/hooks';\nimport { useReorderableItem } from '../hooks/PRIVATE_useReorderable';\nimport { ReorderableItemProps } from '../UNSAFE_Collection/Reorderable.types';\nimport { ITEM_SELECTOR } from '../utils/PRIVATE_collectionUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { styles } from './themes/ListViewStyles.css';\nimport { isKeyDefined } from '../utils/UNSAFE_keys';\n\nexport type ListReorderableItemProps<K> = ReorderableItemProps<K>;\n\n/**\n * A private item that will be used by ReorderableCardFlexView, location TBD (could be moved to PRIVATE_CardFlexView)\n */\nexport function ListViewReorderableItem<K extends string | number>({\n children,\n dragKey,\n setDragKey,\n onReorder,\n rootRef,\n itemKey\n}: ListReorderableItemProps<K> & { itemKey: K }) {\n const itemRef = useRef<HTMLDivElement | null>(null);\n const itemStyles = {\n itemOverlayFront: styles.reorderableItemOverlayFront,\n itemOverlayRear: styles.reorderableItemOverlayRear,\n itemDragger: styles.reorderableItemDragger\n };\n const getItem = () => itemRef?.current?.closest(ITEM_SELECTOR);\n const setTransferData = useCallback(\n (event: DragEvent) => {\n event.dataTransfer?.setData('text/listview-items-key', JSON.stringify(itemKey));\n },\n [itemKey]\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: ITEM_SELECTOR,\n isVertical: true\n });\n const classes = classNames([rootProps?.class, styles.reorderableItemDnd]);\n\n return (\n <div {...rootProps} class={classes}>\n {children}\n {!isDragged && isKeyDefined(dragKey) && (\n <>\n <div {...overlayZoneBeforeProps}></div>\n <div {...overlayZoneAfterProps}></div>\n </>\n )}\n </div>\n );\n}\n\nexport const MemoizeListViewReorderableItem = memo(\n ListViewReorderableItem,\n <K,>(prev: ListReorderableItemProps<K>, next: ListReorderableItemProps<K>) => {\n if (prev && next) {\n return prev?.children === next?.children && prev?.dragKey === next?.dragKey;\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 { ComponentProps } from 'preact';\n\nimport { ListItemContext } from '#UNSAFE_Collection';\nimport { Menu } from '#UNSAFE_Menu';\nimport { ListViewContextMenuConfig } from './List.types';\n\nexport type Props<K extends string | number, D> = Omit<ComponentProps<typeof Menu>, 'children'> & {\n contextMenuConfig: ListViewContextMenuConfig<K, D>;\n} & { contextMenuContext: ListItemContext<K, D> };\n\n/**\n * The internal component used to render a custom context menu\n */\nexport function ListViewContextMenu<K extends string | number, D>({\n contextMenuConfig,\n contextMenuContext,\n ...menuProps\n}: Props<K, D>) {\n const accessibleLabel = contextMenuConfig.accessibleLabel;\n\n return (\n <>\n <Menu\n {...menuProps}\n {...(accessibleLabel && {\n 'aria-label': accessibleLabel\n })}>\n {menuProps.isOpen && contextMenuConfig.itemsRenderer(contextMenuContext)}\n </Menu>\n </>\n );\n}\n","import type { ComponentProps, RefObject } from 'preact';\nimport { useCallback, useState, useRef } from 'preact/hooks';\n\nimport { DataState, ListItemContext, CurrentKeyDetail } from '#UNSAFE_Collection';\nimport { Menu } from '#UNSAFE_Menu';\nimport { findItemContext } from '#hooks/PRIVATE_useItemAction';\nimport { useContextMenuGesture } from '#hooks/UNSAFE_useContextMenuGesture';\nimport { ITEM_SELECTOR, findElementByKey, keyExtractor } from '#utils/PRIVATE_collectionUtils';\nimport { ListView } from './ListView';\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: 0\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 ListViewProps<K extends string | number, D> = ComponentProps<typeof ListView<K, D>>;\n\nexport const useListViewContextMenu = <K extends string | number, D>(\n dataState: DataState<K, D> | null,\n contextMenuConfig: ListViewProps<K, D>['contextMenuConfig'],\n scrollListRef: RefObject<HTMLElement | null>,\n updateCurrentKey: (key: K) => void\n) => {\n /*Context Menu section\n TODO: A version of context Menu listview will be merged using useContextMenuGesture instead. Once it's merged we \n can go back to this to create a hook or utility that could be share among all collection comps. JET-60320\n */\n\n /* \n Steps to open a menu:\n 1.- useContextMenu handler is called when menu is supposed to be opened.\n 2.- We set contextMenuContext when contextMenuRenderer is called.\n 3.- We dispatch opening the menu with the correct anchor.\n 5.- Menu receives updated props and updated contextMenuContext.\n 6.- Menu is opened. \n\n */\n\n //Supposed to be updated when menu is about to be opened\n //We set an initial key value for the context menu context, to allow user use object destructuring inside the\n //contextMenuRenderer. It doesn't matter if the key is not correct at the initial rendering since menu starts\n //being closed always\n const [contextMenuContext, setContextMenuContext] = useState<ListItemContext<K, D>>();\n\n const [menuProps, setMenuProps] = useState<MenuProps>(initialMenuProps);\n\n const currentKeyRef = useRef<K>();\n const notifyCurrentKeyChanged = (detail: CurrentKeyDetail<K>) => {\n currentKeyRef.current = detail.value;\n };\n\n const { triggerProps } = useContextMenuGesture(\n ({ gesture, anchor, target }) => {\n let anchorBasedOnGesture = anchor;\n if (gesture === 'keyboard') {\n //We find the element where the position of the menu is going to be based of\n const elem = findElementByKey(\n scrollListRef.current as HTMLElement,\n currentKeyRef.current as K,\n ITEM_SELECTOR\n );\n\n //We set the correct anchor\n anchorBasedOnGesture = elem ? elem : anchor;\n\n const context = findItemContext(\n currentKeyRef.current as K,\n dataState as DataState<string | number | null, D>\n );\n\n setContextMenuContext(context as ListItemContext<K, D>);\n } else {\n //We search for the key using the target of the event\n const key = keyExtractor(target as HTMLElement, ITEM_SELECTOR);\n\n const context = findItemContext(key, dataState as DataState<string | number | null, D>);\n\n setContextMenuContext(context as ListItemContext<K, D>);\n\n //We update the key so when we close logical focus is on the correct item\n updateCurrentKey(key as K);\n }\n setMenuProps({\n ...menuPropGestureStates[gesture],\n anchorRef: { current: anchorBasedOnGesture },\n isOpen: true\n });\n },\n {\n isDisabled: !contextMenuConfig //If there is no a context menu renderer we disable the hook\n }\n );\n\n const handleCloseContextMenu = useCallback<Required<ComponentProps<typeof Menu>>['onClose']>(\n (detail) => {\n /* \n TODO: Focus ring should be visible when context menu was closed because of selecting an item using keyboard, \n but should not be visible when the selection was done using mouse or touch. This would probably means menu \n onClose API is going to be changed a little bit so we can satisfy this requirement. JET-62372\n */\n //Focus has to be set on the current target that was obtained\n //during context menu gesture when menu is dismissed or item is \"selected\"\n if (detail.reason === 'dismissed' || detail.reason === 'itemAction') {\n scrollListRef.current?.focus({ preventScroll: true });\n }\n // We close the menu.The only prop that matters here is isOpen\n setMenuProps({ ...initialMenuProps });\n },\n [scrollListRef]\n );\n\n return {\n menuProps: { ...menuProps, onClose: handleCloseContextMenu },\n onClose: handleCloseContextMenu,\n contextMenuContext: contextMenuContext as ListItemContext<K, D>,\n triggerProps,\n notifyCurrentKeyChanged\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 { JSX } from 'preact';\nimport { ForwardedRef, forwardRef } from 'preact/compat';\nimport { useImperativeHandle, useRef, useLayoutEffect } from 'preact/hooks';\nimport { ReorderableContext } from '../hooks/PRIVATE_useReorderable';\nimport { DataState, CurrentKeyDetail } from '../UNSAFE_Collection';\nimport { HiddenAccessible } from '../UNSAFE_HiddenAccessible';\nimport { List } from '../PRIVATE_List';\nimport { ListProps, ListViewContextMenuConfig, ListViewHandle } from './List.types';\nimport {\n getScrollPosition,\n setScrollPosition,\n ListViewScrollPosition\n} from './ScrollPositionUtils';\nimport { MemoizeListViewReorderableItem } from './ListViewReorderableItem';\nimport { useListViewReorder } from './useListViewReorder';\nimport { ListViewContextMenu } from './ListViewContextMenu';\nimport { useListViewContextMenu } from './useListViewContextMenu';\nimport { useListViewCurrentItemOverride } from './useListViewCurrentItemOverride';\n\n/**\n * Props specific to non-virtualized ListView\n */\ntype NonVirtualizedListProps<K, D> = {\n /**\n * The data that is used to render each item in ListView. If the value is null, then ListView will show nothing\n * if hasMore is false, or loading indicator if hasMore is true.\n */\n data: D[] | null;\n /**\n * A callback function to extract the key which is used to identify the item.\n */\n getRowKey: (data: D) => K;\n /**\n * Whether there are more data available to load. By default this returns false.\n */\n hasMore?: boolean;\n /**\n * An optional callback function which is invoked when user scrolls to the end of the list.\n */\n onLoadMore?: () => void;\n\n /**\n * Configuration used to specify a context menu.\n */\n contextMenuConfig?: ListViewContextMenuConfig<K, D>;\n};\n\n/**\n * Props for the ListView Component\n */\nexport type Props<K, D> = Pick<\n ListProps<K, D>,\n | 'aria-label'\n | 'aria-labelledby'\n | 'children'\n | 'gridlines'\n | 'currentItemOverride'\n | 'onPersistCurrentItem'\n | 'onItemAction'\n | 'onSelectionChange'\n | 'promotedSection'\n | 'selectedKeys'\n | 'selectionMode'\n | 'viewportConfig'\n | 'testId'\n | 'scrollPositionOverride'\n | 'onReorder'\n | 'itemPadding'\n> &\n NonVirtualizedListProps<K, D>;\n/**\n * A list view displays data items as a list or a grid with highly interactive features.\n */\nexport const ListView = forwardRef(\n <K extends string | number, D>(props: Props<K, D>, ref?: ForwardedRef<ListViewHandle<K>>) => {\n const { contextMenuConfig } = props;\n const scrollPositionRef = useRef<ListViewScrollPosition<K>>();\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const { currentItemOverride, updateCurrentItemOverride } = useListViewCurrentItemOverride(\n props.currentItemOverride\n );\n\n const dataMetadata = props.data\n ? props.data.map((aData: D) => {\n const key = props.getRowKey(aData);\n return { data: aData, metadata: { key } };\n })\n : null;\n\n const loadRange = props.onLoadMore ? props.onLoadMore : () => {};\n const dataState = dataMetadata\n ? ({\n offset: 0,\n data: dataMetadata,\n sizePrecision: props.hasMore ? 'atLeast' : 'exact',\n totalSize: dataMetadata.length\n } as DataState<K, D>)\n : null;\n\n useImperativeHandle(ref!, () => ({\n getScrollPosition: () => {\n if (listRef.current) {\n return getScrollPosition(listRef.current);\n }\n return { y: 0 };\n },\n focus: () => {\n if (listRef.current) {\n listRef.current.focus();\n }\n }\n }));\n\n // update scroll position if a new value is provided\n useLayoutEffect(() => {\n if (listRef.current && scrollPositionRef.current !== props.scrollPositionOverride) {\n setScrollPosition(listRef.current, props.scrollPositionOverride);\n scrollPositionRef.current = props.scrollPositionOverride;\n }\n }, [props.scrollPositionOverride]);\n\n /**\n * Reorder Section\n */\n const isReorderEnabled = props.onReorder != undefined;\n const {\n reorderProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } = useListViewReorder({\n onReorder: props.onReorder,\n rootRef: listRef,\n viewportConfig: props.viewportConfig\n });\n\n const { triggerProps, menuProps, contextMenuContext, notifyCurrentKeyChanged } =\n useListViewContextMenu(dataState, contextMenuConfig, listRef, updateCurrentItemOverride);\n\n const onPersistCurrentItem = (detail: CurrentKeyDetail<K>) => {\n props.onPersistCurrentItem?.(detail);\n notifyCurrentKeyChanged(detail);\n };\n\n if (isReorderEnabled && reorderItemProps) {\n return (\n <>\n <ReorderableContext.Provider value={reorderContext}>\n <List\n {...props}\n aria-describedby={reorderInstructionsId}\n contextMenuTriggerProps={triggerProps}\n reorderProps={reorderProps}\n onLoadRange={loadRange}\n scrollerRef={listRef}\n data={dataState}\n currentItemOverride={currentItemOverride}\n onPersistCurrentItem={onPersistCurrentItem}>\n {(context) => (\n <MemoizeListViewReorderableItem\n {...reorderItemProps}\n itemKey={context.metadata.key}>\n {props.children(context)}\n </MemoizeListViewReorderableItem>\n )}\n </List>\n <span id={reorderInstructionsId}>\n <HiddenAccessible>{reorderInstructions}</HiddenAccessible>\n </span>\n </ReorderableContext.Provider>\n {contextMenuConfig && (\n <ListViewContextMenu\n {...menuProps}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n }\n\n return (\n <>\n <List\n {...props}\n onLoadRange={loadRange}\n scrollerRef={listRef}\n data={dataState}\n contextMenuTriggerProps={triggerProps}\n currentItemOverride={currentItemOverride}\n onPersistCurrentItem={onPersistCurrentItem}>\n {props.children}\n </List>\n {contextMenuConfig && (\n <ListViewContextMenu\n {...menuProps}\n contextMenuConfig={contextMenuConfig}\n contextMenuContext={contextMenuContext}\n />\n )}\n </>\n );\n }\n) as <K extends string | number, D>(\n props: Props<K, D> & { ref?: ForwardedRef<ListViewHandle<K>> }\n) => JSX.Element;\n","import { useCallback, useRef } from 'preact/hooks';\nimport { Item as CurrentItem } from '#UNSAFE_Collection';\nimport { ListProps } from './List.types';\n\n/**\n * This hook handles the currentItemOverride passing to PRIVATE_List layer.\n *\n * If the app provided new value for 'currentItemOverride', we pass that down to PRIVATE_List layer;\n * otherwise, we will pass down the value of internal override, which would be the value\n * updated by useListViewContextMenu hook\n *\n * @param currentItemOverride\n */\nexport const useListViewCurrentItemOverride = <K extends string | number, D>(\n currentItemOverride: ListProps<K, D>['currentItemOverride']\n) => {\n // the override that will be passed down to PRIVATE_List layer\n const listOverrideRef = useRef<CurrentItem<K>>();\n\n // track the currentItemOverride attribute set by app\n const appOverrideRef = useRef<CurrentItem<K>>();\n if (appOverrideRef.current !== currentItemOverride) {\n appOverrideRef.current = currentItemOverride;\n listOverrideRef.current = currentItemOverride;\n }\n\n // track the internal override updated by useListViewContextMenu hook\n // we can just update ref here since the hook will trigger a state update for its context, which will trigger a rerender\n const updateCurrentItemOverride = useCallback((key: K) => {\n listOverrideRef.current = { rowKey: key };\n }, []);\n\n return {\n currentItemOverride: listOverrideRef.current,\n updateCurrentItemOverride\n };\n};\n","import type { RefObject } from 'preact';\nimport { useState, useEffect, useRef } from 'preact/hooks';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport { ITEM_SELECTOR, dragToScroll, findElementByKey } from '../utils/PRIVATE_collectionUtils';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { useReorderable } from '../hooks/PRIVATE_useReorderable';\nimport { scrollToVisible } from '../PRIVATE_List';\nimport { ListProps } from './List.types';\n\ntype useListViewReorderProps<K, D> = Pick<ListProps<K, D>, 'onReorder'> & {\n rootRef: RefObject<HTMLDivElement>;\n viewportConfig?: ViewportConfig;\n};\n\nexport const useListViewReorder = <K extends string | number, D>({\n onReorder,\n rootRef,\n viewportConfig\n}: useListViewReorderProps<K, D>) => {\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: ITEM_SELECTOR,\n isDisabled: !isReorderEnabled,\n columns: 1\n });\n\n // ensure the current item is scrolled into view during keyboard reordering,\n // disable that during mouse reordering\n const reorderScrollIntoView = useRef(false);\n useEffect(() => {\n if (isReorderEnabled && reorderScrollIntoView.current) {\n const rootElement = rootRef.current as HTMLElement;\n const elem = findElementByKey(\n rootElement,\n reorderContext.currentItemKey.current as K,\n ITEM_SELECTOR\n );\n if (elem) {\n const scroller = viewportConfig?.scroller() || rootElement;\n // make sure item is visible\n scrollToVisible(elem, scroller, 0);\n reorderScrollIntoView.current = false;\n }\n }\n });\n\n if (!isReorderEnabled) {\n return {\n reorderProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n // listview only do keyboard reordering with arrow up/down keys\n if (\n isReorderEnabled &&\n (event.key === 'ArrowUp' || event.key === 'ArrowDown') &&\n (event.metaKey || event.ctrlKey) &&\n event.shiftKey\n ) {\n reorderScrollIntoView.current = true;\n reorderProps.onKeyDown?.(event);\n }\n };\n\n const handleDragOver = (event: DragEvent) => {\n if (dragKey !== undefined) {\n reorderScrollIntoView.current = false;\n dragToScroll(event, dragKey !== undefined, rootRef.current);\n }\n };\n\n const reorderEventProps = mergeProps({ onKeyDown: handleKeyDown, onDragOver: handleDragOver });\n\n const reorderItemProps = {\n dragKey,\n setDragKey,\n onReorder,\n rootRef\n };\n\n return {\n reorderProps: reorderEventProps,\n reorderItemProps,\n reorderContext,\n reorderInstructionsId,\n reorderInstructions\n } as const;\n};\n"],"names":["getKeyForIndex","root","index","rowElements","querySelectorAll","length","getKey","getScrollPosition","newScrollTop","scrollTop","Math","abs","scrollPosition","y","key","undefined","offsetY","rowBottom","i","rowHeight","getBoundingClientRect","height","setScrollPosition","useRow","_getScrollTopFromScrollPosition","MemoizeListViewReorderableItem","memo","children","dragKey","setDragKey","onReorder","rootRef","itemKey","itemRef","useRef","itemStyles","itemOverlayFront","styles","reorderableItemOverlayFront","itemOverlayRear","reorderableItemOverlayRear","itemDragger","reorderableItemDragger","setTransferData","useCallback","event","dataTransfer","setData","JSON","stringify","rootProps","isDragged","overlayZoneBeforeProps","overlayZoneAfterProps","useReorderableItem","isDisabled","ref","getItem","current","closest","ITEM_SELECTOR","itemSelector","isVertical","classes","classNames","class","reorderableItemDnd","_jsxs","isKeyDefined","jsxs","_Fragment","Fragment","_jsx","jsx","prev","next","ListViewContextMenu","contextMenuConfig","contextMenuContext","menuProps","accessibleLabel","Menu","isOpen","itemsRenderer","menuPropGestureStates","mouse","initialFocus","placement","offsetValue","keyboard","touch","initialMenuProps","anchorRef","ListView","forwardRef","props","scrollPositionRef","listRef","currentItemOverride","updateCurrentItemOverride","listOverrideRef","appOverrideRef","rowKey","useListViewCurrentItemOverride","dataMetadata","data","map","aData","metadata","getRowKey","loadRange","onLoadMore","dataState","offset","sizePrecision","hasMore","totalSize","useImperativeHandle","focus","useLayoutEffect","scrollPositionOverride","isReorderEnabled","reorderProps","reorderItemProps","reorderContext","reorderInstructionsId","reorderInstructions","viewportConfig","useState","useReorderable","columns","reorderScrollIntoView","useEffect","rootElement","elem","findElementByKey","currentItemKey","scroller","scrollToVisible","mergeProps","onKeyDown","metaKey","ctrlKey","shiftKey","onDragOver","dragToScroll","useListViewReorder","triggerProps","notifyCurrentKeyChanged","scrollListRef","updateCurrentKey","setContextMenuContext","setMenuProps","currentKeyRef","useContextMenuGesture","gesture","anchor","target","anchorBasedOnGesture","context","findItemContext","keyExtractor","handleCloseContextMenu","detail","reason","preventScroll","onClose","value","useListViewContextMenu","onPersistCurrentItem","ReorderableContext","Provider","List","contextMenuTriggerProps","onLoadRange","scrollerRef","id","HiddenAccessible"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ define(['exports', 'preact/jsx-runtime', 'preact', './useViewportIntersect-b2d47a4b', './Collection-46cfa244'], (function(e,o,t,r,n){"use strict";const i="oj-collection-loadmore",s=`.${i}`;e.LOADMORE_STYLE_CLASS=i,e.LoadMoreCollection=function({data:e,children:i,viewportConfig:c,hasMore:a,onLoadMore:l,loadMoreIndicator:d,suggestions:u,loadMoreThreshold:h=1}){return r.useViewportIntersect(c,Math.max(h,1),0,s,(()=>{e&&l()})),e?o.jsxs(t.Fragment,{children:[u,o.jsx(n.Collection,{items:e,children:i}),a&&d]}):o.jsx("div",{})}}));
2
+ //# sourceMappingURL=LoadMoreCollection-a6adbc3f.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadMoreCollection-83413a59.js","sources":["../../src/PRIVATE_LoadMoreCollection/LoadMoreCollection.tsx"],"sourcesContent":["/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * Licensed under The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren, Fragment } from 'preact';\nimport { ItemContext } from '../UNSAFE_Collection';\nimport { Collection } from '../PRIVATE_Collection';\nimport { useViewportIntersect, ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\n\n/**\n * Props for the LoadMoreCollection component\n */\ntype Props<D> = {\n /**\n * A DataState object that provide information including data and metadata to the LoadMoreCollection.\n */\n data: D[] | null;\n\n /**\n * Renderer callback used to render each item\n */\n children: (context: ItemContext<D>) => ComponentChildren;\n\n /**\n * Viewport configuration including specifying the element which is used to determine what range\n * of data to render\n */\n viewportConfig: ViewportConfig;\n\n /**\n * Whether there are still more data to load. Internally, LoadMoreCollection will render the load\n * more indicator at the bottom if this is true\n */\n hasMore: boolean;\n\n /**\n * Callback function to handle when user scrolls to the end of the component and there are more items to load.\n * The function should update data prop on the component to include the next set of items fetched.\n */\n onLoadMore: () => void;\n\n /**\n * Optionally specify the custom load more indicator\n */\n loadMoreIndicator?: ComponentChildren;\n\n /**\n * Optionally provide the suggestion indicator sparkle\n */\n suggestions?: ComponentChildren;\n\n /**\n * Optionally specify how far in pixel from the bottom should load more occurs\n */\n loadMoreThreshold?: number;\n};\n\nexport const LOADMORE_STYLE_CLASS = 'oj-collection-loadmore';\n\nconst DEFAULT_MARGIN = 1;\nconst LOAD_MORE_SELECTOR = `.${LOADMORE_STYLE_CLASS}`;\n\n/**\n * Component that only render items in the specified viewport.\n * @param props\n */\nexport function LoadMoreCollection<D>({\n data,\n children,\n viewportConfig,\n hasMore,\n onLoadMore,\n loadMoreIndicator,\n suggestions,\n loadMoreThreshold = DEFAULT_MARGIN\n}: Props<D>) {\n // detect if viewport has changed and it needs to re-render based on a new range\n useViewportIntersect(\n viewportConfig,\n Math.max(loadMoreThreshold, DEFAULT_MARGIN),\n 0,\n LOAD_MORE_SELECTOR,\n () => {\n if (data) {\n onLoadMore();\n }\n }\n );\n\n // if DataState is invalid (including not specified), just render blank\n if (!data) {\n return <div />;\n }\n\n // might need to support elementType prop in the future to allow customization of what\n // type of element to render for the root\n return (\n <Fragment>\n {suggestions}\n <Collection items={data}>{children}</Collection>\n {hasMore && loadMoreIndicator}\n </Fragment>\n );\n}\n"],"names":["LOADMORE_STYLE_CLASS","LOAD_MORE_SELECTOR","data","children","viewportConfig","hasMore","onLoadMore","loadMoreIndicator","suggestions","loadMoreThreshold","useViewportIntersect","Math","max","_jsxs","Fragment","_jsx","jsx","Collection","items"],"mappings":"6IA4Da,MAAAA,EAAuB,yBAG9BC,EAAqB,IAAID,kDAMzB,UAAgCE,KACpCA,EAAIC,SACJA,EAAQC,eACRA,EAAcC,QACdA,EAAOC,WACPA,EAAUC,kBACVA,EAAiBC,YACjBA,EAAWC,kBACXA,EAfqB,IA+BrB,OAbAC,uBACEN,EACAO,KAAKC,IAAIH,EApBU,GAqBnB,EACAR,GACA,KACMC,GACFI,GACD,IAKAJ,EAOHW,EAAAA,KAACC,EAAAA,SAAQ,CAAAX,SAAA,CACNK,EACDO,EAAAC,IAACC,aAAW,CAAAC,MAAOhB,EAAIC,SAAGA,IACzBE,GAAWE,KATPQ,eAYX"}
1
+ {"version":3,"file":"LoadMoreCollection-a6adbc3f.js","sources":["../../src/PRIVATE_LoadMoreCollection/LoadMoreCollection.tsx"],"sourcesContent":["/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * Licensed under The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren, Fragment } from 'preact';\nimport { ItemContext } from '../UNSAFE_Collection';\nimport { Collection } from '../PRIVATE_Collection';\nimport { useViewportIntersect, ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\n\n/**\n * Props for the LoadMoreCollection component\n */\ntype Props<D> = {\n /**\n * A DataState object that provide information including data and metadata to the LoadMoreCollection.\n */\n data: D[] | null;\n\n /**\n * Renderer callback used to render each item\n */\n children: (context: ItemContext<D>) => ComponentChildren;\n\n /**\n * Viewport configuration including specifying the element which is used to determine what range\n * of data to render\n */\n viewportConfig: ViewportConfig;\n\n /**\n * Whether there are still more data to load. Internally, LoadMoreCollection will render the load\n * more indicator at the bottom if this is true\n */\n hasMore: boolean;\n\n /**\n * Callback function to handle when user scrolls to the end of the component and there are more items to load.\n * The function should update data prop on the component to include the next set of items fetched.\n */\n onLoadMore: () => void;\n\n /**\n * Optionally specify the custom load more indicator\n */\n loadMoreIndicator?: ComponentChildren;\n\n /**\n * Optionally provide the suggestion indicator sparkle\n */\n suggestions?: ComponentChildren;\n\n /**\n * Optionally specify how far in pixel from the bottom should load more occurs\n */\n loadMoreThreshold?: number;\n};\n\nexport const LOADMORE_STYLE_CLASS = 'oj-collection-loadmore';\n\nconst DEFAULT_MARGIN = 1;\nconst LOAD_MORE_SELECTOR = `.${LOADMORE_STYLE_CLASS}`;\n\n/**\n * Component that only render items in the specified viewport.\n * @param props\n */\nexport function LoadMoreCollection<D>({\n data,\n children,\n viewportConfig,\n hasMore,\n onLoadMore,\n loadMoreIndicator,\n suggestions,\n loadMoreThreshold = DEFAULT_MARGIN\n}: Props<D>) {\n // detect if viewport has changed and it needs to re-render based on a new range\n useViewportIntersect(\n viewportConfig,\n Math.max(loadMoreThreshold, DEFAULT_MARGIN),\n 0,\n LOAD_MORE_SELECTOR,\n () => {\n if (data) {\n onLoadMore();\n }\n }\n );\n\n // if DataState is invalid (including not specified), just render blank\n if (!data) {\n return <div />;\n }\n\n // might need to support elementType prop in the future to allow customization of what\n // type of element to render for the root\n return (\n <Fragment>\n {suggestions}\n <Collection items={data}>{children}</Collection>\n {hasMore && loadMoreIndicator}\n </Fragment>\n );\n}\n"],"names":["LOADMORE_STYLE_CLASS","LOAD_MORE_SELECTOR","data","children","viewportConfig","hasMore","onLoadMore","loadMoreIndicator","suggestions","loadMoreThreshold","useViewportIntersect","Math","max","_jsxs","Fragment","_jsx","jsx","Collection","items"],"mappings":"6IA4Da,MAAAA,EAAuB,yBAG9BC,EAAqB,IAAID,kDAMzB,UAAgCE,KACpCA,EAAIC,SACJA,EAAQC,eACRA,EAAcC,QACdA,EAAOC,WACPA,EAAUC,kBACVA,EAAiBC,YACjBA,EAAWC,kBACXA,EAfqB,IA+BrB,OAbAC,uBACEN,EACAO,KAAKC,IAAIH,EApBU,GAqBnB,EACAR,GACA,KACMC,GACFI,GACD,IAKAJ,EAOHW,EAAAA,KAACC,EAAAA,SAAQ,CAAAX,SAAA,CACNK,EACDO,EAAAC,IAACC,aAAW,CAAAC,MAAOhB,EAAIC,SAAGA,IACzBE,GAAWE,KATPQ,eAYX"}