@oracle/oraclejet-preact 17.1.1 → 17.1.2

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 (1032) hide show
  1. package/amd/{BaseCardView-c5624c8a.js → BaseCardView-a11e4dec.js} +2 -2
  2. package/amd/{BaseCardView-c5624c8a.js.map → BaseCardView-a11e4dec.js.map} +1 -1
  3. package/amd/CardFlexView-9688d264.js +2 -0
  4. package/amd/{CardFlexView-14fada63.js.map → CardFlexView-9688d264.js.map} +1 -1
  5. package/amd/{CardGridView-00ba53a9.js → CardGridView-b7f4f205.js} +2 -2
  6. package/amd/{CardGridView-00ba53a9.js.map → CardGridView-b7f4f205.js.map} +1 -1
  7. package/amd/CheckboxSet-e523552e.js +2 -0
  8. package/amd/CheckboxSet-e523552e.js.map +1 -0
  9. package/amd/DrawerLayoutStyles.styles.css +1 -0
  10. package/amd/GroupLoadingIndicator-cd9192c9.js +1 -1
  11. package/amd/{Indexer-74c989ce.js → Indexer-6833ad40.js} +2 -2
  12. package/amd/{Indexer-74c989ce.js.map → Indexer-6833ad40.js.map} +1 -1
  13. package/amd/List-3ebac3fc.js +2 -0
  14. package/amd/{List-61d64cd6.js.map → List-3ebac3fc.js.map} +1 -1
  15. package/amd/{ListView-a49e52c3.js → ListView-c8082c0c.js} +2 -2
  16. package/amd/{ListView-a49e52c3.js.map → ListView-c8082c0c.js.map} +1 -1
  17. package/amd/LoadMoreCollection-a6adbc3f.js +2 -0
  18. package/amd/{LoadMoreCollection-83413a59.js.map → LoadMoreCollection-a6adbc3f.js.map} +1 -1
  19. package/amd/MaxLengthCounter-caafceef.js +2 -0
  20. package/amd/MaxLengthCounter-caafceef.js.map +1 -0
  21. package/amd/PRIVATE_BaseCardView.js +1 -1
  22. package/amd/PRIVATE_List.js +1 -1
  23. package/amd/PRIVATE_LoadMoreCollection.js +1 -1
  24. package/amd/PRIVATE_SelectCommon.js +1 -1
  25. package/amd/PRIVATE_Table.js +1 -1
  26. package/amd/PRIVATE_VirtualizedCollection.js +1 -1
  27. package/amd/{SelectMultiple-1ff92cc3.js → SelectMultiple-3eb4a268.js} +2 -2
  28. package/amd/{SelectMultiple-1ff92cc3.js.map → SelectMultiple-3eb4a268.js.map} +1 -1
  29. package/amd/{SelectSingle-641a4cac.js → SelectSingle-9fcc38fc.js} +2 -2
  30. package/amd/{SelectSingle-641a4cac.js.map → SelectSingle-9fcc38fc.js.map} +1 -1
  31. package/amd/{Table-986ae70c.js → Table-611e08d5.js} +2 -2
  32. package/amd/{Table-986ae70c.js.map → Table-611e08d5.js.map} +1 -1
  33. package/amd/{TableView-452fa547.js → TableView-cf113195.js} +2 -2
  34. package/amd/{TableView-452fa547.js.map → TableView-cf113195.js.map} +1 -1
  35. package/amd/TextArea-259d741c.js +2 -0
  36. package/amd/TextArea-259d741c.js.map +1 -0
  37. package/amd/TextAreaAutosize-e8dc13b4.js +2 -0
  38. package/amd/{TextAreaAutosize-1f47b470.js.map → TextAreaAutosize-e8dc13b4.js.map} +1 -1
  39. package/amd/Theme-redwood/theme.css +261 -261
  40. package/amd/Theme-stable/theme.css +373 -373
  41. package/amd/UNSAFE_CardFlexView.js +1 -1
  42. package/amd/UNSAFE_CardGridView.js +1 -1
  43. package/amd/UNSAFE_CheckboxItem.js +1 -1
  44. package/amd/UNSAFE_CheckboxItem.js.map +1 -1
  45. package/amd/UNSAFE_CheckboxSet.js +1 -1
  46. package/amd/UNSAFE_CheckboxSet.js.map +1 -1
  47. package/amd/UNSAFE_DrawerLayout.js +1 -1
  48. package/amd/UNSAFE_DrawerLayout.js.map +1 -1
  49. package/amd/UNSAFE_ExpandableList.js +1 -1
  50. package/amd/UNSAFE_Indexer.js +1 -1
  51. package/amd/UNSAFE_ListView.js +1 -1
  52. package/amd/UNSAFE_SelectMultiple.js +1 -1
  53. package/amd/UNSAFE_SelectSingle.js +1 -1
  54. package/amd/UNSAFE_TableView.js +1 -1
  55. package/amd/UNSAFE_TextArea.js +1 -1
  56. package/amd/UNSAFE_TextAreaAutosize.js +1 -1
  57. package/amd/UNSAFE_VirtualizedListView.js +1 -1
  58. package/amd/{VirtualizedCollection-897516a5.js → VirtualizedCollection-63223f5e.js} +2 -2
  59. package/amd/{VirtualizedCollection-897516a5.js.map → VirtualizedCollection-63223f5e.js.map} +1 -1
  60. package/amd/VirtualizedListView-cf795207.js +2 -0
  61. package/amd/{VirtualizedListView-96ddfd98.js.map → VirtualizedListView-cf795207.js.map} +1 -1
  62. package/amd/hooks/UNSAFE_useContainerBreakpointValues.js +1 -1
  63. package/amd/{useSelectCommon-4e256cf0.js → useSelectCommon-94d5e5bb.js} +2 -2
  64. package/amd/{useSelectCommon-4e256cf0.js.map → useSelectCommon-94d5e5bb.js.map} +1 -1
  65. package/cjs/ActionCard-ad0ecc2f.js +1 -1
  66. package/cjs/{BarChart-f132cd7c.js → BarChart-6b34be7b.js} +4 -4
  67. package/cjs/{BarChart-f132cd7c.js.map → BarChart-6b34be7b.js.map} +1 -1
  68. package/cjs/BaseButton-ae653e88.js +2 -2
  69. package/cjs/BaseCardView-55bc5e6f.js +6 -6
  70. package/cjs/{BaseCardViewSelectionTest-361f021d.js → BaseCardViewSelectionTest-7b06bd30.js} +6 -6
  71. package/cjs/{BaseCardViewSelectionTest-361f021d.js.map → BaseCardViewSelectionTest-7b06bd30.js.map} +1 -1
  72. package/cjs/BaseNavigationListItem-4b28f14e.js +1 -1
  73. package/cjs/ButtonSet-ce6a890f.js +2 -2
  74. package/cjs/ButtonSetIconButton-d1fb3616.js +3 -3
  75. package/cjs/{Center-c0baccb0.js → Center-9f407cb2.js} +2 -2
  76. package/cjs/{Center-c0baccb0.js.map → Center-9f407cb2.js.map} +1 -1
  77. package/cjs/{Chart-42a979a7.js → Chart-4eee682b.js} +11 -11
  78. package/cjs/{Chart-42a979a7.js.map → Chart-4eee682b.js.map} +1 -1
  79. package/cjs/CheckboxControl-2e5aac8b.js +6 -6
  80. package/cjs/CheckboxRadioField-0242222e.js +6 -6
  81. package/cjs/Chip-c49b21a5.js +1 -1
  82. package/cjs/ClearIcon-c8a14c1e.js +1 -1
  83. package/cjs/CollapseIcon-9480e8dd.js +1 -1
  84. package/cjs/Collapsible-ab17d063.js +2 -2
  85. package/cjs/CompactHelpSource-42019592.js +2 -2
  86. package/cjs/{CompactLabelAssistance-fa0fd800.js → CompactLabelAssistance-2e1cd369.js} +5 -5
  87. package/cjs/{CompactLabelAssistance-fa0fd800.js.map → CompactLabelAssistance-2e1cd369.js.map} +1 -1
  88. package/cjs/CompactUserAssistance-62055a51.js +4 -4
  89. package/cjs/ComponentMessageContainer-b6683330.js +4 -4
  90. package/cjs/ConveyorBeltItem-6ec033ae.js +2 -2
  91. package/cjs/{DatePicker-433b80d2.js → DatePicker-670a2473.js} +6 -6
  92. package/cjs/{DatePicker-433b80d2.js.map → DatePicker-670a2473.js.map} +1 -1
  93. package/cjs/DatePickerHeader-1030b799.js +3 -3
  94. package/cjs/{Diagram-5fd0306a.js → Diagram-240bfa89.js} +5 -5
  95. package/cjs/{Diagram-5fd0306a.js.map → Diagram-240bfa89.js.map} +1 -1
  96. package/cjs/{Dialog-c75ebc82.js → Dialog-be0da1e4.js} +6 -6
  97. package/cjs/{Dialog-c75ebc82.js.map → Dialog-be0da1e4.js.map} +1 -1
  98. package/cjs/DirectionalCollapseArrowIcon-6f4b267e.js +1 -1
  99. package/cjs/DirectionalExpandArrowIcon-da3e55cc.js +1 -1
  100. package/cjs/DragHandle-473e7e10.js +1 -1
  101. package/cjs/DrawerLayoutStyles.styles.css +1 -0
  102. package/cjs/{Dropdown-4554e9f9.js → Dropdown-62cd15ca.js} +5 -5
  103. package/cjs/{Dropdown-4554e9f9.js.map → Dropdown-62cd15ca.js.map} +1 -1
  104. package/cjs/{EnvironmentProvider-75eb79f3.js → EnvironmentProvider-bfd5febc.js} +3 -3
  105. package/cjs/{EnvironmentProvider-75eb79f3.js.map → EnvironmentProvider-bfd5febc.js.map} +1 -1
  106. package/cjs/FilePicker-7414764e.js +2 -2
  107. package/cjs/{Flex-e7a85bef.js → Flex-ce16a2fa.js} +2 -2
  108. package/cjs/{Flex-e7a85bef.js.map → Flex-ce16a2fa.js.map} +1 -1
  109. package/cjs/{Floating-25f4e655.js → Floating-43033e19.js} +4 -4
  110. package/cjs/{Floating-25f4e655.js.map → Floating-43033e19.js.map} +1 -1
  111. package/cjs/FormLayout-a7ac29be.js +1 -1
  112. package/cjs/Gantt-efe026b9.js +9 -9
  113. package/cjs/{Grid-a7316edd.js → Grid-b8fadf4a.js} +2 -2
  114. package/cjs/{Grid-a7316edd.js.map → Grid-b8fadf4a.js.map} +1 -1
  115. package/cjs/{Gridlines-b69b67fb.js → Gridlines-2dfe546a.js} +2 -2
  116. package/cjs/{Gridlines-b69b67fb.js.map → Gridlines-2dfe546a.js.map} +1 -1
  117. package/cjs/GroupLoadingIndicator-397feb37.js +1 -1
  118. package/cjs/{HighlightText-dd11dd32.js → HighlightText-2061d12d.js} +2 -2
  119. package/cjs/{HighlightText-dd11dd32.js.map → HighlightText-2061d12d.js.map} +1 -1
  120. package/cjs/Icon-0420d662.js +3 -3
  121. package/cjs/IconButton-e120d23e.js +3 -3
  122. package/cjs/IconMenuButton-64fa2ef1.js +4 -4
  123. package/cjs/IconProgressButton-d6e5198e.js +3 -3
  124. package/cjs/IconSwitchButton-7ff785b5.js +3 -3
  125. package/cjs/IconToggleButton-2661226f.js +3 -3
  126. package/cjs/{IconUserAssistance-4728958a.js → IconUserAssistance-9cb25135.js} +3 -3
  127. package/cjs/{IconUserAssistance-4728958a.js.map → IconUserAssistance-9cb25135.js.map} +1 -1
  128. package/cjs/Indexer-1dfa7ec4.js +4 -4
  129. package/cjs/InlineHelpSource-0549100d.js +1 -1
  130. package/cjs/InlineUserAssistance-5c7fe16e.js +5 -5
  131. package/cjs/InputDateMask-3642bfa3.js +7 -7
  132. package/cjs/{InputDatePicker-fe21408c.js → InputDatePicker-c2ef8b45.js} +10 -10
  133. package/cjs/{InputDatePicker-fe21408c.js.map → InputDatePicker-c2ef8b45.js.map} +1 -1
  134. package/cjs/InputPassword-ed0dcf1a.js +4 -4
  135. package/cjs/InputText-77261829.js +6 -6
  136. package/cjs/Label-47446013.js +5 -5
  137. package/cjs/LabelValueLayout-4049c1a1.js +1 -1
  138. package/cjs/{Layer-06ec1119.js → Layer-c0d7bdec.js} +3 -3
  139. package/cjs/{Layer-06ec1119.js.map → Layer-c0d7bdec.js.map} +1 -1
  140. package/cjs/{LayerHost-a8c7f182.js → LayerHost-7182bfaf.js} +2 -2
  141. package/cjs/{LayerHost-a8c7f182.js.map → LayerHost-7182bfaf.js.map} +1 -1
  142. package/cjs/{LayerManager-2d0b83ac.js → LayerManager-db087520.js} +2 -2
  143. package/cjs/{LayerManager-2d0b83ac.js.map → LayerManager-db087520.js.map} +1 -1
  144. package/cjs/Legend-fe6cc085.js +3 -3
  145. package/cjs/{LineAreaChart-70fae163.js → LineAreaChart-28268084.js} +4 -4
  146. package/cjs/{LineAreaChart-70fae163.js.map → LineAreaChart-28268084.js.map} +1 -1
  147. package/cjs/Link-41805241.js +1 -1
  148. package/cjs/List-2baf37ae.js +5 -5
  149. package/cjs/{ListItemLayout-a4f562c6.js → ListItemLayout-b29d8e9c.js} +2 -2
  150. package/cjs/{ListItemLayout-a4f562c6.js.map → ListItemLayout-b29d8e9c.js.map} +1 -1
  151. package/cjs/ListView-4db96cfd.js +3 -3
  152. package/cjs/{LiveRegion-567427c5.js → LiveRegion-3bc583c6.js} +2 -2
  153. package/cjs/{LiveRegion-567427c5.js.map → LiveRegion-3bc583c6.js.map} +1 -1
  154. package/cjs/{MaxLengthLiveRegion-f03f07c6.js → MaxLengthLiveRegion-5e31c44e.js} +3 -3
  155. package/cjs/{MaxLengthLiveRegion-f03f07c6.js.map → MaxLengthLiveRegion-5e31c44e.js.map} +1 -1
  156. package/cjs/{Menu-f3a85f19.js → Menu-748e93bd.js} +8 -8
  157. package/cjs/{Menu-f3a85f19.js.map → Menu-748e93bd.js.map} +1 -1
  158. package/cjs/MenuButton-03bc20b0.js +3 -3
  159. package/cjs/MenuItem-45d2edd5.js +1 -1
  160. package/cjs/Message-2c831019.js +2 -2
  161. package/cjs/{MessageLayer-a3792fec.js → MessageLayer-4e21820a.js} +6 -6
  162. package/cjs/{MessageLayer-a3792fec.js.map → MessageLayer-4e21820a.js.map} +1 -1
  163. package/cjs/MessageToast-3596e8d2.js +8 -8
  164. package/cjs/MessagesManager-a607a228.js +3 -3
  165. package/cjs/MeterBar-48231b79.js +5 -5
  166. package/cjs/MeterCircle-54562c98.js +5 -5
  167. package/cjs/{Modal-1c5c46ca.js → Modal-3a5d6576.js} +3 -3
  168. package/cjs/{Modal-1c5c46ca.js.map → Modal-3a5d6576.js.map} +1 -1
  169. package/cjs/{MonthView-f587275e.js → MonthView-dea031e2.js} +4 -4
  170. package/cjs/{MonthView-f587275e.js.map → MonthView-dea031e2.js.map} +1 -1
  171. package/cjs/NavigationListItem-7550547a.js +5 -5
  172. package/cjs/NumberInputText-17d50e9d.js +6 -6
  173. package/cjs/OverflowTabBarItem-76059bad.js +3 -3
  174. package/cjs/PRIVATE_BaseCardView.js +20 -20
  175. package/cjs/PRIVATE_Chart.js +34 -34
  176. package/cjs/PRIVATE_CheckboxControl.js +22 -22
  177. package/cjs/PRIVATE_CheckboxRadioField.js +23 -23
  178. package/cjs/PRIVATE_ClearIcon.js +17 -17
  179. package/cjs/PRIVATE_DatePickerHeader.js +19 -19
  180. package/cjs/PRIVATE_DatePickerLayout.js +4 -4
  181. package/cjs/PRIVATE_EmbeddedIconButton.js +3 -3
  182. package/cjs/PRIVATE_FormControls.js +19 -19
  183. package/cjs/PRIVATE_IconSwitchButton.js +15 -15
  184. package/cjs/PRIVATE_Icons/CheckboxMixed.js +15 -15
  185. package/cjs/PRIVATE_Icons/CheckboxOff.js +15 -15
  186. package/cjs/PRIVATE_Icons/CheckboxOn.js +15 -15
  187. package/cjs/PRIVATE_Icons/RadiobuttonOff.js +15 -15
  188. package/cjs/PRIVATE_Icons/RadiobuttonOn.js +15 -15
  189. package/cjs/PRIVATE_Icons/WarningS.js +15 -15
  190. package/cjs/PRIVATE_List.js +19 -19
  191. package/cjs/PRIVATE_Message.js +18 -18
  192. package/cjs/PRIVATE_MessageLayer.js +11 -11
  193. package/cjs/PRIVATE_MonthView.js +7 -7
  194. package/cjs/PRIVATE_MonthYearGridView.js +7 -7
  195. package/cjs/PRIVATE_PlotArea.js +4 -4
  196. package/cjs/PRIVATE_RevealToggleIcon.js +16 -16
  197. package/cjs/PRIVATE_SelectCommon.js +27 -27
  198. package/cjs/PRIVATE_StyledCheckbox.js +15 -15
  199. package/cjs/PRIVATE_Table.js +18 -18
  200. package/cjs/PRIVATE_ThemedIcons/CalendarIcon.js +15 -15
  201. package/cjs/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +15 -15
  202. package/cjs/PRIVATE_ThemedIcons/ChartPanIcon.js +15 -15
  203. package/cjs/PRIVATE_ThemedIcons/ChartZoomIcon.js +15 -15
  204. package/cjs/PRIVATE_ThemedIcons/CheckIcon.js +15 -15
  205. package/cjs/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +15 -15
  206. package/cjs/PRIVATE_ThemedIcons/CheckboxOffIcon.js +15 -15
  207. package/cjs/PRIVATE_ThemedIcons/CheckboxOnIcon.js +15 -15
  208. package/cjs/PRIVATE_ThemedIcons/CloseIcon.js +15 -15
  209. package/cjs/PRIVATE_ThemedIcons/CollapseIcon.js +16 -16
  210. package/cjs/PRIVATE_ThemedIcons/CollapseUpIcon.js +15 -15
  211. package/cjs/PRIVATE_ThemedIcons/DecrementIcon.js +15 -15
  212. package/cjs/PRIVATE_ThemedIcons/DeleteIcon.js +15 -15
  213. package/cjs/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +16 -16
  214. package/cjs/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +16 -16
  215. package/cjs/PRIVATE_ThemedIcons/DropdownArrowIcon.js +15 -15
  216. package/cjs/PRIVATE_ThemedIcons/ExpandIcon.js +15 -15
  217. package/cjs/PRIVATE_ThemedIcons/HelpIcon.js +15 -15
  218. package/cjs/PRIVATE_ThemedIcons/IncrementIcon.js +15 -15
  219. package/cjs/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +15 -15
  220. package/cjs/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +15 -15
  221. package/cjs/PRIVATE_ThemedIcons/MessageErrorIcon.js +15 -15
  222. package/cjs/PRIVATE_ThemedIcons/MessageInfoIcon.js +15 -15
  223. package/cjs/PRIVATE_ThemedIcons/MessageWarningIcon.js +15 -15
  224. package/cjs/PRIVATE_ThemedIcons/MinusIcon.js +15 -15
  225. package/cjs/PRIVATE_ThemedIcons/NavDownIcon.js +15 -15
  226. package/cjs/PRIVATE_ThemedIcons/PlusIcon.js +15 -15
  227. package/cjs/PRIVATE_ThemedIcons/RadioOffIcon.js +15 -15
  228. package/cjs/PRIVATE_ThemedIcons/RadioOnIcon.js +15 -15
  229. package/cjs/PRIVATE_ThemedIcons/SortAscendingIcon.js +15 -15
  230. package/cjs/PRIVATE_ThemedIcons/SortDefaultIcon.js +15 -15
  231. package/cjs/PRIVATE_ThemedIcons/SortDescendingIcon.js +15 -15
  232. package/cjs/PRIVATE_ThemedIcons/ViewHideIcon.js +15 -15
  233. package/cjs/PRIVATE_ThemedIcons/ViewIcon.js +15 -15
  234. package/cjs/PRIVATE_TimeComponent.js +18 -18
  235. package/cjs/PRIVATE_VisTabularDatatip.js +4 -4
  236. package/cjs/PictoChart-e9be6f36.js +6 -6
  237. package/cjs/{PieChart-31a4d639.js → PieChart-6d6e6330.js} +5 -5
  238. package/cjs/{PieChart-31a4d639.js.map → PieChart-6d6e6330.js.map} +1 -1
  239. package/cjs/{Popup-5bf59d47.js → Popup-cc742f4a.js} +9 -9
  240. package/cjs/{Popup-5bf59d47.js.map → Popup-cc742f4a.js.map} +1 -1
  241. package/cjs/{ProgressBar-8a5dc398.js → ProgressBar-3fa6bb2c.js} +3 -3
  242. package/cjs/{ProgressBar-8a5dc398.js.map → ProgressBar-3fa6bb2c.js.map} +1 -1
  243. package/cjs/ProgressButton-b33d7947.js +3 -3
  244. package/cjs/ProgressButtonLabelLayout-26719e28.js +3 -3
  245. package/cjs/{ProgressCircle-ea17b6f7.js → ProgressCircle-d5c3fb49.js} +2 -2
  246. package/cjs/{ProgressCircle-ea17b6f7.js.map → ProgressCircle-d5c3fb49.js.map} +1 -1
  247. package/cjs/RadioItem-b15d604f.js +6 -6
  248. package/cjs/RatingGauge-0e0b34d4.js +7 -7
  249. package/cjs/ReadonlyTextFieldInput-af4ddced.js +1 -1
  250. package/cjs/ReadonlyTextFieldVariants.styles.css +20 -20
  251. package/cjs/ReadonlyTextFieldVariants.styles2.css +20 -20
  252. package/cjs/RemovableNavigationListItem-727e53e8.js +1 -1
  253. package/cjs/RemovableTabBarItem-da075122.js +2 -2
  254. package/cjs/ReorderableTabBar-ded69f11.js +2 -2
  255. package/cjs/RevealToggleIcon-02ef5d24.js +1 -1
  256. package/cjs/SectionalLegend-fba43a68.js +4 -4
  257. package/cjs/{SectionedContent-855ddd57.js → SectionedContent-97955b41.js} +5 -5
  258. package/cjs/{SectionedContent-855ddd57.js.map → SectionedContent-97955b41.js.map} +1 -1
  259. package/cjs/SelectMultiple-2d4eba14.js +8 -8
  260. package/cjs/SelectSingle-731c2ecd.js +7 -7
  261. package/cjs/{SelectionCard-f26fdc87.js → SelectionCard-45a56f1b.js} +2 -2
  262. package/cjs/{SelectionCard-f26fdc87.js.map → SelectionCard-45a56f1b.js.map} +1 -1
  263. package/cjs/Selector-66230e31.js +1 -1
  264. package/cjs/{SelectorAll-f391f675.js → SelectorAll-f2d03afc.js} +7 -7
  265. package/cjs/{SelectorAll-f391f675.js.map → SelectorAll-f2d03afc.js.map} +1 -1
  266. package/cjs/{Sheet-d9371321.js → Sheet-1650f94c.js} +3 -3
  267. package/cjs/{Sheet-d9371321.js.map → Sheet-1650f94c.js.map} +1 -1
  268. package/cjs/SplitMenuButton-0cf8e5a6.js +3 -3
  269. package/cjs/StyledTextField-c9e9ba81.js +3 -3
  270. package/cjs/Submenu-fbcfb818.js +1 -1
  271. package/cjs/TabBar-c13ce35f.js +6 -6
  272. package/cjs/TabBarItem-5a7d5d03.js +3 -3
  273. package/cjs/TabBarLayout-846a4d9a.js +1 -1
  274. package/cjs/TabBarMixed-81309400.js +6 -6
  275. package/cjs/{TabBarMixedSeparator-0e258647.js → TabBarMixedSeparator-0f55c6f6.js} +2 -2
  276. package/cjs/{TabBarMixedSeparator-0e258647.js.map → TabBarMixedSeparator-0f55c6f6.js.map} +1 -1
  277. package/cjs/Table-b137c360.js +8 -8
  278. package/cjs/TagCloud-013c9587.js +9 -9
  279. package/cjs/TextArea-096f18ad.js +5 -5
  280. package/cjs/TextAreaAutosize-4d30faec.js +5 -5
  281. package/cjs/TextField-bb91aeef.js +3 -3
  282. package/cjs/TextFieldInput-a2e8dd01.js +1 -1
  283. package/cjs/Theme-redwood/theme.css +193 -193
  284. package/cjs/Theme-stable/theme.css +329 -329
  285. package/cjs/TimeComponentCanvas2D-4de3cd67.js +5 -5
  286. package/cjs/Toolbar-3be490b0.js +1 -1
  287. package/cjs/{TruncatingBadge-bc95a171.js → TruncatingBadge-6e6a04cd.js} +4 -4
  288. package/cjs/{TruncatingBadge-bc95a171.js.map → TruncatingBadge-6e6a04cd.js.map} +1 -1
  289. package/cjs/{TruncatingText-ba11c4fe.js → TruncatingText-c7ab9968.js} +4 -4
  290. package/cjs/{TruncatingText-ba11c4fe.js.map → TruncatingText-c7ab9968.js.map} +1 -1
  291. package/cjs/UNSAFE_ActionCard.js +2 -2
  292. package/cjs/UNSAFE_BarChart/__test__/BarChart.spec.js +35 -35
  293. package/cjs/UNSAFE_BarChart.js +35 -35
  294. package/cjs/UNSAFE_BaseButton.js +3 -3
  295. package/cjs/UNSAFE_Button.js +3 -3
  296. package/cjs/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +19 -19
  297. package/cjs/UNSAFE_ButtonSet.js +4 -4
  298. package/cjs/UNSAFE_ButtonSetButton.js +3 -3
  299. package/cjs/UNSAFE_ButtonSetIconButton.js +15 -15
  300. package/cjs/UNSAFE_ButtonSetItem.js +15 -15
  301. package/cjs/UNSAFE_ButtonSetMultiple.js +4 -4
  302. package/cjs/UNSAFE_ButtonSetSingle.js +4 -4
  303. package/cjs/UNSAFE_CardFlexView.js +20 -20
  304. package/cjs/UNSAFE_CardGridView.js +20 -20
  305. package/cjs/UNSAFE_Center.js +5 -5
  306. package/cjs/UNSAFE_ChartWithLegend.js +4 -4
  307. package/cjs/UNSAFE_Checkbox.js +22 -22
  308. package/cjs/UNSAFE_CheckboxItem.js +23 -23
  309. package/cjs/UNSAFE_CheckboxSet.js +22 -22
  310. package/cjs/UNSAFE_Chip.js +2 -2
  311. package/cjs/UNSAFE_Collapsible.js +17 -17
  312. package/cjs/UNSAFE_ComponentMessage.js +18 -18
  313. package/cjs/UNSAFE_ConveyorBelt.js +15 -15
  314. package/cjs/UNSAFE_DatePicker.js +24 -24
  315. package/cjs/UNSAFE_Diagram.js +15 -15
  316. package/cjs/UNSAFE_Dialog.js +11 -11
  317. package/cjs/UNSAFE_DragHandle.js +16 -16
  318. package/cjs/UNSAFE_DrawerLayout.js +15 -13
  319. package/cjs/UNSAFE_DrawerLayout.js.map +1 -1
  320. package/cjs/UNSAFE_DrawerPopup.js +10 -10
  321. package/cjs/UNSAFE_Dropdown.js +12 -12
  322. package/cjs/UNSAFE_Environment.js +4 -4
  323. package/cjs/UNSAFE_ExpandableList.js +22 -22
  324. package/cjs/UNSAFE_FilePicker.js +4 -4
  325. package/cjs/UNSAFE_Flex.js +4 -4
  326. package/cjs/UNSAFE_Floating.js +10 -10
  327. package/cjs/UNSAFE_FormLayout.js +2 -2
  328. package/cjs/UNSAFE_Gantt.js +22 -22
  329. package/cjs/UNSAFE_Grid.js +4 -4
  330. package/cjs/UNSAFE_HighlightText.js +4 -4
  331. package/cjs/UNSAFE_Icon.js +15 -15
  332. package/cjs/UNSAFE_IconButton.js +15 -15
  333. package/cjs/UNSAFE_IconMenuButton.js +19 -19
  334. package/cjs/UNSAFE_IconProgressButton.js +19 -19
  335. package/cjs/UNSAFE_IconToggleButton.js +15 -15
  336. package/cjs/UNSAFE_Indexer.js +6 -6
  337. package/cjs/UNSAFE_InputDateMask.js +23 -23
  338. package/cjs/UNSAFE_InputDatePicker.js +111 -111
  339. package/cjs/UNSAFE_InputPassword.js +22 -22
  340. package/cjs/UNSAFE_InputSensitiveText.js +24 -24
  341. package/cjs/UNSAFE_InputText.js +25 -25
  342. package/cjs/UNSAFE_Label.js +22 -22
  343. package/cjs/UNSAFE_LabelValueLayout.js +4 -4
  344. package/cjs/UNSAFE_LabelledLink.js +24 -24
  345. package/cjs/UNSAFE_Layer.js +7 -7
  346. package/cjs/UNSAFE_Legend.js +22 -22
  347. package/cjs/UNSAFE_LineAreaChart/__test__/LineChart.spec.js +34 -34
  348. package/cjs/UNSAFE_LineAreaChart.js +35 -35
  349. package/cjs/UNSAFE_Link.js +2 -2
  350. package/cjs/UNSAFE_ListItemLayout.js +5 -5
  351. package/cjs/UNSAFE_ListView.js +25 -25
  352. package/cjs/UNSAFE_LiveRegion.js +4 -4
  353. package/cjs/UNSAFE_Menu.js +21 -21
  354. package/cjs/UNSAFE_MenuButton.js +19 -19
  355. package/cjs/UNSAFE_MessageBanner.js +18 -18
  356. package/cjs/UNSAFE_MessageToast.js +21 -21
  357. package/cjs/UNSAFE_MeterBar.js +16 -16
  358. package/cjs/UNSAFE_MeterCircle.js +16 -16
  359. package/cjs/UNSAFE_Modal.js +7 -7
  360. package/cjs/UNSAFE_NavigationList.js +19 -19
  361. package/cjs/UNSAFE_NavigationListCommon.js +17 -17
  362. package/cjs/UNSAFE_NumberInputText.js +24 -24
  363. package/cjs/UNSAFE_OverflowTabBar.js +24 -24
  364. package/cjs/UNSAFE_PictoChart.js +13 -13
  365. package/cjs/UNSAFE_PieChart/__test__/PieChart.spec.js +14 -14
  366. package/cjs/UNSAFE_PieChart.js +14 -14
  367. package/cjs/UNSAFE_Popup.js +15 -15
  368. package/cjs/UNSAFE_ProgressBar.js +5 -5
  369. package/cjs/UNSAFE_ProgressButton.js +19 -19
  370. package/cjs/UNSAFE_ProgressButtonLabelLayout.js +10 -10
  371. package/cjs/UNSAFE_ProgressCircle.js +4 -4
  372. package/cjs/UNSAFE_RadioItem.js +22 -22
  373. package/cjs/UNSAFE_RadioSet.js +22 -22
  374. package/cjs/UNSAFE_RatingGauge.js +16 -16
  375. package/cjs/UNSAFE_ReorderableTabBar.js +21 -21
  376. package/cjs/UNSAFE_SectionalLegend.js +23 -23
  377. package/cjs/UNSAFE_SelectMultiple.js +30 -30
  378. package/cjs/UNSAFE_SelectSingle.js +30 -30
  379. package/cjs/UNSAFE_SelectionCard.js +4 -4
  380. package/cjs/UNSAFE_Selector.js +15 -15
  381. package/cjs/UNSAFE_SelectorAll.js +19 -19
  382. package/cjs/UNSAFE_Sheet/__test__/Sheet.spec.js +13 -13
  383. package/cjs/UNSAFE_Sheet.js +10 -10
  384. package/cjs/UNSAFE_SplitMenuButton.js +19 -19
  385. package/cjs/UNSAFE_TabBar.js +25 -25
  386. package/cjs/UNSAFE_TabBarCommon.js +24 -24
  387. package/cjs/UNSAFE_TabBarMixed.js +28 -28
  388. package/cjs/UNSAFE_TableView.js +18 -18
  389. package/cjs/UNSAFE_TagCloud.js +22 -22
  390. package/cjs/UNSAFE_TextArea.js +24 -24
  391. package/cjs/UNSAFE_TextAreaAutosize.js +24 -24
  392. package/cjs/UNSAFE_TextField.js +7 -7
  393. package/cjs/UNSAFE_ToggleButton.js +3 -3
  394. package/cjs/UNSAFE_Toolbar/tests/Toolbar.spec.js +21 -21
  395. package/cjs/UNSAFE_Toolbar.js +4 -4
  396. package/cjs/UNSAFE_Train.js +16 -16
  397. package/cjs/UNSAFE_TruncatingBadge.js +17 -17
  398. package/cjs/UNSAFE_TruncatingText.js +17 -17
  399. package/cjs/UNSAFE_UserAssistance.js +23 -23
  400. package/cjs/UNSAFE_View.js +7 -7
  401. package/cjs/UNSAFE_VirtualizedListView.js +19 -19
  402. package/cjs/UNSAFE_VisProgressiveLoader/__test__/VisProgressiveLoader.spec.js +8 -8
  403. package/cjs/UNSAFE_VisProgressiveLoader.js +6 -6
  404. package/cjs/UNSAFE_VisStatusMessage.js +6 -6
  405. package/cjs/UNSAFE_WindowOverlay.js +4 -4
  406. package/cjs/{View-5930179e.js → View-145a402d.js} +5 -5
  407. package/cjs/{View-5930179e.js.map → View-145a402d.js.map} +1 -1
  408. package/cjs/{VisNoData-2a2477d9.js → VisNoData-d9717007.js} +3 -3
  409. package/cjs/{VisNoData-2a2477d9.js.map → VisNoData-d9717007.js.map} +1 -1
  410. package/cjs/{VisProgressiveLoader-dacfe618.js → VisProgressiveLoader-5ed4eb9d.js} +3 -3
  411. package/cjs/{VisProgressiveLoader-dacfe618.js.map → VisProgressiveLoader-5ed4eb9d.js.map} +1 -1
  412. package/cjs/{VisTabularDatatip-eca8aa8f.js → VisTabularDatatip-a06f4ca3.js} +2 -2
  413. package/cjs/{VisTabularDatatip-eca8aa8f.js.map → VisTabularDatatip-a06f4ca3.js.map} +1 -1
  414. package/cjs/{WindowOverlay-06408f56.js → WindowOverlay-de3bd373.js} +2 -2
  415. package/cjs/{WindowOverlay-06408f56.js.map → WindowOverlay-de3bd373.js.map} +1 -1
  416. package/cjs/{YearsGridView-a80db2d0.js → YearsGridView-c0c0a96d.js} +4 -4
  417. package/cjs/{YearsGridView-a80db2d0.js.map → YearsGridView-c0c0a96d.js.map} +1 -1
  418. package/cjs/hoc/PRIVATE_withDirectionIcon.js +4 -4
  419. package/cjs/hoc/PRIVATE_withThemeIcon.js +3 -3
  420. package/cjs/hoc/UNSAFE_withThemeProps.js +3 -3
  421. package/cjs/hooks/PRIVATE_useChartContextMenu.js +18 -18
  422. package/cjs/hooks/PRIVATE_useChartDatatip.js +13 -13
  423. package/cjs/hooks/PRIVATE_useChartEvents.js +17 -17
  424. package/cjs/hooks/PRIVATE_useChartMarquee.js +17 -17
  425. package/cjs/hooks/PRIVATE_useCssVars.js +7 -7
  426. package/cjs/hooks/PRIVATE_useCurrentKey.js +4 -4
  427. package/cjs/hooks/PRIVATE_useDatatip.js +11 -11
  428. package/cjs/hooks/PRIVATE_useFloating.js +4 -4
  429. package/cjs/hooks/PRIVATE_useReorderable.js +4 -4
  430. package/cjs/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  431. package/cjs/hooks/PRIVATE_useSelection.js +4 -4
  432. package/cjs/hooks/PRIVATE_useTabBar.js +5 -5
  433. package/cjs/hooks/PRIVATE_useVisContextMenu.js +18 -18
  434. package/cjs/hooks/PRIVATE_useVisEvents.js +4 -4
  435. package/cjs/hooks/PRIVATE_useVisMeterEvents.js +13 -13
  436. package/cjs/hooks/PRIVATE_useVisSelection.js +12 -12
  437. package/cjs/hooks/UNSAFE_useColorScheme.js +3 -3
  438. package/cjs/hooks/UNSAFE_useCurrentBgColor.js +3 -3
  439. package/cjs/hooks/UNSAFE_useDensity.js +3 -3
  440. package/cjs/hooks/UNSAFE_useOutsideClick.js +7 -7
  441. package/cjs/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  442. package/cjs/hooks/UNSAFE_useScale.js +3 -3
  443. package/cjs/hooks/UNSAFE_useTestId.js +3 -3
  444. package/cjs/hooks/UNSAFE_useTheme.js +3 -3
  445. package/cjs/hooks/UNSAFE_useThemeInterpolations.js +5 -5
  446. package/cjs/hooks/UNSAFE_useTooltip.js +16 -16
  447. package/cjs/hooks/UNSAFE_useTranslationBundle.js +3 -3
  448. package/cjs/hooks/UNSAFE_useUser.js +3 -3
  449. package/cjs/{index-3be205e4.js → index-0693e95d.js} +2 -2
  450. package/cjs/index-0693e95d.js.map +1 -0
  451. package/cjs/listViewSelectionTests-b4a48819.js +4 -4
  452. package/cjs/{render-1f26ad67.js → render-0c893805.js} +3 -3
  453. package/cjs/{render-1f26ad67.js.map → render-0c893805.js.map} +1 -1
  454. package/cjs/{tabbableUtils-885d29a2.js → tabbableUtils-63f5918b.js} +3 -3
  455. package/cjs/{tabbableUtils-885d29a2.js.map → tabbableUtils-63f5918b.js.map} +1 -1
  456. package/cjs/{testData-d3502546.js → testData-f0b1927d.js} +3 -3
  457. package/cjs/{testData-d3502546.js.map → testData-f0b1927d.js.map} +1 -1
  458. package/cjs/{tooltipUtils-80224e2c.js → tooltipUtils-7857f698.js} +5 -5
  459. package/cjs/{tooltipUtils-80224e2c.js.map → tooltipUtils-7857f698.js.map} +1 -1
  460. package/cjs/useCellNavigation-6f7cd4c8.js +1 -1
  461. package/cjs/useChartContextMenu-1b415a9b.js +3 -3
  462. package/cjs/{useChartDatatip-95ef7e3b.js → useChartDatatip-bbe0ccc2.js} +4 -4
  463. package/cjs/{useChartDatatip-95ef7e3b.js.map → useChartDatatip-bbe0ccc2.js.map} +1 -1
  464. package/cjs/useChartMarquee-0900e36a.js +1 -1
  465. package/cjs/{useColorScheme-ce2a88b1.js → useColorScheme-e6bef5a4.js} +2 -2
  466. package/cjs/{useColorScheme-ce2a88b1.js.map → useColorScheme-e6bef5a4.js.map} +1 -1
  467. package/cjs/useContextMenu-0b63c292.js +3 -3
  468. package/cjs/{useCssVars-bd95e715.js → useCssVars-9bea15a9.js} +5 -5
  469. package/cjs/{useCssVars-bd95e715.js.map → useCssVars-9bea15a9.js.map} +1 -1
  470. package/cjs/{useCurrentBgColor-6e39eb3a.js → useCurrentBgColor-6835bf45.js} +2 -2
  471. package/cjs/{useCurrentBgColor-6e39eb3a.js.map → useCurrentBgColor-6835bf45.js.map} +1 -1
  472. package/cjs/{useCurrentKey-821dd4cf.js → useCurrentKey-3c1736a2.js} +2 -2
  473. package/cjs/{useCurrentKey-821dd4cf.js.map → useCurrentKey-3c1736a2.js.map} +1 -1
  474. package/cjs/{useDatatip-3d87ecae.js → useDatatip-36741e5a.js} +4 -4
  475. package/cjs/{useDatatip-3d87ecae.js.map → useDatatip-36741e5a.js.map} +1 -1
  476. package/cjs/{useDensity-1f8cc921.js → useDensity-38283c57.js} +2 -2
  477. package/cjs/{useDensity-1f8cc921.js.map → useDensity-38283c57.js.map} +1 -1
  478. package/cjs/{useFloating-f89e60f9.js → useFloating-2b73fcfb.js} +2 -2
  479. package/cjs/{useFloating-f89e60f9.js.map → useFloating-2b73fcfb.js.map} +1 -1
  480. package/cjs/{useKeyboardEvents-5e808fe3.js → useKeyboardEvents-7ab0d8ee.js} +2 -2
  481. package/cjs/{useKeyboardEvents-5e808fe3.js.map → useKeyboardEvents-7ab0d8ee.js.map} +1 -1
  482. package/cjs/useLegendContextMenu-44b38b7d.js +5 -5
  483. package/cjs/{useMeterDatatip-bb4cbbdb.js → useMeterDatatip-7a14c350.js} +3 -3
  484. package/cjs/{useMeterDatatip-bb4cbbdb.js.map → useMeterDatatip-7a14c350.js.map} +1 -1
  485. package/cjs/{useOutsideClick-fe4d642b.js → useOutsideClick-cc17641a.js} +2 -2
  486. package/cjs/{useOutsideClick-fe4d642b.js.map → useOutsideClick-cc17641a.js.map} +1 -1
  487. package/cjs/{usePopupAnimation-db67ce3c.js → usePopupAnimation-c88cbb64.js} +2 -2
  488. package/cjs/{usePopupAnimation-db67ce3c.js.map → usePopupAnimation-c88cbb64.js.map} +1 -1
  489. package/cjs/{usePrefixSuffix-23341de3.js → usePrefixSuffix-1de3a724.js} +2 -2
  490. package/cjs/{usePrefixSuffix-23341de3.js.map → usePrefixSuffix-1de3a724.js.map} +1 -1
  491. package/cjs/useReorderableItem-bd9f073e.js +2 -2
  492. package/cjs/{useRovingTabIndexContainer-1e61d935.js → useRovingTabIndexContainer-fcf1e77b.js} +2 -2
  493. package/cjs/{useRovingTabIndexContainer-1e61d935.js.map → useRovingTabIndexContainer-fcf1e77b.js.map} +1 -1
  494. package/cjs/{useScale-a681a5cb.js → useScale-a47864b4.js} +2 -2
  495. package/cjs/{useScale-a681a5cb.js.map → useScale-a47864b4.js.map} +1 -1
  496. package/cjs/useSelectCommon-12313cdd.js +11 -11
  497. package/cjs/{useSelectDrill-46b40346.js → useSelectDrill-fef4f69b.js} +3 -3
  498. package/cjs/{useSelectDrill-46b40346.js.map → useSelectDrill-fef4f69b.js.map} +1 -1
  499. package/cjs/{useSelection-b45ea7ae.js → useSelection-53bc100d.js} +2 -2
  500. package/cjs/{useSelection-b45ea7ae.js.map → useSelection-53bc100d.js.map} +1 -1
  501. package/cjs/{useSelection-c2d93034.js → useSelection-82cc9108.js} +5 -5
  502. package/cjs/{useSelection-c2d93034.js.map → useSelection-82cc9108.js.map} +1 -1
  503. package/cjs/{useTabBar-336e81bf.js → useTabBar-c4835f2d.js} +2 -2
  504. package/cjs/{useTabBar-336e81bf.js.map → useTabBar-c4835f2d.js.map} +1 -1
  505. package/cjs/{useTestId-5e6af45d.js → useTestId-e267a39d.js} +2 -2
  506. package/cjs/{useTestId-5e6af45d.js.map → useTestId-e267a39d.js.map} +1 -1
  507. package/cjs/{useTheme-8fb5546b.js → useTheme-6cedf9c8.js} +2 -2
  508. package/cjs/{useTheme-8fb5546b.js.map → useTheme-6cedf9c8.js.map} +1 -1
  509. package/cjs/{useThemeInterpolations-799504a1.js → useThemeInterpolations-67125573.js} +4 -4
  510. package/cjs/{useThemeInterpolations-799504a1.js.map → useThemeInterpolations-67125573.js.map} +1 -1
  511. package/cjs/{useTooltip-f27c5cd0.js → useTooltip-e96e07ae.js} +2 -2
  512. package/cjs/{useTooltip-f27c5cd0.js.map → useTooltip-e96e07ae.js.map} +1 -1
  513. package/cjs/{useTooltipControlled-31213955.js → useTooltipControlled-24a9c567.js} +5 -5
  514. package/cjs/{useTooltipControlled-31213955.js.map → useTooltipControlled-24a9c567.js.map} +1 -1
  515. package/cjs/{useTranslationBundle-51f4c22c.js → useTranslationBundle-6b0281a9.js} +2 -2
  516. package/cjs/{useTranslationBundle-51f4c22c.js.map → useTranslationBundle-6b0281a9.js.map} +1 -1
  517. package/cjs/{useUser-a4bfc560.js → useUser-8aaad5a7.js} +2 -2
  518. package/cjs/{useUser-a4bfc560.js.map → useUser-8aaad5a7.js.map} +1 -1
  519. package/cjs/{useVisEvents-fe2344c8.js → useVisEvents-63ddac11.js} +2 -2
  520. package/cjs/{useVisEvents-fe2344c8.js.map → useVisEvents-63ddac11.js.map} +1 -1
  521. package/cjs/utils/PRIVATE_tooltipUtils.js +13 -13
  522. package/cjs/utils/PRIVATE_visTestUtils.js +5 -5
  523. package/cjs/{withDirectionIcon-1affce30.js → withDirectionIcon-7f758093.js} +2 -2
  524. package/cjs/{withDirectionIcon-1affce30.js.map → withDirectionIcon-7f758093.js.map} +1 -1
  525. package/cjs/withThemeProps-6e15f1c3.js +2 -2
  526. package/es/ActionCard-ba1c946e.js +1 -1
  527. package/es/{BarChart-c68a559c.js → BarChart-cbd9c2bf.js} +4 -4
  528. package/es/{BarChart-c68a559c.js.map → BarChart-cbd9c2bf.js.map} +1 -1
  529. package/es/BaseButton-5a3335d9.js +2 -2
  530. package/es/BaseCardView-e0e8a69b.js +6 -6
  531. package/es/{BaseCardViewSelectionTest-120542e8.js → BaseCardViewSelectionTest-2159b609.js} +6 -6
  532. package/es/{BaseCardViewSelectionTest-120542e8.js.map → BaseCardViewSelectionTest-2159b609.js.map} +1 -1
  533. package/es/{useNavigationListItem-31226722.js → BaseNavigationListItem-ac7ef3c3.js} +41 -3
  534. package/es/BaseNavigationListItem-ac7ef3c3.js.map +1 -0
  535. package/es/ButtonLayoutVariants.styles.css +2 -2
  536. package/es/ButtonLayoutVariants.styles2.css +2 -2
  537. package/es/ButtonSet-ac76e6e2.js +2 -2
  538. package/es/ButtonSetIconButton-9241b9fb.js +3 -3
  539. package/es/{Center-8b48ab02.js → Center-9f355d44.js} +2 -2
  540. package/es/{Center-8b48ab02.js.map → Center-9f355d44.js.map} +1 -1
  541. package/es/{Chart-f2438968.js → Chart-8922a0b3.js} +11 -11
  542. package/es/{Chart-f2438968.js.map → Chart-8922a0b3.js.map} +1 -1
  543. package/es/CheckboxControl-f5e36d0d.js +6 -6
  544. package/es/CheckboxRadioField-bdda2573.js +6 -6
  545. package/es/Chip-f2df2078.js +1 -1
  546. package/es/ClearIcon-b5083cc8.js +1 -1
  547. package/es/CollapseIcon-de129943.js +1 -1
  548. package/es/Collapsible-09cc493a.js +2 -2
  549. package/es/CompactHelpSource-1686edf6.js +2 -2
  550. package/es/{CompactLabelAssistance-fa8264fa.js → CompactLabelAssistance-61df6dbf.js} +5 -5
  551. package/es/{CompactLabelAssistance-fa8264fa.js.map → CompactLabelAssistance-61df6dbf.js.map} +1 -1
  552. package/es/CompactUserAssistance-3a10afd4.js +4 -4
  553. package/es/ComponentMessageContainer-18e7fe34.js +4 -4
  554. package/es/ConveyorBeltItem-c8d4ba1b.js +2 -2
  555. package/es/{DatePicker-26b8d37b.js → DatePicker-d4e027c2.js} +6 -6
  556. package/es/{DatePicker-26b8d37b.js.map → DatePicker-d4e027c2.js.map} +1 -1
  557. package/es/DatePickerHeader-79f0b61b.js +3 -3
  558. package/es/{Diagram-6f1ad2ea.js → Diagram-d7fdc75f.js} +5 -5
  559. package/es/{Diagram-6f1ad2ea.js.map → Diagram-d7fdc75f.js.map} +1 -1
  560. package/es/{Dialog-5e92dcd1.js → Dialog-cf69547f.js} +6 -6
  561. package/es/{Dialog-5e92dcd1.js.map → Dialog-cf69547f.js.map} +1 -1
  562. package/es/DirectionalCollapseArrowIcon-20259aab.js +1 -1
  563. package/es/DirectionalExpandArrowIcon-36ba273c.js +1 -1
  564. package/es/DragHandle-3b768189.js +1 -1
  565. package/es/DrawerLayoutStyles.styles.css +1 -0
  566. package/es/{Dropdown-f45f823c.js → Dropdown-d017dd0a.js} +5 -5
  567. package/es/{Dropdown-f45f823c.js.map → Dropdown-d017dd0a.js.map} +1 -1
  568. package/es/{EnvironmentProvider-0fc2fd0c.js → EnvironmentProvider-a3819bde.js} +3 -3
  569. package/es/{EnvironmentProvider-0fc2fd0c.js.map → EnvironmentProvider-a3819bde.js.map} +1 -1
  570. package/es/FilePicker-f4582615.js +2 -2
  571. package/es/{Flex-8696b27b.js → Flex-2d51e914.js} +2 -2
  572. package/es/{Flex-8696b27b.js.map → Flex-2d51e914.js.map} +1 -1
  573. package/es/{Floating-f9bbd276.js → Floating-aebc0f85.js} +4 -4
  574. package/es/{Floating-f9bbd276.js.map → Floating-aebc0f85.js.map} +1 -1
  575. package/es/FormLayout-221e1aa8.js +1 -1
  576. package/es/Gantt-46f5f954.js +9 -9
  577. package/es/{Grid-7fd29a9e.js → Grid-c2385b22.js} +2 -2
  578. package/es/{Grid-7fd29a9e.js.map → Grid-c2385b22.js.map} +1 -1
  579. package/es/{Gridlines-dcdc34bc.js → Gridlines-0e7b33f5.js} +2 -2
  580. package/es/{Gridlines-dcdc34bc.js.map → Gridlines-0e7b33f5.js.map} +1 -1
  581. package/es/GroupLoadingIndicator-2bfdba44.js +1 -1
  582. package/es/{HighlightText-cc043982.js → HighlightText-d505bf35.js} +2 -2
  583. package/es/{HighlightText-cc043982.js.map → HighlightText-d505bf35.js.map} +1 -1
  584. package/es/Icon-4171c0d7.js +3 -3
  585. package/es/IconButton-451a225c.js +3 -3
  586. package/es/IconMenuButton-e46f8d54.js +4 -4
  587. package/es/IconProgressButton-8f2f6b27.js +3 -3
  588. package/es/IconSwitchButton-5ff7b0fe.js +3 -3
  589. package/es/IconToggleButton-375f006f.js +3 -3
  590. package/es/{IconUserAssistance-dd56b812.js → IconUserAssistance-7cfd1ed2.js} +3 -3
  591. package/es/{IconUserAssistance-dd56b812.js.map → IconUserAssistance-7cfd1ed2.js.map} +1 -1
  592. package/es/Indexer-658cee69.js +4 -4
  593. package/es/InlineHelpSource-fcdcd122.js +1 -1
  594. package/es/InlineUserAssistance-e6deb149.js +5 -5
  595. package/es/InputDateMask-3d511e39.js +7 -7
  596. package/es/{InputDatePicker-6a5d95c8.js → InputDatePicker-81a18a57.js} +10 -10
  597. package/es/{InputDatePicker-6a5d95c8.js.map → InputDatePicker-81a18a57.js.map} +1 -1
  598. package/es/InputPassword-47130b3c.js +4 -4
  599. package/es/InputText-4799b2ed.js +6 -6
  600. package/es/Label-ab276ca9.js +5 -5
  601. package/es/LabelValueLayout-bcf482be.js +1 -1
  602. package/es/{Layer-71fc666f.js → Layer-915d986a.js} +3 -3
  603. package/es/{Layer-71fc666f.js.map → Layer-915d986a.js.map} +1 -1
  604. package/es/{LayerHost-15b42a3e.js → LayerHost-7a2149f5.js} +2 -2
  605. package/es/{LayerHost-15b42a3e.js.map → LayerHost-7a2149f5.js.map} +1 -1
  606. package/es/{LayerManager-af39e736.js → LayerManager-be34be40.js} +2 -2
  607. package/es/{LayerManager-af39e736.js.map → LayerManager-be34be40.js.map} +1 -1
  608. package/es/Legend-ae0296f0.js +3 -3
  609. package/es/{LineAreaChart-3a7bc509.js → LineAreaChart-85b37b1c.js} +4 -4
  610. package/es/{LineAreaChart-3a7bc509.js.map → LineAreaChart-85b37b1c.js.map} +1 -1
  611. package/es/Link-9072aa54.js +1 -1
  612. package/es/List-1d23e84f.js +5 -5
  613. package/es/{ListItemLayout-32895900.js → ListItemLayout-01286b56.js} +2 -2
  614. package/es/{ListItemLayout-32895900.js.map → ListItemLayout-01286b56.js.map} +1 -1
  615. package/es/ListView-8eba90e8.js +3 -3
  616. package/es/{LiveRegion-cb4f8a54.js → LiveRegion-5302331c.js} +2 -2
  617. package/es/{LiveRegion-cb4f8a54.js.map → LiveRegion-5302331c.js.map} +1 -1
  618. package/es/{MaxLengthLiveRegion-59087064.js → MaxLengthLiveRegion-9b386b63.js} +3 -3
  619. package/es/{MaxLengthLiveRegion-59087064.js.map → MaxLengthLiveRegion-9b386b63.js.map} +1 -1
  620. package/es/{Menu-b5deea24.js → Menu-e44a3e0b.js} +8 -8
  621. package/es/{Menu-b5deea24.js.map → Menu-e44a3e0b.js.map} +1 -1
  622. package/es/MenuButton-49b7965d.js +3 -3
  623. package/es/MenuItem-be46866f.js +1 -1
  624. package/es/Message-322f8d63.js +2 -2
  625. package/es/{MessageLayer-34a390eb.js → MessageLayer-f09b0a1b.js} +6 -6
  626. package/es/{MessageLayer-34a390eb.js.map → MessageLayer-f09b0a1b.js.map} +1 -1
  627. package/es/MessageToast-66bdffe6.js +8 -8
  628. package/es/MessagesManager-a1c3e92e.js +3 -3
  629. package/es/MeterBar-9ad34b98.js +5 -5
  630. package/es/MeterCircle-6bd257c8.js +5 -5
  631. package/es/{Modal-3fd86d5a.js → Modal-862b8167.js} +3 -3
  632. package/es/{Modal-3fd86d5a.js.map → Modal-862b8167.js.map} +1 -1
  633. package/es/{MonthView-7521b583.js → MonthView-3d90f424.js} +5 -5
  634. package/es/{MonthView-7521b583.js.map → MonthView-3d90f424.js.map} +1 -1
  635. package/es/{NavigationList-d8f472fe.js → NavigationListItem-a336f06f.js} +22 -5
  636. package/es/NavigationListItem-a336f06f.js.map +1 -0
  637. package/es/NavigationListItemVariants.styles.css +5 -5
  638. package/es/NavigationListItemVariants.styles2.css +5 -5
  639. package/es/NumberInputText-eca11601.js +6 -6
  640. package/es/{OverflowTabBar-5f7698bb.js → OverflowTabBar-7d5212e3.js} +3 -3
  641. package/es/{OverflowTabBar-5f7698bb.js.map → OverflowTabBar-7d5212e3.js.map} +1 -1
  642. package/es/{OverflowTabBarItem-c0ef2c6b.js → OverflowTabBarItem-12249753.js} +6 -7
  643. package/es/{OverflowTabBarItem-c0ef2c6b.js.map → OverflowTabBarItem-12249753.js.map} +1 -1
  644. package/es/PRIVATE_BaseCardView.js +20 -20
  645. package/es/PRIVATE_Chart.js +34 -34
  646. package/es/PRIVATE_CheckboxControl.js +22 -22
  647. package/es/PRIVATE_CheckboxRadioField.js +23 -23
  648. package/es/PRIVATE_ClearIcon.js +17 -17
  649. package/es/PRIVATE_DatePickerHeader.js +19 -19
  650. package/es/PRIVATE_DatePickerLayout.js +4 -4
  651. package/es/PRIVATE_EmbeddedIconButton.js +3 -3
  652. package/es/PRIVATE_FormControls.js +19 -19
  653. package/es/PRIVATE_IconSwitchButton.js +15 -15
  654. package/es/PRIVATE_Icons/CheckboxMixed.js +15 -15
  655. package/es/PRIVATE_Icons/CheckboxOff.js +15 -15
  656. package/es/PRIVATE_Icons/CheckboxOn.js +15 -15
  657. package/es/PRIVATE_Icons/RadiobuttonOff.js +15 -15
  658. package/es/PRIVATE_Icons/RadiobuttonOn.js +15 -15
  659. package/es/PRIVATE_Icons/WarningS.js +15 -15
  660. package/es/PRIVATE_List.js +19 -19
  661. package/es/PRIVATE_Message.js +18 -18
  662. package/es/PRIVATE_MessageLayer.js +11 -11
  663. package/es/PRIVATE_MonthView.js +15 -15
  664. package/es/PRIVATE_MonthYearGridView.js +13 -13
  665. package/es/PRIVATE_PlotArea.js +4 -4
  666. package/es/PRIVATE_RevealToggleIcon.js +16 -16
  667. package/es/PRIVATE_SelectCommon.js +27 -27
  668. package/es/PRIVATE_StyledCheckbox.js +15 -15
  669. package/es/PRIVATE_Table.js +18 -18
  670. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +15 -15
  671. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +15 -15
  672. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +15 -15
  673. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +15 -15
  674. package/es/PRIVATE_ThemedIcons/CheckIcon.js +15 -15
  675. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +15 -15
  676. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +15 -15
  677. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +15 -15
  678. package/es/PRIVATE_ThemedIcons/CloseIcon.js +15 -15
  679. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +16 -16
  680. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +15 -15
  681. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +15 -15
  682. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +15 -15
  683. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +16 -16
  684. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +16 -16
  685. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +15 -15
  686. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +15 -15
  687. package/es/PRIVATE_ThemedIcons/HelpIcon.js +15 -15
  688. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +15 -15
  689. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +15 -15
  690. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +15 -15
  691. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +15 -15
  692. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +15 -15
  693. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +15 -15
  694. package/es/PRIVATE_ThemedIcons/MinusIcon.js +15 -15
  695. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +15 -15
  696. package/es/PRIVATE_ThemedIcons/PlusIcon.js +15 -15
  697. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +15 -15
  698. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +15 -15
  699. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +15 -15
  700. package/es/PRIVATE_ThemedIcons/SortDefaultIcon.js +15 -15
  701. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +15 -15
  702. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +15 -15
  703. package/es/PRIVATE_ThemedIcons/ViewIcon.js +15 -15
  704. package/es/PRIVATE_TimeComponent.js +18 -18
  705. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  706. package/es/PictoChart-3dd90503.js +6 -6
  707. package/es/{PieChart-cdb56906.js → PieChart-d4f63bd8.js} +5 -5
  708. package/es/{PieChart-cdb56906.js.map → PieChart-d4f63bd8.js.map} +1 -1
  709. package/es/{Popup-8becd87a.js → Popup-7cc4028b.js} +9 -9
  710. package/es/{Popup-8becd87a.js.map → Popup-7cc4028b.js.map} +1 -1
  711. package/es/{ProgressBar-2565d814.js → ProgressBar-d647bba4.js} +3 -3
  712. package/es/{ProgressBar-2565d814.js.map → ProgressBar-d647bba4.js.map} +1 -1
  713. package/es/ProgressButton-645ce827.js +3 -3
  714. package/es/ProgressButtonLabelLayout-6cf150e0.js +3 -3
  715. package/es/{ProgressCircle-c7f945c0.js → ProgressCircle-13dc0e4f.js} +2 -2
  716. package/es/{ProgressCircle-c7f945c0.js.map → ProgressCircle-13dc0e4f.js.map} +1 -1
  717. package/es/RadioItem-af1bbece.js +6 -6
  718. package/es/RatingGauge-82a6a416.js +7 -7
  719. package/es/ReadonlyTextFieldInput-a15badb6.js +1 -1
  720. package/es/{RemovableNavigationListItem-1675a880.js → RemovableNavigationListItem-7032ce3e.js} +3 -4
  721. package/es/{RemovableNavigationListItem-1675a880.js.map → RemovableNavigationListItem-7032ce3e.js.map} +1 -1
  722. package/es/RemovableTabBarItem-16d04210.js +2 -2
  723. package/es/{ReorderableTabBar-8b432272.js → ReorderableTabBar-981af0f2.js} +4 -4
  724. package/es/{ReorderableTabBar-8b432272.js.map → ReorderableTabBar-981af0f2.js.map} +1 -1
  725. package/es/RevealToggleIcon-563c241c.js +1 -1
  726. package/es/SectionalLegend-a9b719ff.js +4 -4
  727. package/es/{SectionedContent-237bf539.js → SectionedContent-7e36073f.js} +5 -5
  728. package/es/{SectionedContent-237bf539.js.map → SectionedContent-7e36073f.js.map} +1 -1
  729. package/es/SelectMultiple-c1264885.js +8 -8
  730. package/es/SelectSingle-8336ec24.js +7 -7
  731. package/es/{SelectionCard-1711aae6.js → SelectionCard-a27bce15.js} +2 -2
  732. package/es/{SelectionCard-1711aae6.js.map → SelectionCard-a27bce15.js.map} +1 -1
  733. package/es/Selector-9f40e909.js +1 -1
  734. package/es/{SelectorAll-42ce8707.js → SelectorAll-40c76f0b.js} +7 -7
  735. package/es/{SelectorAll-42ce8707.js.map → SelectorAll-40c76f0b.js.map} +1 -1
  736. package/es/{Sheet-f7117b12.js → Sheet-34f3bcb4.js} +3 -3
  737. package/es/{Sheet-f7117b12.js.map → Sheet-34f3bcb4.js.map} +1 -1
  738. package/es/SplitMenuButton-74913bcc.js +3 -3
  739. package/es/StyledTextField-9df27ab4.js +3 -3
  740. package/es/Submenu-c6663c1d.js +1 -1
  741. package/es/{TabBar-dd778e55.js → TabBar-90cea652.js} +7 -12
  742. package/es/{TabBar-dd778e55.js.map → TabBar-90cea652.js.map} +1 -1
  743. package/es/TabBarItem-ba695c75.js +3 -3
  744. package/es/TabBarLayout-8caaa060.js +1 -1
  745. package/es/{TabBarMixed-995f2781.js → TabBarMixed-52ac388e.js} +7 -12
  746. package/es/{TabBarMixed-995f2781.js.map → TabBarMixed-52ac388e.js.map} +1 -1
  747. package/es/{TabBarMixedSeparator-da56f4c0.js → TabBarMixedSeparator-16c88691.js} +2 -2
  748. package/es/{TabBarMixedSeparator-da56f4c0.js.map → TabBarMixedSeparator-16c88691.js.map} +1 -1
  749. package/es/Table-3d484e2c.js +8 -8
  750. package/es/TagCloud-823b3d82.js +9 -9
  751. package/es/TextArea-6f18b955.js +5 -5
  752. package/es/TextAreaAutosize-4cf2754b.js +5 -5
  753. package/es/TextField-d4b4661d.js +3 -3
  754. package/es/TextFieldInput-84280715.js +1 -1
  755. package/es/Theme-redwood/theme.css +377 -377
  756. package/es/Theme-stable/theme.css +446 -446
  757. package/es/TimeComponentCanvas2D-72f4af98.js +5 -5
  758. package/es/Toolbar-85379f64.js +1 -1
  759. package/es/{TruncatingBadge-7eb77ed3.js → TruncatingBadge-e5f38bc8.js} +4 -4
  760. package/es/{TruncatingBadge-7eb77ed3.js.map → TruncatingBadge-e5f38bc8.js.map} +1 -1
  761. package/es/{TruncatingText-93807530.js → TruncatingText-c3719839.js} +4 -4
  762. package/es/{TruncatingText-93807530.js.map → TruncatingText-c3719839.js.map} +1 -1
  763. package/es/UNSAFE_ActionCard.js +2 -2
  764. package/es/UNSAFE_BarChart/__test__/BarChart.spec.js +35 -35
  765. package/es/UNSAFE_BarChart.js +35 -35
  766. package/es/UNSAFE_BaseButton.js +3 -3
  767. package/es/UNSAFE_Button.js +3 -3
  768. package/es/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +20 -20
  769. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutTheme.js +1 -1
  770. package/es/UNSAFE_ButtonLayout/themes/redwood/ButtonLayoutVariants.css.js +1 -1
  771. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutTheme.js +1 -1
  772. package/es/UNSAFE_ButtonLayout/themes/stable/ButtonLayoutVariants.css.js +1 -1
  773. package/es/UNSAFE_ButtonLayout.js +1 -1
  774. package/es/UNSAFE_ButtonSet.js +4 -4
  775. package/es/UNSAFE_ButtonSetButton.js +3 -3
  776. package/es/UNSAFE_ButtonSetIconButton.js +15 -15
  777. package/es/UNSAFE_ButtonSetItem.js +15 -15
  778. package/es/UNSAFE_ButtonSetMultiple.js +4 -4
  779. package/es/UNSAFE_ButtonSetSingle.js +4 -4
  780. package/es/UNSAFE_CardFlexView.js +20 -20
  781. package/es/UNSAFE_CardGridView.js +20 -20
  782. package/es/UNSAFE_Center.js +5 -5
  783. package/es/UNSAFE_ChartWithLegend.js +4 -4
  784. package/es/UNSAFE_Checkbox.js +22 -22
  785. package/es/UNSAFE_CheckboxItem.js +23 -23
  786. package/es/UNSAFE_CheckboxSet.js +22 -22
  787. package/es/UNSAFE_Chip.js +2 -2
  788. package/es/UNSAFE_Collapsible.js +17 -17
  789. package/es/UNSAFE_ComponentMessage.js +18 -18
  790. package/es/UNSAFE_ConveyorBelt.js +15 -15
  791. package/es/UNSAFE_DatePicker.js +27 -27
  792. package/es/UNSAFE_Diagram.js +15 -15
  793. package/es/UNSAFE_Dialog.js +11 -11
  794. package/es/UNSAFE_DragHandle.js +16 -16
  795. package/es/UNSAFE_DrawerLayout.js +15 -13
  796. package/es/UNSAFE_DrawerLayout.js.map +1 -1
  797. package/es/UNSAFE_DrawerPopup.js +10 -10
  798. package/es/UNSAFE_Dropdown.js +12 -12
  799. package/es/UNSAFE_Environment.js +4 -4
  800. package/es/UNSAFE_ExpandableList.js +22 -22
  801. package/es/UNSAFE_FilePicker.js +4 -4
  802. package/es/UNSAFE_Flex.js +4 -4
  803. package/es/UNSAFE_Floating.js +10 -10
  804. package/es/UNSAFE_FormLayout.js +2 -2
  805. package/es/UNSAFE_Gantt.js +22 -22
  806. package/es/UNSAFE_Grid.js +4 -4
  807. package/es/UNSAFE_HighlightText.js +4 -4
  808. package/es/UNSAFE_Icon.js +15 -15
  809. package/es/UNSAFE_IconButton.js +15 -15
  810. package/es/UNSAFE_IconMenuButton.js +19 -19
  811. package/es/UNSAFE_IconProgressButton.js +19 -19
  812. package/es/UNSAFE_IconToggleButton.js +15 -15
  813. package/es/UNSAFE_Indexer.js +6 -6
  814. package/es/UNSAFE_InputDateMask.js +23 -23
  815. package/es/UNSAFE_InputDatePicker.js +112 -112
  816. package/es/UNSAFE_InputPassword.js +22 -22
  817. package/es/UNSAFE_InputSensitiveText.js +24 -24
  818. package/es/UNSAFE_InputText.js +25 -25
  819. package/es/UNSAFE_Label.js +22 -22
  820. package/es/UNSAFE_LabelValueLayout.js +4 -4
  821. package/es/UNSAFE_LabelledLink.js +24 -24
  822. package/es/UNSAFE_Layer.js +7 -7
  823. package/es/UNSAFE_Legend.js +22 -22
  824. package/es/UNSAFE_LineAreaChart/__test__/LineChart.spec.js +34 -34
  825. package/es/UNSAFE_LineAreaChart.js +35 -35
  826. package/es/UNSAFE_Link.js +2 -2
  827. package/es/UNSAFE_ListItemLayout.js +5 -5
  828. package/es/UNSAFE_ListView.js +25 -25
  829. package/es/UNSAFE_LiveRegion.js +4 -4
  830. package/es/UNSAFE_Menu.js +21 -21
  831. package/es/UNSAFE_MenuButton.js +19 -19
  832. package/es/UNSAFE_MessageBanner.js +18 -18
  833. package/es/UNSAFE_MessageToast.js +21 -21
  834. package/es/UNSAFE_MeterBar.js +16 -16
  835. package/es/UNSAFE_MeterCircle.js +16 -16
  836. package/es/UNSAFE_Modal.js +7 -7
  837. package/es/UNSAFE_NavigationList/themes/redwood/NavigationListItemVariants.css.js +1 -1
  838. package/es/UNSAFE_NavigationList/themes/stable/NavigationListItemTheme.js +1 -1
  839. package/es/UNSAFE_NavigationList/themes/stable/NavigationListItemVariants.css.js +1 -1
  840. package/es/UNSAFE_NavigationList.js +33 -35
  841. package/es/UNSAFE_NavigationList.js.map +1 -1
  842. package/es/UNSAFE_NavigationListCommon/themes/redwood/NavigationListItemTheme.js +1 -1
  843. package/es/UNSAFE_NavigationListCommon.js +67 -68
  844. package/es/UNSAFE_NavigationListCommon.js.map +1 -1
  845. package/es/UNSAFE_NumberInputText.js +24 -24
  846. package/es/UNSAFE_OverflowTabBar.js +50 -52
  847. package/es/UNSAFE_OverflowTabBar.js.map +1 -1
  848. package/es/UNSAFE_PictoChart.js +13 -13
  849. package/es/UNSAFE_PieChart/__test__/PieChart.spec.js +14 -14
  850. package/es/UNSAFE_PieChart.js +14 -14
  851. package/es/UNSAFE_Popup.js +15 -15
  852. package/es/UNSAFE_ProgressBar.js +5 -5
  853. package/es/UNSAFE_ProgressButton.js +19 -19
  854. package/es/UNSAFE_ProgressButtonLabelLayout.js +10 -10
  855. package/es/UNSAFE_ProgressCircle.js +4 -4
  856. package/es/UNSAFE_RadioItem.js +22 -22
  857. package/es/UNSAFE_RadioSet.js +22 -22
  858. package/es/UNSAFE_RatingGauge.js +16 -16
  859. package/es/UNSAFE_ReorderableTabBar.js +29 -45
  860. package/es/UNSAFE_ReorderableTabBar.js.map +1 -1
  861. package/es/UNSAFE_SectionalLegend.js +23 -23
  862. package/es/UNSAFE_SelectMultiple.js +30 -30
  863. package/es/UNSAFE_SelectSingle.js +30 -30
  864. package/es/UNSAFE_SelectionCard.js +4 -4
  865. package/es/UNSAFE_Selector.js +15 -15
  866. package/es/UNSAFE_SelectorAll.js +19 -19
  867. package/es/UNSAFE_Sheet/__test__/Sheet.spec.js +13 -13
  868. package/es/UNSAFE_Sheet.js +10 -10
  869. package/es/UNSAFE_SplitMenuButton.js +19 -19
  870. package/es/UNSAFE_TabBar.js +50 -52
  871. package/es/UNSAFE_TabBar.js.map +1 -1
  872. package/es/UNSAFE_TabBarCommon.js +41 -43
  873. package/es/UNSAFE_TabBarCommon.js.map +1 -1
  874. package/es/UNSAFE_TabBarMixed.js +53 -55
  875. package/es/UNSAFE_TabBarMixed.js.map +1 -1
  876. package/es/UNSAFE_TableView.js +18 -18
  877. package/es/UNSAFE_TagCloud.js +22 -22
  878. package/es/UNSAFE_TextArea.js +24 -24
  879. package/es/UNSAFE_TextAreaAutosize.js +24 -24
  880. package/es/UNSAFE_TextField.js +7 -7
  881. package/es/UNSAFE_ToggleButton.js +3 -3
  882. package/es/UNSAFE_Toolbar/tests/Toolbar.spec.js +22 -22
  883. package/es/UNSAFE_Toolbar.js +5 -5
  884. package/es/UNSAFE_Train.js +16 -16
  885. package/es/UNSAFE_TruncatingBadge.js +17 -17
  886. package/es/UNSAFE_TruncatingText.js +17 -17
  887. package/es/UNSAFE_UserAssistance.js +23 -23
  888. package/es/UNSAFE_View.js +7 -7
  889. package/es/UNSAFE_VirtualizedListView.js +19 -19
  890. package/es/UNSAFE_VisProgressiveLoader/__test__/VisProgressiveLoader.spec.js +8 -8
  891. package/es/UNSAFE_VisProgressiveLoader.js +6 -6
  892. package/es/UNSAFE_VisStatusMessage.js +6 -6
  893. package/es/UNSAFE_WindowOverlay.js +4 -4
  894. package/es/{View-63980a9b.js → View-a8a64eb1.js} +5 -5
  895. package/es/{View-63980a9b.js.map → View-a8a64eb1.js.map} +1 -1
  896. package/es/{VisNoData-da540cbd.js → VisNoData-673b58e9.js} +3 -3
  897. package/es/{VisNoData-da540cbd.js.map → VisNoData-673b58e9.js.map} +1 -1
  898. package/es/{VisProgressiveLoader-2b2103c8.js → VisProgressiveLoader-66dde1ff.js} +3 -3
  899. package/es/{VisProgressiveLoader-2b2103c8.js.map → VisProgressiveLoader-66dde1ff.js.map} +1 -1
  900. package/es/{VisTabularDatatip-2ae7ee48.js → VisTabularDatatip-6aa607bb.js} +2 -2
  901. package/es/{VisTabularDatatip-2ae7ee48.js.map → VisTabularDatatip-6aa607bb.js.map} +1 -1
  902. package/es/{WindowOverlay-9b43e658.js → WindowOverlay-de5d0819.js} +2 -2
  903. package/es/{WindowOverlay-9b43e658.js.map → WindowOverlay-de5d0819.js.map} +1 -1
  904. package/es/{YearsGridView-e3bde50c.js → YearsGridView-5b5c1746.js} +5 -5
  905. package/es/{YearsGridView-e3bde50c.js.map → YearsGridView-5b5c1746.js.map} +1 -1
  906. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  907. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  908. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  909. package/es/hooks/PRIVATE_useChartContextMenu.js +18 -18
  910. package/es/hooks/PRIVATE_useChartDatatip.js +13 -13
  911. package/es/hooks/PRIVATE_useChartEvents.js +17 -17
  912. package/es/hooks/PRIVATE_useChartMarquee.js +17 -17
  913. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  914. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  915. package/es/hooks/PRIVATE_useDatatip.js +11 -11
  916. package/es/hooks/PRIVATE_useFloating.js +4 -4
  917. package/es/hooks/PRIVATE_useReorderable.js +4 -4
  918. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  919. package/es/hooks/PRIVATE_useSelection.js +4 -4
  920. package/es/hooks/PRIVATE_useTabBar.js +5 -5
  921. package/es/hooks/PRIVATE_useVisContextMenu.js +18 -18
  922. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  923. package/es/hooks/PRIVATE_useVisMeterEvents.js +13 -13
  924. package/es/hooks/PRIVATE_useVisSelection.js +12 -12
  925. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  926. package/es/hooks/UNSAFE_useContainerBreakpointValues.js +1 -1
  927. package/es/hooks/UNSAFE_useCurrentBgColor.js +3 -3
  928. package/es/hooks/UNSAFE_useDensity.js +3 -3
  929. package/es/hooks/UNSAFE_useOutsideClick.js +7 -7
  930. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  931. package/es/hooks/UNSAFE_useScale.js +3 -3
  932. package/es/hooks/UNSAFE_useTestId.js +3 -3
  933. package/es/hooks/UNSAFE_useTheme.js +3 -3
  934. package/es/hooks/UNSAFE_useThemeInterpolations.js +5 -5
  935. package/es/hooks/UNSAFE_useTooltip.js +16 -16
  936. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  937. package/es/hooks/UNSAFE_useUser.js +3 -3
  938. package/es/{index-e65c9009.js → index-fee93bf9.js} +2 -2
  939. package/es/index-fee93bf9.js.map +1 -0
  940. package/es/listViewSelectionTests-0dfdcc5d.js +4 -4
  941. package/es/{render-ff141a3d.js → render-d92a7051.js} +3 -3
  942. package/es/{render-ff141a3d.js.map → render-d92a7051.js.map} +1 -1
  943. package/es/{tabbableUtils-375a33ee.js → tabbableUtils-1b4c2eea.js} +3 -3
  944. package/es/{tabbableUtils-375a33ee.js.map → tabbableUtils-1b4c2eea.js.map} +1 -1
  945. package/es/{testData-748c19ef.js → testData-ca9503e6.js} +3 -3
  946. package/es/{testData-748c19ef.js.map → testData-ca9503e6.js.map} +1 -1
  947. package/es/{tooltipUtils-1131b3ca.js → tooltipUtils-06c93436.js} +5 -5
  948. package/es/{tooltipUtils-1131b3ca.js.map → tooltipUtils-06c93436.js.map} +1 -1
  949. package/es/useCellNavigation-00d575ca.js +1 -1
  950. package/es/useChartContextMenu-8c49f584.js +3 -3
  951. package/es/{useChartDatatip-25f6bc69.js → useChartDatatip-82dba484.js} +4 -4
  952. package/es/{useChartDatatip-25f6bc69.js.map → useChartDatatip-82dba484.js.map} +1 -1
  953. package/es/useChartMarquee-08025a83.js +1 -1
  954. package/es/{useColorScheme-d8a80e2b.js → useColorScheme-f69d53b5.js} +2 -2
  955. package/es/{useColorScheme-d8a80e2b.js.map → useColorScheme-f69d53b5.js.map} +1 -1
  956. package/es/useContextMenu-12845847.js +3 -3
  957. package/es/{useCssVars-8e6932f8.js → useCssVars-48595cd2.js} +5 -5
  958. package/es/{useCssVars-8e6932f8.js.map → useCssVars-48595cd2.js.map} +1 -1
  959. package/es/{useCurrentBgColor-5418492b.js → useCurrentBgColor-894d059b.js} +2 -2
  960. package/es/{useCurrentBgColor-5418492b.js.map → useCurrentBgColor-894d059b.js.map} +1 -1
  961. package/es/{useCurrentKey-76e7d7b1.js → useCurrentKey-55123e83.js} +2 -2
  962. package/es/{useCurrentKey-76e7d7b1.js.map → useCurrentKey-55123e83.js.map} +1 -1
  963. package/es/{useDatatip-73566627.js → useDatatip-01d7ddeb.js} +4 -4
  964. package/es/{useDatatip-73566627.js.map → useDatatip-01d7ddeb.js.map} +1 -1
  965. package/es/{useDensity-64ecb649.js → useDensity-04a01caf.js} +2 -2
  966. package/es/{useDensity-64ecb649.js.map → useDensity-04a01caf.js.map} +1 -1
  967. package/es/{useFloating-d60cc8b4.js → useFloating-c9278755.js} +2 -2
  968. package/es/{useFloating-d60cc8b4.js.map → useFloating-c9278755.js.map} +1 -1
  969. package/es/{useKeyboardEvents-5c311766.js → useKeyboardEvents-b02e5fda.js} +2 -2
  970. package/es/{useKeyboardEvents-5c311766.js.map → useKeyboardEvents-b02e5fda.js.map} +1 -1
  971. package/es/useLegendContextMenu-926aca66.js +5 -5
  972. package/es/{useMeterDatatip-2cedbd5c.js → useMeterDatatip-43e31c05.js} +3 -3
  973. package/es/{useMeterDatatip-2cedbd5c.js.map → useMeterDatatip-43e31c05.js.map} +1 -1
  974. package/es/{useOutsideClick-725542a2.js → useOutsideClick-388c62bd.js} +2 -2
  975. package/es/{useOutsideClick-725542a2.js.map → useOutsideClick-388c62bd.js.map} +1 -1
  976. package/es/{usePopupAnimation-340f04b6.js → usePopupAnimation-b4577940.js} +2 -2
  977. package/es/{usePopupAnimation-340f04b6.js.map → usePopupAnimation-b4577940.js.map} +1 -1
  978. package/es/{usePrefixSuffix-435a9c59.js → usePrefixSuffix-995d4cda.js} +2 -2
  979. package/es/{usePrefixSuffix-435a9c59.js.map → usePrefixSuffix-995d4cda.js.map} +1 -1
  980. package/es/useReorderableItem-c715c504.js +2 -2
  981. package/es/{useRovingTabIndexContainer-b9833086.js → useRovingTabIndexContainer-097f96a6.js} +2 -2
  982. package/es/{useRovingTabIndexContainer-b9833086.js.map → useRovingTabIndexContainer-097f96a6.js.map} +1 -1
  983. package/es/{useScale-c86ecc6e.js → useScale-3b323ab2.js} +2 -2
  984. package/es/{useScale-c86ecc6e.js.map → useScale-3b323ab2.js.map} +1 -1
  985. package/es/useSelectCommon-7ebc86eb.js +11 -11
  986. package/es/{useSelectDrill-fbe57d95.js → useSelectDrill-8b53d932.js} +3 -3
  987. package/es/{useSelectDrill-fbe57d95.js.map → useSelectDrill-8b53d932.js.map} +1 -1
  988. package/es/{useSelection-1e1e89df.js → useSelection-7c94a24f.js} +2 -2
  989. package/es/{useSelection-1e1e89df.js.map → useSelection-7c94a24f.js.map} +1 -1
  990. package/es/{useSelection-dfbd140d.js → useSelection-b7c3e75e.js} +5 -5
  991. package/es/{useSelection-dfbd140d.js.map → useSelection-b7c3e75e.js.map} +1 -1
  992. package/es/{useTabBar-b826570d.js → useTabBar-6c6847ef.js} +2 -2
  993. package/es/{useTabBar-b826570d.js.map → useTabBar-6c6847ef.js.map} +1 -1
  994. package/es/{useTestId-3bc3958c.js → useTestId-af32a9eb.js} +2 -2
  995. package/es/{useTestId-3bc3958c.js.map → useTestId-af32a9eb.js.map} +1 -1
  996. package/es/{useTheme-4b0f211c.js → useTheme-73aca0e4.js} +2 -2
  997. package/es/{useTheme-4b0f211c.js.map → useTheme-73aca0e4.js.map} +1 -1
  998. package/es/{useThemeInterpolations-41ac870d.js → useThemeInterpolations-4f6cc83c.js} +4 -4
  999. package/es/{useThemeInterpolations-41ac870d.js.map → useThemeInterpolations-4f6cc83c.js.map} +1 -1
  1000. package/es/{useTooltip-227887ea.js → useTooltip-e258ea41.js} +2 -2
  1001. package/es/{useTooltip-227887ea.js.map → useTooltip-e258ea41.js.map} +1 -1
  1002. package/es/{useTooltipControlled-7ccb5919.js → useTooltipControlled-50d5dac9.js} +5 -5
  1003. package/es/{useTooltipControlled-7ccb5919.js.map → useTooltipControlled-50d5dac9.js.map} +1 -1
  1004. package/es/{useTranslationBundle-98df6291.js → useTranslationBundle-6da03e52.js} +2 -2
  1005. package/es/{useTranslationBundle-98df6291.js.map → useTranslationBundle-6da03e52.js.map} +1 -1
  1006. package/es/{useUser-a15426fc.js → useUser-bca8cf2d.js} +2 -2
  1007. package/es/{useUser-a15426fc.js.map → useUser-bca8cf2d.js.map} +1 -1
  1008. package/es/{useVisEvents-ff4204b5.js → useVisEvents-cd3616aa.js} +2 -2
  1009. package/es/{useVisEvents-ff4204b5.js.map → useVisEvents-cd3616aa.js.map} +1 -1
  1010. package/es/utils/PRIVATE_tooltipUtils.js +13 -13
  1011. package/es/utils/PRIVATE_visTestUtils.js +6 -6
  1012. package/es/{withDirectionIcon-90d7c798.js → withDirectionIcon-389870a2.js} +2 -2
  1013. package/es/{withDirectionIcon-90d7c798.js.map → withDirectionIcon-389870a2.js.map} +1 -1
  1014. package/es/withThemeProps-6545df54.js +2 -2
  1015. package/package.json +2 -2
  1016. package/amd/CardFlexView-14fada63.js +0 -2
  1017. package/amd/CheckboxSetContext-2e486ea8.js +0 -2
  1018. package/amd/CheckboxSetContext-2e486ea8.js.map +0 -1
  1019. package/amd/List-61d64cd6.js +0 -2
  1020. package/amd/LoadMoreCollection-83413a59.js +0 -2
  1021. package/amd/TextArea-916c5bb1.js +0 -2
  1022. package/amd/TextArea-916c5bb1.js.map +0 -1
  1023. package/amd/TextAreaAutosize-1f47b470.js +0 -2
  1024. package/amd/VirtualizedListView-96ddfd98.js +0 -2
  1025. package/cjs/index-3be205e4.js.map +0 -1
  1026. package/es/BaseNavigationListItem-d2a00c8f.js +0 -47
  1027. package/es/BaseNavigationListItem-d2a00c8f.js.map +0 -1
  1028. package/es/NavigationList-d8f472fe.js.map +0 -1
  1029. package/es/NavigationListItem-20ff5d75.js +0 -10
  1030. package/es/NavigationListItem-20ff5d75.js.map +0 -1
  1031. package/es/index-e65c9009.js.map +0 -1
  1032. package/es/useNavigationListItem-31226722.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Diagram-5fd0306a.js","sources":["../../src/UNSAFE_Diagram/utils/diagramUtils.ts","../../src/UNSAFE_Diagram/DiagramNodeElement.tsx","../../src/UNSAFE_Diagram/DiagramNodeLayer.tsx","../../src/UNSAFE_Diagram/DiagramLinkElement.tsx","../../src/UNSAFE_Diagram/DiagramLinkLayer.tsx","../../src/UNSAFE_Diagram/DiagramLabel.tsx","../../src/UNSAFE_Diagram/DiagramLabelLayer.tsx","../../src/UNSAFE_Diagram/DiagramLayers.tsx","../../src/UNSAFE_Diagram/DiagramPanZoomContainer.tsx","../../src/UNSAFE_Diagram/utils/navUtils.ts","../../src/UNSAFE_Diagram/hooks/useDiagramNavigation.ts","../../src/UNSAFE_Diagram/hooks/useEvents.ts","../../src/UNSAFE_Diagram/hooks/useDiagramDatatip.ts","../../src/UNSAFE_Diagram/hooks/usePointerGesture.ts","../../src/UNSAFE_Diagram/hooks/useDrag.ts","../../src/UNSAFE_Diagram/utils/panUtils.ts","../../src/UNSAFE_Diagram/hooks/useDragPan.ts","../../src/UNSAFE_Diagram/hooks/useWheel.ts","../../src/UNSAFE_Diagram/utils/zoomUtils.ts","../../src/UNSAFE_Diagram/hooks/useWheelZoom.ts","../../src/UNSAFE_Diagram/hooks/usePinch.ts","../../src/UNSAFE_Diagram/hooks/usePinchZoom.ts","../../src/UNSAFE_Diagram/hooks/usePanZoom.ts","../../src/UNSAFE_Diagram/hooks/useDiagramSelection.ts","../../src/UNSAFE_Diagram/DiagramWithDimensions.tsx","../../src/UNSAFE_Diagram/Diagram.tsx"],"sourcesContent":["import type {\n Pan,\n Zoom,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput,\n ItemInfo,\n Bounds,\n Position,\n Dimensions,\n DatatipContext,\n DiagramLabelStyles,\n DiagramLabelPosition\n} from '../diagram.types';\nimport type { Ref } from 'preact/hooks';\nimport type { BundleType } from '../../resources/nls/bundle';\nimport type {\n Font,\n GetTextDimensionsType,\n TextDimensions\n} from '../../hooks/PRIVATE_useTextDimensions';\nimport { ComponentChildren } from 'preact';\nimport { Property } from 'csstype';\nimport { generateAriaLabel } from '#utils/UNSAFE_visUtils/accUtils';\n\nconst ZOOM_TO_FIT_PADDING = 20;\n/**\n * Returns the pan properties for the diagram.\n */\nexport function getPanProps(props: Pan, contentBounds: Bounds) {\n return {\n panning: props.panning ? props.panning : 'off',\n panDirection: props.panDirection ? props.panDirection : 'any',\n centerX: props.centerX !== undefined ? props.centerX : contentBounds.w / 2 + contentBounds.x,\n centerY: props.centerY !== undefined ? props.centerY : contentBounds.h / 2 + contentBounds.y,\n onPan: props.onPan\n };\n}\n\n/**\n * Returns the zoom properties for the diagram.\n */\nexport function getZoomProps(props: Zoom, width: number, height: number, contentBounds: Bounds) {\n const minZoom = props.minZoom ? props.minZoom : getZoomToFitZoom(width, height, contentBounds);\n const maxZoom = props.maxZoom !== undefined ? props.maxZoom : 1;\n const zoom = props.zoomValue ? props.zoomValue : getZoomToFitZoom(width, height, contentBounds);\n return {\n zooming: props.zooming ? props.zooming : 'off',\n // default value of 0 indicates zoom-to-fit level\n minZoom: minZoom,\n maxZoom: maxZoom,\n // zoom value of 0 will default to zoom to fit\n zoomValue: constrainZoom(zoom, minZoom, maxZoom),\n onZoom: props.onZoom\n };\n}\n\n/**\n * Constructs the json object to be passed into the layout function\n */\nexport function constructLayoutJSON<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n nodes: D1[],\n nodeItems: Map<K1, D1>,\n linkItems: Map<K2, D2>,\n dimensions: Dimensions[],\n width: number,\n height: number,\n getTextDimensions?: GetTextDimensionsType\n) {\n const labelDims: Map<K1 | K2, TextDimensions> = new Map();\n const nodeKeys = Array.from(nodeItems.keys());\n for (const id of nodeKeys) {\n const item = nodeItems.get(id as K1);\n if (item && getTextDimensions && item.label) {\n const label = item.label;\n const fontProps = _getFontProps(item.labelStyle);\n labelDims.set(id as K1 | K2, getTextDimensions(label, fontProps));\n }\n }\n const linkKeys = Array.from(linkItems.keys());\n for (const id of linkKeys) {\n const item = linkItems.get(id as K2);\n if (item && getTextDimensions && item.label) {\n const label = item.label;\n const fontProps = _getFontProps(item.labelStyle);\n labelDims.set(id as K1 | K2, getTextDimensions(label, fontProps));\n }\n }\n const getLabelDimensions = function (data: D1 | D2) {\n return labelDims.get(data.id);\n };\n const getNodeDimensions = function (data: D1) {\n for (let i = 0; i < nodes.length; i++) {\n if (data.id === nodes[i].id) {\n return dimensions[i];\n }\n }\n return dimensions[0];\n };\n\n return {\n layoutJSON: {\n getNodeDimensions: getNodeDimensions,\n getLabelDimensions: getLabelDimensions,\n componentSize: {\n width: width,\n height: height\n }\n },\n labelDims: labelDims\n };\n}\n\n/**\n * Deconstructs the output of the layout function\n */\nexport function deconstructLayoutJSON<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2>\n>(layoutJSON: L, nodeData: D1[], linkData: D2[]) {\n const nodes = layoutJSON.nodes;\n const links = layoutJSON.links;\n const positions: Position[] = [];\n const nodeLabelPos: (DiagramLabelPosition | undefined)[] = [];\n const linkLabelPos: DiagramLabelPosition[] = [];\n let hasNodeLabels = false;\n let hasLinkLabels = false;\n let node, link;\n for (let i = 0; i < nodeData.length; i++) {\n node = nodes[nodeData[i].id];\n positions.push(node.position);\n if (node.label) hasNodeLabels = true;\n nodeLabelPos.push(node.label);\n }\n if (links) {\n for (let i = 0; i < linkData.length; i++) {\n link = links[linkData[i].id];\n if (link.label) hasLinkLabels = true;\n linkLabelPos.push(link.label);\n }\n }\n return {\n nodePoints: positions,\n nodeLabelPos: hasNodeLabels ? nodeLabelPos : undefined,\n linkLabelPos: hasLinkLabels ? linkLabelPos : undefined\n };\n}\n\n/**\n * Merges the node points into the dimensions\n */\nexport function mergeDimensions(dimensions: Dimensions[], nodePoints: Position[]) {\n const newBounds: Bounds[] = [];\n for (let i = 0; i < dimensions.length; i++) {\n const point = nodePoints[i];\n const dim = dimensions[i];\n newBounds.push({ x: point.x, y: point.y, w: dim.w, h: dim.h });\n }\n return newBounds;\n}\n\n/**\n * Returns the text for the diagram datatip.\n */\nexport function getDatatipContent<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n nodesMap: Map<K1, D1>,\n linksMap: Map<K2, D2>,\n focusedItem?: ItemInfo<K1, K2>,\n hoveredItem?: ItemInfo<K1, K2>,\n datatip?: (detail: DatatipContext<D1, D2>) => {\n content: ComponentChildren;\n borderColor?: Property.BorderColor;\n }\n) {\n let itemInfo;\n const isPointerActive = hoveredItem?.isCurrent;\n if (isPointerActive && hoveredItem.id != null) {\n itemInfo = hoveredItem;\n }\n if (focusedItem && focusedItem.isCurrent) {\n itemInfo = focusedItem;\n }\n if (itemInfo && datatip) {\n return datatip(\n itemInfo.isNode\n ? { data: nodesMap.get(itemInfo.id as K1) as D1, type: 'node' }\n : { data: linksMap.get(itemInfo.id as K2) as D2, type: 'link' }\n );\n }\n if (itemInfo) {\n const text = (\n itemInfo.isNode ? nodesMap.get(itemInfo.id as K1) : linksMap.get(itemInfo.id as K2)\n )?.accessibleLabel;\n return {\n content: text\n };\n }\n return;\n}\n\n/**\n * Creates a map with key id and value node or link data\n */\nexport function createItemMap<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(items: (D1 | D2)[]) {\n const itemIdToDataMap = new Map();\n const itemIdToIndexMap = new Map();\n const itemIndexToIdMap = new Map();\n for (let i = 0; i < items.length; i++) {\n itemIdToDataMap.set(items[i].id, items[i]);\n itemIdToIndexMap.set(items[i].id, i);\n itemIndexToIdMap.set(i, items[i].id);\n }\n return {\n itemIdToDataMap,\n itemIdToIndexMap,\n itemIndexToIdMap\n };\n}\n\n/**\n * Filter out links with no start or end nodes\n */\nexport function filterLinksWithNoEndNodes<K2, K1, D1, D2 extends DiagramLinkData<K2, K1>>(\n links: D2[],\n nodesMap: Map<K1, D1>\n) {\n const newLinks: D2[] = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n if (nodesMap.get(link.startNode) && nodesMap.get(link.endNode)) {\n newLinks.push(link);\n }\n }\n return newLinks;\n}\n\n/**\n * Pulls out the dimensions from an array of bounds\n */\nexport function getDimensionsFromBounds(bounds: Bounds[]) {\n const dims: Dimensions[] = [];\n for (let i = 0; i < bounds.length; i++) {\n dims.push({ w: bounds[i].w, h: bounds[i].h });\n }\n return dims;\n}\n\n/**\n * Returns true if event is a selection event\n */\nexport function isSelectionEvent(event: KeyboardEvent): boolean {\n if (event.altKey && (event.key === '≥' || event.key === '≤')) {\n return true;\n }\n return false;\n}\n\n/**\n * Returns the center position of the node or link\n * For links, draws a straight line between the centers of the start/end node\n * and returns the center of that line\n */\nexport function getFocusedItemBounds<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n focusedItemInfo: ItemInfo<K1, K2>,\n bounds: Bounds[],\n links: D2[],\n nodeIdToIndexMap: Map<K1, number>,\n linkIdToIndexMap: Map<K2, number>\n) {\n if (focusedItemInfo.isNode) {\n const idx = nodeIdToIndexMap.get(focusedItemInfo.id as K1);\n // Return the first element if cannot find the Node index\n return bounds[idx || 0];\n } else {\n // Center of a straight line between start/end node centers\n const link = links[linkIdToIndexMap.get(focusedItemInfo.id as K2) || 0];\n const startNB = bounds[nodeIdToIndexMap.get(link.startNode) || 0];\n const endNB = bounds[nodeIdToIndexMap.get(link.endNode) || 0];\n const startNCenter = { x: startNB.x + startNB.w / 2, y: startNB.y + startNB.h / 2 };\n const endNCenter = { x: endNB.x + endNB.w / 2, y: endNB.y + endNB.h / 2 };\n const minX = Math.min(startNCenter.x, endNCenter.x);\n const minY = Math.min(startNCenter.y, endNCenter.y);\n return {\n x: minX,\n y: minY,\n w: Math.abs(startNCenter.x - endNCenter.x),\n h: Math.abs(startNCenter.y - endNCenter.y)\n };\n }\n}\n/**\n * Combines the node and link ids into one array\n */\nexport function combineIds<K1, K2>(nodeIds?: K1[], linkIds?: K2[]) {\n const combinedIds: (K1 | K2)[] = [];\n if (nodeIds) {\n for (let i = 0; i < nodeIds.length; i++) {\n combinedIds.push(nodeIds[i]);\n }\n }\n if (linkIds) {\n for (let i = 0; i < linkIds.length; i++) {\n combinedIds.push(linkIds[i]);\n }\n }\n return combinedIds;\n}\n\n/**\n * Returns the bounds of the diagram content\n */\nexport function getContentBounds(nodeBounds: Bounds[], labelBounds?: Bounds): Bounds {\n if (nodeBounds.length === 0) return { x: 0, w: Infinity, y: 0, h: Infinity };\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let dims;\n for (let i = 0; i < nodeBounds.length; i++) {\n dims = nodeBounds[i];\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n if (labelBounds) {\n minX = labelBounds.x < minX ? labelBounds.x : minX;\n minY = labelBounds.y < minY ? labelBounds.y : minY;\n maxX = labelBounds.x + labelBounds.w > maxX ? labelBounds.x + labelBounds.w : maxX;\n maxY = labelBounds.y + labelBounds.h > maxY ? labelBounds.y + labelBounds.h : maxY;\n }\n return { x: minX, w: maxX - minX, y: minY, h: maxY - minY };\n}\n\n/**\n * Returns the label bounds\n */\nexport function getAllLabelBounds<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n labelDims: Map<K1 | K2, TextDimensions>,\n nodes: D1[],\n links: D2[],\n nodeLabelPos: (DiagramLabelPosition | undefined)[] = [],\n linkLabelPos: DiagramLabelPosition[] = [],\n isRTL: boolean\n) {\n if (nodeLabelPos.length === 0 && linkLabelPos.length === 0) return undefined;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let dims, label;\n for (let i = 0; i < nodeLabelPos.length; i++) {\n label = nodeLabelPos[i];\n if (!label) continue;\n dims = getLabelBounds(label, labelDims.get(nodes[i].id)!, isRTL);\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n for (let i = 0; i < linkLabelPos.length; i++) {\n label = linkLabelPos[i];\n if (!label) continue;\n dims = getLabelBounds(label, labelDims.get(links[i].id)!, isRTL);\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n return { x: minX, w: maxX - minX, y: minY, h: maxY - minY };\n}\n\nfunction getLabelBounds(label: DiagramLabelPosition, dims: TextDimensions, isRTL: boolean) {\n const labelPos = getLabelPosition(dims, label, isRTL);\n const isRotating = label.rotationAngle;\n if (!isRotating) {\n return { x: labelPos.x, y: labelPos.y, w: dims.width, h: dims.height };\n } else {\n // Find the 4 corners of the label bounds relative to the rotation point\n const rotationPoint = label.rotationPoint\n ? label.rotationPoint\n : { x: dims.width / 2, y: dims.height / 2 };\n const angle = label.rotationAngle!;\n const topLeft = getCoordsRelToRotPoint({ x: 0, y: 0 }, rotationPoint);\n const topRight = getCoordsRelToRotPoint({ x: dims.width, y: 0 }, rotationPoint);\n const bottomLeft = getCoordsRelToRotPoint({ x: 0, y: dims.height }, rotationPoint);\n const bottomRight = getCoordsRelToRotPoint({ x: dims.width, y: dims.height }, rotationPoint);\n const rotTopLeft = rotatePoint(topLeft, angle);\n const rotBotLeft = rotatePoint(bottomLeft, angle);\n const rotTopRight = rotatePoint(topRight, angle);\n const rotBotRight = rotatePoint(bottomRight, angle);\n const points = [rotTopLeft, rotBotLeft, rotTopRight, rotBotRight].map((pos: Position) => {\n return {\n x: pos.x + labelPos.x + rotationPoint.x,\n y: pos.y + labelPos.y + rotationPoint.y\n };\n });\n return getBoundsFromPoints(points);\n }\n}\n\nfunction getCoordsRelToRotPoint(labelPoint: Position, rotPoint: Position) {\n return { x: labelPoint.x - rotPoint.x, y: labelPoint.y - rotPoint.y };\n}\n\nfunction rotatePoint(pos: Position, angle: number) {\n return {\n x: pos.x * Math.cos(angle) - pos.y * Math.sin(angle),\n y: pos.x * Math.sin(angle) + pos.y * Math.cos(angle)\n };\n}\n\nfunction getBoundsFromPoints(points: Position[]) {\n let minX = points[0].x;\n let minY = points[0].y;\n let maxX = points[0].x;\n let maxY = points[0].y;\n for (let i = 1; i < points.length; i++) {\n const point = points[i];\n if (point.x < minX) minX = point.x;\n else if (point.x > maxX) maxX = point.x;\n if (point.y < minY) minY = point.y;\n else if (point.y > maxY) maxY = point.y;\n }\n return {\n x: minX,\n y: minY,\n w: maxX - minX,\n h: maxY - minY\n };\n}\n\n/**\n * Returns the position of the label\n * @param dimensions\n * @param positionProps\n * @returns position of the label\n */\nexport function getLabelPosition(\n dimensions: TextDimensions,\n positionProps: DiagramLabelPosition,\n isRTL: boolean\n) {\n const position = positionProps.position;\n const hAlign = positionProps.hAlign ? positionProps.hAlign : isRTL ? 'right' : 'left';\n const vAlign = positionProps.vAlign;\n let x, y;\n if (hAlign === 'center') {\n x = position.x - dimensions.width / 2;\n } else if (hAlign === 'right') {\n x = position.x - dimensions.width;\n } else {\n x = position.x;\n }\n\n if (vAlign === 'middle') {\n y = position.y - dimensions.height / 2;\n } else if (vAlign === 'bottom') {\n y = position.y - dimensions.height;\n } else if (vAlign === 'baseline') {\n y = position.y + dimensions.y;\n } else {\n y = position.y;\n }\n return {\n x: x,\n y: y\n };\n}\n\n/**\n * Converts centerX,Y coordinates to panX,Y coordinates\n */\nexport function centerXYToPanXY(\n centerX: number,\n centerY: number,\n zoom: number,\n width: number,\n height: number\n) {\n return {\n panX: width / 2 - centerX * zoom,\n panY: height / 2 - centerY * zoom\n };\n}\n/**\n * Converts panX,Y coordinates to centerX,Y coordinates\n */\nexport function panXYToCenterXY(\n panX: number,\n panY: number,\n zoom: number,\n width: number,\n height: number\n) {\n return {\n centerX: (width / 2 - panX) / zoom,\n centerY: (height / 2 - panY) / zoom\n };\n}\n\n/**\n * Compares if two ItemInfo are equal\n */\nexport function isEqualItem<K1, K2>(item1?: ItemInfo<K1, K2>, item2?: ItemInfo<K1, K2>) {\n return item1?.id === item2?.id && item1?.isNode === item2?.isNode;\n}\n\n/**\n * Returns the item info of the data-oj-node or data-oj-link attribute for a given element.\n */\nexport function getNavigableInfo<K1, K2>(\n element: HTMLElement,\n rootElementRef?: Ref<HTMLDivElement>\n): ItemInfo<K1, K2> {\n let isNode = false;\n let elem = element;\n let navigableId;\n while (!navigableId) {\n navigableId = elem.dataset['node'];\n if (navigableId) {\n isNode = true;\n } else {\n navigableId = elem.dataset['link'];\n }\n if (!navigableId) {\n if (elem.parentElement && elem.parentElement !== rootElementRef?.current) {\n elem = elem.parentElement;\n } else {\n break;\n }\n }\n }\n return {\n id: navigableId as K1 | K2,\n isNode: isNode\n };\n}\n\n/**\n * Returns the id of the focused item.\n */\nexport function getFocusedItem<K1, K2>(\n focusedItemInfo: ItemInfo<K1, K2>,\n hoveredItemInfo?: ItemInfo<K1, K2>\n) {\n let focused;\n if (focusedItemInfo.isCurrent && focusedItemInfo.isFocusVisible) {\n focused = focusedItemInfo.id;\n } else if (hoveredItemInfo?.isCurrent) {\n focused = hoveredItemInfo.id;\n }\n return focused;\n}\n\n/**\n * Returns the aria label\n */\nexport function getItemAriaLabel(\n translations: BundleType,\n supportsSelection: boolean,\n isSelected?: boolean,\n accessibleLabel?: string\n) {\n return generateAriaLabel(translations, accessibleLabel || '', {\n isSelected: !supportsSelection ? undefined : isSelected\n });\n}\n\n/**\n * Returns the zoom to fit zoom level\n */\nexport function getZoomToFitZoom(width: number, height: number, contentBounds: Bounds) {\n const zoomX = (width - 2 * ZOOM_TO_FIT_PADDING) / contentBounds.w;\n const zoomY = (height - 2 * ZOOM_TO_FIT_PADDING) / contentBounds.h;\n return Math.min(zoomX, zoomY);\n}\n\n/**\n * Constrains the zoom level\n */\nfunction constrainZoom(zoom: number, minZoom: number, maxZoom: number) {\n let newZoom = Math.max(minZoom, zoom);\n newZoom = Math.min(maxZoom, newZoom);\n return newZoom;\n}\n\n/**\n * Returns the font props for a node or link\n */\nfunction _getFontProps(styles?: DiagramLabelStyles) {\n const fontProps: Font = {};\n if (!styles) return fontProps;\n if (styles.fontFamily) fontProps.fontFamily = styles.fontFamily;\n if (styles.fontSize) fontProps.fontSize = styles.fontSize;\n if (styles.fontStyle) fontProps.fontStyle = styles.fontStyle;\n if (styles.fontWeight) fontProps.fontWeight = styles.fontWeight;\n return fontProps;\n}\n\n/**\n * Returns the panX, panY, and zoom when zooming and centering an item\n */\nexport function zoomAndCenterItemFromInfo<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n info: ItemInfo<K1, K2>,\n linkIdToDataMap: Map<K2, D2>,\n bounds: Bounds[],\n nodeIdToIndex: Map<K1, number>,\n width: number,\n height: number,\n maxZoom: number\n) {\n const isNode = info.isNode;\n let totalBounds;\n if (isNode) {\n const nodeIndex = nodeIdToIndex.get(info.id as K1)!;\n totalBounds = bounds[nodeIndex];\n } else {\n const link = linkIdToDataMap.get(info.id as K2)!;\n const startNodeBounds = bounds[nodeIdToIndex.get(link.startNode)!];\n const endNodeBounds = bounds[nodeIdToIndex.get(link.endNode)!];\n const minX = Math.min(startNodeBounds.x, endNodeBounds.x);\n const minY = Math.min(startNodeBounds.y, endNodeBounds.y);\n const maxX = Math.max(\n startNodeBounds.x + startNodeBounds.w,\n endNodeBounds.x + startNodeBounds.w\n );\n const maxY = Math.max(startNodeBounds.y + startNodeBounds.h, endNodeBounds.y + endNodeBounds.h);\n totalBounds = { x: minX, y: minY, w: maxX - minX, h: maxY - minY };\n }\n return getPanZoomToCenterNode(totalBounds, maxZoom, width, height);\n}\n\n/**\n * Returns the pan and zoom values in order\n * to center a node or link\n */\nfunction getPanZoomToCenterNode(bounds: Bounds, maxZoom: number, width: number, height: number) {\n const zoomX = (width - 2 * ZOOM_TO_FIT_PADDING) / bounds.w;\n const zoomY = (height - 2 * ZOOM_TO_FIT_PADDING) / bounds.h;\n const zoom = Math.min(zoomX, zoomY, maxZoom);\n const cX = bounds.w / 2 + bounds.x;\n const cY = bounds.h / 2 + bounds.y;\n return { centerX: cX, centerY: cY, zoom: zoom };\n}\n","import type { Position, State, NodeRendererContext } from './diagram.types';\nimport { useResizeObserver } from '../hooks/UNSAFE_useResizeObserver';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { getItemAriaLabel } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { itemStyles } from './themes/DiagramStyles.css';\nimport { ComponentChildren } from 'preact';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport type { BundleType } from '../resources/nls/bundle';\n\n/**\n * Props for node component\n */\ntype NodeProps<K1, D1> = {\n id: K1;\n position: Position;\n label?: string;\n state: State;\n previousState: State;\n isDimmed?: boolean;\n activeId?: string;\n accessibleLabel?: string;\n nodeIndex: number;\n data: D1;\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n supportsSelection: boolean;\n};\n\nexport const DiagramNodeElement = <K1, D1>({\n id,\n state,\n previousState,\n position,\n activeId,\n nodeRenderer,\n onNodeSizeChanged,\n nodeIndex,\n data,\n accessibleLabel,\n isDimmed,\n supportsSelection\n}: NodeProps<K1, D1>) => {\n const { nodeStyles, dimmedItemStyle } = itemStyles;\n const context = {\n state: state,\n previousState: previousState,\n data: data\n };\n\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const ref = useRef<HTMLDivElement>(null);\n // TODO JET-62472 change to one resize observer function\n const optionsRef = useRef({ box: 'border-box' as const });\n useResizeObserver(\n ref,\n useCallback(\n (entry: ResizeObserverEntry) => {\n const boxSize = entry.borderBoxSize;\n const width = boxSize[0].inlineSize;\n const height = boxSize[0].blockSize;\n onNodeSizeChanged(width, height, nodeIndex);\n },\n [nodeIndex, onNodeSizeChanged]\n ),\n optionsRef.current\n );\n return (\n <div\n ref={ref}\n key={id}\n class={classNames([nodeStyles, isDimmed ? dimmedItemStyle : undefined])}\n data-node={id}\n role=\"img\"\n aria-label={getItemAriaLabel(\n translations,\n supportsSelection,\n state.selected,\n accessibleLabel\n )}\n style={{\n top: position.y,\n left: position.x\n }}\n id={state.focused || state.hovered ? activeId : undefined}>\n {nodeRenderer(context)}\n </div>\n );\n};\n","import { ComponentChildren } from 'preact';\nimport type { States, NodeRendererContext, Bounds, DiagramNodeData } from './diagram.types';\nimport { DiagramNodeElement } from './DiagramNodeElement';\nimport { layerStyles } from './themes/DiagramStyles.css';\n\ntype Props<K1, K2, D1> = {\n nodes: D1[];\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n nodeBounds?: Bounds[];\n supportsSelection: boolean;\n};\n\nexport function DiagramNodeLayer<K1, K2, D1 extends DiagramNodeData<K1>>({\n nodes,\n states,\n previousStates,\n nodeRenderer,\n nodeBounds,\n onNodeSizeChanged,\n supportsSelection\n}: Props<K1, K2, D1>) {\n return (\n <div class={layerStyles}>\n {nodes.map((node, i) => {\n // this is for initial render before the layout function so render all nodes at 0,0\n const position =\n nodeBounds && nodeBounds[i] ? { x: nodeBounds[i].x, y: nodeBounds[i].y } : { x: 0, y: 0 };\n const state = {\n selected: states.selectedNodeIds.includes(node.id),\n focused: states.focusedId === node.id,\n hovered: states.hoveredId === node.id,\n zoom: states.zoom\n };\n const previousState = {\n selected: previousStates.selectedNodeIds.includes(node.id),\n focused: previousStates.focusedId === node.id,\n hovered: previousStates.hoveredId === node.id,\n zoom: previousStates.zoom\n };\n return (\n <DiagramNodeElement\n id={node.id}\n position={position}\n state={state}\n previousState={previousState}\n isDimmed={\n states.highlightedIds.length !== 0 && !states.highlightedIds.includes(node.id)\n }\n activeId={states.activeId}\n nodeRenderer={nodeRenderer}\n onNodeSizeChanged={onNodeSizeChanged}\n nodeIndex={i}\n accessibleLabel={node.accessibleLabel}\n data={node}\n supportsSelection={supportsSelection}\n />\n );\n })}\n </div>\n );\n}\n","import type { State, LinkRendererContext } from './diagram.types';\nimport { getItemAriaLabel } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { itemStyles } from './themes/DiagramStyles.css';\nimport { ComponentChildren } from 'preact';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport type { BundleType } from '../resources/nls/bundle';\n\n/**\n * Props for Link\n */\nexport type LinkProps<K2, D2, L> = {\n id: K2;\n label?: string;\n state: State;\n previousState: State;\n isDimmed?: boolean;\n activeId?: string;\n accessibleLabel?: string;\n data: D2;\n linkRenderer: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n supportsSelection: boolean;\n layoutOutput: L;\n};\n\nexport const DiagramLinkElement = <K2, D2, L>({\n id,\n state,\n previousState,\n activeId,\n data,\n linkRenderer,\n accessibleLabel,\n isDimmed,\n supportsSelection,\n layoutOutput\n}: LinkProps<K2, D2, L>) => {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { dimmedItemStyle, linkStyles } = itemStyles;\n const context = {\n state: state,\n previousState: previousState,\n data: data,\n layoutOutput: layoutOutput\n };\n return (\n <g\n key={id}\n id={state.focused ? activeId : undefined}\n aria-label={getItemAriaLabel(\n translations,\n supportsSelection,\n state.selected,\n accessibleLabel\n )}\n data-link={id}\n role=\"img\"\n class={classNames([linkStyles, isDimmed && dimmedItemStyle])}>\n {linkRenderer(context)}\n </g>\n );\n};\n","import { ComponentChildren } from 'preact';\nimport type {\n States,\n LinkRendererContext,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { DiagramLinkElement } from './DiagramLinkElement';\nimport { layerStyles } from './themes/DiagramStyles.css';\n\ntype Props<K2, K1, D2, L> = {\n links: D2[];\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n linkRenderer: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n width: number;\n height: number;\n supportsSelection: boolean;\n layoutOutput: L;\n};\n\nexport function DiagramLinkLayer<\n K2 extends string | number,\n K1 extends string | number,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({\n links,\n states,\n previousStates,\n linkRenderer,\n width,\n height,\n supportsSelection,\n layoutOutput\n}: Props<K2, K1, D2, L>) {\n return (\n <svg class={layerStyles} width={width} height={height}>\n {links.map((link) => {\n const state = {\n selected: states.selectedLinkIds.includes(link.id),\n focused: states.focusedId === link.id,\n hovered: states.hoveredId === link.id,\n zoom: states.zoom\n };\n const previousState = {\n selected: previousStates.selectedLinkIds.includes(link.id),\n focused: previousStates.focusedId === link.id,\n hovered: previousStates.hoveredId === link.id,\n zoom: previousStates.zoom\n };\n return (\n <DiagramLinkElement\n id={link.id}\n label={link.label}\n state={state}\n previousState={previousState}\n isDimmed={\n states.highlightedIds.length !== 0 && !states.highlightedIds.includes(link.id)\n }\n activeId={states.activeId}\n accessibleLabel={link.accessibleLabel}\n data={link}\n linkRenderer={linkRenderer}\n supportsSelection={supportsSelection}\n layoutOutput={layoutOutput}\n />\n );\n })}\n </svg>\n );\n}\n","import type { DiagramLabelPosition, DiagramLabelStyles } from './diagram.types';\nimport { getLabelPosition } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { labelStyles } from './themes/DiagramStyles.css';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { Property } from 'csstype';\n\n/**\n * Props for the label component\n */\ntype LabelProps = {\n styles?: LabelStyles;\n text: string;\n position: DiagramLabelPosition;\n dimensions: TextDimensions;\n isRTL: boolean;\n};\n\n/**\n * Label styles\n */\ntype LabelStyles = DiagramLabelStyles & {\n borderStyle?: Property.BorderStyle;\n};\n\nexport const DiagramLabel = ({ text, position, styles, dimensions, isRTL }: LabelProps) => {\n const { labelStyle, labelBorderStyle } = labelStyles;\n\n const labelPosition = getLabelPosition(dimensions, position, isRTL);\n const labelRotation = getLabelRotation(position);\n return (\n <div\n class={classNames([labelStyle, styles && styles.borderColor && labelBorderStyle])}\n style={{\n top: labelPosition.y,\n left: labelPosition.x,\n ...styles,\n ...labelRotation\n }}>\n {text}\n </div>\n );\n};\n\n/**\n * Returns the label rotation props\n * @param position\n * @returns rotation props\n */\nfunction getLabelRotation(position: DiagramLabelPosition) {\n const rotationAngle = position.rotationAngle;\n const rotationPoint = position.rotationPoint;\n const rotation: {\n transform?: string;\n 'transform-origin'?: string;\n } = {};\n if (rotationAngle) {\n rotation['transform'] = `rotate(${rotationAngle}deg)`;\n }\n if (rotationPoint) {\n rotation['transform-origin'] = `${rotationPoint.x}px ${rotationPoint.y}px`;\n }\n return rotation;\n}\n","import type { DiagramLabelPosition, DiagramNodeData, DiagramLinkData } from './diagram.types';\nimport { DiagramLabel } from './DiagramLabel';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { layerStyles } from './themes/DiagramStyles.css';\nimport { useUser } from '../hooks/UNSAFE_useUser';\n\ntype Props<K1, K2, D1, D2> = {\n labelPosition: (DiagramLabelPosition | undefined)[];\n itemProps: (D1 | D2)[];\n labelDimensions: Map<K1 | K2, TextDimensions>;\n};\n\nexport function DiagramLabelLayer<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>({ labelPosition, itemProps, labelDimensions }: Props<K1, K2, D1, D2>) {\n const { direction } = useUser();\n return (\n <div class={layerStyles}>\n {itemProps.map((item, i) => {\n if (item.label && labelPosition[i]) {\n return (\n <DiagramLabel\n styles={item.labelStyle}\n text={item.label}\n position={labelPosition[i]!}\n dimensions={labelDimensions.get(item.id)!}\n isRTL={direction === 'rtl'}\n />\n );\n }\n return undefined;\n })}\n </div>\n );\n}\n","import type {\n NodeRendererContext,\n LinkRendererContext,\n States,\n Bounds,\n DiagramLabelPosition,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { DiagramNodeLayer } from './DiagramNodeLayer';\nimport { DiagramLinkLayer } from './DiagramLinkLayer';\nimport { DiagramLabelLayer } from './DiagramLabelLayer';\nimport { ComponentChildren } from 'preact';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\n\n/**\n * Props for Diagram layers component\n */\ntype DiagramLayersProps<K1, K2, D1, D2, L> = {\n nodes: D1[];\n links: D2[];\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n linkRenderer?: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n nodeBounds: Bounds[];\n // width height are for svg for links\n width: number;\n height: number;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n nodeLabelPositions?: (DiagramLabelPosition | undefined)[];\n linkLabelPositions?: (DiagramLabelPosition | undefined)[];\n labelDimensions?: Map<K1 | K2, TextDimensions>;\n supportsSelection: boolean;\n layoutOutput?: L;\n};\n\nexport function DiagramLayers<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2>\n>({\n nodes,\n links,\n nodeRenderer,\n linkRenderer,\n states,\n previousStates,\n nodeBounds,\n onNodeSizeChanged,\n width,\n height,\n nodeLabelPositions,\n linkLabelPositions,\n labelDimensions,\n supportsSelection,\n layoutOutput\n}: DiagramLayersProps<K1, K2, D1, D2, L>) {\n return (\n <>\n {links.length > 0 && layoutOutput && linkRenderer && width !== Infinity && (\n <DiagramLinkLayer\n links={links}\n states={states}\n previousStates={previousStates}\n linkRenderer={linkRenderer}\n width={width}\n height={height}\n supportsSelection={supportsSelection}\n layoutOutput={layoutOutput}\n />\n )}\n <DiagramNodeLayer\n nodes={nodes}\n nodeBounds={nodeBounds}\n states={states}\n previousStates={previousStates}\n nodeRenderer={nodeRenderer}\n onNodeSizeChanged={onNodeSizeChanged}\n supportsSelection={supportsSelection}\n />\n {labelDimensions ? (\n <div>\n {nodeLabelPositions ? (\n <DiagramLabelLayer\n labelPosition={nodeLabelPositions}\n itemProps={nodes}\n labelDimensions={labelDimensions}\n />\n ) : undefined}\n {links && linkLabelPositions ? (\n <DiagramLabelLayer\n labelPosition={linkLabelPositions}\n itemProps={links}\n labelDimensions={labelDimensions}\n />\n ) : undefined}\n </div>\n ) : undefined}\n </>\n );\n}\n","import { ComponentChildren } from 'preact';\nimport { centerXYToPanXY } from './utils/diagramUtils';\nimport { panZoomStyles } from './themes/DiagramStyles.css';\n\ntype Props = {\n centerX: number;\n centerY: number;\n zoom: number;\n width: number;\n height: number;\n children: ComponentChildren;\n};\n\nexport function DiagramPanZoomContainer({\n centerX,\n centerY,\n children,\n zoom,\n width,\n height\n}: Props) {\n const panValues = centerXYToPanXY(centerX, centerY, zoom, width, height);\n return (\n <div\n class={panZoomStyles}\n style={{\n //TODO JET-62471 look at using matrices or both in transform instead\n translate: `${panValues.panX}px ${panValues.panY}px`,\n transform: `scale(${zoom})`\n }}>\n {children}\n </div>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\n\nimport type { DiagramNodeData, DiagramLinkData, Bounds, ItemInfo } from '../diagram.types';\n\n/**\n * Navigation direction\n */\nexport type NavDirection = 'right' | 'left' | 'up' | 'down';\n\ntype linkDetailType<K2> = {\n id: K2;\n angle: number;\n distance: number;\n /**\n * Ingoing = 1, outgoing = 0\n */\n direction: 0 | 1;\n};\n\n/**\n * Returns the node data based on node info in a diagram.\n * @param itemInfo\n * @returns\n */\nexport function getNodeDetailFromInfo<K1, K2, D1 extends DiagramNodeData<K1>>(\n itemInfo: ItemInfo<K1, K2>,\n nodes: D1[]\n): D1 | undefined {\n let node;\n for (let i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (itemInfo.id === node.id) {\n return node;\n }\n }\n return undefined;\n}\n\n/**\n * Returns the link data based on link info in a diagram.\n * @param itemInfo\n * @returns\n */\nexport function getLinkDetailFromInfo<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n itemInfo: ItemInfo<K1, K2>,\n links: D2[]\n): D2 | undefined {\n let link;\n for (let i = 0; i < links.length; i++) {\n link = links[i];\n if (itemInfo.id === link.id) {\n return link;\n }\n }\n return undefined;\n}\n\n/**\n * Creates a map with key node id and value node bounds\n */\nexport function createNodeBoundsMap<K1, D1 extends DiagramNodeData<K1>>(\n nodes: D1[],\n bounds: Bounds[]\n) {\n const nodeBounds: Map<K1, Bounds> = new Map();\n for (let i = 0; i < nodes.length; i++) {\n nodeBounds.set(nodes[i].id, bounds[i]);\n }\n return nodeBounds;\n}\n\n/**\n * Utility method that adds sorting attributes of each link to an array\n */\nexport function addSortingAttributes<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, listOfLinks: D2[], nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n let angle, distance, direction;\n const linkDetail: linkDetailType<K2>[] = [];\n for (let i = 0; i < listOfLinks.length; i++) {\n const link = listOfLinks[i];\n angle = _getClockwiseAngle(node, link, nodes, nodeBounds);\n distance = _getNodesDistance(link, nodes, nodeBounds);\n direction = _getLinkDirection(node, link);\n linkDetail.push({ id: link.id, angle: angle, distance: distance, direction: direction });\n }\n return linkDetail;\n}\n\n/**\n * Returns a function that compares two link around a given node\n * The links are analyzed by angle, distance from the node and direction. The sorting attributes are added to the links before sorting.\n */\nexport function getLinkComparator<K2>() {\n return (link1: linkDetailType<K2>, link2: linkDetailType<K2>) => {\n const { angle: linkAngle1, distance: linkDistance1, direction: linkDirection1 } = link1;\n const { angle: linkAngle2, distance: linkDistance2, direction: linkDirection2 } = link2;\n let res = -1;\n\n if (!_anglesAreEqualWithinTolerance(linkAngle1, linkAngle2) && linkAngle1 > linkAngle2) {\n res = 1;\n } else if (_anglesAreEqualWithinTolerance(linkAngle1, linkAngle2)) {\n //check distance and direction\n if (linkDistance1 > linkDistance2) {\n res = 1;\n } else if (linkDistance2 == linkDistance1 && linkDirection1 > linkDirection2) {\n //outgoing to ingoing\n res = 1;\n } else if (linkDistance2 == linkDistance1 && linkDirection1 == linkDirection2) {\n res = 0;\n }\n }\n return res;\n };\n}\n\n/**\n * Returns navigable links for a given node\n */\nexport function getNavigableLinksForNodeId<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n nodeId: K1,\n listOfLinks: D2[]\n) {\n const links: D2[] = [];\n listOfLinks.forEach((link) => {\n const startId = link.startNode;\n const endId = link.endNode;\n\n if (startId == nodeId || endId == nodeId) links.push(link);\n });\n return links;\n}\n\n/**\n * Get the clockwise angle for the link given node as a center\n */\nfunction _getClockwiseAngle<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, link: D2, nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n //find opposite node\n let currNode;\n let startNode = nodes[0];\n let endNode = nodes[0];\n for (let i = 0; i < nodes.length; i++) {\n currNode = nodes[i];\n if (currNode.id === link.startNode) {\n startNode = currNode;\n } else if (currNode.id === link.endNode) {\n endNode = currNode;\n }\n }\n const oppositeNode = node.id == startNode.id ? endNode : startNode;\n\n const p1 = _getNodeCenter(node, nodeBounds);\n const p2 = _getNodeCenter(oppositeNode, nodeBounds);\n let angle = Math.atan2(p2.y - p1.y, p2.x - p1.x);\n angle = angle < 0 ? angle + Math.PI * 2 : angle;\n return angle;\n}\n\n/**\n * Get the distance between start and end nodes for the given link\n */\nfunction _getNodesDistance<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(link: D2, nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n let currNode;\n let startNode = nodes[0];\n let endNode = nodes[0];\n for (let i = 0; i < nodes.length; i++) {\n currNode = nodes[i];\n if (currNode.id === link.startNode) {\n startNode = currNode;\n } else if (currNode.id === link.endNode) {\n endNode = currNode;\n }\n }\n const p1 = _getNodeCenter(startNode, nodeBounds);\n const p2 = _getNodeCenter(endNode, nodeBounds);\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\n/**\n * Get link direction for the given node. 1 if the node is the end node\n * and 0 if it is the start node\n */\nfunction _getLinkDirection<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, link: D2): 0 | 1 {\n if (link.endNode === node.id) {\n return 1;\n }\n return 0;\n}\n\n/**\n * Get node center\n */\nfunction _getNodeCenter<K1, D1 extends DiagramNodeData<K1>>(node: D1, nodeBounds: Map<K1, Bounds>) {\n const nodeBB = nodeBounds.get(node.id)!;\n return { x: nodeBB.x + nodeBB.w / 2, y: nodeBB.y + nodeBB.h / 2 };\n}\n\n/**\n * Calculates the angle weighted by distance\n */\nexport function calcDistanceAngleWeighted(\n objectBB: Bounds,\n currentBB: Bounds,\n direction: NavDirection\n) {\n // Variables used for calculating penalties when calculating distances between two navigables.\n const optimalAngle1 = (15 / 180) * Math.PI;\n const optimalAngle2 = (40 / 180) * Math.PI;\n const suboptimalAnglePenalty1 = 2; // multiplier to the distance\n const suboptimalAnglePenalty2 = 6; // multiplier to the distance\n\n const objCenterX = objectBB.x + objectBB.w / 2;\n const objCenterY = objectBB.y + objectBB.h / 2;\n\n const curCenterX = currentBB.x + currentBB.w / 2;\n const curCenterY = currentBB.y + currentBB.h / 2;\n\n const x_dist = Math.abs(objCenterX - curCenterX);\n const y_dist = Math.abs(objCenterY - curCenterY);\n\n const angle = Math.atan2(y_dist, x_dist);\n\n let distance = Math.sqrt(x_dist * x_dist + y_dist * y_dist);\n\n // Angle penalty based on direction\n if (\n (angle > optimalAngle1 && (direction == 'right' || direction == 'left')) ||\n (angle < Math.PI / 2 - optimalAngle1 && (direction == 'up' || direction == 'down'))\n ) {\n if (\n (angle > optimalAngle2 && (direction == 'right' || direction == 'left')) ||\n (angle < Math.PI / 2 - optimalAngle2 && (direction == 'up' || direction == 'down'))\n ) {\n distance *= suboptimalAnglePenalty2;\n } else {\n distance *= suboptimalAnglePenalty1;\n }\n }\n\n return distance;\n}\n\n/**\n * Given a direction, is a certain node is a valid destination to navigate to\n */\nexport function isValidDestination(\n objBB: Bounds,\n curBB: Bounds,\n direction: NavDirection,\n compareCenters: boolean\n) {\n // compare the centers of the navigable and to be valid, the navigable must be in the right direction\n // without tolerance\n if (compareCenters) {\n const objCenterX = objBB.x + 0.5 * objBB.w;\n const curCenterX = curBB.x + 0.5 * curBB.w;\n const objCenterY = objBB.y + 0.5 * objBB.h;\n const curCenterY = curBB.y + 0.5 * curBB.h;\n\n switch (direction) {\n case 'up':\n return objCenterY < curCenterY;\n case 'down':\n return objBB.y > curCenterY;\n case 'right':\n return objCenterX > curCenterX;\n case 'left':\n return objCenterX < curCenterX;\n default:\n break;\n }\n return true;\n }\n\n switch (direction) {\n case 'up':\n return objBB.y < curBB.y || _areEqualWithinTolerance(objBB.y, curBB.y);\n case 'down':\n return objBB.y > curBB.y || _areEqualWithinTolerance(objBB.y, curBB.y);\n case 'right':\n return objBB.x > curBB.x || _areEqualWithinTolerance(objBB.x, curBB.x);\n case 'left':\n return objBB.x < curBB.x || _areEqualWithinTolerance(objBB.x, curBB.x);\n default:\n break;\n }\n return true;\n}\n\n/**\n * Returns true if two nodes are in contact\n */\nexport function calcInContact(objRect: Bounds, curRect: Bounds, direction: NavDirection) {\n switch (direction) {\n case 'up':\n return (\n _isVerticallyAligned(objRect, curRect) &&\n (curRect.y <= objRect.y + objRect.h ||\n _areEqualWithinTolerance(curRect.y, objRect.y + objRect.h))\n );\n case 'down':\n return (\n _isVerticallyAligned(objRect, curRect) &&\n (objRect.y <= curRect.y + curRect.h ||\n _areEqualWithinTolerance(objRect.y, curRect.y + curRect.h))\n );\n case 'right':\n return (\n _isHorizontallyAligned(objRect, curRect) &&\n (objRect.x <= curRect.x + curRect.w ||\n _areEqualWithinTolerance(objRect.x, curRect.x + curRect.w))\n );\n case 'left':\n return (\n _isHorizontallyAligned(objRect, curRect) &&\n (curRect.x <= objRect.x + objRect.w ||\n _areEqualWithinTolerance(curRect.x, objRect.x + objRect.w))\n );\n default:\n break;\n }\n\n return false;\n}\n\nfunction _isVerticallyAligned(rect1: Bounds, rect2: Bounds) {\n return (\n (rect1.x >= rect2.x && rect1.x <= rect2.x + rect2.w) ||\n (rect2.x >= rect1.x && rect2.x <= rect1.x + rect1.w)\n );\n}\n\nfunction _isHorizontallyAligned(rect1: Bounds, rect2: Bounds) {\n return (\n (rect1.y >= rect2.y && rect1.y <= rect2.y + rect2.h) ||\n (rect2.y >= rect1.y && rect2.y <= rect1.y + rect1.h)\n );\n}\n\nfunction _areEqualWithinTolerance(a: number, b: number) {\n return Math.abs(a - b) <= 0.0000001;\n}\n\nfunction _anglesAreEqualWithinTolerance(a1: number, a2: number) {\n let res = Math.abs(a1 - a2) <= 0.0000001;\n if (!res) {\n res = Math.abs(Math.PI * 2 + Math.min(a1, a2) - Math.max(a1, a2)) <= 0.0000001;\n }\n return res;\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 */\n\nimport {\n NavDirection,\n addSortingAttributes,\n calcDistanceAngleWeighted,\n calcInContact,\n createNodeBoundsMap,\n getLinkComparator,\n getNavigableLinksForNodeId,\n getNodeDetailFromInfo,\n isValidDestination\n} from '../utils/navUtils';\nimport type { DiagramNodeData, DiagramLinkData, Bounds, ItemInfo } from '../diagram.types';\nimport { useRef } from 'preact/hooks';\n\nexport function useDiagramNavigation<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(nodes: D1[], links: D2[], bounds: Bounds[], linkIdToDataMap: Map<K2, D2>) {\n const currentKeyboardFocusNode = useRef<K1>();\n const nodeBoundsById = createNodeBoundsMap<K1, D1>(nodes, bounds);\n\n function getNextNavigableNode(\n direction: NavDirection,\n compareCenters: boolean,\n current?: D1,\n listOfObjects?: D1[]\n ) {\n if (!listOfObjects) return current;\n\n if (!current) return listOfObjects[0];\n const currBB = nodeBoundsById.get(current.id);\n if (!currBB) return listOfObjects[0];\n\n let nextObject = current; //init to current object\n let nextDistance = Number.MAX_VALUE;\n\n // If an object is in contact it overrules all other attributes\n // Only another in contact object with better attributes will have higher precedence\n let nextInContact = false;\n\n // Whether or not the for loop has encountered the current object\n let hasFoundCurrent = false;\n\n let object, inContact, distance;\n for (let i = 0; i < listOfObjects.length; i++) {\n object = listOfObjects[i];\n\n if (object === current) {\n hasFoundCurrent = true;\n continue;\n }\n const objBB = nodeBoundsById.get(object.id);\n if (!objBB) continue;\n\n const objBounds = { x: objBB.x, y: objBB.y, w: objBB.w, h: objBB.h };\n const currBounds = { x: currBB.x, y: currBB.y, w: currBB.w, h: currBB.h };\n if (!isValidDestination(objBounds, currBounds, direction, compareCenters)) continue;\n\n inContact = calcInContact(objBounds, currBounds, direction);\n\n if (nextInContact && !inContact) continue;\n\n distance = calcDistanceAngleWeighted(objBounds, currBounds, direction);\n\n if (distance == 0 && !hasFoundCurrent) continue;\n\n // Make sure incontact flag have highest precedence\n if (\n (!nextInContact && inContact) ||\n (distance < nextDistance && ((nextInContact && inContact) || !nextInContact))\n ) {\n nextDistance = distance;\n nextObject = object;\n nextInContact = inContact;\n }\n }\n return nextObject;\n }\n\n /**\n * Get next navigavle link depending on direction - clockwise or conter clockwise.\n * The decision is made based on location of nodes centers rather than link paths or link angles.\n */\n function getNextNavigableLink(\n direction: string,\n listOfNodes: D1[],\n currentLink?: D2,\n listOfLinks?: D2[]\n ) {\n if (!listOfLinks) return currentLink;\n\n if (!currentLink) return listOfLinks[0];\n const keyboardFocusNode = currentKeyboardFocusNode.current;\n const nodeId = keyboardFocusNode ? keyboardFocusNode : currentLink.startNode;\n const node = getNodeDetailFromInfo({ id: nodeId, isNode: true }, listOfNodes);\n\n if (!node) return currentLink;\n const adjLinks = getNavigableLinksForNodeId(node.id, listOfLinks);\n listOfLinks = adjLinks;\n const linksWithSortingAttributes = addSortingAttributes<K1, K2, D1, D2>(\n node,\n listOfLinks,\n listOfNodes,\n nodeBoundsById\n );\n linksWithSortingAttributes.sort(getLinkComparator());\n //clockwise direction\n const bForward = direction == 'down' ? true : false;\n let index = 0;\n for (let i = 0; i < linksWithSortingAttributes.length; i++) {\n const link = linksWithSortingAttributes[i];\n if (link.id === currentLink.id) {\n if (bForward) index = i == linksWithSortingAttributes.length - 1 ? 0 : i + 1;\n else index = i == 0 ? linksWithSortingAttributes.length - 1 : i - 1;\n break;\n }\n }\n return linksWithSortingAttributes[index];\n }\n\n /**\n * Returns the link detail when a node to link navigation occurs\n */\n function navigateFromNodeToLink(listOfLinks: D2[], event: KeyboardEvent, node?: D1) {\n if (!node) return undefined;\n const adjLinks = getNavigableLinksForNodeId(node.id, listOfLinks);\n if (adjLinks.length < 1) return undefined;\n let link = adjLinks[0];\n const nodeBB = nodeBoundsById.get(node.id)!;\n let object, currNode, currNodeBB, currNodeBBCenterX;\n const nodeCenterX = nodeBB.x + nodeBB.w / 2;\n currentKeyboardFocusNode.current = node.id;\n for (let i = 0; i < adjLinks.length; i++) {\n object = adjLinks[i];\n currNode = object.startNode === node.id ? object.endNode : object.startNode;\n currNodeBB = nodeBoundsById.get(currNode);\n currNodeBBCenterX = currNodeBB!.x + currNodeBB!.w / 2;\n if (\n // equivalent of ≤ and ≥\n (event.altKey && event.code === 'Comma' && currNodeBBCenterX <= nodeCenterX) ||\n (event.altKey && event.code === 'Period' && currNodeBBCenterX >= nodeCenterX)\n ) {\n link = object;\n break;\n }\n }\n return { id: link.id, isNode: false };\n }\n\n /**\n * Returns the node detail when a link to node navigation occurs\n */\n function navigateFromLinkToNode(linkId: K2, event: KeyboardEvent) {\n const key = event.key;\n const linkData = linkIdToDataMap.get(linkId)!;\n const startNodeBB = nodeBoundsById.get(linkData.startNode);\n const endNodeBB = nodeBoundsById.get(linkData.endNode);\n if (!startNodeBB || !endNodeBB) return undefined;\n const startNodeCenterX = startNodeBB.x + startNodeBB.w / 2;\n const endNodeCenterX = endNodeBB.x + endNodeBB.w / 2;\n const newNode =\n (endNodeCenterX > startNodeCenterX && key === 'ArrowRight') ||\n (endNodeCenterX < startNodeCenterX && key === 'ArrowLeft')\n ? linkData.endNode\n : linkData.startNode;\n return { id: newNode, isNode: true };\n }\n\n return {\n isNode: (itemInfo: ItemInfo<K1, K2>): boolean => {\n let node, link;\n for (let i = 0; i < nodes.length; i++) {\n node = nodes[i];\n link = links[i];\n if (itemInfo.id === node.id) {\n return true;\n }\n if (itemInfo.id === link.id) {\n return true;\n }\n }\n return false;\n },\n getNextNavigableNode,\n getNextNavigableLink,\n navigateFromNodeToLink,\n navigateFromLinkToNode\n };\n}\n","import {\n ItemInfo,\n ItemHoverDetail,\n ItemFocusDetail,\n Bounds,\n DiagramNodeData,\n DiagramLinkData\n} from '../diagram.types';\nimport { useRef, useState } from 'preact/hooks';\nimport { isEqualItem, getNavigableInfo, zoomAndCenterItemFromInfo } from '../utils/diagramUtils';\nimport { getRandomId } from '../../utils/PRIVATE_visLayoutUtils/layoutUtils';\nimport { getNodeDetailFromInfo, getLinkDetailFromInfo } from '../utils/navUtils';\nimport { useDiagramNavigation } from './useDiagramNavigation';\nimport type { NavDirection } from '../utils/navUtils';\nimport { useVisHover } from '#hooks/PRIVATE_useVisHover';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\n\nconst DEFAULT_KB_PAN = 15;\nconst DEFAULT_KB_ZOOM = 0.15;\n\nexport function useEvents<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n touchResponse: 'touchStart' | 'touchHold',\n initNode: D1,\n nodes: D1[],\n links: D2[],\n nodeBounds: Bounds[],\n linkIdToDataMap: Map<K2, D2>,\n nodeIdToDataMap: Map<K1, D1>,\n nodeIdToIndexMap: Map<K1, number>,\n width: number,\n height: number,\n maxZoom: number,\n onItemHover?: (detail: ItemHoverDetail<K1, K2, D1, D2>) => void,\n onItemFocus?: (detail: ItemFocusDetail<K1, K2, D1, D2>) => void,\n kbPanCallback?: (props: {\n dPan?: { dx: number; dy: number };\n nPan?: { cx: number; cy: number };\n center?: boolean;\n }) => void,\n kbZoomCallback?: (props: { dZoom?: number; nZoom?: number }) => void\n) {\n const {\n getNextNavigableNode,\n getNextNavigableLink,\n navigateFromNodeToLink,\n navigateFromLinkToNode\n } = useDiagramNavigation<K1, K2, D1, D2>(nodes, links, nodeBounds, linkIdToDataMap);\n const [focusedItemInfo, setfocusedItemInfo] = useState<ItemInfo<K1, K2>>({\n id: initNode.id,\n isNode: true\n });\n const [hoveredItemInfo, sethoveredItemInfo] = useState<ItemInfo<K1, K2>>();\n const activeId = useRef<string>();\n\n const cancelEvent = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const keyDownHandler = (event: KeyboardEvent) => {\n const key = event.key;\n let eventConsumed = false;\n // tabbing out of the diagram\n if (key === 'TAB') {\n return;\n }\n // if this a switch from node to link or vice versa\n if (isChangeItemType(event)) {\n const nextItemInfo = focusedItemInfo.isNode\n ? navigateFromNodeToLink(links, event, getNodeDetailFromInfo(focusedItemInfo, nodes))\n : navigateFromLinkToNode(focusedItemInfo.id as K2, event);\n handleKeyboardInput(nextItemInfo);\n eventConsumed = true;\n } else if (isNavigationEvent(key)) {\n const nextItemInfo = handleKeyboardNavigationEvent(key);\n handleKeyboardInput(nextItemInfo);\n eventConsumed = true;\n } else {\n switch (key) {\n case 'PageUp': {\n kbPanCallback &&\n kbPanCallback({\n dPan: {\n dx: event.shiftKey ? -DEFAULT_KB_PAN : 0,\n dy: event.shiftKey ? 0 : -DEFAULT_KB_PAN\n }\n });\n eventConsumed = true;\n break;\n }\n case 'PageDown': {\n kbPanCallback &&\n kbPanCallback({\n dPan: {\n dx: event.shiftKey ? DEFAULT_KB_PAN : 0,\n dy: event.shiftKey ? 0 : DEFAULT_KB_PAN\n }\n });\n eventConsumed = true;\n eventConsumed = true;\n break;\n }\n case '+':\n case '=': {\n kbZoomCallback && kbZoomCallback({ dZoom: DEFAULT_KB_ZOOM });\n eventConsumed = true;\n break;\n }\n case '-':\n case '_': {\n kbZoomCallback && kbZoomCallback({ dZoom: -DEFAULT_KB_ZOOM });\n eventConsumed = true;\n break;\n }\n case '0': {\n if (event.ctrlKey && event.altKey) {\n const { centerX, centerY, zoom } = zoomAndCenterItemFromInfo(\n focusedItemInfo,\n linkIdToDataMap,\n nodeBounds,\n nodeIdToIndexMap,\n width,\n height,\n maxZoom\n );\n kbZoomCallback && kbZoomCallback({ nZoom: zoom });\n kbPanCallback && kbPanCallback({ nPan: { cx: centerX, cy: centerY } });\n } else {\n // zoom to fit\n kbZoomCallback && kbZoomCallback({});\n kbPanCallback && kbPanCallback({ center: true });\n }\n eventConsumed = true;\n }\n }\n }\n if (eventConsumed) {\n cancelEvent(event);\n }\n };\n\n const keyUpHandler = (event: KeyboardEvent) => {\n const key = event.code;\n switch (key) {\n case 'Tab': {\n updatefocusedItemInfo({\n ...focusedItemInfo,\n isCurrent: true,\n isFocusVisible: true\n });\n break;\n }\n }\n };\n\n const blurHandler = () => {\n if (hoveredItemInfo != null || focusedItemInfo.isCurrent) {\n onItemFocus?.({ id: undefined, data: undefined });\n }\n const itemInfo = { ...focusedItemInfo, isCurrent: false, isFocusVisible: false };\n setfocusedItemInfo(itemInfo);\n };\n\n const onHover = (event: PointerEvent) => {\n const itemInfo = getNavigableInfo<K1, K2>(event.target as HTMLElement);\n if (itemInfo && !isEqualItem(itemInfo, hoveredItemInfo)) {\n sethoveredItemInfo({ ...itemInfo, isCurrent: true });\n activeId.current = getRandomId();\n setfocusedItemInfo({ ...focusedItemInfo, isCurrent: false });\n if (itemInfo.isNode) {\n onItemHover?.({\n id: itemInfo.id,\n type: 'node',\n data: nodeIdToDataMap.get(itemInfo.id as K1)\n });\n } else {\n onItemHover?.({\n id: itemInfo.id,\n type: 'link',\n data: linkIdToDataMap.get(itemInfo.id as K2)\n });\n }\n }\n };\n\n const onHoverLeave = () => {\n sethoveredItemInfo(undefined);\n activeId.current = undefined;\n onItemHover?.({ id: undefined, data: undefined });\n };\n\n const hoverHandlers = useVisHover(onHover, undefined, onHoverLeave, touchResponse);\n\n const pointerUpHandler = (event: PointerEvent) => {\n const itemInfo = getNavigableInfo<K1, K2>(event.target as HTMLElement);\n if (itemInfo.id != null) {\n setfocusedItemInfo(itemInfo);\n activeId.current = getRandomId();\n }\n };\n\n function updatefocusedItemInfo(itemInfo: ItemInfo<K1, K2>) {\n if (itemInfo.isNode) {\n onItemFocus?.({\n id: itemInfo.id,\n type: 'node',\n data: nodeIdToDataMap.get(itemInfo.id as K1)\n });\n } else {\n onItemFocus?.({\n id: itemInfo.id,\n type: 'link',\n data: linkIdToDataMap.get(itemInfo.id as K2)\n });\n }\n activeId.current = getRandomId();\n setfocusedItemInfo(itemInfo);\n }\n\n function handleKeyboardInput(item?: ItemInfo<K1, K2>) {\n if (!item) return;\n if (!isEqualItem(item, focusedItemInfo)) {\n item.isCurrent = true;\n item.isFocusVisible = true;\n if (hoveredItemInfo) {\n sethoveredItemInfo({ ...hoveredItemInfo, isCurrent: false });\n }\n updatefocusedItemInfo(item);\n }\n }\n\n function isNavigationEvent(key: string) {\n switch (key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowLeft': {\n return true;\n }\n }\n return false;\n }\n\n function isChangeItemType(event: KeyboardEvent) {\n const key = event.code;\n // check if switching from node to link\n // equivalent of ≤ and ≥\n if (focusedItemInfo.isNode && event.altKey && (key === 'Period' || key === 'Comma')) {\n return true;\n // check if switching from link to node\n } else if (!focusedItemInfo.isNode && (key === 'ArrowLeft' || key === 'ArrowRight')) {\n return true;\n }\n return false;\n }\n\n function handleKeyboardNavigationEvent(key: string) {\n let direction: NavDirection = 'down';\n switch (key) {\n case 'ArrowDown': {\n direction = 'down';\n break;\n }\n case 'ArrowUp': {\n direction = 'up';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n }\n if (focusedItemInfo.isNode) {\n const itemDetail = getNextNavigableNode(\n direction,\n true,\n getNodeDetailFromInfo(focusedItemInfo, nodes),\n nodes\n );\n return itemDetail ? { id: itemDetail.id, isNode: true } : focusedItemInfo;\n } else {\n const linkDetail = getLinkDetailFromInfo(focusedItemInfo, links);\n const itemDetail = getNextNavigableLink(direction, nodes, linkDetail, links);\n return itemDetail ? { id: itemDetail.id } : { id: focusedItemInfo.id };\n }\n }\n\n return {\n focusedItemInfo,\n hoveredItemInfo,\n activeId: activeId.current,\n eventsProps: mergeProps(hoverHandlers, {\n onKeyUp: keyUpHandler,\n onKeyDown: keyDownHandler,\n onBlur: blurHandler,\n onPointerUp: pointerUpHandler\n })\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n ItemInfo,\n Bounds,\n DatatipContext,\n DiagramNodeData,\n DiagramLinkData\n} from '../diagram.types';\nimport type { Ref } from 'preact/hooks';\nimport { calculateOffset, useDatatip } from '../../hooks/PRIVATE_useDatatip';\nimport type { Pan } from '../utils/panUtils';\nimport { useUser } from '../../hooks/UNSAFE_useUser';\nimport { getDatatipContent } from '../utils/diagramUtils';\nimport { ComponentChildren } from 'preact';\nimport { Property } from 'csstype';\n\ntype props<K1, K2, D1, D2> = {\n touchResponse: 'touchStart' | 'touchHold';\n datatip?: (context: DatatipContext<D1, D2>) => {\n content: ComponentChildren;\n borderColor?: Property.BorderColor;\n };\n text?: string;\n focusedItemInfo: ItemInfo<K1, K2>;\n focusedItemBoundsRef: Ref<Bounds | null>;\n panState: Pan;\n zoom: number;\n width: number;\n nodesMap: Map<K1, D1>;\n linksMap: Map<K2, D2>;\n hoveredItem?: ItemInfo<K1, K2>;\n};\n\n/**\n * Returns the datatip.\n * @param text The text string for the diagram item.\n * @param rootRef The ref for root of the diagram.\n * @param focusedItemBoundsRef The ref for focused item bounds.\n * @param focusedItemInfo The ItemInfo for focused item.\n * @returns\n */\nexport const useDiagramDatatip = <\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>({\n touchResponse,\n datatip,\n focusedItemBoundsRef,\n focusedItemInfo,\n panState,\n zoom,\n width,\n nodesMap,\n linksMap,\n hoveredItem\n}: props<K1, K2, D1, D2>) => {\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n\n const datatipC = getDatatipContent(nodesMap, linksMap, focusedItemInfo, hoveredItem, datatip);\n\n const elementBounds = focusedItemInfo?.isCurrent\n ? {\n x: focusedItemBoundsRef.current!.x * zoom + panState.panX,\n y: focusedItemBoundsRef.current!.y * zoom + panState.panY,\n width: focusedItemBoundsRef.current!.w * zoom,\n height: focusedItemBoundsRef.current!.h * zoom\n }\n : undefined;\n\n const { datatipContent, datatipProps } = useDatatip({\n content: datatipC?.content,\n borderColor: datatipC?.borderColor,\n placement: 'top-start',\n offset: calculateOffset(isRtl, width, elementBounds),\n anchor: focusedItemInfo?.isCurrent ? 'element' : 'pointer',\n touchResponse\n });\n return { datatipContent: datatipContent, datatipProps: datatipProps };\n};\n","/**\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 { Ref, useRef } from 'preact/hooks';\n\ntype PointerGesture = {\n pointers: PointerEvent[];\n};\n\ntype UsePointerGestureOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n numPointers: number;\n onPointerGestureDown?: (detail: PointerGesture) => void;\n onPointerGestureMove?: (detail: PointerGesture) => void;\n onPointerGestureEnd?: (detail: PointerGesture) => void;\n onExtraneousPointerDown?: (detail: PointerGesture) => void;\n isDisabled?: boolean;\n};\n\nconst usePointerGesture = ({\n captureTargetRef,\n numPointers = 1,\n onPointerGestureDown,\n onPointerGestureMove,\n onPointerGestureEnd,\n onExtraneousPointerDown,\n isDisabled = false\n}: UsePointerGestureOptions) => {\n const activePointers = useRef<PointerEvent[]>([]);\n\n if (isDisabled) {\n activePointers.current = [];\n }\n\n const onPointerDown = (e: PointerEvent) => {\n activePointers.current.push(e);\n if (activePointers.current.length === numPointers) {\n onPointerGestureDown && onPointerGestureDown({ pointers: activePointers.current });\n } else if (activePointers.current.length > numPointers) {\n onExtraneousPointerDown && onExtraneousPointerDown({ pointers: activePointers.current });\n }\n };\n\n const onPointerMove = (e: PointerEvent) => {\n if (activePointers.current.length === 0) return;\n\n const index = activePointers.current.findIndex(\n (pointerEvent) => pointerEvent.pointerId === e.pointerId\n );\n if (index === -1) return;\n\n activePointers.current[index] = e;\n if (activePointers.current.length === numPointers) {\n activePointers.current.forEach((e) =>\n captureTargetRef.current!.setPointerCapture(e.pointerId)\n );\n\n onPointerGestureMove && onPointerGestureMove({ pointers: activePointers.current });\n }\n };\n\n const onPointerUp = (e: PointerEvent) => {\n const index = activePointers.current.findIndex(\n (pointerEvent) => pointerEvent.pointerId === e.pointerId\n );\n if (index === -1) return;\n\n activePointers.current[index] = e;\n if (activePointers.current.length === numPointers) {\n onPointerGestureEnd && onPointerGestureEnd({ pointers: activePointers.current });\n }\n activePointers.current.splice(index, 1);\n };\n\n const onPointerCancel = onPointerUp;\n const onPointerLeave = onPointerUp;\n\n return isDisabled\n ? {}\n : {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n onPointerLeave\n };\n};\n\nexport { usePointerGesture };\n","/**\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 { Ref, useRef } from 'preact/hooks';\nimport { usePointerGesture } from './usePointerGesture';\n/**\n * Draggable region\n */\ntype DraggableRegion = {\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n};\n\ntype DragDetail = {\n x: number;\n y: number;\n dx: number;\n dy: number;\n regionOffsetX: number;\n regionOffsetY: number;\n originalEvent: PointerEvent;\n};\n\ntype UseDragOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n draggableRegion?: DraggableRegion;\n onDragStart?: (detail: Omit<DragDetail, 'dx' | 'dy'>) => void;\n onDragMove?: (detail: DragDetail) => void;\n onDragEnd?: (detail: DragDetail) => void;\n isDisabled?: boolean;\n};\n/**\n * Whether point with coordinates are in the draggable region\n */\nconst inDraggableRegion = (x: number, y: number, region?: DraggableRegion) => {\n if (!region) return true;\n const { xMin, xMax, yMin, yMax } = region;\n return x >= xMin && x <= xMax && y >= yMin && y <= yMax;\n};\n\n/**\n * Returns region offset\n */\nconst getRegionOffset = (x: number, y: number, region?: DraggableRegion) => {\n if (!region) return { regionOffsetX: x, regionOffsetY: y };\n return { regionOffsetX: x - region.xMin, regionOffsetY: y - region.yMin };\n};\n\nconst useDrag = ({\n captureTargetRef,\n draggableRegion,\n onDragStart,\n onDragMove,\n onDragEnd,\n isDisabled = false\n}: UseDragOptions) => {\n const inactiveState = { isDragging: false, x0: -1, y0: -1, regionOffsetX: -1, regionOffsetY: -1 };\n const dragState = useRef(inactiveState);\n\n const handlePointerEvent = (e: PointerEvent, cb?: (detail: DragDetail) => void) => {\n const { isDragging, x0, y0, regionOffsetX, regionOffsetY } = dragState.current;\n if (!isDragging) return;\n const x = e.pageX;\n const y = e.pageY;\n cb && cb({ x, y, dx: x - x0, dy: y - y0, regionOffsetX, regionOffsetY, originalEvent: e });\n };\n\n const dragProps = usePointerGesture({\n captureTargetRef,\n numPointers: 1, // Only allow 1 pointer dragging\n onExtraneousPointerDown: () => {\n dragState.current = inactiveState;\n },\n onPointerGestureDown: ({ pointers: [e] }) => {\n const x = e.pageX;\n const y = e.pageY;\n if (e.button !== 0 || !inDraggableRegion(x, y, draggableRegion)) return;\n const { regionOffsetX, regionOffsetY } = getRegionOffset(x, y, draggableRegion);\n dragState.current = { isDragging: true, x0: x, y0: y, regionOffsetX, regionOffsetY };\n onDragStart && onDragStart({ x, y, regionOffsetX, regionOffsetY, originalEvent: e });\n },\n onPointerGestureMove: ({ pointers: [e] }) => {\n handlePointerEvent(e, onDragMove);\n },\n onPointerGestureEnd: ({ pointers: [e] }) => {\n handlePointerEvent(e, onDragEnd);\n dragState.current = inactiveState;\n }\n });\n\n return isDisabled ? {} : dragProps;\n};\n\nexport { useDrag };\n","/**\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 { Bounds, PanState } from '../diagram.types';\nimport { panXYToCenterXY } from './diagramUtils';\nexport type PanBounds = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\n/**\n * The pan values that describes where the diagram content\n * is panned\n */\nexport type Pan = {\n panX: number;\n panY: number;\n};\n\nconst constrainPan = (\n previousPan: Pan,\n nextPan: Pan,\n panBounds: PanBounds,\n panDirection: 'x' | 'y' | 'any'\n) => {\n const panX = panDirection !== 'y' ? nextPan.panX : previousPan.panX;\n const panY = panDirection !== 'x' ? nextPan.panY : previousPan.panY;\n return {\n panX: panX > panBounds.maxX || panX < panBounds.minX ? previousPan.panX : panX,\n panY: panY > panBounds.maxY || panY < panBounds.minY ? previousPan.panY : panY\n };\n};\n\nexport const pan = (\n previousPan: Pan,\n nextPan: Pan,\n panDirection: 'x' | 'y' | 'any',\n zoom: number,\n width: number,\n height: number,\n panBounds?: PanBounds,\n onPanChange?: (detail: PanState) => void\n) => {\n if (!panBounds) {\n //On initial render before nodes are rendered\n return { newPan: { panX: 0, panY: 0 } };\n }\n const newPan = constrainPan(previousPan, nextPan, panBounds, panDirection);\n const isPanChanged = newPan.panX !== previousPan.panX || newPan.panY !== previousPan.panY;\n const center = panXYToCenterXY(newPan.panX, newPan.panY, zoom, width, height);\n isPanChanged &&\n onPanChange &&\n onPanChange({\n centerX: center.centerX,\n centerY: center.centerY\n });\n return { newPan };\n};\n\nexport const getPanBounds = (\n width: number,\n height: number,\n elemBounds: Bounds,\n panType: string,\n zoom: number,\n minZoom: number,\n initPanZoomState: {\n zoom: number;\n centerX?: number;\n centerY?: number;\n }\n): PanBounds => {\n const { x, y, w, h } = elemBounds;\n let minX, maxX, minY, maxY;\n if (panType === 'centerContent') {\n minX = width / 2 - (w + x) * zoom;\n minY = height / 2 - (h + y) * zoom;\n maxX = width / 2 - x * zoom;\n maxY = height / 2 - y * zoom;\n } else {\n // panType equals fixed\n const zoomRatio = zoom / minZoom;\n // Find left corner of the content at min zoom and content is centered\n const minZoomX = (width - w * minZoom) / 2 - x * minZoom;\n const minZoomY = (height - h * minZoom) / 2 - y * minZoom;\n // When we pan all the way to the right, the left corner of displayable area is 0,0 as in min zoom.\n // When we pan all the way to the left, lets find the corner of the displayable area\n const leftCornerX = width - width * zoomRatio;\n const leftCornerY = height - height * zoomRatio;\n // Now we have everything to calculate pan zoom constraints\n minX = leftCornerX + minZoomX * zoomRatio;\n minY = leftCornerY + minZoomY * zoomRatio;\n maxX = minZoomX * zoomRatio;\n maxY = minZoomY * zoomRatio;\n }\n const initZoom = initPanZoomState.zoom;\n const initCenterX = initPanZoomState.centerX;\n const initCenterY = initPanZoomState.centerY;\n // If an initial panZoomState is set, should expand pan bounds to include it\n let dx, dy;\n if (initCenterX) {\n const boundsX = initCenterX * initZoom - width / 2;\n if (-boundsX * initZoom < minX) {\n dx = minX - boundsX * initZoom;\n minX -= dx;\n maxX += dx;\n } else if (-boundsX * initZoom > maxX) {\n dx = -boundsX * initZoom - maxX;\n minX -= dx;\n maxX += dx;\n }\n }\n if (initCenterY) {\n const boundsY = initCenterY * initZoom - height / 2;\n if (-boundsY * initZoom < minY) {\n dy = minY - boundsY * initZoom;\n minY -= dy;\n maxY += dy;\n } else if (-boundsY * initZoom > maxY) {\n dy = -boundsY * initZoom - maxY;\n minY -= dy;\n maxY += dy;\n }\n }\n return {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n};\n","/**\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 type { PanState } from '../diagram.types';\n\nimport { Ref, useRef } from 'preact/hooks';\nimport { useDrag } from './useDrag';\nimport { PanBounds, pan } from '../utils/panUtils';\nimport { centerXYToPanXY } from '../utils/diagramUtils';\n/**\n * Options for useDragPan hook\n */\ntype UseDragPanOptions = {\n panProps: {\n panning: 'centerContent' | 'fixed' | 'off';\n centerX: number;\n centerY: number;\n panDirection: 'x' | 'y' | 'any';\n onPan?: (detail: PanState) => void;\n };\n captureTargetRef: Ref<HTMLDivElement>;\n panBounds?: PanBounds;\n onDragPanStart?: () => void;\n onDragPanEnd?: () => void;\n zoom: number;\n width: number;\n height: number;\n};\n\nconst useDragPan = ({\n panProps,\n captureTargetRef,\n panBounds,\n width,\n height,\n zoom,\n onDragPanStart,\n onDragPanEnd\n}: UseDragPanOptions) => {\n const prevPanState = useRef({ panX: 0, panY: 0 });\n const initialPanState = useRef({ panX: 0, panY: 0 });\n const dragProps = useDrag({\n captureTargetRef,\n onDragStart: () => {\n const panValues = centerXYToPanXY(panProps.centerX, panProps.centerY, zoom, width, height);\n initialPanState.current = {\n panX: panValues.panX,\n panY: panValues.panY\n };\n onDragPanStart && onDragPanStart();\n },\n onDragMove: ({ dx, dy }) => {\n const nextPan = {\n panX: initialPanState.current.panX + dx,\n panY: initialPanState.current.panY + dy\n };\n const { newPan } = pan(\n prevPanState.current,\n nextPan,\n panProps.panDirection,\n zoom,\n width,\n height,\n panBounds,\n panProps.onPan\n );\n prevPanState.current = newPan;\n },\n onDragEnd: ({ originalEvent }) => {\n // If panning occurred, call preventDefault to prevent selection from occurring\n if (\n initialPanState.current.panX !== prevPanState.current.panX ||\n initialPanState.current.panY !== prevPanState.current.panY\n )\n originalEvent.preventDefault();\n onDragPanEnd && onDragPanEnd();\n },\n isDisabled: panProps.panning === 'off'\n });\n\n return dragProps;\n};\n\nexport { useDragPan };\n","/**\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 */\ntype WheelDetail = {\n x: number;\n y: number;\n deltaX: number;\n deltaY: number;\n ctrlKey: boolean;\n};\n\ntype UseWheelOptions = {\n onWheel: (detail: WheelDetail) => void;\n preventDefault?: boolean;\n isDisabled?: boolean;\n};\n\nconst PX_FACTOR_PER_LINE = 15; // Value used in Toolkit\nconst PX_FACTOR_PER_PAGE = 40; // Value copied from datagrid; this is not handled in Toolkit\n\nconst getNormalizedDelta = (e: WheelEvent) => {\n const { deltaX, deltaY, deltaMode } = e;\n\n switch (deltaMode) {\n case e.DOM_DELTA_PIXEL:\n return { deltaX: -deltaX, deltaY: -deltaY };\n case e.DOM_DELTA_LINE:\n return { deltaX: -deltaX * PX_FACTOR_PER_LINE, deltaY: -deltaY * PX_FACTOR_PER_LINE };\n case e.DOM_DELTA_PAGE:\n return { deltaX: -deltaX * PX_FACTOR_PER_PAGE, deltaY: -deltaY * PX_FACTOR_PER_PAGE };\n default:\n return { deltaX: -deltaX, deltaY: -deltaY };\n }\n};\n\nconst useWheel = ({\n onWheel: onWheelCallback,\n preventDefault = true,\n isDisabled = false\n}: UseWheelOptions) => {\n const onWheel = (e: WheelEvent) => {\n const { deltaX, deltaY } = getNormalizedDelta(e);\n if (preventDefault) e.preventDefault();\n onWheelCallback({\n x: e.offsetX,\n y: e.offsetY,\n deltaX,\n deltaY,\n ctrlKey: e.ctrlKey || e.metaKey\n });\n };\n return isDisabled ? {} : { onWheel };\n};\n\nexport { useWheel, PX_FACTOR_PER_LINE };\n","/**\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 */\n\nexport const ZOOM_INCREMENT = 0.05;\n\nexport const zoom = (\n nextZoom: number,\n zoom: number,\n minZoom: number,\n maxZoom: number,\n onZoomChange?: (detail: { zoomValue: number }) => void\n) => {\n const newZoom = nextZoom > maxZoom || nextZoom < minZoom ? zoom : nextZoom;\n const isZoomChanged = newZoom !== zoom;\n isZoomChanged &&\n onZoomChange &&\n onZoomChange({\n zoomValue: newZoom\n });\n};\n","/**\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 { useWheel } from './useWheel';\nimport { zoom, ZOOM_INCREMENT } from '../utils/zoomUtils';\n\ntype UseWheelZoomOptions = {\n zooming: 'on' | 'off';\n minZoom: number;\n maxZoom: number;\n zoomValue: number;\n onZoom?: (detail: { zoomValue: number }) => void;\n};\n\nconst useWheelZoom = ({ zooming, minZoom, maxZoom, zoomValue, onZoom }: UseWheelZoomOptions) => {\n const wheelProps = useWheel({\n onWheel: ({ deltaY }) => {\n const newZoom = zoomValue * (1 + ZOOM_INCREMENT * deltaY);\n zoom(newZoom, zoomValue, minZoom, maxZoom, onZoom);\n },\n isDisabled: zooming === 'off'\n });\n\n return wheelProps;\n};\n\nexport { useWheelZoom };\n","/**\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 { Ref, useRef } from 'preact/hooks';\nimport { usePointerGesture } from './usePointerGesture';\n\ntype Point = { x: number; y: number };\n\nconst getMidpoint = (p1: Point, p2: Point) => ({ x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 });\nconst getDistance = (p1: Point, p2: Point) => Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p2.y) ** 2);\n\ntype PinchDetail = {\n origin: Point;\n delta: number;\n};\n\ntype UsePinchOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n onPinchZoomStart?: (detail: PinchDetail) => void;\n onPinchZoomChange?: (detail: PinchDetail) => void;\n onPinchZoomEnd?: () => void;\n isDisabled?: boolean;\n};\n\nconst usePinch = ({\n captureTargetRef,\n onPinchZoomStart,\n onPinchZoomChange,\n onPinchZoomEnd,\n isDisabled = false\n}: UsePinchOptions) => {\n const origin = useRef({ x: -1, y: -1 });\n const prevDistance = useRef(-1);\n const reset = () => {\n origin.current = { x: -1, y: -1 };\n prevDistance.current = -1;\n };\n\n if (isDisabled) reset();\n\n const pinchProps = usePointerGesture({\n captureTargetRef,\n numPointers: 2, // Pinch gesture requires 2 pointers\n onPointerGestureDown: ({ pointers: [pointer1, pointer2] }) => {\n const p1 = { x: pointer1.offsetX, y: pointer1.offsetY };\n const p2 = { x: pointer2.offsetX, y: pointer2.offsetY };\n origin.current = getMidpoint(p1, p2);\n prevDistance.current = getDistance(p1, p2);\n onPinchZoomStart &&\n onPinchZoomStart({\n origin: origin.current,\n delta: 0\n });\n },\n onPointerGestureMove: ({ pointers: [pointer1, pointer2] }) => {\n const p1 = { x: pointer1.offsetX, y: pointer1.offsetY };\n const p2 = { x: pointer2.offsetX, y: pointer2.offsetY };\n const distance = getDistance(p1, p2);\n const delta = distance - prevDistance.current;\n prevDistance.current = distance;\n onPinchZoomChange &&\n onPinchZoomChange({\n origin: origin.current,\n delta\n });\n },\n onPointerGestureEnd: () => {\n reset();\n onPinchZoomEnd && onPinchZoomEnd();\n }\n });\n\n return isDisabled ? {} : pinchProps;\n};\n\nexport { usePinch };\n","/**\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 { Ref } from 'preact/hooks';\nimport { usePinch } from './usePinch';\nimport { zoom, ZOOM_INCREMENT } from '../utils/zoomUtils';\n\ntype UsePinchZoomOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n zooming: 'on' | 'off';\n minZoom: number;\n maxZoom: number;\n zoomValue: number;\n onZoom?: (detail: { zoomValue: number }) => void;\n};\n\nconst usePinchZoom = ({\n captureTargetRef,\n zooming,\n minZoom,\n maxZoom,\n zoomValue,\n onZoom\n}: UsePinchZoomOptions) => {\n const pinchProps = usePinch({\n captureTargetRef,\n onPinchZoomChange: ({ delta }) => {\n const newZoom = zoomValue * (1 + ZOOM_INCREMENT * delta);\n zoom(newZoom, zoomValue, minZoom, maxZoom, onZoom);\n },\n isDisabled: zooming === 'off'\n });\n\n return pinchProps;\n};\n\nexport { usePinchZoom };\n","import { Pan, Zoom, Bounds } from '../diagram.types';\nimport { Ref, useState, useRef } from 'preact/hooks';\nimport { useDragPan } from './useDragPan';\nimport { useWheelZoom } from './useWheelZoom';\nimport { usePinchZoom } from './usePinchZoom';\n\nimport {\n centerXYToPanXY,\n getPanProps,\n getZoomProps,\n getZoomToFitZoom\n} from '../utils/diagramUtils';\nimport { PanBounds, getPanBounds, pan } from '../utils/panUtils';\nimport { zoom } from '../utils/zoomUtils';\nimport { mergeProps } from '../../utils/UNSAFE_mergeProps';\n\nimport { Property } from 'csstype';\n\ntype PanZoomProps = {\n props: Pan & Zoom;\n captureTargetRef: Ref<HTMLDivElement>;\n width: number;\n height: number;\n contentBounds: Bounds;\n};\n\nexport const usePanZoom = ({\n props,\n captureTargetRef,\n width,\n height,\n contentBounds\n}: PanZoomProps) => {\n const [cursor, setCursor] = useState<Property.Cursor>();\n const zoomProps = getZoomProps(props, width, height, contentBounds);\n const panProps = getPanProps(props, contentBounds);\n const panBounds = useRef<PanBounds>();\n const prevZoom = useRef<number>();\n const panning = useRef<string>();\n const initPanZoomState = useRef({\n zoom: props.zoomValue || 0,\n centerX: props.centerX,\n centerY: props.centerY\n });\n if (\n contentBounds.w !== Infinity &&\n (zoomProps.zoomValue !== prevZoom.current || panProps.panning !== panning.current)\n ) {\n panBounds.current = getPanBounds(\n width,\n height,\n contentBounds,\n panProps.panning,\n zoomProps.zoomValue,\n zoomProps.minZoom,\n initPanZoomState.current\n );\n prevZoom.current = zoomProps.zoomValue;\n panning.current = panProps.panning;\n }\n const dragPanProps = useDragPan({\n panProps: panProps,\n captureTargetRef: captureTargetRef,\n panBounds: panBounds.current,\n zoom: zoomProps.zoomValue,\n width,\n height,\n onDragPanStart: () => setCursor('grabbing'),\n onDragPanEnd: () => setCursor('auto')\n });\n //dZoom or nZoom is required\n const kbZoomCallback = (props: { dZoom?: number; nZoom?: number }) => {\n const newZoom = props.dZoom\n ? zoomProps.zoomValue + props.dZoom\n : getZoomToFitZoom(width, height, contentBounds);\n zoom(\n props.nZoom ? props.nZoom : newZoom,\n zoomProps.zoomValue,\n zoomProps.minZoom,\n zoomProps.maxZoom,\n zoomProps.onZoom\n );\n };\n const prevPanState = useRef({ panX: 0, panY: 0 });\n\n // dPan or nPan is required\n const kbPanCallback = (props: {\n dPan?: { dx: number; dy: number };\n nPan?: { cx: number; cy: number };\n center?: boolean;\n }) => {\n let centerX;\n let centerY;\n if (props.center) {\n centerX = contentBounds.x + contentBounds.w / 2;\n centerY = contentBounds.y + contentBounds.h / 2;\n } else if (props.dPan) {\n centerX = panProps.centerX + props.dPan.dx;\n centerY = panProps.centerY + props.dPan.dy;\n } else {\n centerX = props.nPan!.cx;\n centerY = props.nPan!.cy;\n }\n const panValues = centerXYToPanXY(centerX, centerY, zoomProps.zoomValue, width, height);\n const { newPan } = pan(\n prevPanState.current,\n panValues,\n panProps.panDirection,\n zoomProps.zoomValue,\n width,\n height,\n panBounds.current,\n panProps.onPan\n );\n prevPanState.current = newPan;\n };\n const wheelZoomProps = useWheelZoom(zoomProps);\n const pinchZoomProps = usePinchZoom({\n captureTargetRef,\n zooming: zoomProps.zooming,\n minZoom: zoomProps.minZoom,\n maxZoom: zoomProps.maxZoom,\n zoomValue: zoomProps.zoomValue,\n onZoom: zoomProps.onZoom\n });\n const panZoomProps = mergeProps(dragPanProps, wheelZoomProps, pinchZoomProps);\n\n return {\n panZoomProps,\n cursor,\n centerX: panProps.centerX,\n centerY: panProps.centerY,\n zoomValue: zoomProps.zoomValue,\n kbPanCallback: panProps.panning !== 'off' ? kbPanCallback : undefined,\n kbZoomCallback: zoomProps.zooming !== 'off' ? kbZoomCallback : undefined\n };\n};\n","import { useSelection } from '../../hooks/PRIVATE_useVisSelection';\nimport type { ItemInfo } from '../diagram.types';\nimport { getNavigableInfo } from '../utils/diagramUtils';\nimport { Ref } from 'preact/hooks';\n\ntype SelectionProps<K1, K2, D1, D2> = {\n selectedIds: {\n nodes?: K1[];\n links?: K2[];\n };\n selectionMode: 'none' | 'single' | 'multiple';\n nodeMap: {\n itemIdToDataMap: Map<K1, D1>;\n itemIdToIndexMap: Map<K1, number>;\n itemIndexToIdMap: Map<number, K1>;\n };\n linkMap: {\n itemIdToDataMap: Map<K2, D2>;\n itemIdToIndexMap: Map<K2, number>;\n itemIndexToIdMap: Map<number, K2>;\n };\n focusedItemInfo: ItemInfo<K1, K2>;\n onSelectionChange?: (detail: {\n nodes: K1[];\n links: K2[];\n nodeData: (D1 | undefined)[];\n linkData: (D2 | undefined)[];\n }) => void;\n rootRef: Ref<HTMLDivElement>;\n};\n\ntype EncodedNodeId = `N_${number}`;\ntype EncodedLinkId = `L_${number}`;\n\nexport function useDiagramSelection<K1, K2, D1, D2>({\n selectedIds,\n selectionMode,\n nodeMap,\n linkMap,\n focusedItemInfo,\n onSelectionChange,\n rootRef\n}: SelectionProps<K1, K2, D1, D2>) {\n const nodeIdToIndexMap = nodeMap.itemIdToIndexMap;\n const nodeIndexToIdMap = nodeMap.itemIndexToIdMap;\n const linkIdToIndexMap = linkMap.itemIdToIndexMap;\n const linkIndexToIdMap = linkMap.itemIndexToIdMap;\n const encodeNodeId = (id: K1) => `N_${nodeIdToIndexMap.get(id)}` as EncodedNodeId;\n const decodeNodeId = (id: EncodedNodeId) => nodeIndexToIdMap.get(Number(id.slice(2)));\n const encodeLinkId = (id: K2) => `L_${linkIdToIndexMap.get(id)}` as EncodedLinkId;\n const decodeLinkId = (id: EncodedLinkId) => linkIndexToIdMap.get(Number(id.slice(2)));\n\n const encodedNodesSelection = selectedIds.nodes ? selectedIds.nodes.map(encodeNodeId) : [];\n const encodedLinksSelection = selectedIds.links ? selectedIds.links.map(encodeLinkId) : [];\n const encodedSelection = [...encodedNodesSelection, ...encodedLinksSelection];\n const idExtracter = (event: Event) => {\n // return encodeNodeId(id) or encodeLinkId(id) depending on node or link selection or undefined if clicked on empty space\n const info =\n event.type === 'keyup'\n ? focusedItemInfo\n : getNavigableInfo<K1, K2>(event.target as HTMLElement, rootRef);\n return info.id !== undefined\n ? info.isNode\n ? encodeNodeId(info.id as K1)\n : encodeLinkId(info.id as K2)\n : undefined;\n };\n\n const onEncodedSelectionChange = (detail: { ids: (EncodedNodeId | EncodedLinkId)[] }) => {\n const newSelectedNodeIds = detail.ids\n .filter((encId) => encId[0] === 'N')\n .map((encId) => decodeNodeId(encId as EncodedNodeId)!);\n const newSelectedLinkIds = detail.ids\n .filter((encId) => encId[0] === 'L')\n .map((encId) => decodeLinkId(encId as EncodedLinkId)!);\n\n const nodeData = newSelectedNodeIds.map((selectedId) => {\n return nodeMap.itemIdToDataMap.get(selectedId);\n });\n const linkData = newSelectedLinkIds.map((selectedId) => {\n return linkMap.itemIdToDataMap.get(selectedId);\n });\n return (\n onSelectionChange &&\n onSelectionChange({\n nodes: newSelectedNodeIds,\n links: newSelectedLinkIds,\n nodeData,\n linkData\n })\n );\n };\n const getDataById = (id: EncodedNodeId | EncodedLinkId) => {\n let data;\n if (id[0] === 'N') {\n const nodeId = decodeNodeId(id as EncodedNodeId)!;\n data = nodeMap.itemIdToDataMap.get(nodeId);\n } else if (id[0] === 'L') {\n const linkId = decodeLinkId(id as EncodedLinkId)!;\n data = linkMap.itemIdToDataMap.get(linkId);\n }\n return data;\n };\n\n const { selectionContent, selectionProps } = useSelection<`N_${number}` | `L_${number}`, D1 | D2>(\n {\n selection: encodedSelection,\n idExtracter,\n selectionMode,\n getDataById,\n onChange: onEncodedSelectionChange\n }\n );\n\n return { selectionContent, selectionProps };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n DiagramProps,\n Bounds,\n DiagramLabelPosition,\n States,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { DiagramLayers } from './DiagramLayers';\nimport { DiagramPanZoomContainer } from './DiagramPanZoomContainer';\nimport { useEvents } from './hooks/useEvents';\nimport { useDiagramDatatip } from './hooks/useDiagramDatatip';\nimport { useTextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { usePanZoom } from './hooks/usePanZoom';\nimport { useRef, useState } from 'preact/hooks';\nimport { useUser } from '../hooks/UNSAFE_useUser';\nimport { useDiagramSelection } from './hooks/useDiagramSelection';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport {\n constructLayoutJSON,\n deconstructLayoutJSON,\n createItemMap,\n getFocusedItemBounds,\n mergeDimensions,\n getDimensionsFromBounds,\n combineIds,\n getContentBounds,\n centerXYToPanXY,\n filterLinksWithNoEndNodes,\n getAllLabelBounds\n} from './utils/diagramUtils';\nimport { outerStyles } from './themes/DiagramStyles.css';\nimport { useVisTouchResponse } from '#hooks/PRIVATE_useVisTouchResponse';\nimport { merge } from '#utils/UNSAFE_stringUtils';\n\ntype DiagramWithDimensionsProps<K1, K2, D1, D2, L> = Omit<\n DiagramProps<K1, K2, D1, D2, L>,\n 'width' | 'height'\n> & {\n width: number;\n height: number;\n};\n\nexport function DiagramWithDimensions<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1> = DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({\n nodes = [],\n links = [],\n width,\n height,\n selectedIds = {},\n selectionMode = 'none',\n layout,\n nodeRenderer,\n linkRenderer,\n onSelectionChange,\n onItemHover,\n onItemFocus,\n highlightedIds = {},\n datatip,\n ...otherProps\n}: DiagramWithDimensionsProps<K1, K2, D1, D2, L>) {\n const focusedItemBoundsRef = useRef<Bounds | null>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n //TODO JET-62563 change bounds to a MAP\n const [bounds, setBounds] = useState<Bounds[]>([]);\n const [combinedLabelBounds, setCombinedLabelBounds] = useState<Bounds>();\n const { direction } = useUser();\n\n const diagramNodes = nodes;\n const nodeMap = createItemMap<K1, K2, D1, D2>(diagramNodes);\n const nodeIdToDataMap = nodeMap.itemIdToDataMap;\n const diagramLinks = filterLinksWithNoEndNodes(links, nodeIdToDataMap);\n const linkMap = createItemMap<K1, K2, D1, D2>(diagramLinks);\n const linkIdToDataMap = linkMap.itemIdToDataMap;\n const resizeThrottling = useRef<boolean>(false);\n const newDimensions = getDimensionsFromBounds(bounds);\n const { textMeasureContent, getTextDimensions } = useTextDimensions();\n const labelDimensions = useRef<Map<K1 | K2, TextDimensions>>(new Map());\n const nodeLabelPosRef = useRef<(DiagramLabelPosition | undefined)[] | undefined>([]);\n const linkLabelPosRef = useRef<(DiagramLabelPosition | undefined)[] | undefined>([]);\n const layoutOutputRef = useRef<L>();\n\n const contentBounds = getContentBounds(bounds, combinedLabelBounds);\n const { panZoomProps, cursor, centerX, centerY, zoomValue, kbPanCallback, kbZoomCallback } =\n usePanZoom({\n props: otherProps,\n captureTargetRef: rootRef,\n width: width,\n height: height,\n contentBounds\n });\n\n const { touchResponse, touchResponseStyle } = useVisTouchResponse({\n type: 'auto',\n supportsTouchDragGestures:\n otherProps.zooming === 'on' || (!!otherProps.panning && otherProps.panning !== 'off'),\n rootRef\n });\n\n const { focusedItemInfo, hoveredItemInfo, activeId, eventsProps } = useEvents<K1, K2, D1, D2>(\n touchResponse,\n diagramNodes[0],\n diagramNodes,\n diagramLinks,\n bounds,\n linkIdToDataMap,\n nodeIdToDataMap,\n nodeMap.itemIdToIndexMap,\n width,\n height,\n otherProps.maxZoom || 1,\n onItemHover,\n onItemFocus,\n kbPanCallback,\n kbZoomCallback\n );\n\n const { selectionProps, selectionContent } = useDiagramSelection<K1, K2, D1, D2>({\n selectedIds,\n selectionMode,\n nodeMap,\n linkMap,\n focusedItemInfo,\n onSelectionChange,\n rootRef\n });\n\n // This is for the datatip kb position\n if (focusedItemInfo && bounds.length > 0) {\n focusedItemBoundsRef.current = getFocusedItemBounds(\n focusedItemInfo,\n bounds,\n diagramLinks,\n nodeMap.itemIdToIndexMap,\n linkMap.itemIdToIndexMap\n );\n }\n\n const {\n datatipContent,\n datatipProps: { 'aria-describedby': datatipAriaDescribedby, ...datatipProps }\n } = useDiagramDatatip({\n touchResponse,\n datatip,\n focusedItemInfo,\n focusedItemBoundsRef,\n panState: centerXYToPanXY(centerX, centerY, zoomValue, width, height),\n zoom: zoomValue,\n width: width,\n nodesMap: nodeIdToDataMap,\n linksMap: linkIdToDataMap,\n hoveredItem: hoveredItemInfo\n });\n\n const style = {\n width: width,\n height: height,\n cursor: cursor,\n ...touchResponseStyle\n };\n\n const states = useRef<States<K1, K2>>();\n const previousState = states.current // states.current is previous state\n ? states.current\n : {\n selectedNodeIds: [],\n selectedLinkIds: [],\n focusedId: undefined,\n hoveredId: undefined,\n activeId: undefined,\n highlightedIds: [],\n zoom: 0\n };\n\n states.current = {\n // update states to new state\n selectedNodeIds: selectedIds.nodes ?? [],\n selectedLinkIds: selectedIds.links ?? [],\n focusedId:\n focusedItemInfo.isCurrent && focusedItemInfo.isFocusVisible ? focusedItemInfo.id : undefined,\n hoveredId: hoveredItemInfo?.isCurrent ? hoveredItemInfo.id : undefined,\n activeId,\n highlightedIds: combineIds(highlightedIds.nodes, highlightedIds.links),\n zoom: zoomValue\n };\n\n const mergedEventProps = mergeProps(panZoomProps, eventsProps, selectionProps, datatipProps);\n\n // Called anytime node changes size\n const onNodeSizeChanged = (nodeWidth: number, nodeHeight: number, idx: number) => {\n newDimensions[idx] = { w: nodeWidth, h: nodeHeight };\n if (resizeThrottling.current) {\n return;\n }\n\n resizeThrottling.current = true;\n // performs layout at the next available animation frame when all measurements should be ready\n window.requestAnimationFrame(() => {\n const { labelDims, layoutJSON } = constructLayoutJSON(\n diagramNodes,\n nodeIdToDataMap,\n linkIdToDataMap,\n newDimensions,\n width,\n height,\n getTextDimensions\n );\n labelDimensions.current = labelDims;\n const layoutOutput = layout(layoutJSON);\n const { nodePoints, nodeLabelPos, linkLabelPos } = deconstructLayoutJSON<K1, K2, D1, D2, L>(\n layoutOutput,\n diagramNodes,\n diagramLinks\n );\n nodeLabelPosRef.current = nodeLabelPos;\n linkLabelPosRef.current = linkLabelPos;\n layoutOutputRef.current = layoutOutput;\n const nodeBounds = mergeDimensions(newDimensions, nodePoints);\n setBounds(nodeBounds);\n const labelBounds = getAllLabelBounds(\n labelDims,\n diagramNodes,\n diagramLinks,\n nodeLabelPos,\n linkLabelPos,\n direction === 'rtl'\n );\n setCombinedLabelBounds(labelBounds);\n resizeThrottling.current = false;\n });\n };\n return (\n <div\n ref={rootRef}\n class={outerStyles}\n {...mergedEventProps}\n style={style}\n tabIndex={0}\n role=\"application\"\n aria-label={otherProps['aria-label']}\n aria-labelledby={otherProps['aria-labelledby']}\n aria-describedby={merge([otherProps['aria-describedby'], datatipAriaDescribedby])}\n aria-activedescendant={activeId}>\n {getTextDimensions ? (\n <DiagramPanZoomContainer\n centerX={centerX}\n centerY={centerY}\n zoom={zoomValue}\n width={width}\n height={height}>\n <DiagramLayers\n nodes={diagramNodes}\n links={diagramLinks}\n nodeRenderer={nodeRenderer}\n linkRenderer={linkRenderer}\n width={width}\n height={height}\n nodeBounds={bounds}\n states={states.current!}\n previousStates={previousState}\n onNodeSizeChanged={onNodeSizeChanged}\n nodeLabelPositions={nodeLabelPosRef.current}\n linkLabelPositions={linkLabelPosRef.current}\n labelDimensions={labelDimensions.current}\n supportsSelection={\n selectionMode !== 'none' ||\n !!(selectedIds?.nodes && selectedIds.nodes.length > 0) ||\n !!(selectedIds?.links && selectedIds.links.length > 0)\n }\n layoutOutput={layoutOutputRef.current}\n />\n </DiagramPanZoomContainer>\n ) : undefined}\n {textMeasureContent}\n {datatipContent}\n {selectionContent}\n </div>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n DiagramProps,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { TrackResizeContainer } from '../PRIVATE_TrackResizeContainer';\nimport { dimensionStyle } from './themes/DiagramStyles.css';\nimport { DiagramWithDimensions } from './DiagramWithDimensions';\n\n/**\n * Diagrams are used to display a set of nodes and the links between them.\n */\nexport function Diagram<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1> = DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({ width, height, ...otherProps }: DiagramProps<K1, K2, D1, D2, L>) {\n return otherProps.nodes && otherProps.nodes.length > 0 ? (\n <TrackResizeContainer width={width} height={height} class={dimensionStyle}>\n {(width, height) => <DiagramWithDimensions width={width} height={height} {...otherProps} />}\n </TrackResizeContainer>\n ) : null;\n}\n"],"names":["generateAriaLabel","itemStyles","useTranslationBundle","useRef","useResizeObserver","useCallback","_jsx","classNames","layerStyles","labelStyles","useUser","_jsxs","_Fragment","panZoomStyles","useState","getRandomId","useVisHover","mergeProps","useDatatip","calculateOffset","useSelection","useTextDimensions","useVisTouchResponse","outerStyles","merge","TrackResizeContainer","dimensionStyle"],"mappings":"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"}
1
+ {"version":3,"file":"Diagram-240bfa89.js","sources":["../../src/UNSAFE_Diagram/utils/diagramUtils.ts","../../src/UNSAFE_Diagram/DiagramNodeElement.tsx","../../src/UNSAFE_Diagram/DiagramNodeLayer.tsx","../../src/UNSAFE_Diagram/DiagramLinkElement.tsx","../../src/UNSAFE_Diagram/DiagramLinkLayer.tsx","../../src/UNSAFE_Diagram/DiagramLabel.tsx","../../src/UNSAFE_Diagram/DiagramLabelLayer.tsx","../../src/UNSAFE_Diagram/DiagramLayers.tsx","../../src/UNSAFE_Diagram/DiagramPanZoomContainer.tsx","../../src/UNSAFE_Diagram/utils/navUtils.ts","../../src/UNSAFE_Diagram/hooks/useDiagramNavigation.ts","../../src/UNSAFE_Diagram/hooks/useEvents.ts","../../src/UNSAFE_Diagram/hooks/useDiagramDatatip.ts","../../src/UNSAFE_Diagram/hooks/usePointerGesture.ts","../../src/UNSAFE_Diagram/hooks/useDrag.ts","../../src/UNSAFE_Diagram/utils/panUtils.ts","../../src/UNSAFE_Diagram/hooks/useDragPan.ts","../../src/UNSAFE_Diagram/hooks/useWheel.ts","../../src/UNSAFE_Diagram/utils/zoomUtils.ts","../../src/UNSAFE_Diagram/hooks/useWheelZoom.ts","../../src/UNSAFE_Diagram/hooks/usePinch.ts","../../src/UNSAFE_Diagram/hooks/usePinchZoom.ts","../../src/UNSAFE_Diagram/hooks/usePanZoom.ts","../../src/UNSAFE_Diagram/hooks/useDiagramSelection.ts","../../src/UNSAFE_Diagram/DiagramWithDimensions.tsx","../../src/UNSAFE_Diagram/Diagram.tsx"],"sourcesContent":["import type {\n Pan,\n Zoom,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput,\n ItemInfo,\n Bounds,\n Position,\n Dimensions,\n DatatipContext,\n DiagramLabelStyles,\n DiagramLabelPosition\n} from '../diagram.types';\nimport type { Ref } from 'preact/hooks';\nimport type { BundleType } from '../../resources/nls/bundle';\nimport type {\n Font,\n GetTextDimensionsType,\n TextDimensions\n} from '../../hooks/PRIVATE_useTextDimensions';\nimport { ComponentChildren } from 'preact';\nimport { Property } from 'csstype';\nimport { generateAriaLabel } from '#utils/UNSAFE_visUtils/accUtils';\n\nconst ZOOM_TO_FIT_PADDING = 20;\n/**\n * Returns the pan properties for the diagram.\n */\nexport function getPanProps(props: Pan, contentBounds: Bounds) {\n return {\n panning: props.panning ? props.panning : 'off',\n panDirection: props.panDirection ? props.panDirection : 'any',\n centerX: props.centerX !== undefined ? props.centerX : contentBounds.w / 2 + contentBounds.x,\n centerY: props.centerY !== undefined ? props.centerY : contentBounds.h / 2 + contentBounds.y,\n onPan: props.onPan\n };\n}\n\n/**\n * Returns the zoom properties for the diagram.\n */\nexport function getZoomProps(props: Zoom, width: number, height: number, contentBounds: Bounds) {\n const minZoom = props.minZoom ? props.minZoom : getZoomToFitZoom(width, height, contentBounds);\n const maxZoom = props.maxZoom !== undefined ? props.maxZoom : 1;\n const zoom = props.zoomValue ? props.zoomValue : getZoomToFitZoom(width, height, contentBounds);\n return {\n zooming: props.zooming ? props.zooming : 'off',\n // default value of 0 indicates zoom-to-fit level\n minZoom: minZoom,\n maxZoom: maxZoom,\n // zoom value of 0 will default to zoom to fit\n zoomValue: constrainZoom(zoom, minZoom, maxZoom),\n onZoom: props.onZoom\n };\n}\n\n/**\n * Constructs the json object to be passed into the layout function\n */\nexport function constructLayoutJSON<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n nodes: D1[],\n nodeItems: Map<K1, D1>,\n linkItems: Map<K2, D2>,\n dimensions: Dimensions[],\n width: number,\n height: number,\n getTextDimensions?: GetTextDimensionsType\n) {\n const labelDims: Map<K1 | K2, TextDimensions> = new Map();\n const nodeKeys = Array.from(nodeItems.keys());\n for (const id of nodeKeys) {\n const item = nodeItems.get(id as K1);\n if (item && getTextDimensions && item.label) {\n const label = item.label;\n const fontProps = _getFontProps(item.labelStyle);\n labelDims.set(id as K1 | K2, getTextDimensions(label, fontProps));\n }\n }\n const linkKeys = Array.from(linkItems.keys());\n for (const id of linkKeys) {\n const item = linkItems.get(id as K2);\n if (item && getTextDimensions && item.label) {\n const label = item.label;\n const fontProps = _getFontProps(item.labelStyle);\n labelDims.set(id as K1 | K2, getTextDimensions(label, fontProps));\n }\n }\n const getLabelDimensions = function (data: D1 | D2) {\n return labelDims.get(data.id);\n };\n const getNodeDimensions = function (data: D1) {\n for (let i = 0; i < nodes.length; i++) {\n if (data.id === nodes[i].id) {\n return dimensions[i];\n }\n }\n return dimensions[0];\n };\n\n return {\n layoutJSON: {\n getNodeDimensions: getNodeDimensions,\n getLabelDimensions: getLabelDimensions,\n componentSize: {\n width: width,\n height: height\n }\n },\n labelDims: labelDims\n };\n}\n\n/**\n * Deconstructs the output of the layout function\n */\nexport function deconstructLayoutJSON<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2>\n>(layoutJSON: L, nodeData: D1[], linkData: D2[]) {\n const nodes = layoutJSON.nodes;\n const links = layoutJSON.links;\n const positions: Position[] = [];\n const nodeLabelPos: (DiagramLabelPosition | undefined)[] = [];\n const linkLabelPos: DiagramLabelPosition[] = [];\n let hasNodeLabels = false;\n let hasLinkLabels = false;\n let node, link;\n for (let i = 0; i < nodeData.length; i++) {\n node = nodes[nodeData[i].id];\n positions.push(node.position);\n if (node.label) hasNodeLabels = true;\n nodeLabelPos.push(node.label);\n }\n if (links) {\n for (let i = 0; i < linkData.length; i++) {\n link = links[linkData[i].id];\n if (link.label) hasLinkLabels = true;\n linkLabelPos.push(link.label);\n }\n }\n return {\n nodePoints: positions,\n nodeLabelPos: hasNodeLabels ? nodeLabelPos : undefined,\n linkLabelPos: hasLinkLabels ? linkLabelPos : undefined\n };\n}\n\n/**\n * Merges the node points into the dimensions\n */\nexport function mergeDimensions(dimensions: Dimensions[], nodePoints: Position[]) {\n const newBounds: Bounds[] = [];\n for (let i = 0; i < dimensions.length; i++) {\n const point = nodePoints[i];\n const dim = dimensions[i];\n newBounds.push({ x: point.x, y: point.y, w: dim.w, h: dim.h });\n }\n return newBounds;\n}\n\n/**\n * Returns the text for the diagram datatip.\n */\nexport function getDatatipContent<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n nodesMap: Map<K1, D1>,\n linksMap: Map<K2, D2>,\n focusedItem?: ItemInfo<K1, K2>,\n hoveredItem?: ItemInfo<K1, K2>,\n datatip?: (detail: DatatipContext<D1, D2>) => {\n content: ComponentChildren;\n borderColor?: Property.BorderColor;\n }\n) {\n let itemInfo;\n const isPointerActive = hoveredItem?.isCurrent;\n if (isPointerActive && hoveredItem.id != null) {\n itemInfo = hoveredItem;\n }\n if (focusedItem && focusedItem.isCurrent) {\n itemInfo = focusedItem;\n }\n if (itemInfo && datatip) {\n return datatip(\n itemInfo.isNode\n ? { data: nodesMap.get(itemInfo.id as K1) as D1, type: 'node' }\n : { data: linksMap.get(itemInfo.id as K2) as D2, type: 'link' }\n );\n }\n if (itemInfo) {\n const text = (\n itemInfo.isNode ? nodesMap.get(itemInfo.id as K1) : linksMap.get(itemInfo.id as K2)\n )?.accessibleLabel;\n return {\n content: text\n };\n }\n return;\n}\n\n/**\n * Creates a map with key id and value node or link data\n */\nexport function createItemMap<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(items: (D1 | D2)[]) {\n const itemIdToDataMap = new Map();\n const itemIdToIndexMap = new Map();\n const itemIndexToIdMap = new Map();\n for (let i = 0; i < items.length; i++) {\n itemIdToDataMap.set(items[i].id, items[i]);\n itemIdToIndexMap.set(items[i].id, i);\n itemIndexToIdMap.set(i, items[i].id);\n }\n return {\n itemIdToDataMap,\n itemIdToIndexMap,\n itemIndexToIdMap\n };\n}\n\n/**\n * Filter out links with no start or end nodes\n */\nexport function filterLinksWithNoEndNodes<K2, K1, D1, D2 extends DiagramLinkData<K2, K1>>(\n links: D2[],\n nodesMap: Map<K1, D1>\n) {\n const newLinks: D2[] = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n if (nodesMap.get(link.startNode) && nodesMap.get(link.endNode)) {\n newLinks.push(link);\n }\n }\n return newLinks;\n}\n\n/**\n * Pulls out the dimensions from an array of bounds\n */\nexport function getDimensionsFromBounds(bounds: Bounds[]) {\n const dims: Dimensions[] = [];\n for (let i = 0; i < bounds.length; i++) {\n dims.push({ w: bounds[i].w, h: bounds[i].h });\n }\n return dims;\n}\n\n/**\n * Returns true if event is a selection event\n */\nexport function isSelectionEvent(event: KeyboardEvent): boolean {\n if (event.altKey && (event.key === '≥' || event.key === '≤')) {\n return true;\n }\n return false;\n}\n\n/**\n * Returns the center position of the node or link\n * For links, draws a straight line between the centers of the start/end node\n * and returns the center of that line\n */\nexport function getFocusedItemBounds<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n focusedItemInfo: ItemInfo<K1, K2>,\n bounds: Bounds[],\n links: D2[],\n nodeIdToIndexMap: Map<K1, number>,\n linkIdToIndexMap: Map<K2, number>\n) {\n if (focusedItemInfo.isNode) {\n const idx = nodeIdToIndexMap.get(focusedItemInfo.id as K1);\n // Return the first element if cannot find the Node index\n return bounds[idx || 0];\n } else {\n // Center of a straight line between start/end node centers\n const link = links[linkIdToIndexMap.get(focusedItemInfo.id as K2) || 0];\n const startNB = bounds[nodeIdToIndexMap.get(link.startNode) || 0];\n const endNB = bounds[nodeIdToIndexMap.get(link.endNode) || 0];\n const startNCenter = { x: startNB.x + startNB.w / 2, y: startNB.y + startNB.h / 2 };\n const endNCenter = { x: endNB.x + endNB.w / 2, y: endNB.y + endNB.h / 2 };\n const minX = Math.min(startNCenter.x, endNCenter.x);\n const minY = Math.min(startNCenter.y, endNCenter.y);\n return {\n x: minX,\n y: minY,\n w: Math.abs(startNCenter.x - endNCenter.x),\n h: Math.abs(startNCenter.y - endNCenter.y)\n };\n }\n}\n/**\n * Combines the node and link ids into one array\n */\nexport function combineIds<K1, K2>(nodeIds?: K1[], linkIds?: K2[]) {\n const combinedIds: (K1 | K2)[] = [];\n if (nodeIds) {\n for (let i = 0; i < nodeIds.length; i++) {\n combinedIds.push(nodeIds[i]);\n }\n }\n if (linkIds) {\n for (let i = 0; i < linkIds.length; i++) {\n combinedIds.push(linkIds[i]);\n }\n }\n return combinedIds;\n}\n\n/**\n * Returns the bounds of the diagram content\n */\nexport function getContentBounds(nodeBounds: Bounds[], labelBounds?: Bounds): Bounds {\n if (nodeBounds.length === 0) return { x: 0, w: Infinity, y: 0, h: Infinity };\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let dims;\n for (let i = 0; i < nodeBounds.length; i++) {\n dims = nodeBounds[i];\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n if (labelBounds) {\n minX = labelBounds.x < minX ? labelBounds.x : minX;\n minY = labelBounds.y < minY ? labelBounds.y : minY;\n maxX = labelBounds.x + labelBounds.w > maxX ? labelBounds.x + labelBounds.w : maxX;\n maxY = labelBounds.y + labelBounds.h > maxY ? labelBounds.y + labelBounds.h : maxY;\n }\n return { x: minX, w: maxX - minX, y: minY, h: maxY - minY };\n}\n\n/**\n * Returns the label bounds\n */\nexport function getAllLabelBounds<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n labelDims: Map<K1 | K2, TextDimensions>,\n nodes: D1[],\n links: D2[],\n nodeLabelPos: (DiagramLabelPosition | undefined)[] = [],\n linkLabelPos: DiagramLabelPosition[] = [],\n isRTL: boolean\n) {\n if (nodeLabelPos.length === 0 && linkLabelPos.length === 0) return undefined;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n let dims, label;\n for (let i = 0; i < nodeLabelPos.length; i++) {\n label = nodeLabelPos[i];\n if (!label) continue;\n dims = getLabelBounds(label, labelDims.get(nodes[i].id)!, isRTL);\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n for (let i = 0; i < linkLabelPos.length; i++) {\n label = linkLabelPos[i];\n if (!label) continue;\n dims = getLabelBounds(label, labelDims.get(links[i].id)!, isRTL);\n minX = dims.x < minX ? dims.x : minX;\n minY = dims.y < minY ? dims.y : minY;\n maxX = dims.x + dims.w > maxX ? dims.x + dims.w : maxX;\n maxY = dims.y + dims.h > maxY ? dims.y + dims.h : maxY;\n }\n return { x: minX, w: maxX - minX, y: minY, h: maxY - minY };\n}\n\nfunction getLabelBounds(label: DiagramLabelPosition, dims: TextDimensions, isRTL: boolean) {\n const labelPos = getLabelPosition(dims, label, isRTL);\n const isRotating = label.rotationAngle;\n if (!isRotating) {\n return { x: labelPos.x, y: labelPos.y, w: dims.width, h: dims.height };\n } else {\n // Find the 4 corners of the label bounds relative to the rotation point\n const rotationPoint = label.rotationPoint\n ? label.rotationPoint\n : { x: dims.width / 2, y: dims.height / 2 };\n const angle = label.rotationAngle!;\n const topLeft = getCoordsRelToRotPoint({ x: 0, y: 0 }, rotationPoint);\n const topRight = getCoordsRelToRotPoint({ x: dims.width, y: 0 }, rotationPoint);\n const bottomLeft = getCoordsRelToRotPoint({ x: 0, y: dims.height }, rotationPoint);\n const bottomRight = getCoordsRelToRotPoint({ x: dims.width, y: dims.height }, rotationPoint);\n const rotTopLeft = rotatePoint(topLeft, angle);\n const rotBotLeft = rotatePoint(bottomLeft, angle);\n const rotTopRight = rotatePoint(topRight, angle);\n const rotBotRight = rotatePoint(bottomRight, angle);\n const points = [rotTopLeft, rotBotLeft, rotTopRight, rotBotRight].map((pos: Position) => {\n return {\n x: pos.x + labelPos.x + rotationPoint.x,\n y: pos.y + labelPos.y + rotationPoint.y\n };\n });\n return getBoundsFromPoints(points);\n }\n}\n\nfunction getCoordsRelToRotPoint(labelPoint: Position, rotPoint: Position) {\n return { x: labelPoint.x - rotPoint.x, y: labelPoint.y - rotPoint.y };\n}\n\nfunction rotatePoint(pos: Position, angle: number) {\n return {\n x: pos.x * Math.cos(angle) - pos.y * Math.sin(angle),\n y: pos.x * Math.sin(angle) + pos.y * Math.cos(angle)\n };\n}\n\nfunction getBoundsFromPoints(points: Position[]) {\n let minX = points[0].x;\n let minY = points[0].y;\n let maxX = points[0].x;\n let maxY = points[0].y;\n for (let i = 1; i < points.length; i++) {\n const point = points[i];\n if (point.x < minX) minX = point.x;\n else if (point.x > maxX) maxX = point.x;\n if (point.y < minY) minY = point.y;\n else if (point.y > maxY) maxY = point.y;\n }\n return {\n x: minX,\n y: minY,\n w: maxX - minX,\n h: maxY - minY\n };\n}\n\n/**\n * Returns the position of the label\n * @param dimensions\n * @param positionProps\n * @returns position of the label\n */\nexport function getLabelPosition(\n dimensions: TextDimensions,\n positionProps: DiagramLabelPosition,\n isRTL: boolean\n) {\n const position = positionProps.position;\n const hAlign = positionProps.hAlign ? positionProps.hAlign : isRTL ? 'right' : 'left';\n const vAlign = positionProps.vAlign;\n let x, y;\n if (hAlign === 'center') {\n x = position.x - dimensions.width / 2;\n } else if (hAlign === 'right') {\n x = position.x - dimensions.width;\n } else {\n x = position.x;\n }\n\n if (vAlign === 'middle') {\n y = position.y - dimensions.height / 2;\n } else if (vAlign === 'bottom') {\n y = position.y - dimensions.height;\n } else if (vAlign === 'baseline') {\n y = position.y + dimensions.y;\n } else {\n y = position.y;\n }\n return {\n x: x,\n y: y\n };\n}\n\n/**\n * Converts centerX,Y coordinates to panX,Y coordinates\n */\nexport function centerXYToPanXY(\n centerX: number,\n centerY: number,\n zoom: number,\n width: number,\n height: number\n) {\n return {\n panX: width / 2 - centerX * zoom,\n panY: height / 2 - centerY * zoom\n };\n}\n/**\n * Converts panX,Y coordinates to centerX,Y coordinates\n */\nexport function panXYToCenterXY(\n panX: number,\n panY: number,\n zoom: number,\n width: number,\n height: number\n) {\n return {\n centerX: (width / 2 - panX) / zoom,\n centerY: (height / 2 - panY) / zoom\n };\n}\n\n/**\n * Compares if two ItemInfo are equal\n */\nexport function isEqualItem<K1, K2>(item1?: ItemInfo<K1, K2>, item2?: ItemInfo<K1, K2>) {\n return item1?.id === item2?.id && item1?.isNode === item2?.isNode;\n}\n\n/**\n * Returns the item info of the data-oj-node or data-oj-link attribute for a given element.\n */\nexport function getNavigableInfo<K1, K2>(\n element: HTMLElement,\n rootElementRef?: Ref<HTMLDivElement>\n): ItemInfo<K1, K2> {\n let isNode = false;\n let elem = element;\n let navigableId;\n while (!navigableId) {\n navigableId = elem.dataset['node'];\n if (navigableId) {\n isNode = true;\n } else {\n navigableId = elem.dataset['link'];\n }\n if (!navigableId) {\n if (elem.parentElement && elem.parentElement !== rootElementRef?.current) {\n elem = elem.parentElement;\n } else {\n break;\n }\n }\n }\n return {\n id: navigableId as K1 | K2,\n isNode: isNode\n };\n}\n\n/**\n * Returns the id of the focused item.\n */\nexport function getFocusedItem<K1, K2>(\n focusedItemInfo: ItemInfo<K1, K2>,\n hoveredItemInfo?: ItemInfo<K1, K2>\n) {\n let focused;\n if (focusedItemInfo.isCurrent && focusedItemInfo.isFocusVisible) {\n focused = focusedItemInfo.id;\n } else if (hoveredItemInfo?.isCurrent) {\n focused = hoveredItemInfo.id;\n }\n return focused;\n}\n\n/**\n * Returns the aria label\n */\nexport function getItemAriaLabel(\n translations: BundleType,\n supportsSelection: boolean,\n isSelected?: boolean,\n accessibleLabel?: string\n) {\n return generateAriaLabel(translations, accessibleLabel || '', {\n isSelected: !supportsSelection ? undefined : isSelected\n });\n}\n\n/**\n * Returns the zoom to fit zoom level\n */\nexport function getZoomToFitZoom(width: number, height: number, contentBounds: Bounds) {\n const zoomX = (width - 2 * ZOOM_TO_FIT_PADDING) / contentBounds.w;\n const zoomY = (height - 2 * ZOOM_TO_FIT_PADDING) / contentBounds.h;\n return Math.min(zoomX, zoomY);\n}\n\n/**\n * Constrains the zoom level\n */\nfunction constrainZoom(zoom: number, minZoom: number, maxZoom: number) {\n let newZoom = Math.max(minZoom, zoom);\n newZoom = Math.min(maxZoom, newZoom);\n return newZoom;\n}\n\n/**\n * Returns the font props for a node or link\n */\nfunction _getFontProps(styles?: DiagramLabelStyles) {\n const fontProps: Font = {};\n if (!styles) return fontProps;\n if (styles.fontFamily) fontProps.fontFamily = styles.fontFamily;\n if (styles.fontSize) fontProps.fontSize = styles.fontSize;\n if (styles.fontStyle) fontProps.fontStyle = styles.fontStyle;\n if (styles.fontWeight) fontProps.fontWeight = styles.fontWeight;\n return fontProps;\n}\n\n/**\n * Returns the panX, panY, and zoom when zooming and centering an item\n */\nexport function zoomAndCenterItemFromInfo<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n info: ItemInfo<K1, K2>,\n linkIdToDataMap: Map<K2, D2>,\n bounds: Bounds[],\n nodeIdToIndex: Map<K1, number>,\n width: number,\n height: number,\n maxZoom: number\n) {\n const isNode = info.isNode;\n let totalBounds;\n if (isNode) {\n const nodeIndex = nodeIdToIndex.get(info.id as K1)!;\n totalBounds = bounds[nodeIndex];\n } else {\n const link = linkIdToDataMap.get(info.id as K2)!;\n const startNodeBounds = bounds[nodeIdToIndex.get(link.startNode)!];\n const endNodeBounds = bounds[nodeIdToIndex.get(link.endNode)!];\n const minX = Math.min(startNodeBounds.x, endNodeBounds.x);\n const minY = Math.min(startNodeBounds.y, endNodeBounds.y);\n const maxX = Math.max(\n startNodeBounds.x + startNodeBounds.w,\n endNodeBounds.x + startNodeBounds.w\n );\n const maxY = Math.max(startNodeBounds.y + startNodeBounds.h, endNodeBounds.y + endNodeBounds.h);\n totalBounds = { x: minX, y: minY, w: maxX - minX, h: maxY - minY };\n }\n return getPanZoomToCenterNode(totalBounds, maxZoom, width, height);\n}\n\n/**\n * Returns the pan and zoom values in order\n * to center a node or link\n */\nfunction getPanZoomToCenterNode(bounds: Bounds, maxZoom: number, width: number, height: number) {\n const zoomX = (width - 2 * ZOOM_TO_FIT_PADDING) / bounds.w;\n const zoomY = (height - 2 * ZOOM_TO_FIT_PADDING) / bounds.h;\n const zoom = Math.min(zoomX, zoomY, maxZoom);\n const cX = bounds.w / 2 + bounds.x;\n const cY = bounds.h / 2 + bounds.y;\n return { centerX: cX, centerY: cY, zoom: zoom };\n}\n","import type { Position, State, NodeRendererContext } from './diagram.types';\nimport { useResizeObserver } from '../hooks/UNSAFE_useResizeObserver';\nimport { useCallback, useRef } from 'preact/hooks';\nimport { getItemAriaLabel } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { itemStyles } from './themes/DiagramStyles.css';\nimport { ComponentChildren } from 'preact';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport type { BundleType } from '../resources/nls/bundle';\n\n/**\n * Props for node component\n */\ntype NodeProps<K1, D1> = {\n id: K1;\n position: Position;\n label?: string;\n state: State;\n previousState: State;\n isDimmed?: boolean;\n activeId?: string;\n accessibleLabel?: string;\n nodeIndex: number;\n data: D1;\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n supportsSelection: boolean;\n};\n\nexport const DiagramNodeElement = <K1, D1>({\n id,\n state,\n previousState,\n position,\n activeId,\n nodeRenderer,\n onNodeSizeChanged,\n nodeIndex,\n data,\n accessibleLabel,\n isDimmed,\n supportsSelection\n}: NodeProps<K1, D1>) => {\n const { nodeStyles, dimmedItemStyle } = itemStyles;\n const context = {\n state: state,\n previousState: previousState,\n data: data\n };\n\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const ref = useRef<HTMLDivElement>(null);\n // TODO JET-62472 change to one resize observer function\n const optionsRef = useRef({ box: 'border-box' as const });\n useResizeObserver(\n ref,\n useCallback(\n (entry: ResizeObserverEntry) => {\n const boxSize = entry.borderBoxSize;\n const width = boxSize[0].inlineSize;\n const height = boxSize[0].blockSize;\n onNodeSizeChanged(width, height, nodeIndex);\n },\n [nodeIndex, onNodeSizeChanged]\n ),\n optionsRef.current\n );\n return (\n <div\n ref={ref}\n key={id}\n class={classNames([nodeStyles, isDimmed ? dimmedItemStyle : undefined])}\n data-node={id}\n role=\"img\"\n aria-label={getItemAriaLabel(\n translations,\n supportsSelection,\n state.selected,\n accessibleLabel\n )}\n style={{\n top: position.y,\n left: position.x\n }}\n id={state.focused || state.hovered ? activeId : undefined}>\n {nodeRenderer(context)}\n </div>\n );\n};\n","import { ComponentChildren } from 'preact';\nimport type { States, NodeRendererContext, Bounds, DiagramNodeData } from './diagram.types';\nimport { DiagramNodeElement } from './DiagramNodeElement';\nimport { layerStyles } from './themes/DiagramStyles.css';\n\ntype Props<K1, K2, D1> = {\n nodes: D1[];\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n nodeBounds?: Bounds[];\n supportsSelection: boolean;\n};\n\nexport function DiagramNodeLayer<K1, K2, D1 extends DiagramNodeData<K1>>({\n nodes,\n states,\n previousStates,\n nodeRenderer,\n nodeBounds,\n onNodeSizeChanged,\n supportsSelection\n}: Props<K1, K2, D1>) {\n return (\n <div class={layerStyles}>\n {nodes.map((node, i) => {\n // this is for initial render before the layout function so render all nodes at 0,0\n const position =\n nodeBounds && nodeBounds[i] ? { x: nodeBounds[i].x, y: nodeBounds[i].y } : { x: 0, y: 0 };\n const state = {\n selected: states.selectedNodeIds.includes(node.id),\n focused: states.focusedId === node.id,\n hovered: states.hoveredId === node.id,\n zoom: states.zoom\n };\n const previousState = {\n selected: previousStates.selectedNodeIds.includes(node.id),\n focused: previousStates.focusedId === node.id,\n hovered: previousStates.hoveredId === node.id,\n zoom: previousStates.zoom\n };\n return (\n <DiagramNodeElement\n id={node.id}\n position={position}\n state={state}\n previousState={previousState}\n isDimmed={\n states.highlightedIds.length !== 0 && !states.highlightedIds.includes(node.id)\n }\n activeId={states.activeId}\n nodeRenderer={nodeRenderer}\n onNodeSizeChanged={onNodeSizeChanged}\n nodeIndex={i}\n accessibleLabel={node.accessibleLabel}\n data={node}\n supportsSelection={supportsSelection}\n />\n );\n })}\n </div>\n );\n}\n","import type { State, LinkRendererContext } from './diagram.types';\nimport { getItemAriaLabel } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { itemStyles } from './themes/DiagramStyles.css';\nimport { ComponentChildren } from 'preact';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport type { BundleType } from '../resources/nls/bundle';\n\n/**\n * Props for Link\n */\nexport type LinkProps<K2, D2, L> = {\n id: K2;\n label?: string;\n state: State;\n previousState: State;\n isDimmed?: boolean;\n activeId?: string;\n accessibleLabel?: string;\n data: D2;\n linkRenderer: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n supportsSelection: boolean;\n layoutOutput: L;\n};\n\nexport const DiagramLinkElement = <K2, D2, L>({\n id,\n state,\n previousState,\n activeId,\n data,\n linkRenderer,\n accessibleLabel,\n isDimmed,\n supportsSelection,\n layoutOutput\n}: LinkProps<K2, D2, L>) => {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { dimmedItemStyle, linkStyles } = itemStyles;\n const context = {\n state: state,\n previousState: previousState,\n data: data,\n layoutOutput: layoutOutput\n };\n return (\n <g\n key={id}\n id={state.focused ? activeId : undefined}\n aria-label={getItemAriaLabel(\n translations,\n supportsSelection,\n state.selected,\n accessibleLabel\n )}\n data-link={id}\n role=\"img\"\n class={classNames([linkStyles, isDimmed && dimmedItemStyle])}>\n {linkRenderer(context)}\n </g>\n );\n};\n","import { ComponentChildren } from 'preact';\nimport type {\n States,\n LinkRendererContext,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { DiagramLinkElement } from './DiagramLinkElement';\nimport { layerStyles } from './themes/DiagramStyles.css';\n\ntype Props<K2, K1, D2, L> = {\n links: D2[];\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n linkRenderer: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n width: number;\n height: number;\n supportsSelection: boolean;\n layoutOutput: L;\n};\n\nexport function DiagramLinkLayer<\n K2 extends string | number,\n K1 extends string | number,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({\n links,\n states,\n previousStates,\n linkRenderer,\n width,\n height,\n supportsSelection,\n layoutOutput\n}: Props<K2, K1, D2, L>) {\n return (\n <svg class={layerStyles} width={width} height={height}>\n {links.map((link) => {\n const state = {\n selected: states.selectedLinkIds.includes(link.id),\n focused: states.focusedId === link.id,\n hovered: states.hoveredId === link.id,\n zoom: states.zoom\n };\n const previousState = {\n selected: previousStates.selectedLinkIds.includes(link.id),\n focused: previousStates.focusedId === link.id,\n hovered: previousStates.hoveredId === link.id,\n zoom: previousStates.zoom\n };\n return (\n <DiagramLinkElement\n id={link.id}\n label={link.label}\n state={state}\n previousState={previousState}\n isDimmed={\n states.highlightedIds.length !== 0 && !states.highlightedIds.includes(link.id)\n }\n activeId={states.activeId}\n accessibleLabel={link.accessibleLabel}\n data={link}\n linkRenderer={linkRenderer}\n supportsSelection={supportsSelection}\n layoutOutput={layoutOutput}\n />\n );\n })}\n </svg>\n );\n}\n","import type { DiagramLabelPosition, DiagramLabelStyles } from './diagram.types';\nimport { getLabelPosition } from './utils/diagramUtils';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { labelStyles } from './themes/DiagramStyles.css';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { Property } from 'csstype';\n\n/**\n * Props for the label component\n */\ntype LabelProps = {\n styles?: LabelStyles;\n text: string;\n position: DiagramLabelPosition;\n dimensions: TextDimensions;\n isRTL: boolean;\n};\n\n/**\n * Label styles\n */\ntype LabelStyles = DiagramLabelStyles & {\n borderStyle?: Property.BorderStyle;\n};\n\nexport const DiagramLabel = ({ text, position, styles, dimensions, isRTL }: LabelProps) => {\n const { labelStyle, labelBorderStyle } = labelStyles;\n\n const labelPosition = getLabelPosition(dimensions, position, isRTL);\n const labelRotation = getLabelRotation(position);\n return (\n <div\n class={classNames([labelStyle, styles && styles.borderColor && labelBorderStyle])}\n style={{\n top: labelPosition.y,\n left: labelPosition.x,\n ...styles,\n ...labelRotation\n }}>\n {text}\n </div>\n );\n};\n\n/**\n * Returns the label rotation props\n * @param position\n * @returns rotation props\n */\nfunction getLabelRotation(position: DiagramLabelPosition) {\n const rotationAngle = position.rotationAngle;\n const rotationPoint = position.rotationPoint;\n const rotation: {\n transform?: string;\n 'transform-origin'?: string;\n } = {};\n if (rotationAngle) {\n rotation['transform'] = `rotate(${rotationAngle}deg)`;\n }\n if (rotationPoint) {\n rotation['transform-origin'] = `${rotationPoint.x}px ${rotationPoint.y}px`;\n }\n return rotation;\n}\n","import type { DiagramLabelPosition, DiagramNodeData, DiagramLinkData } from './diagram.types';\nimport { DiagramLabel } from './DiagramLabel';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { layerStyles } from './themes/DiagramStyles.css';\nimport { useUser } from '../hooks/UNSAFE_useUser';\n\ntype Props<K1, K2, D1, D2> = {\n labelPosition: (DiagramLabelPosition | undefined)[];\n itemProps: (D1 | D2)[];\n labelDimensions: Map<K1 | K2, TextDimensions>;\n};\n\nexport function DiagramLabelLayer<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>({ labelPosition, itemProps, labelDimensions }: Props<K1, K2, D1, D2>) {\n const { direction } = useUser();\n return (\n <div class={layerStyles}>\n {itemProps.map((item, i) => {\n if (item.label && labelPosition[i]) {\n return (\n <DiagramLabel\n styles={item.labelStyle}\n text={item.label}\n position={labelPosition[i]!}\n dimensions={labelDimensions.get(item.id)!}\n isRTL={direction === 'rtl'}\n />\n );\n }\n return undefined;\n })}\n </div>\n );\n}\n","import type {\n NodeRendererContext,\n LinkRendererContext,\n States,\n Bounds,\n DiagramLabelPosition,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { DiagramNodeLayer } from './DiagramNodeLayer';\nimport { DiagramLinkLayer } from './DiagramLinkLayer';\nimport { DiagramLabelLayer } from './DiagramLabelLayer';\nimport { ComponentChildren } from 'preact';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\n\n/**\n * Props for Diagram layers component\n */\ntype DiagramLayersProps<K1, K2, D1, D2, L> = {\n nodes: D1[];\n links: D2[];\n nodeRenderer: (context: NodeRendererContext<D1>) => ComponentChildren;\n linkRenderer?: (context: LinkRendererContext<D2, L>) => ComponentChildren;\n states: States<K1, K2>;\n previousStates: States<K1, K2>;\n nodeBounds: Bounds[];\n // width height are for svg for links\n width: number;\n height: number;\n onNodeSizeChanged: (width: number, height: number, idx: number) => void;\n nodeLabelPositions?: (DiagramLabelPosition | undefined)[];\n linkLabelPositions?: (DiagramLabelPosition | undefined)[];\n labelDimensions?: Map<K1 | K2, TextDimensions>;\n supportsSelection: boolean;\n layoutOutput?: L;\n};\n\nexport function DiagramLayers<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2>\n>({\n nodes,\n links,\n nodeRenderer,\n linkRenderer,\n states,\n previousStates,\n nodeBounds,\n onNodeSizeChanged,\n width,\n height,\n nodeLabelPositions,\n linkLabelPositions,\n labelDimensions,\n supportsSelection,\n layoutOutput\n}: DiagramLayersProps<K1, K2, D1, D2, L>) {\n return (\n <>\n {links.length > 0 && layoutOutput && linkRenderer && width !== Infinity && (\n <DiagramLinkLayer\n links={links}\n states={states}\n previousStates={previousStates}\n linkRenderer={linkRenderer}\n width={width}\n height={height}\n supportsSelection={supportsSelection}\n layoutOutput={layoutOutput}\n />\n )}\n <DiagramNodeLayer\n nodes={nodes}\n nodeBounds={nodeBounds}\n states={states}\n previousStates={previousStates}\n nodeRenderer={nodeRenderer}\n onNodeSizeChanged={onNodeSizeChanged}\n supportsSelection={supportsSelection}\n />\n {labelDimensions ? (\n <div>\n {nodeLabelPositions ? (\n <DiagramLabelLayer\n labelPosition={nodeLabelPositions}\n itemProps={nodes}\n labelDimensions={labelDimensions}\n />\n ) : undefined}\n {links && linkLabelPositions ? (\n <DiagramLabelLayer\n labelPosition={linkLabelPositions}\n itemProps={links}\n labelDimensions={labelDimensions}\n />\n ) : undefined}\n </div>\n ) : undefined}\n </>\n );\n}\n","import { ComponentChildren } from 'preact';\nimport { centerXYToPanXY } from './utils/diagramUtils';\nimport { panZoomStyles } from './themes/DiagramStyles.css';\n\ntype Props = {\n centerX: number;\n centerY: number;\n zoom: number;\n width: number;\n height: number;\n children: ComponentChildren;\n};\n\nexport function DiagramPanZoomContainer({\n centerX,\n centerY,\n children,\n zoom,\n width,\n height\n}: Props) {\n const panValues = centerXYToPanXY(centerX, centerY, zoom, width, height);\n return (\n <div\n class={panZoomStyles}\n style={{\n //TODO JET-62471 look at using matrices or both in transform instead\n translate: `${panValues.panX}px ${panValues.panY}px`,\n transform: `scale(${zoom})`\n }}>\n {children}\n </div>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\n\nimport type { DiagramNodeData, DiagramLinkData, Bounds, ItemInfo } from '../diagram.types';\n\n/**\n * Navigation direction\n */\nexport type NavDirection = 'right' | 'left' | 'up' | 'down';\n\ntype linkDetailType<K2> = {\n id: K2;\n angle: number;\n distance: number;\n /**\n * Ingoing = 1, outgoing = 0\n */\n direction: 0 | 1;\n};\n\n/**\n * Returns the node data based on node info in a diagram.\n * @param itemInfo\n * @returns\n */\nexport function getNodeDetailFromInfo<K1, K2, D1 extends DiagramNodeData<K1>>(\n itemInfo: ItemInfo<K1, K2>,\n nodes: D1[]\n): D1 | undefined {\n let node;\n for (let i = 0; i < nodes.length; i++) {\n node = nodes[i];\n if (itemInfo.id === node.id) {\n return node;\n }\n }\n return undefined;\n}\n\n/**\n * Returns the link data based on link info in a diagram.\n * @param itemInfo\n * @returns\n */\nexport function getLinkDetailFromInfo<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n itemInfo: ItemInfo<K1, K2>,\n links: D2[]\n): D2 | undefined {\n let link;\n for (let i = 0; i < links.length; i++) {\n link = links[i];\n if (itemInfo.id === link.id) {\n return link;\n }\n }\n return undefined;\n}\n\n/**\n * Creates a map with key node id and value node bounds\n */\nexport function createNodeBoundsMap<K1, D1 extends DiagramNodeData<K1>>(\n nodes: D1[],\n bounds: Bounds[]\n) {\n const nodeBounds: Map<K1, Bounds> = new Map();\n for (let i = 0; i < nodes.length; i++) {\n nodeBounds.set(nodes[i].id, bounds[i]);\n }\n return nodeBounds;\n}\n\n/**\n * Utility method that adds sorting attributes of each link to an array\n */\nexport function addSortingAttributes<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, listOfLinks: D2[], nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n let angle, distance, direction;\n const linkDetail: linkDetailType<K2>[] = [];\n for (let i = 0; i < listOfLinks.length; i++) {\n const link = listOfLinks[i];\n angle = _getClockwiseAngle(node, link, nodes, nodeBounds);\n distance = _getNodesDistance(link, nodes, nodeBounds);\n direction = _getLinkDirection(node, link);\n linkDetail.push({ id: link.id, angle: angle, distance: distance, direction: direction });\n }\n return linkDetail;\n}\n\n/**\n * Returns a function that compares two link around a given node\n * The links are analyzed by angle, distance from the node and direction. The sorting attributes are added to the links before sorting.\n */\nexport function getLinkComparator<K2>() {\n return (link1: linkDetailType<K2>, link2: linkDetailType<K2>) => {\n const { angle: linkAngle1, distance: linkDistance1, direction: linkDirection1 } = link1;\n const { angle: linkAngle2, distance: linkDistance2, direction: linkDirection2 } = link2;\n let res = -1;\n\n if (!_anglesAreEqualWithinTolerance(linkAngle1, linkAngle2) && linkAngle1 > linkAngle2) {\n res = 1;\n } else if (_anglesAreEqualWithinTolerance(linkAngle1, linkAngle2)) {\n //check distance and direction\n if (linkDistance1 > linkDistance2) {\n res = 1;\n } else if (linkDistance2 == linkDistance1 && linkDirection1 > linkDirection2) {\n //outgoing to ingoing\n res = 1;\n } else if (linkDistance2 == linkDistance1 && linkDirection1 == linkDirection2) {\n res = 0;\n }\n }\n return res;\n };\n}\n\n/**\n * Returns navigable links for a given node\n */\nexport function getNavigableLinksForNodeId<K1, K2, D2 extends DiagramLinkData<K2, K1>>(\n nodeId: K1,\n listOfLinks: D2[]\n) {\n const links: D2[] = [];\n listOfLinks.forEach((link) => {\n const startId = link.startNode;\n const endId = link.endNode;\n\n if (startId == nodeId || endId == nodeId) links.push(link);\n });\n return links;\n}\n\n/**\n * Get the clockwise angle for the link given node as a center\n */\nfunction _getClockwiseAngle<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, link: D2, nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n //find opposite node\n let currNode;\n let startNode = nodes[0];\n let endNode = nodes[0];\n for (let i = 0; i < nodes.length; i++) {\n currNode = nodes[i];\n if (currNode.id === link.startNode) {\n startNode = currNode;\n } else if (currNode.id === link.endNode) {\n endNode = currNode;\n }\n }\n const oppositeNode = node.id == startNode.id ? endNode : startNode;\n\n const p1 = _getNodeCenter(node, nodeBounds);\n const p2 = _getNodeCenter(oppositeNode, nodeBounds);\n let angle = Math.atan2(p2.y - p1.y, p2.x - p1.x);\n angle = angle < 0 ? angle + Math.PI * 2 : angle;\n return angle;\n}\n\n/**\n * Get the distance between start and end nodes for the given link\n */\nfunction _getNodesDistance<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(link: D2, nodes: D1[], nodeBounds: Map<K1, Bounds>) {\n let currNode;\n let startNode = nodes[0];\n let endNode = nodes[0];\n for (let i = 0; i < nodes.length; i++) {\n currNode = nodes[i];\n if (currNode.id === link.startNode) {\n startNode = currNode;\n } else if (currNode.id === link.endNode) {\n endNode = currNode;\n }\n }\n const p1 = _getNodeCenter(startNode, nodeBounds);\n const p2 = _getNodeCenter(endNode, nodeBounds);\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\n/**\n * Get link direction for the given node. 1 if the node is the end node\n * and 0 if it is the start node\n */\nfunction _getLinkDirection<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(node: D1, link: D2): 0 | 1 {\n if (link.endNode === node.id) {\n return 1;\n }\n return 0;\n}\n\n/**\n * Get node center\n */\nfunction _getNodeCenter<K1, D1 extends DiagramNodeData<K1>>(node: D1, nodeBounds: Map<K1, Bounds>) {\n const nodeBB = nodeBounds.get(node.id)!;\n return { x: nodeBB.x + nodeBB.w / 2, y: nodeBB.y + nodeBB.h / 2 };\n}\n\n/**\n * Calculates the angle weighted by distance\n */\nexport function calcDistanceAngleWeighted(\n objectBB: Bounds,\n currentBB: Bounds,\n direction: NavDirection\n) {\n // Variables used for calculating penalties when calculating distances between two navigables.\n const optimalAngle1 = (15 / 180) * Math.PI;\n const optimalAngle2 = (40 / 180) * Math.PI;\n const suboptimalAnglePenalty1 = 2; // multiplier to the distance\n const suboptimalAnglePenalty2 = 6; // multiplier to the distance\n\n const objCenterX = objectBB.x + objectBB.w / 2;\n const objCenterY = objectBB.y + objectBB.h / 2;\n\n const curCenterX = currentBB.x + currentBB.w / 2;\n const curCenterY = currentBB.y + currentBB.h / 2;\n\n const x_dist = Math.abs(objCenterX - curCenterX);\n const y_dist = Math.abs(objCenterY - curCenterY);\n\n const angle = Math.atan2(y_dist, x_dist);\n\n let distance = Math.sqrt(x_dist * x_dist + y_dist * y_dist);\n\n // Angle penalty based on direction\n if (\n (angle > optimalAngle1 && (direction == 'right' || direction == 'left')) ||\n (angle < Math.PI / 2 - optimalAngle1 && (direction == 'up' || direction == 'down'))\n ) {\n if (\n (angle > optimalAngle2 && (direction == 'right' || direction == 'left')) ||\n (angle < Math.PI / 2 - optimalAngle2 && (direction == 'up' || direction == 'down'))\n ) {\n distance *= suboptimalAnglePenalty2;\n } else {\n distance *= suboptimalAnglePenalty1;\n }\n }\n\n return distance;\n}\n\n/**\n * Given a direction, is a certain node is a valid destination to navigate to\n */\nexport function isValidDestination(\n objBB: Bounds,\n curBB: Bounds,\n direction: NavDirection,\n compareCenters: boolean\n) {\n // compare the centers of the navigable and to be valid, the navigable must be in the right direction\n // without tolerance\n if (compareCenters) {\n const objCenterX = objBB.x + 0.5 * objBB.w;\n const curCenterX = curBB.x + 0.5 * curBB.w;\n const objCenterY = objBB.y + 0.5 * objBB.h;\n const curCenterY = curBB.y + 0.5 * curBB.h;\n\n switch (direction) {\n case 'up':\n return objCenterY < curCenterY;\n case 'down':\n return objBB.y > curCenterY;\n case 'right':\n return objCenterX > curCenterX;\n case 'left':\n return objCenterX < curCenterX;\n default:\n break;\n }\n return true;\n }\n\n switch (direction) {\n case 'up':\n return objBB.y < curBB.y || _areEqualWithinTolerance(objBB.y, curBB.y);\n case 'down':\n return objBB.y > curBB.y || _areEqualWithinTolerance(objBB.y, curBB.y);\n case 'right':\n return objBB.x > curBB.x || _areEqualWithinTolerance(objBB.x, curBB.x);\n case 'left':\n return objBB.x < curBB.x || _areEqualWithinTolerance(objBB.x, curBB.x);\n default:\n break;\n }\n return true;\n}\n\n/**\n * Returns true if two nodes are in contact\n */\nexport function calcInContact(objRect: Bounds, curRect: Bounds, direction: NavDirection) {\n switch (direction) {\n case 'up':\n return (\n _isVerticallyAligned(objRect, curRect) &&\n (curRect.y <= objRect.y + objRect.h ||\n _areEqualWithinTolerance(curRect.y, objRect.y + objRect.h))\n );\n case 'down':\n return (\n _isVerticallyAligned(objRect, curRect) &&\n (objRect.y <= curRect.y + curRect.h ||\n _areEqualWithinTolerance(objRect.y, curRect.y + curRect.h))\n );\n case 'right':\n return (\n _isHorizontallyAligned(objRect, curRect) &&\n (objRect.x <= curRect.x + curRect.w ||\n _areEqualWithinTolerance(objRect.x, curRect.x + curRect.w))\n );\n case 'left':\n return (\n _isHorizontallyAligned(objRect, curRect) &&\n (curRect.x <= objRect.x + objRect.w ||\n _areEqualWithinTolerance(curRect.x, objRect.x + objRect.w))\n );\n default:\n break;\n }\n\n return false;\n}\n\nfunction _isVerticallyAligned(rect1: Bounds, rect2: Bounds) {\n return (\n (rect1.x >= rect2.x && rect1.x <= rect2.x + rect2.w) ||\n (rect2.x >= rect1.x && rect2.x <= rect1.x + rect1.w)\n );\n}\n\nfunction _isHorizontallyAligned(rect1: Bounds, rect2: Bounds) {\n return (\n (rect1.y >= rect2.y && rect1.y <= rect2.y + rect2.h) ||\n (rect2.y >= rect1.y && rect2.y <= rect1.y + rect1.h)\n );\n}\n\nfunction _areEqualWithinTolerance(a: number, b: number) {\n return Math.abs(a - b) <= 0.0000001;\n}\n\nfunction _anglesAreEqualWithinTolerance(a1: number, a2: number) {\n let res = Math.abs(a1 - a2) <= 0.0000001;\n if (!res) {\n res = Math.abs(Math.PI * 2 + Math.min(a1, a2) - Math.max(a1, a2)) <= 0.0000001;\n }\n return res;\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 */\n\nimport {\n NavDirection,\n addSortingAttributes,\n calcDistanceAngleWeighted,\n calcInContact,\n createNodeBoundsMap,\n getLinkComparator,\n getNavigableLinksForNodeId,\n getNodeDetailFromInfo,\n isValidDestination\n} from '../utils/navUtils';\nimport type { DiagramNodeData, DiagramLinkData, Bounds, ItemInfo } from '../diagram.types';\nimport { useRef } from 'preact/hooks';\n\nexport function useDiagramNavigation<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(nodes: D1[], links: D2[], bounds: Bounds[], linkIdToDataMap: Map<K2, D2>) {\n const currentKeyboardFocusNode = useRef<K1>();\n const nodeBoundsById = createNodeBoundsMap<K1, D1>(nodes, bounds);\n\n function getNextNavigableNode(\n direction: NavDirection,\n compareCenters: boolean,\n current?: D1,\n listOfObjects?: D1[]\n ) {\n if (!listOfObjects) return current;\n\n if (!current) return listOfObjects[0];\n const currBB = nodeBoundsById.get(current.id);\n if (!currBB) return listOfObjects[0];\n\n let nextObject = current; //init to current object\n let nextDistance = Number.MAX_VALUE;\n\n // If an object is in contact it overrules all other attributes\n // Only another in contact object with better attributes will have higher precedence\n let nextInContact = false;\n\n // Whether or not the for loop has encountered the current object\n let hasFoundCurrent = false;\n\n let object, inContact, distance;\n for (let i = 0; i < listOfObjects.length; i++) {\n object = listOfObjects[i];\n\n if (object === current) {\n hasFoundCurrent = true;\n continue;\n }\n const objBB = nodeBoundsById.get(object.id);\n if (!objBB) continue;\n\n const objBounds = { x: objBB.x, y: objBB.y, w: objBB.w, h: objBB.h };\n const currBounds = { x: currBB.x, y: currBB.y, w: currBB.w, h: currBB.h };\n if (!isValidDestination(objBounds, currBounds, direction, compareCenters)) continue;\n\n inContact = calcInContact(objBounds, currBounds, direction);\n\n if (nextInContact && !inContact) continue;\n\n distance = calcDistanceAngleWeighted(objBounds, currBounds, direction);\n\n if (distance == 0 && !hasFoundCurrent) continue;\n\n // Make sure incontact flag have highest precedence\n if (\n (!nextInContact && inContact) ||\n (distance < nextDistance && ((nextInContact && inContact) || !nextInContact))\n ) {\n nextDistance = distance;\n nextObject = object;\n nextInContact = inContact;\n }\n }\n return nextObject;\n }\n\n /**\n * Get next navigavle link depending on direction - clockwise or conter clockwise.\n * The decision is made based on location of nodes centers rather than link paths or link angles.\n */\n function getNextNavigableLink(\n direction: string,\n listOfNodes: D1[],\n currentLink?: D2,\n listOfLinks?: D2[]\n ) {\n if (!listOfLinks) return currentLink;\n\n if (!currentLink) return listOfLinks[0];\n const keyboardFocusNode = currentKeyboardFocusNode.current;\n const nodeId = keyboardFocusNode ? keyboardFocusNode : currentLink.startNode;\n const node = getNodeDetailFromInfo({ id: nodeId, isNode: true }, listOfNodes);\n\n if (!node) return currentLink;\n const adjLinks = getNavigableLinksForNodeId(node.id, listOfLinks);\n listOfLinks = adjLinks;\n const linksWithSortingAttributes = addSortingAttributes<K1, K2, D1, D2>(\n node,\n listOfLinks,\n listOfNodes,\n nodeBoundsById\n );\n linksWithSortingAttributes.sort(getLinkComparator());\n //clockwise direction\n const bForward = direction == 'down' ? true : false;\n let index = 0;\n for (let i = 0; i < linksWithSortingAttributes.length; i++) {\n const link = linksWithSortingAttributes[i];\n if (link.id === currentLink.id) {\n if (bForward) index = i == linksWithSortingAttributes.length - 1 ? 0 : i + 1;\n else index = i == 0 ? linksWithSortingAttributes.length - 1 : i - 1;\n break;\n }\n }\n return linksWithSortingAttributes[index];\n }\n\n /**\n * Returns the link detail when a node to link navigation occurs\n */\n function navigateFromNodeToLink(listOfLinks: D2[], event: KeyboardEvent, node?: D1) {\n if (!node) return undefined;\n const adjLinks = getNavigableLinksForNodeId(node.id, listOfLinks);\n if (adjLinks.length < 1) return undefined;\n let link = adjLinks[0];\n const nodeBB = nodeBoundsById.get(node.id)!;\n let object, currNode, currNodeBB, currNodeBBCenterX;\n const nodeCenterX = nodeBB.x + nodeBB.w / 2;\n currentKeyboardFocusNode.current = node.id;\n for (let i = 0; i < adjLinks.length; i++) {\n object = adjLinks[i];\n currNode = object.startNode === node.id ? object.endNode : object.startNode;\n currNodeBB = nodeBoundsById.get(currNode);\n currNodeBBCenterX = currNodeBB!.x + currNodeBB!.w / 2;\n if (\n // equivalent of ≤ and ≥\n (event.altKey && event.code === 'Comma' && currNodeBBCenterX <= nodeCenterX) ||\n (event.altKey && event.code === 'Period' && currNodeBBCenterX >= nodeCenterX)\n ) {\n link = object;\n break;\n }\n }\n return { id: link.id, isNode: false };\n }\n\n /**\n * Returns the node detail when a link to node navigation occurs\n */\n function navigateFromLinkToNode(linkId: K2, event: KeyboardEvent) {\n const key = event.key;\n const linkData = linkIdToDataMap.get(linkId)!;\n const startNodeBB = nodeBoundsById.get(linkData.startNode);\n const endNodeBB = nodeBoundsById.get(linkData.endNode);\n if (!startNodeBB || !endNodeBB) return undefined;\n const startNodeCenterX = startNodeBB.x + startNodeBB.w / 2;\n const endNodeCenterX = endNodeBB.x + endNodeBB.w / 2;\n const newNode =\n (endNodeCenterX > startNodeCenterX && key === 'ArrowRight') ||\n (endNodeCenterX < startNodeCenterX && key === 'ArrowLeft')\n ? linkData.endNode\n : linkData.startNode;\n return { id: newNode, isNode: true };\n }\n\n return {\n isNode: (itemInfo: ItemInfo<K1, K2>): boolean => {\n let node, link;\n for (let i = 0; i < nodes.length; i++) {\n node = nodes[i];\n link = links[i];\n if (itemInfo.id === node.id) {\n return true;\n }\n if (itemInfo.id === link.id) {\n return true;\n }\n }\n return false;\n },\n getNextNavigableNode,\n getNextNavigableLink,\n navigateFromNodeToLink,\n navigateFromLinkToNode\n };\n}\n","import {\n ItemInfo,\n ItemHoverDetail,\n ItemFocusDetail,\n Bounds,\n DiagramNodeData,\n DiagramLinkData\n} from '../diagram.types';\nimport { useRef, useState } from 'preact/hooks';\nimport { isEqualItem, getNavigableInfo, zoomAndCenterItemFromInfo } from '../utils/diagramUtils';\nimport { getRandomId } from '../../utils/PRIVATE_visLayoutUtils/layoutUtils';\nimport { getNodeDetailFromInfo, getLinkDetailFromInfo } from '../utils/navUtils';\nimport { useDiagramNavigation } from './useDiagramNavigation';\nimport type { NavDirection } from '../utils/navUtils';\nimport { useVisHover } from '#hooks/PRIVATE_useVisHover';\nimport { mergeProps } from '#utils/UNSAFE_mergeProps';\n\nconst DEFAULT_KB_PAN = 15;\nconst DEFAULT_KB_ZOOM = 0.15;\n\nexport function useEvents<\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>(\n touchResponse: 'touchStart' | 'touchHold',\n initNode: D1,\n nodes: D1[],\n links: D2[],\n nodeBounds: Bounds[],\n linkIdToDataMap: Map<K2, D2>,\n nodeIdToDataMap: Map<K1, D1>,\n nodeIdToIndexMap: Map<K1, number>,\n width: number,\n height: number,\n maxZoom: number,\n onItemHover?: (detail: ItemHoverDetail<K1, K2, D1, D2>) => void,\n onItemFocus?: (detail: ItemFocusDetail<K1, K2, D1, D2>) => void,\n kbPanCallback?: (props: {\n dPan?: { dx: number; dy: number };\n nPan?: { cx: number; cy: number };\n center?: boolean;\n }) => void,\n kbZoomCallback?: (props: { dZoom?: number; nZoom?: number }) => void\n) {\n const {\n getNextNavigableNode,\n getNextNavigableLink,\n navigateFromNodeToLink,\n navigateFromLinkToNode\n } = useDiagramNavigation<K1, K2, D1, D2>(nodes, links, nodeBounds, linkIdToDataMap);\n const [focusedItemInfo, setfocusedItemInfo] = useState<ItemInfo<K1, K2>>({\n id: initNode.id,\n isNode: true\n });\n const [hoveredItemInfo, sethoveredItemInfo] = useState<ItemInfo<K1, K2>>();\n const activeId = useRef<string>();\n\n const cancelEvent = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const keyDownHandler = (event: KeyboardEvent) => {\n const key = event.key;\n let eventConsumed = false;\n // tabbing out of the diagram\n if (key === 'TAB') {\n return;\n }\n // if this a switch from node to link or vice versa\n if (isChangeItemType(event)) {\n const nextItemInfo = focusedItemInfo.isNode\n ? navigateFromNodeToLink(links, event, getNodeDetailFromInfo(focusedItemInfo, nodes))\n : navigateFromLinkToNode(focusedItemInfo.id as K2, event);\n handleKeyboardInput(nextItemInfo);\n eventConsumed = true;\n } else if (isNavigationEvent(key)) {\n const nextItemInfo = handleKeyboardNavigationEvent(key);\n handleKeyboardInput(nextItemInfo);\n eventConsumed = true;\n } else {\n switch (key) {\n case 'PageUp': {\n kbPanCallback &&\n kbPanCallback({\n dPan: {\n dx: event.shiftKey ? -DEFAULT_KB_PAN : 0,\n dy: event.shiftKey ? 0 : -DEFAULT_KB_PAN\n }\n });\n eventConsumed = true;\n break;\n }\n case 'PageDown': {\n kbPanCallback &&\n kbPanCallback({\n dPan: {\n dx: event.shiftKey ? DEFAULT_KB_PAN : 0,\n dy: event.shiftKey ? 0 : DEFAULT_KB_PAN\n }\n });\n eventConsumed = true;\n eventConsumed = true;\n break;\n }\n case '+':\n case '=': {\n kbZoomCallback && kbZoomCallback({ dZoom: DEFAULT_KB_ZOOM });\n eventConsumed = true;\n break;\n }\n case '-':\n case '_': {\n kbZoomCallback && kbZoomCallback({ dZoom: -DEFAULT_KB_ZOOM });\n eventConsumed = true;\n break;\n }\n case '0': {\n if (event.ctrlKey && event.altKey) {\n const { centerX, centerY, zoom } = zoomAndCenterItemFromInfo(\n focusedItemInfo,\n linkIdToDataMap,\n nodeBounds,\n nodeIdToIndexMap,\n width,\n height,\n maxZoom\n );\n kbZoomCallback && kbZoomCallback({ nZoom: zoom });\n kbPanCallback && kbPanCallback({ nPan: { cx: centerX, cy: centerY } });\n } else {\n // zoom to fit\n kbZoomCallback && kbZoomCallback({});\n kbPanCallback && kbPanCallback({ center: true });\n }\n eventConsumed = true;\n }\n }\n }\n if (eventConsumed) {\n cancelEvent(event);\n }\n };\n\n const keyUpHandler = (event: KeyboardEvent) => {\n const key = event.code;\n switch (key) {\n case 'Tab': {\n updatefocusedItemInfo({\n ...focusedItemInfo,\n isCurrent: true,\n isFocusVisible: true\n });\n break;\n }\n }\n };\n\n const blurHandler = () => {\n if (hoveredItemInfo != null || focusedItemInfo.isCurrent) {\n onItemFocus?.({ id: undefined, data: undefined });\n }\n const itemInfo = { ...focusedItemInfo, isCurrent: false, isFocusVisible: false };\n setfocusedItemInfo(itemInfo);\n };\n\n const onHover = (event: PointerEvent) => {\n const itemInfo = getNavigableInfo<K1, K2>(event.target as HTMLElement);\n if (itemInfo && !isEqualItem(itemInfo, hoveredItemInfo)) {\n sethoveredItemInfo({ ...itemInfo, isCurrent: true });\n activeId.current = getRandomId();\n setfocusedItemInfo({ ...focusedItemInfo, isCurrent: false });\n if (itemInfo.isNode) {\n onItemHover?.({\n id: itemInfo.id,\n type: 'node',\n data: nodeIdToDataMap.get(itemInfo.id as K1)\n });\n } else {\n onItemHover?.({\n id: itemInfo.id,\n type: 'link',\n data: linkIdToDataMap.get(itemInfo.id as K2)\n });\n }\n }\n };\n\n const onHoverLeave = () => {\n sethoveredItemInfo(undefined);\n activeId.current = undefined;\n onItemHover?.({ id: undefined, data: undefined });\n };\n\n const hoverHandlers = useVisHover(onHover, undefined, onHoverLeave, touchResponse);\n\n const pointerUpHandler = (event: PointerEvent) => {\n const itemInfo = getNavigableInfo<K1, K2>(event.target as HTMLElement);\n if (itemInfo.id != null) {\n setfocusedItemInfo(itemInfo);\n activeId.current = getRandomId();\n }\n };\n\n function updatefocusedItemInfo(itemInfo: ItemInfo<K1, K2>) {\n if (itemInfo.isNode) {\n onItemFocus?.({\n id: itemInfo.id,\n type: 'node',\n data: nodeIdToDataMap.get(itemInfo.id as K1)\n });\n } else {\n onItemFocus?.({\n id: itemInfo.id,\n type: 'link',\n data: linkIdToDataMap.get(itemInfo.id as K2)\n });\n }\n activeId.current = getRandomId();\n setfocusedItemInfo(itemInfo);\n }\n\n function handleKeyboardInput(item?: ItemInfo<K1, K2>) {\n if (!item) return;\n if (!isEqualItem(item, focusedItemInfo)) {\n item.isCurrent = true;\n item.isFocusVisible = true;\n if (hoveredItemInfo) {\n sethoveredItemInfo({ ...hoveredItemInfo, isCurrent: false });\n }\n updatefocusedItemInfo(item);\n }\n }\n\n function isNavigationEvent(key: string) {\n switch (key) {\n case 'ArrowDown':\n case 'ArrowUp':\n case 'ArrowRight':\n case 'ArrowLeft': {\n return true;\n }\n }\n return false;\n }\n\n function isChangeItemType(event: KeyboardEvent) {\n const key = event.code;\n // check if switching from node to link\n // equivalent of ≤ and ≥\n if (focusedItemInfo.isNode && event.altKey && (key === 'Period' || key === 'Comma')) {\n return true;\n // check if switching from link to node\n } else if (!focusedItemInfo.isNode && (key === 'ArrowLeft' || key === 'ArrowRight')) {\n return true;\n }\n return false;\n }\n\n function handleKeyboardNavigationEvent(key: string) {\n let direction: NavDirection = 'down';\n switch (key) {\n case 'ArrowDown': {\n direction = 'down';\n break;\n }\n case 'ArrowUp': {\n direction = 'up';\n break;\n }\n case 'ArrowRight': {\n direction = 'right';\n break;\n }\n case 'ArrowLeft': {\n direction = 'left';\n break;\n }\n }\n if (focusedItemInfo.isNode) {\n const itemDetail = getNextNavigableNode(\n direction,\n true,\n getNodeDetailFromInfo(focusedItemInfo, nodes),\n nodes\n );\n return itemDetail ? { id: itemDetail.id, isNode: true } : focusedItemInfo;\n } else {\n const linkDetail = getLinkDetailFromInfo(focusedItemInfo, links);\n const itemDetail = getNextNavigableLink(direction, nodes, linkDetail, links);\n return itemDetail ? { id: itemDetail.id } : { id: focusedItemInfo.id };\n }\n }\n\n return {\n focusedItemInfo,\n hoveredItemInfo,\n activeId: activeId.current,\n eventsProps: mergeProps(hoverHandlers, {\n onKeyUp: keyUpHandler,\n onKeyDown: keyDownHandler,\n onBlur: blurHandler,\n onPointerUp: pointerUpHandler\n })\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n ItemInfo,\n Bounds,\n DatatipContext,\n DiagramNodeData,\n DiagramLinkData\n} from '../diagram.types';\nimport type { Ref } from 'preact/hooks';\nimport { calculateOffset, useDatatip } from '../../hooks/PRIVATE_useDatatip';\nimport type { Pan } from '../utils/panUtils';\nimport { useUser } from '../../hooks/UNSAFE_useUser';\nimport { getDatatipContent } from '../utils/diagramUtils';\nimport { ComponentChildren } from 'preact';\nimport { Property } from 'csstype';\n\ntype props<K1, K2, D1, D2> = {\n touchResponse: 'touchStart' | 'touchHold';\n datatip?: (context: DatatipContext<D1, D2>) => {\n content: ComponentChildren;\n borderColor?: Property.BorderColor;\n };\n text?: string;\n focusedItemInfo: ItemInfo<K1, K2>;\n focusedItemBoundsRef: Ref<Bounds | null>;\n panState: Pan;\n zoom: number;\n width: number;\n nodesMap: Map<K1, D1>;\n linksMap: Map<K2, D2>;\n hoveredItem?: ItemInfo<K1, K2>;\n};\n\n/**\n * Returns the datatip.\n * @param text The text string for the diagram item.\n * @param rootRef The ref for root of the diagram.\n * @param focusedItemBoundsRef The ref for focused item bounds.\n * @param focusedItemInfo The ItemInfo for focused item.\n * @returns\n */\nexport const useDiagramDatatip = <\n K1,\n K2,\n D1 extends DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1>\n>({\n touchResponse,\n datatip,\n focusedItemBoundsRef,\n focusedItemInfo,\n panState,\n zoom,\n width,\n nodesMap,\n linksMap,\n hoveredItem\n}: props<K1, K2, D1, D2>) => {\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n\n const datatipC = getDatatipContent(nodesMap, linksMap, focusedItemInfo, hoveredItem, datatip);\n\n const elementBounds = focusedItemInfo?.isCurrent\n ? {\n x: focusedItemBoundsRef.current!.x * zoom + panState.panX,\n y: focusedItemBoundsRef.current!.y * zoom + panState.panY,\n width: focusedItemBoundsRef.current!.w * zoom,\n height: focusedItemBoundsRef.current!.h * zoom\n }\n : undefined;\n\n const { datatipContent, datatipProps } = useDatatip({\n content: datatipC?.content,\n borderColor: datatipC?.borderColor,\n placement: 'top-start',\n offset: calculateOffset(isRtl, width, elementBounds),\n anchor: focusedItemInfo?.isCurrent ? 'element' : 'pointer',\n touchResponse\n });\n return { datatipContent: datatipContent, datatipProps: datatipProps };\n};\n","/**\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 { Ref, useRef } from 'preact/hooks';\n\ntype PointerGesture = {\n pointers: PointerEvent[];\n};\n\ntype UsePointerGestureOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n numPointers: number;\n onPointerGestureDown?: (detail: PointerGesture) => void;\n onPointerGestureMove?: (detail: PointerGesture) => void;\n onPointerGestureEnd?: (detail: PointerGesture) => void;\n onExtraneousPointerDown?: (detail: PointerGesture) => void;\n isDisabled?: boolean;\n};\n\nconst usePointerGesture = ({\n captureTargetRef,\n numPointers = 1,\n onPointerGestureDown,\n onPointerGestureMove,\n onPointerGestureEnd,\n onExtraneousPointerDown,\n isDisabled = false\n}: UsePointerGestureOptions) => {\n const activePointers = useRef<PointerEvent[]>([]);\n\n if (isDisabled) {\n activePointers.current = [];\n }\n\n const onPointerDown = (e: PointerEvent) => {\n activePointers.current.push(e);\n if (activePointers.current.length === numPointers) {\n onPointerGestureDown && onPointerGestureDown({ pointers: activePointers.current });\n } else if (activePointers.current.length > numPointers) {\n onExtraneousPointerDown && onExtraneousPointerDown({ pointers: activePointers.current });\n }\n };\n\n const onPointerMove = (e: PointerEvent) => {\n if (activePointers.current.length === 0) return;\n\n const index = activePointers.current.findIndex(\n (pointerEvent) => pointerEvent.pointerId === e.pointerId\n );\n if (index === -1) return;\n\n activePointers.current[index] = e;\n if (activePointers.current.length === numPointers) {\n activePointers.current.forEach((e) =>\n captureTargetRef.current!.setPointerCapture(e.pointerId)\n );\n\n onPointerGestureMove && onPointerGestureMove({ pointers: activePointers.current });\n }\n };\n\n const onPointerUp = (e: PointerEvent) => {\n const index = activePointers.current.findIndex(\n (pointerEvent) => pointerEvent.pointerId === e.pointerId\n );\n if (index === -1) return;\n\n activePointers.current[index] = e;\n if (activePointers.current.length === numPointers) {\n onPointerGestureEnd && onPointerGestureEnd({ pointers: activePointers.current });\n }\n activePointers.current.splice(index, 1);\n };\n\n const onPointerCancel = onPointerUp;\n const onPointerLeave = onPointerUp;\n\n return isDisabled\n ? {}\n : {\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onPointerCancel,\n onPointerLeave\n };\n};\n\nexport { usePointerGesture };\n","/**\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 { Ref, useRef } from 'preact/hooks';\nimport { usePointerGesture } from './usePointerGesture';\n/**\n * Draggable region\n */\ntype DraggableRegion = {\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n};\n\ntype DragDetail = {\n x: number;\n y: number;\n dx: number;\n dy: number;\n regionOffsetX: number;\n regionOffsetY: number;\n originalEvent: PointerEvent;\n};\n\ntype UseDragOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n draggableRegion?: DraggableRegion;\n onDragStart?: (detail: Omit<DragDetail, 'dx' | 'dy'>) => void;\n onDragMove?: (detail: DragDetail) => void;\n onDragEnd?: (detail: DragDetail) => void;\n isDisabled?: boolean;\n};\n/**\n * Whether point with coordinates are in the draggable region\n */\nconst inDraggableRegion = (x: number, y: number, region?: DraggableRegion) => {\n if (!region) return true;\n const { xMin, xMax, yMin, yMax } = region;\n return x >= xMin && x <= xMax && y >= yMin && y <= yMax;\n};\n\n/**\n * Returns region offset\n */\nconst getRegionOffset = (x: number, y: number, region?: DraggableRegion) => {\n if (!region) return { regionOffsetX: x, regionOffsetY: y };\n return { regionOffsetX: x - region.xMin, regionOffsetY: y - region.yMin };\n};\n\nconst useDrag = ({\n captureTargetRef,\n draggableRegion,\n onDragStart,\n onDragMove,\n onDragEnd,\n isDisabled = false\n}: UseDragOptions) => {\n const inactiveState = { isDragging: false, x0: -1, y0: -1, regionOffsetX: -1, regionOffsetY: -1 };\n const dragState = useRef(inactiveState);\n\n const handlePointerEvent = (e: PointerEvent, cb?: (detail: DragDetail) => void) => {\n const { isDragging, x0, y0, regionOffsetX, regionOffsetY } = dragState.current;\n if (!isDragging) return;\n const x = e.pageX;\n const y = e.pageY;\n cb && cb({ x, y, dx: x - x0, dy: y - y0, regionOffsetX, regionOffsetY, originalEvent: e });\n };\n\n const dragProps = usePointerGesture({\n captureTargetRef,\n numPointers: 1, // Only allow 1 pointer dragging\n onExtraneousPointerDown: () => {\n dragState.current = inactiveState;\n },\n onPointerGestureDown: ({ pointers: [e] }) => {\n const x = e.pageX;\n const y = e.pageY;\n if (e.button !== 0 || !inDraggableRegion(x, y, draggableRegion)) return;\n const { regionOffsetX, regionOffsetY } = getRegionOffset(x, y, draggableRegion);\n dragState.current = { isDragging: true, x0: x, y0: y, regionOffsetX, regionOffsetY };\n onDragStart && onDragStart({ x, y, regionOffsetX, regionOffsetY, originalEvent: e });\n },\n onPointerGestureMove: ({ pointers: [e] }) => {\n handlePointerEvent(e, onDragMove);\n },\n onPointerGestureEnd: ({ pointers: [e] }) => {\n handlePointerEvent(e, onDragEnd);\n dragState.current = inactiveState;\n }\n });\n\n return isDisabled ? {} : dragProps;\n};\n\nexport { useDrag };\n","/**\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 { Bounds, PanState } from '../diagram.types';\nimport { panXYToCenterXY } from './diagramUtils';\nexport type PanBounds = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\n/**\n * The pan values that describes where the diagram content\n * is panned\n */\nexport type Pan = {\n panX: number;\n panY: number;\n};\n\nconst constrainPan = (\n previousPan: Pan,\n nextPan: Pan,\n panBounds: PanBounds,\n panDirection: 'x' | 'y' | 'any'\n) => {\n const panX = panDirection !== 'y' ? nextPan.panX : previousPan.panX;\n const panY = panDirection !== 'x' ? nextPan.panY : previousPan.panY;\n return {\n panX: panX > panBounds.maxX || panX < panBounds.minX ? previousPan.panX : panX,\n panY: panY > panBounds.maxY || panY < panBounds.minY ? previousPan.panY : panY\n };\n};\n\nexport const pan = (\n previousPan: Pan,\n nextPan: Pan,\n panDirection: 'x' | 'y' | 'any',\n zoom: number,\n width: number,\n height: number,\n panBounds?: PanBounds,\n onPanChange?: (detail: PanState) => void\n) => {\n if (!panBounds) {\n //On initial render before nodes are rendered\n return { newPan: { panX: 0, panY: 0 } };\n }\n const newPan = constrainPan(previousPan, nextPan, panBounds, panDirection);\n const isPanChanged = newPan.panX !== previousPan.panX || newPan.panY !== previousPan.panY;\n const center = panXYToCenterXY(newPan.panX, newPan.panY, zoom, width, height);\n isPanChanged &&\n onPanChange &&\n onPanChange({\n centerX: center.centerX,\n centerY: center.centerY\n });\n return { newPan };\n};\n\nexport const getPanBounds = (\n width: number,\n height: number,\n elemBounds: Bounds,\n panType: string,\n zoom: number,\n minZoom: number,\n initPanZoomState: {\n zoom: number;\n centerX?: number;\n centerY?: number;\n }\n): PanBounds => {\n const { x, y, w, h } = elemBounds;\n let minX, maxX, minY, maxY;\n if (panType === 'centerContent') {\n minX = width / 2 - (w + x) * zoom;\n minY = height / 2 - (h + y) * zoom;\n maxX = width / 2 - x * zoom;\n maxY = height / 2 - y * zoom;\n } else {\n // panType equals fixed\n const zoomRatio = zoom / minZoom;\n // Find left corner of the content at min zoom and content is centered\n const minZoomX = (width - w * minZoom) / 2 - x * minZoom;\n const minZoomY = (height - h * minZoom) / 2 - y * minZoom;\n // When we pan all the way to the right, the left corner of displayable area is 0,0 as in min zoom.\n // When we pan all the way to the left, lets find the corner of the displayable area\n const leftCornerX = width - width * zoomRatio;\n const leftCornerY = height - height * zoomRatio;\n // Now we have everything to calculate pan zoom constraints\n minX = leftCornerX + minZoomX * zoomRatio;\n minY = leftCornerY + minZoomY * zoomRatio;\n maxX = minZoomX * zoomRatio;\n maxY = minZoomY * zoomRatio;\n }\n const initZoom = initPanZoomState.zoom;\n const initCenterX = initPanZoomState.centerX;\n const initCenterY = initPanZoomState.centerY;\n // If an initial panZoomState is set, should expand pan bounds to include it\n let dx, dy;\n if (initCenterX) {\n const boundsX = initCenterX * initZoom - width / 2;\n if (-boundsX * initZoom < minX) {\n dx = minX - boundsX * initZoom;\n minX -= dx;\n maxX += dx;\n } else if (-boundsX * initZoom > maxX) {\n dx = -boundsX * initZoom - maxX;\n minX -= dx;\n maxX += dx;\n }\n }\n if (initCenterY) {\n const boundsY = initCenterY * initZoom - height / 2;\n if (-boundsY * initZoom < minY) {\n dy = minY - boundsY * initZoom;\n minY -= dy;\n maxY += dy;\n } else if (-boundsY * initZoom > maxY) {\n dy = -boundsY * initZoom - maxY;\n minY -= dy;\n maxY += dy;\n }\n }\n return {\n minX: minX,\n maxX: maxX,\n minY: minY,\n maxY: maxY\n };\n};\n","/**\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 type { PanState } from '../diagram.types';\n\nimport { Ref, useRef } from 'preact/hooks';\nimport { useDrag } from './useDrag';\nimport { PanBounds, pan } from '../utils/panUtils';\nimport { centerXYToPanXY } from '../utils/diagramUtils';\n/**\n * Options for useDragPan hook\n */\ntype UseDragPanOptions = {\n panProps: {\n panning: 'centerContent' | 'fixed' | 'off';\n centerX: number;\n centerY: number;\n panDirection: 'x' | 'y' | 'any';\n onPan?: (detail: PanState) => void;\n };\n captureTargetRef: Ref<HTMLDivElement>;\n panBounds?: PanBounds;\n onDragPanStart?: () => void;\n onDragPanEnd?: () => void;\n zoom: number;\n width: number;\n height: number;\n};\n\nconst useDragPan = ({\n panProps,\n captureTargetRef,\n panBounds,\n width,\n height,\n zoom,\n onDragPanStart,\n onDragPanEnd\n}: UseDragPanOptions) => {\n const prevPanState = useRef({ panX: 0, panY: 0 });\n const initialPanState = useRef({ panX: 0, panY: 0 });\n const dragProps = useDrag({\n captureTargetRef,\n onDragStart: () => {\n const panValues = centerXYToPanXY(panProps.centerX, panProps.centerY, zoom, width, height);\n initialPanState.current = {\n panX: panValues.panX,\n panY: panValues.panY\n };\n onDragPanStart && onDragPanStart();\n },\n onDragMove: ({ dx, dy }) => {\n const nextPan = {\n panX: initialPanState.current.panX + dx,\n panY: initialPanState.current.panY + dy\n };\n const { newPan } = pan(\n prevPanState.current,\n nextPan,\n panProps.panDirection,\n zoom,\n width,\n height,\n panBounds,\n panProps.onPan\n );\n prevPanState.current = newPan;\n },\n onDragEnd: ({ originalEvent }) => {\n // If panning occurred, call preventDefault to prevent selection from occurring\n if (\n initialPanState.current.panX !== prevPanState.current.panX ||\n initialPanState.current.panY !== prevPanState.current.panY\n )\n originalEvent.preventDefault();\n onDragPanEnd && onDragPanEnd();\n },\n isDisabled: panProps.panning === 'off'\n });\n\n return dragProps;\n};\n\nexport { useDragPan };\n","/**\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 */\ntype WheelDetail = {\n x: number;\n y: number;\n deltaX: number;\n deltaY: number;\n ctrlKey: boolean;\n};\n\ntype UseWheelOptions = {\n onWheel: (detail: WheelDetail) => void;\n preventDefault?: boolean;\n isDisabled?: boolean;\n};\n\nconst PX_FACTOR_PER_LINE = 15; // Value used in Toolkit\nconst PX_FACTOR_PER_PAGE = 40; // Value copied from datagrid; this is not handled in Toolkit\n\nconst getNormalizedDelta = (e: WheelEvent) => {\n const { deltaX, deltaY, deltaMode } = e;\n\n switch (deltaMode) {\n case e.DOM_DELTA_PIXEL:\n return { deltaX: -deltaX, deltaY: -deltaY };\n case e.DOM_DELTA_LINE:\n return { deltaX: -deltaX * PX_FACTOR_PER_LINE, deltaY: -deltaY * PX_FACTOR_PER_LINE };\n case e.DOM_DELTA_PAGE:\n return { deltaX: -deltaX * PX_FACTOR_PER_PAGE, deltaY: -deltaY * PX_FACTOR_PER_PAGE };\n default:\n return { deltaX: -deltaX, deltaY: -deltaY };\n }\n};\n\nconst useWheel = ({\n onWheel: onWheelCallback,\n preventDefault = true,\n isDisabled = false\n}: UseWheelOptions) => {\n const onWheel = (e: WheelEvent) => {\n const { deltaX, deltaY } = getNormalizedDelta(e);\n if (preventDefault) e.preventDefault();\n onWheelCallback({\n x: e.offsetX,\n y: e.offsetY,\n deltaX,\n deltaY,\n ctrlKey: e.ctrlKey || e.metaKey\n });\n };\n return isDisabled ? {} : { onWheel };\n};\n\nexport { useWheel, PX_FACTOR_PER_LINE };\n","/**\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 */\n\nexport const ZOOM_INCREMENT = 0.05;\n\nexport const zoom = (\n nextZoom: number,\n zoom: number,\n minZoom: number,\n maxZoom: number,\n onZoomChange?: (detail: { zoomValue: number }) => void\n) => {\n const newZoom = nextZoom > maxZoom || nextZoom < minZoom ? zoom : nextZoom;\n const isZoomChanged = newZoom !== zoom;\n isZoomChanged &&\n onZoomChange &&\n onZoomChange({\n zoomValue: newZoom\n });\n};\n","/**\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 { useWheel } from './useWheel';\nimport { zoom, ZOOM_INCREMENT } from '../utils/zoomUtils';\n\ntype UseWheelZoomOptions = {\n zooming: 'on' | 'off';\n minZoom: number;\n maxZoom: number;\n zoomValue: number;\n onZoom?: (detail: { zoomValue: number }) => void;\n};\n\nconst useWheelZoom = ({ zooming, minZoom, maxZoom, zoomValue, onZoom }: UseWheelZoomOptions) => {\n const wheelProps = useWheel({\n onWheel: ({ deltaY }) => {\n const newZoom = zoomValue * (1 + ZOOM_INCREMENT * deltaY);\n zoom(newZoom, zoomValue, minZoom, maxZoom, onZoom);\n },\n isDisabled: zooming === 'off'\n });\n\n return wheelProps;\n};\n\nexport { useWheelZoom };\n","/**\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 { Ref, useRef } from 'preact/hooks';\nimport { usePointerGesture } from './usePointerGesture';\n\ntype Point = { x: number; y: number };\n\nconst getMidpoint = (p1: Point, p2: Point) => ({ x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 });\nconst getDistance = (p1: Point, p2: Point) => Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p2.y) ** 2);\n\ntype PinchDetail = {\n origin: Point;\n delta: number;\n};\n\ntype UsePinchOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n onPinchZoomStart?: (detail: PinchDetail) => void;\n onPinchZoomChange?: (detail: PinchDetail) => void;\n onPinchZoomEnd?: () => void;\n isDisabled?: boolean;\n};\n\nconst usePinch = ({\n captureTargetRef,\n onPinchZoomStart,\n onPinchZoomChange,\n onPinchZoomEnd,\n isDisabled = false\n}: UsePinchOptions) => {\n const origin = useRef({ x: -1, y: -1 });\n const prevDistance = useRef(-1);\n const reset = () => {\n origin.current = { x: -1, y: -1 };\n prevDistance.current = -1;\n };\n\n if (isDisabled) reset();\n\n const pinchProps = usePointerGesture({\n captureTargetRef,\n numPointers: 2, // Pinch gesture requires 2 pointers\n onPointerGestureDown: ({ pointers: [pointer1, pointer2] }) => {\n const p1 = { x: pointer1.offsetX, y: pointer1.offsetY };\n const p2 = { x: pointer2.offsetX, y: pointer2.offsetY };\n origin.current = getMidpoint(p1, p2);\n prevDistance.current = getDistance(p1, p2);\n onPinchZoomStart &&\n onPinchZoomStart({\n origin: origin.current,\n delta: 0\n });\n },\n onPointerGestureMove: ({ pointers: [pointer1, pointer2] }) => {\n const p1 = { x: pointer1.offsetX, y: pointer1.offsetY };\n const p2 = { x: pointer2.offsetX, y: pointer2.offsetY };\n const distance = getDistance(p1, p2);\n const delta = distance - prevDistance.current;\n prevDistance.current = distance;\n onPinchZoomChange &&\n onPinchZoomChange({\n origin: origin.current,\n delta\n });\n },\n onPointerGestureEnd: () => {\n reset();\n onPinchZoomEnd && onPinchZoomEnd();\n }\n });\n\n return isDisabled ? {} : pinchProps;\n};\n\nexport { usePinch };\n","/**\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 { Ref } from 'preact/hooks';\nimport { usePinch } from './usePinch';\nimport { zoom, ZOOM_INCREMENT } from '../utils/zoomUtils';\n\ntype UsePinchZoomOptions = {\n captureTargetRef: Ref<HTMLDivElement>;\n zooming: 'on' | 'off';\n minZoom: number;\n maxZoom: number;\n zoomValue: number;\n onZoom?: (detail: { zoomValue: number }) => void;\n};\n\nconst usePinchZoom = ({\n captureTargetRef,\n zooming,\n minZoom,\n maxZoom,\n zoomValue,\n onZoom\n}: UsePinchZoomOptions) => {\n const pinchProps = usePinch({\n captureTargetRef,\n onPinchZoomChange: ({ delta }) => {\n const newZoom = zoomValue * (1 + ZOOM_INCREMENT * delta);\n zoom(newZoom, zoomValue, minZoom, maxZoom, onZoom);\n },\n isDisabled: zooming === 'off'\n });\n\n return pinchProps;\n};\n\nexport { usePinchZoom };\n","import { Pan, Zoom, Bounds } from '../diagram.types';\nimport { Ref, useState, useRef } from 'preact/hooks';\nimport { useDragPan } from './useDragPan';\nimport { useWheelZoom } from './useWheelZoom';\nimport { usePinchZoom } from './usePinchZoom';\n\nimport {\n centerXYToPanXY,\n getPanProps,\n getZoomProps,\n getZoomToFitZoom\n} from '../utils/diagramUtils';\nimport { PanBounds, getPanBounds, pan } from '../utils/panUtils';\nimport { zoom } from '../utils/zoomUtils';\nimport { mergeProps } from '../../utils/UNSAFE_mergeProps';\n\nimport { Property } from 'csstype';\n\ntype PanZoomProps = {\n props: Pan & Zoom;\n captureTargetRef: Ref<HTMLDivElement>;\n width: number;\n height: number;\n contentBounds: Bounds;\n};\n\nexport const usePanZoom = ({\n props,\n captureTargetRef,\n width,\n height,\n contentBounds\n}: PanZoomProps) => {\n const [cursor, setCursor] = useState<Property.Cursor>();\n const zoomProps = getZoomProps(props, width, height, contentBounds);\n const panProps = getPanProps(props, contentBounds);\n const panBounds = useRef<PanBounds>();\n const prevZoom = useRef<number>();\n const panning = useRef<string>();\n const initPanZoomState = useRef({\n zoom: props.zoomValue || 0,\n centerX: props.centerX,\n centerY: props.centerY\n });\n if (\n contentBounds.w !== Infinity &&\n (zoomProps.zoomValue !== prevZoom.current || panProps.panning !== panning.current)\n ) {\n panBounds.current = getPanBounds(\n width,\n height,\n contentBounds,\n panProps.panning,\n zoomProps.zoomValue,\n zoomProps.minZoom,\n initPanZoomState.current\n );\n prevZoom.current = zoomProps.zoomValue;\n panning.current = panProps.panning;\n }\n const dragPanProps = useDragPan({\n panProps: panProps,\n captureTargetRef: captureTargetRef,\n panBounds: panBounds.current,\n zoom: zoomProps.zoomValue,\n width,\n height,\n onDragPanStart: () => setCursor('grabbing'),\n onDragPanEnd: () => setCursor('auto')\n });\n //dZoom or nZoom is required\n const kbZoomCallback = (props: { dZoom?: number; nZoom?: number }) => {\n const newZoom = props.dZoom\n ? zoomProps.zoomValue + props.dZoom\n : getZoomToFitZoom(width, height, contentBounds);\n zoom(\n props.nZoom ? props.nZoom : newZoom,\n zoomProps.zoomValue,\n zoomProps.minZoom,\n zoomProps.maxZoom,\n zoomProps.onZoom\n );\n };\n const prevPanState = useRef({ panX: 0, panY: 0 });\n\n // dPan or nPan is required\n const kbPanCallback = (props: {\n dPan?: { dx: number; dy: number };\n nPan?: { cx: number; cy: number };\n center?: boolean;\n }) => {\n let centerX;\n let centerY;\n if (props.center) {\n centerX = contentBounds.x + contentBounds.w / 2;\n centerY = contentBounds.y + contentBounds.h / 2;\n } else if (props.dPan) {\n centerX = panProps.centerX + props.dPan.dx;\n centerY = panProps.centerY + props.dPan.dy;\n } else {\n centerX = props.nPan!.cx;\n centerY = props.nPan!.cy;\n }\n const panValues = centerXYToPanXY(centerX, centerY, zoomProps.zoomValue, width, height);\n const { newPan } = pan(\n prevPanState.current,\n panValues,\n panProps.panDirection,\n zoomProps.zoomValue,\n width,\n height,\n panBounds.current,\n panProps.onPan\n );\n prevPanState.current = newPan;\n };\n const wheelZoomProps = useWheelZoom(zoomProps);\n const pinchZoomProps = usePinchZoom({\n captureTargetRef,\n zooming: zoomProps.zooming,\n minZoom: zoomProps.minZoom,\n maxZoom: zoomProps.maxZoom,\n zoomValue: zoomProps.zoomValue,\n onZoom: zoomProps.onZoom\n });\n const panZoomProps = mergeProps(dragPanProps, wheelZoomProps, pinchZoomProps);\n\n return {\n panZoomProps,\n cursor,\n centerX: panProps.centerX,\n centerY: panProps.centerY,\n zoomValue: zoomProps.zoomValue,\n kbPanCallback: panProps.panning !== 'off' ? kbPanCallback : undefined,\n kbZoomCallback: zoomProps.zooming !== 'off' ? kbZoomCallback : undefined\n };\n};\n","import { useSelection } from '../../hooks/PRIVATE_useVisSelection';\nimport type { ItemInfo } from '../diagram.types';\nimport { getNavigableInfo } from '../utils/diagramUtils';\nimport { Ref } from 'preact/hooks';\n\ntype SelectionProps<K1, K2, D1, D2> = {\n selectedIds: {\n nodes?: K1[];\n links?: K2[];\n };\n selectionMode: 'none' | 'single' | 'multiple';\n nodeMap: {\n itemIdToDataMap: Map<K1, D1>;\n itemIdToIndexMap: Map<K1, number>;\n itemIndexToIdMap: Map<number, K1>;\n };\n linkMap: {\n itemIdToDataMap: Map<K2, D2>;\n itemIdToIndexMap: Map<K2, number>;\n itemIndexToIdMap: Map<number, K2>;\n };\n focusedItemInfo: ItemInfo<K1, K2>;\n onSelectionChange?: (detail: {\n nodes: K1[];\n links: K2[];\n nodeData: (D1 | undefined)[];\n linkData: (D2 | undefined)[];\n }) => void;\n rootRef: Ref<HTMLDivElement>;\n};\n\ntype EncodedNodeId = `N_${number}`;\ntype EncodedLinkId = `L_${number}`;\n\nexport function useDiagramSelection<K1, K2, D1, D2>({\n selectedIds,\n selectionMode,\n nodeMap,\n linkMap,\n focusedItemInfo,\n onSelectionChange,\n rootRef\n}: SelectionProps<K1, K2, D1, D2>) {\n const nodeIdToIndexMap = nodeMap.itemIdToIndexMap;\n const nodeIndexToIdMap = nodeMap.itemIndexToIdMap;\n const linkIdToIndexMap = linkMap.itemIdToIndexMap;\n const linkIndexToIdMap = linkMap.itemIndexToIdMap;\n const encodeNodeId = (id: K1) => `N_${nodeIdToIndexMap.get(id)}` as EncodedNodeId;\n const decodeNodeId = (id: EncodedNodeId) => nodeIndexToIdMap.get(Number(id.slice(2)));\n const encodeLinkId = (id: K2) => `L_${linkIdToIndexMap.get(id)}` as EncodedLinkId;\n const decodeLinkId = (id: EncodedLinkId) => linkIndexToIdMap.get(Number(id.slice(2)));\n\n const encodedNodesSelection = selectedIds.nodes ? selectedIds.nodes.map(encodeNodeId) : [];\n const encodedLinksSelection = selectedIds.links ? selectedIds.links.map(encodeLinkId) : [];\n const encodedSelection = [...encodedNodesSelection, ...encodedLinksSelection];\n const idExtracter = (event: Event) => {\n // return encodeNodeId(id) or encodeLinkId(id) depending on node or link selection or undefined if clicked on empty space\n const info =\n event.type === 'keyup'\n ? focusedItemInfo\n : getNavigableInfo<K1, K2>(event.target as HTMLElement, rootRef);\n return info.id !== undefined\n ? info.isNode\n ? encodeNodeId(info.id as K1)\n : encodeLinkId(info.id as K2)\n : undefined;\n };\n\n const onEncodedSelectionChange = (detail: { ids: (EncodedNodeId | EncodedLinkId)[] }) => {\n const newSelectedNodeIds = detail.ids\n .filter((encId) => encId[0] === 'N')\n .map((encId) => decodeNodeId(encId as EncodedNodeId)!);\n const newSelectedLinkIds = detail.ids\n .filter((encId) => encId[0] === 'L')\n .map((encId) => decodeLinkId(encId as EncodedLinkId)!);\n\n const nodeData = newSelectedNodeIds.map((selectedId) => {\n return nodeMap.itemIdToDataMap.get(selectedId);\n });\n const linkData = newSelectedLinkIds.map((selectedId) => {\n return linkMap.itemIdToDataMap.get(selectedId);\n });\n return (\n onSelectionChange &&\n onSelectionChange({\n nodes: newSelectedNodeIds,\n links: newSelectedLinkIds,\n nodeData,\n linkData\n })\n );\n };\n const getDataById = (id: EncodedNodeId | EncodedLinkId) => {\n let data;\n if (id[0] === 'N') {\n const nodeId = decodeNodeId(id as EncodedNodeId)!;\n data = nodeMap.itemIdToDataMap.get(nodeId);\n } else if (id[0] === 'L') {\n const linkId = decodeLinkId(id as EncodedLinkId)!;\n data = linkMap.itemIdToDataMap.get(linkId);\n }\n return data;\n };\n\n const { selectionContent, selectionProps } = useSelection<`N_${number}` | `L_${number}`, D1 | D2>(\n {\n selection: encodedSelection,\n idExtracter,\n selectionMode,\n getDataById,\n onChange: onEncodedSelectionChange\n }\n );\n\n return { selectionContent, selectionProps };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n DiagramProps,\n Bounds,\n DiagramLabelPosition,\n States,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport type { TextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { DiagramLayers } from './DiagramLayers';\nimport { DiagramPanZoomContainer } from './DiagramPanZoomContainer';\nimport { useEvents } from './hooks/useEvents';\nimport { useDiagramDatatip } from './hooks/useDiagramDatatip';\nimport { useTextDimensions } from '../hooks/PRIVATE_useTextDimensions';\nimport { usePanZoom } from './hooks/usePanZoom';\nimport { useRef, useState } from 'preact/hooks';\nimport { useUser } from '../hooks/UNSAFE_useUser';\nimport { useDiagramSelection } from './hooks/useDiagramSelection';\nimport { mergeProps } from '../utils/UNSAFE_mergeProps';\nimport {\n constructLayoutJSON,\n deconstructLayoutJSON,\n createItemMap,\n getFocusedItemBounds,\n mergeDimensions,\n getDimensionsFromBounds,\n combineIds,\n getContentBounds,\n centerXYToPanXY,\n filterLinksWithNoEndNodes,\n getAllLabelBounds\n} from './utils/diagramUtils';\nimport { outerStyles } from './themes/DiagramStyles.css';\nimport { useVisTouchResponse } from '#hooks/PRIVATE_useVisTouchResponse';\nimport { merge } from '#utils/UNSAFE_stringUtils';\n\ntype DiagramWithDimensionsProps<K1, K2, D1, D2, L> = Omit<\n DiagramProps<K1, K2, D1, D2, L>,\n 'width' | 'height'\n> & {\n width: number;\n height: number;\n};\n\nexport function DiagramWithDimensions<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1> = DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({\n nodes = [],\n links = [],\n width,\n height,\n selectedIds = {},\n selectionMode = 'none',\n layout,\n nodeRenderer,\n linkRenderer,\n onSelectionChange,\n onItemHover,\n onItemFocus,\n highlightedIds = {},\n datatip,\n ...otherProps\n}: DiagramWithDimensionsProps<K1, K2, D1, D2, L>) {\n const focusedItemBoundsRef = useRef<Bounds | null>(null);\n const rootRef = useRef<HTMLDivElement>(null);\n //TODO JET-62563 change bounds to a MAP\n const [bounds, setBounds] = useState<Bounds[]>([]);\n const [combinedLabelBounds, setCombinedLabelBounds] = useState<Bounds>();\n const { direction } = useUser();\n\n const diagramNodes = nodes;\n const nodeMap = createItemMap<K1, K2, D1, D2>(diagramNodes);\n const nodeIdToDataMap = nodeMap.itemIdToDataMap;\n const diagramLinks = filterLinksWithNoEndNodes(links, nodeIdToDataMap);\n const linkMap = createItemMap<K1, K2, D1, D2>(diagramLinks);\n const linkIdToDataMap = linkMap.itemIdToDataMap;\n const resizeThrottling = useRef<boolean>(false);\n const newDimensions = getDimensionsFromBounds(bounds);\n const { textMeasureContent, getTextDimensions } = useTextDimensions();\n const labelDimensions = useRef<Map<K1 | K2, TextDimensions>>(new Map());\n const nodeLabelPosRef = useRef<(DiagramLabelPosition | undefined)[] | undefined>([]);\n const linkLabelPosRef = useRef<(DiagramLabelPosition | undefined)[] | undefined>([]);\n const layoutOutputRef = useRef<L>();\n\n const contentBounds = getContentBounds(bounds, combinedLabelBounds);\n const { panZoomProps, cursor, centerX, centerY, zoomValue, kbPanCallback, kbZoomCallback } =\n usePanZoom({\n props: otherProps,\n captureTargetRef: rootRef,\n width: width,\n height: height,\n contentBounds\n });\n\n const { touchResponse, touchResponseStyle } = useVisTouchResponse({\n type: 'auto',\n supportsTouchDragGestures:\n otherProps.zooming === 'on' || (!!otherProps.panning && otherProps.panning !== 'off'),\n rootRef\n });\n\n const { focusedItemInfo, hoveredItemInfo, activeId, eventsProps } = useEvents<K1, K2, D1, D2>(\n touchResponse,\n diagramNodes[0],\n diagramNodes,\n diagramLinks,\n bounds,\n linkIdToDataMap,\n nodeIdToDataMap,\n nodeMap.itemIdToIndexMap,\n width,\n height,\n otherProps.maxZoom || 1,\n onItemHover,\n onItemFocus,\n kbPanCallback,\n kbZoomCallback\n );\n\n const { selectionProps, selectionContent } = useDiagramSelection<K1, K2, D1, D2>({\n selectedIds,\n selectionMode,\n nodeMap,\n linkMap,\n focusedItemInfo,\n onSelectionChange,\n rootRef\n });\n\n // This is for the datatip kb position\n if (focusedItemInfo && bounds.length > 0) {\n focusedItemBoundsRef.current = getFocusedItemBounds(\n focusedItemInfo,\n bounds,\n diagramLinks,\n nodeMap.itemIdToIndexMap,\n linkMap.itemIdToIndexMap\n );\n }\n\n const {\n datatipContent,\n datatipProps: { 'aria-describedby': datatipAriaDescribedby, ...datatipProps }\n } = useDiagramDatatip({\n touchResponse,\n datatip,\n focusedItemInfo,\n focusedItemBoundsRef,\n panState: centerXYToPanXY(centerX, centerY, zoomValue, width, height),\n zoom: zoomValue,\n width: width,\n nodesMap: nodeIdToDataMap,\n linksMap: linkIdToDataMap,\n hoveredItem: hoveredItemInfo\n });\n\n const style = {\n width: width,\n height: height,\n cursor: cursor,\n ...touchResponseStyle\n };\n\n const states = useRef<States<K1, K2>>();\n const previousState = states.current // states.current is previous state\n ? states.current\n : {\n selectedNodeIds: [],\n selectedLinkIds: [],\n focusedId: undefined,\n hoveredId: undefined,\n activeId: undefined,\n highlightedIds: [],\n zoom: 0\n };\n\n states.current = {\n // update states to new state\n selectedNodeIds: selectedIds.nodes ?? [],\n selectedLinkIds: selectedIds.links ?? [],\n focusedId:\n focusedItemInfo.isCurrent && focusedItemInfo.isFocusVisible ? focusedItemInfo.id : undefined,\n hoveredId: hoveredItemInfo?.isCurrent ? hoveredItemInfo.id : undefined,\n activeId,\n highlightedIds: combineIds(highlightedIds.nodes, highlightedIds.links),\n zoom: zoomValue\n };\n\n const mergedEventProps = mergeProps(panZoomProps, eventsProps, selectionProps, datatipProps);\n\n // Called anytime node changes size\n const onNodeSizeChanged = (nodeWidth: number, nodeHeight: number, idx: number) => {\n newDimensions[idx] = { w: nodeWidth, h: nodeHeight };\n if (resizeThrottling.current) {\n return;\n }\n\n resizeThrottling.current = true;\n // performs layout at the next available animation frame when all measurements should be ready\n window.requestAnimationFrame(() => {\n const { labelDims, layoutJSON } = constructLayoutJSON(\n diagramNodes,\n nodeIdToDataMap,\n linkIdToDataMap,\n newDimensions,\n width,\n height,\n getTextDimensions\n );\n labelDimensions.current = labelDims;\n const layoutOutput = layout(layoutJSON);\n const { nodePoints, nodeLabelPos, linkLabelPos } = deconstructLayoutJSON<K1, K2, D1, D2, L>(\n layoutOutput,\n diagramNodes,\n diagramLinks\n );\n nodeLabelPosRef.current = nodeLabelPos;\n linkLabelPosRef.current = linkLabelPos;\n layoutOutputRef.current = layoutOutput;\n const nodeBounds = mergeDimensions(newDimensions, nodePoints);\n setBounds(nodeBounds);\n const labelBounds = getAllLabelBounds(\n labelDims,\n diagramNodes,\n diagramLinks,\n nodeLabelPos,\n linkLabelPos,\n direction === 'rtl'\n );\n setCombinedLabelBounds(labelBounds);\n resizeThrottling.current = false;\n });\n };\n return (\n <div\n ref={rootRef}\n class={outerStyles}\n {...mergedEventProps}\n style={style}\n tabIndex={0}\n role=\"application\"\n aria-label={otherProps['aria-label']}\n aria-labelledby={otherProps['aria-labelledby']}\n aria-describedby={merge([otherProps['aria-describedby'], datatipAriaDescribedby])}\n aria-activedescendant={activeId}>\n {getTextDimensions ? (\n <DiagramPanZoomContainer\n centerX={centerX}\n centerY={centerY}\n zoom={zoomValue}\n width={width}\n height={height}>\n <DiagramLayers\n nodes={diagramNodes}\n links={diagramLinks}\n nodeRenderer={nodeRenderer}\n linkRenderer={linkRenderer}\n width={width}\n height={height}\n nodeBounds={bounds}\n states={states.current!}\n previousStates={previousState}\n onNodeSizeChanged={onNodeSizeChanged}\n nodeLabelPositions={nodeLabelPosRef.current}\n linkLabelPositions={linkLabelPosRef.current}\n labelDimensions={labelDimensions.current}\n supportsSelection={\n selectionMode !== 'none' ||\n !!(selectedIds?.nodes && selectedIds.nodes.length > 0) ||\n !!(selectedIds?.links && selectedIds.links.length > 0)\n }\n layoutOutput={layoutOutputRef.current}\n />\n </DiagramPanZoomContainer>\n ) : undefined}\n {textMeasureContent}\n {datatipContent}\n {selectionContent}\n </div>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport type {\n DiagramProps,\n DiagramNodeData,\n DiagramLinkData,\n DiagramLayoutOutput\n} from './diagram.types';\nimport { TrackResizeContainer } from '../PRIVATE_TrackResizeContainer';\nimport { dimensionStyle } from './themes/DiagramStyles.css';\nimport { DiagramWithDimensions } from './DiagramWithDimensions';\n\n/**\n * Diagrams are used to display a set of nodes and the links between them.\n */\nexport function Diagram<\n K1 extends string | number,\n K2 extends string | number,\n D1 extends DiagramNodeData<K1> = DiagramNodeData<K1>,\n D2 extends DiagramLinkData<K2, K1> = DiagramLinkData<K2, K1>,\n L extends DiagramLayoutOutput<K1, K2> = DiagramLayoutOutput<K1, K2>\n>({ width, height, ...otherProps }: DiagramProps<K1, K2, D1, D2, L>) {\n return otherProps.nodes && otherProps.nodes.length > 0 ? (\n <TrackResizeContainer width={width} height={height} class={dimensionStyle}>\n {(width, height) => <DiagramWithDimensions width={width} height={height} {...otherProps} />}\n </TrackResizeContainer>\n ) : null;\n}\n"],"names":["generateAriaLabel","itemStyles","useTranslationBundle","useRef","useResizeObserver","useCallback","_jsx","classNames","layerStyles","labelStyles","useUser","_jsxs","_Fragment","panZoomStyles","useState","getRandomId","useVisHover","mergeProps","useDatatip","calculateOffset","useSelection","useTextDimensions","useVisTouchResponse","outerStyles","merge","TrackResizeContainer","dimensionStyle"],"mappings":"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"}